| ProductFactoryCascade |  | 0% |  | 0% | 7 | 7 | 23 | 23 | 5 | 5 | 1 | 1 |
| InterestRateMonteCarloProductFactory.SwapMonteCarlo |  | 0% |  | 0% | 7 | 7 | 18 | 18 | 3 | 3 | 1 | 1 |
| InterestRateMonteCarloProductFactory |   | 69% |   | 50% | 3 | 8 | 10 | 27 | 0 | 3 | 0 | 1 |
| InterestRateAnalyticProductFactory |   | 45% |   | 25% | 2 | 4 | 10 | 19 | 0 | 2 | 0 | 1 |
| InterestRateMonteCarloProductFactory.SwaptionPhysicalMonteCarlo |  | 0% | | n/a | 3 | 3 | 9 | 9 | 3 | 3 | 1 | 1 |
| SingleAssetMonteCarloProductFactory |   | 78% |   | 75% | 1 | 4 | 2 | 11 | 0 | 2 | 0 | 1 |
| SingleAssetFourierProductFactory |   | 78% |   | 75% | 1 | 4 | 2 | 11 | 0 | 2 | 0 | 1 |
| InterestRateMonteCarloProductFactory.SwapLegMonteCarlo |   | 92% | | n/a | 1 | 3 | 1 | 9 | 1 | 3 | 0 | 1 |
| SingleAssetFourierProductFactory.EuropeanOptionFourierMethod |   | 83% | | n/a | 1 | 2 | 1 | 4 | 1 | 2 | 0 | 1 |
| SingleAssetMonteCarloProductFactory.EuropeanOptionMonteCarlo |   | 83% | | n/a | 1 | 2 | 1 | 4 | 1 | 2 | 0 | 1 |
| SingleAssetMonteCarloProductFactory.DigitalOptionMonteCarlo |   | 82% | | n/a | 1 | 2 | 1 | 4 | 1 | 2 | 0 | 1 |
| SingleAssetFourierProductFactory.DigitalOptionFourierMethod |   | 80% | | n/a | 1 | 2 | 1 | 4 | 1 | 2 | 0 | 1 |
| InterestRateMonteCarloProductFactory.SwapLegMonteCarlo.new DoubleFunction() {...} |  | 100% | | n/a | 0 | 2 | 0 | 2 | 0 | 2 | 0 | 1 |