/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.math.impl.rootfinding; import static org.testng.AssertJUnit.assertEquals; import java.util.Arrays; import org.testng.annotations.Test; import com.opengamma.strata.math.MathException; import com.opengamma.strata.math.impl.function.RealPolynomialFunction1D; /** * Test. */ @Test public class LaguerrePolynomialRealRootFinderTest { private static final double EPS = 1e-12; private static final LaguerrePolynomialRealRootFinder ROOT_FINDER = new LaguerrePolynomialRealRootFinder(); private static final RealPolynomialFunction1D TWO_REAL_ROOTS = new RealPolynomialFunction1D(12, 7, 1); private static final RealPolynomialFunction1D ONE_REAL_ROOT = new RealPolynomialFunction1D(9, -6, 1); private static final RealPolynomialFunction1D CLOSE_ROOTS = new RealPolynomialFunction1D(9 + 3 * 1e-6, -6 - 1e-6, 1); private static final RealPolynomialFunction1D NO_REAL_ROOTS = new RealPolynomialFunction1D(12, 0, 1); @Test(expectedExceptions = IllegalArgumentException.class) public void testNullFunction() { ROOT_FINDER.getRoots(null); } @Test(expectedExceptions = MathException.class) public void testNoRealRoots() { ROOT_FINDER.getRoots(NO_REAL_ROOTS); } @Test public void test() { Double[] result = ROOT_FINDER.getRoots(TWO_REAL_ROOTS); Arrays.sort(result); assertEquals(result.length, 2); assertEquals(result[0], -4, EPS); assertEquals(result[1], -3, EPS); result = ROOT_FINDER.getRoots(ONE_REAL_ROOT); assertEquals(result.length, 2); assertEquals(result[0], 3, EPS); assertEquals(result[1], 3, EPS); result = ROOT_FINDER.getRoots(CLOSE_ROOTS); Arrays.sort(result); assertEquals(result.length, 2); assertEquals(result[1] - result[0], 1e-6, 1e-8); } }