| createAuxiliaryVanillaModel(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 4 | 4 | 27 | 27 | 1 | 1 |
| applyEvaluationTimeDiscreteCondition(double, double[], FiniteDifferenceEquityModel) |  | 0% |  | 0% | 15 | 15 | 34 | 34 | 1 | 1 |
| priceInOptionByParity(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 7 | 7 | 31 | 31 | 1 | 1 |
| interpolateSurfaceToOriginalGrid2DAlongFirstState(double[][], SpaceTimeDiscretization, SpaceTimeDiscretization) |  | 0% |  | 0% | 8 | 8 | 25 | 25 | 1 | 1 |
| createAuxiliaryActivatedModel2D(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 11 | 11 | 22 | 22 | 1 | 1 |
| DigitalBarrierOption(String, double, double, double, CallOrPut, BarrierType, DigitalPayoffType, double, Exercise, MonitoringType, double[]) |  | 0% |  | 0% | 14 | 14 | 30 | 30 | 1 | 1 |
| createAuxiliaryKnockInModel1D(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 4 | 4 | 21 | 21 | 1 | 1 |
| assembleDirectKnockInSurface2D(FiniteDifferenceEquityModel, FiniteDifferenceEquityModel, double[][], FiniteDifferenceEquityModel, double[][]) |  | 0% |  | 0% | 8 | 8 | 21 | 21 | 1 | 1 |
| applyEventCondition(double, double[], FiniteDifferenceEquityModel) |  | 0% |  | 0% | 10 | 10 | 25 | 25 | 1 | 1 |
| priceInOptionDiscrete2D(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 7 | 7 | 19 | 19 | 1 | 1 |
| priceInOptionDirectly2D(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 5 | 5 | 27 | 27 | 1 | 1 |
| getValuationSpaceTimeDiscretization(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 7 | 7 | 23 | 23 | 1 | 1 |
| createPreHitSpecification(FiniteDifferenceEquityModel, ActivatedBarrierTrace2D) |  | 0% |  | 0% | 3 | 3 | 15 | 15 | 1 | 1 |
| buildActivatedSpotGridAlignedAtBarrier(double[], double) |  | 0% | | n/a | 1 | 1 | 11 | 11 | 1 | 1 |
| priceInOptionDiscrete1D(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 5 | 5 | 17 | 17 | 1 | 1 |
| cellAveragedAssetDigital(double, double) |  | 0% |  | 0% | 6 | 6 | 14 | 14 | 1 | 1 |
| priceInOptionDirectly1D(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 4 | 4 | 14 | 14 | 1 | 1 |
| extractActivatedBarrierTrace2D(FiniteDifferenceEquityModel, double[][]) |  | 0% |  | 0% | 3 | 3 | 12 | 12 | 1 | 1 |
| applyDiscreteInEvent2D(double, double[], double[], double[], DigitalBarrierOption.DiscreteKnockInEventState) |  | 0% |  | 0% | 5 | 5 | 13 | 13 | 1 | 1 |
| isDegenerateZeroCase() |  | 0% |  | 0% | 13 | 13 | 1 | 1 | 1 | 1 |
| getValues(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 10 | 10 | 15 | 15 | 1 | 1 |
| createAuxiliaryPreHitModel2D(FiniteDifferenceEquityModel, BarrierPreHitSpecification) |  | 0% | | n/a | 1 | 1 | 12 | 12 | 1 | 1 |
| cellAveragedCashDigital(double, double) |  | 0% |  | 0% | 6 | 6 | 12 | 12 | 1 | 1 |
| validateDiscreteMonitoringScope(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 10 | 10 | 10 | 10 | 1 | 1 |
| getValue(double, FiniteDifferenceEquityModel) |  | 0% |  | 0% | 4 | 4 | 11 | 11 | 1 | 1 |
| validateBarrierIsInteriorGridNode(double, double, double, int) |  | 0% |  | 0% | 6 | 6 | 9 | 9 | 1 | 1 |
| applyDiscreteInEvent1D(double, double[], double[], DigitalBarrierOption.DiscreteKnockInEventState) |  | 0% |  | 0% | 4 | 4 | 11 | 11 | 1 | 1 |
| priceOutOptionDirectly(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 4 | 4 | 11 | 11 | 1 | 1 |
| interpolateSurfaceToOriginalGrid1D(double[][], double[], double[]) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| getActivatedVectorForEventTime(double, DigitalBarrierOption.DiscreteKnockInEventState) |  | 0% |  | 0% | 5 | 5 | 8 | 8 | 1 | 1 |
| getPricingMode(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 9 | 9 | 14 | 14 | 1 | 1 |
| pointwiseImmediateExercisePayoff(double) |  | 0% |  | 0% | 7 | 7 | 9 | 9 | 1 | 1 |
| cellAveragedPayoffForDirectOutPricing(double, double) |  | 0% |  | 0% | 4 | 4 | 9 | 9 | 1 | 1 |
| isMonitoringTime(double) |  | 0% |  | 0% | 5 | 5 | 7 | 7 | 1 | 1 |
| applyDiscreteOutEvent2D(double[], double[], double[]) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| buildZeroValueSurface(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| isConstraintActive(double, double[]) |  | 0% |  | 0% | 7 | 7 | 7 | 7 | 1 | 1 |
| averageAssetDigitalOverAliveInterval(double, double, double) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| buildCellAveragedTerminalValues(SpaceTimeDiscretization) |  | 0% |  | 0% | 2 | 2 | 7 | 7 | 1 | 1 |
| averageCashDigitalOverAliveInterval(double, double, double) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| validateBarrierInsideGrid(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 3 | 3 | 6 | 6 | 1 | 1 |
| getTotalNumberOfSpacePoints(SpaceTimeDiscretization) |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| isDegenerateVanillaCase() |  | 0% |  | 0% | 7 | 7 | 1 | 1 | 1 | 1 |
| cellAveragedPureDigital(double, double) |  | 0% |  | 0% | 4 | 4 | 6 | 6 | 1 | 1 |
| averageDigitalPayoffOverInterval(double, double, double) |  | 0% |  | 0% | 4 | 4 | 6 | 6 | 1 | 1 |
| isBarrierBreached(double) |  | 0% |  | 0% | 5 | 5 | 4 | 4 | 1 | 1 |
| validateProductConfiguration(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 5 | 5 | 6 | 6 | 1 | 1 |
| isAliveAtExerciseOrMaturityForOutOption(double) |  | 0% |  | 0% | 5 | 5 | 4 | 4 | 1 | 1 |
| createCorrespondingOutOption() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getRightDualCellEdge(double[], int) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| applyDiscreteOutEvent1D(double[], double[]) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| findExactGridIndex(double[], double) |  | 0% |  | 0% | 3 | 3 | 4 | 4 | 1 | 1 |
| popDiscreteKnockInEventState() |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| getKnockInExtraStepsBeyondBarrier1D() |  | 0% |  | 0% | 5 | 5 | 5 | 5 | 1 | 1 |
| getColumn(double[][], int) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| getCorrespondingOutBarrierType() |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| cellAveragedPayoffForProductMode(double, double) |  | 0% |  | 0% | 3 | 3 | 4 | 4 | 1 | 1 |
| getLeftDualCellEdge(double[], int) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| createVanillaDigitalOption() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| createActivatedVanillaDigitalOption() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| DigitalBarrierOption(String, double, double, double, CallOrPut, BarrierType, DigitalPayoffType, double, MonitoringType, double[]) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getEventTimes() |  | 0% |  | 0% | 3 | 3 | 3 | 3 | 1 | 1 |
| mapCallOrPut(double) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| DigitalBarrierOption(String, double, double, double, double, BarrierType, DigitalPayoffType, double) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| DigitalBarrierOption(double, double, double, double, BarrierType, DigitalPayoffType, double) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| DigitalBarrierOption(String, double, double, double, CallOrPut, BarrierType, DigitalPayoffType, double) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| DigitalBarrierOption(double, double, double, CallOrPut, BarrierType, DigitalPayoffType, double) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| DigitalBarrierOption(double, double, double, double, BarrierType, DigitalPayoffType, double, Exercise, MonitoringType, double[]) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| DigitalBarrierOption(String, double, double, double, CallOrPut, BarrierType, DigitalPayoffType, double, Exercise) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| DigitalBarrierOption(double, double, double, CallOrPut, BarrierType, DigitalPayoffType, double, Exercise, MonitoringType, double[]) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getCurrentDiscreteKnockInEventState() |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| getEffectiveModelForValuation(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| getEffectiveModelForTwoDimensionalKnockIn(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| DigitalBarrierOption(double, double, double, double, BarrierType, DigitalPayoffType, double, Exercise) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| DigitalBarrierOption(double, double, double, CallOrPut, BarrierType, DigitalPayoffType, double, Exercise) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getPricingModeForCellAveraging() |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| isOutOption() |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| getDiscreteKnockInEventStateStack() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| supportsDirect2DKnockIn(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| supportsDirect2DDiscreteMonitoring(FiniteDifferenceEquityModel) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| pointwisePayoffForDirectOutPricing(double) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| getConstrainedValue(double, double[]) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| getMonitoringTimes() |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| validateMonitoringSpecification() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| pushDiscreteKnockInEventState(DigitalBarrierOption.DiscreteKnockInEventState) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| flatten(int, int, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| usesDiscreteMonitoring() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getUnderlyingName() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getMaturity() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getStrike() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getBarrierValue() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getCallOrPut() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getBarrierType() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getDigitalPayoffType() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getCashPayoff() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getExercise() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getMonitoringType() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$priceInOptionDirectly2D$0(double) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$priceInOptionDiscrete2D$0(double) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getInactiveValueAtMaturity() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |