/* * (c) Copyright Christian P. Fries, Germany. All rights reserved. Contact: email@christian-fries.de. * * Created on 05.07.2014 */ package net.finmath.montecarlo; import java.text.DecimalFormat; import org.junit.Assert; import org.junit.Test; import net.finmath.stochastic.RandomVariableInterface; import net.finmath.time.TimeDiscretization; import net.finmath.time.TimeDiscretizationInterface; /** * @author Christian Fries * */ public class GammaProcessTest { static final DecimalFormat formatterReal2 = new DecimalFormat(" 0.00"); static final DecimalFormat formatterSci4 = new DecimalFormat(" 0.0000E00;-0.0000E00"); static final DecimalFormat formatterSci1 = new DecimalFormat(" 0E00;-0.E00"); @Test public void testScaling() { // The parameters int seed = 53252; int numberOfPaths = 10000; double lastTime = 10; double dt = 0.1; System.out.println("Test of scaling of Gamma increments."); // Create the time discretization TimeDiscretizationInterface timeDiscretization = new TimeDiscretization(0.0, (int)(lastTime/dt), dt); double shape = 3.0; double scale1 = 1.0; double scale2 = 2.0; IndependentIncrementsInterface gamma1 = new GammaProcess( timeDiscretization, 1, numberOfPaths, seed, shape, scale1 // Scale ); IndependentIncrementsInterface gamma2 = new GammaProcess( timeDiscretization, 1, numberOfPaths, seed, shape, scale2 // Scale ); RandomVariableInterface gammaIncement1 = gamma1.getIncrement(3, 0); RandomVariableInterface gammaIncement2 = gamma2.getIncrement(3, 0); for(int i=0; i<gammaIncement1.size(); i++) { double diff = gammaIncement2.get(i) - scale2/scale1 * gammaIncement1.get(i); System.out.println(formatterReal2.format(gammaIncement1.get(i)) + "\t" + formatterReal2.format(gammaIncement2.get(i)) + "\t" + formatterSci4.format(diff)); Assert.assertTrue(Math.abs(diff) < 1E-8); } } }