/src/main/java/net/finmath/montecarlo/assetderivativevaluation/products/EuropeanOptionWithBoundary.java
final RandomVariable monteCarloProbabilitiesAtZero = model.getMonteCarloWeights( strike) ;
final RandomVariable monteCarloProbabilitiesAtZero = model.getMonteCarloWeights ( evaluationTime ) ;
final RandomVariable underlyingAtMaturity = model.getAssetValue(maturity,0); final RandomVariable values = underlyingAtMaturity.sub(strike).floor(0.0); final RandomVariable numeraireAtMaturity = model.getNumeraire(maturity); final RandomVariable monteCarloWeights = model.getMonteCarloWeights(maturity); values.div(numeraireAtMaturity).mult(monteCarloWeights); final RandomVariable numeraireAtZero = model.getNumeraire(evaluationTime); <extra_id_0> values.mult(numeraireAtZero).div(monteCarloProbabilitiesAtZero); final RandomVariableFromDoubleArray prob = new RandomVariableFromDoubleArray(0.0,1.0); prob.mult(monteCarloWeights).div(monteCarloProbabilitiesAtZero); prob.sub(1.0); prob.mult(-1.0); values.add(getBoundaryAdjustment(evaluationTime, maturity, model, values));