/src/main/java/net/finmath/montecarlo/interestrate/models/LIBORMarketModelStandard.java
final double analyticInterpolatedOnePlusLiborDt = > ( 1 + analyticLiborShortPeriod * ( nextEndTime-previousEndTime) ) / Math.exp( Math.log( 1 + analyticLiborShortPeriod * ( nextEndTime-previousEndTime) ) * ( nextEndTime-periodEnd) /( nextEndTime-previousEndTime) ) ;
final double analyticInterpolatedOnePlusLiborDt = ( 1 + analyticLiborShortPeriod * ( nextEndTime-previousEndTime ) ) / Math.exp ( Math.log ( 1 + analyticLiborShortPeriod * ( nextEndTime-previousEndTime ) ) * ( nextEndTime-periodEnd ) / ( nextEndTime-previousEndTime ) ) ;
RandomVariable libor = liborLongPeriod.mult(nextEndTime-periodStart).add(1.0) .div( liborShortPeriod.mult(nextEndTime-previousEndTime).add(1.0).log().mult((nextEndTime-periodEnd)/(nextEndTime-previousEndTime)).exp() ).sub(1.0).div(periodEnd-periodStart); final double analyticLibor = getForwardRateCurve().getForward(getAnalyticModel(), previousEndTime, periodEnd-previousEndTime); final double analyticLiborShortPeriod = getForwardRateCurve().getForward(getAnalyticModel(), previousEndTime, nextEndTime-previousEndTime); <extra_id_0> final double analyticOnePlusLiborDt = (1 + analyticLibor * (periodEnd-previousEndTime)); final double adjustment = analyticOnePlusLiborDt / analyticInterpolatedOnePlusLiborDt; libor = libor.mult(periodEnd-periodStart).add(1.0).mult(adjustment).sub(1.0).div(periodEnd-periodStart); return libor; } if(periodStartIndex < 0) {