/* * File: ElementWiseDifferentiableVectorFunctionTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Mar 25, 2009, Sandia Corporation. * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive * license for use of this work by or on behalf of the U.S. Government. * Export of this program may require a license from the United States * Government. See CopyrightHistory.txt for complete details. * */ package gov.sandia.cognition.learning.function.vector; import gov.sandia.cognition.learning.function.scalar.AtanFunction; import gov.sandia.cognition.learning.function.scalar.CosineFunction; import gov.sandia.cognition.learning.function.scalar.LinearFunction; import gov.sandia.cognition.math.DifferentiableUnivariateScalarFunction; import gov.sandia.cognition.math.matrix.Matrix; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.math.matrix.VectorFactory; /** * Unit tests for ElementWiseDifferentiableVectorFunctionTest. * * @author krdixon */ public class ElementWiseDifferentiableVectorFunctionTest extends ElementWiseVectorFunctionTest { /** * Tests for class ElementWiseDifferentiableVectorFunctionTest. * @param testName Name of the test. */ public ElementWiseDifferentiableVectorFunctionTest( String testName) { super(testName); } /** * Test of constructors of class ElementWiseDifferentiableVectorFunction. */ @Override public void testConstructors() { ElementWiseDifferentiableVectorFunction instance = new ElementWiseDifferentiableVectorFunction(); assertNotNull(instance.getScalarFunction()); assertTrue(instance.getScalarFunction() instanceof LinearFunction); DifferentiableUnivariateScalarFunction scalarFunction = new CosineFunction(); instance = new ElementWiseDifferentiableVectorFunction(scalarFunction); assertSame(scalarFunction, instance.getScalarFunction()); } /** * Test of differentiate method, of class ElementWiseDifferentiableVectorFunction. */ public void testDifferentiate() { System.out.println("differentiate"); DifferentiableUnivariateScalarFunction f = new AtanFunction(); ElementWiseDifferentiableVectorFunction instance = new ElementWiseDifferentiableVectorFunction( f ); int M = random.nextInt( 10 ) + 1; double r = 2.0; Vector input = VectorFactory.getDefault().createUniformRandom(M, -r, r, random); Matrix dydx = instance.differentiate(input); assertEquals( M, dydx.getNumRows() ); assertEquals( M, dydx.getNumColumns() ); for( int i = 0; i < M; i++ ) { for( int j = 0; j < M; j++ ) { double v = dydx.getElement(i, j); if( i != j ) { assertEquals( 0.0, v ); } else { assertEquals( f.differentiate(input.getElement(i)), v ); } } } } /** * Test of getScalarFunction method, of class ElementWiseDifferentiableVectorFunction. */ public void testGetScalarFunction() { System.out.println("getScalarFunction"); DifferentiableUnivariateScalarFunction f = new AtanFunction(); ElementWiseDifferentiableVectorFunction instance = new ElementWiseDifferentiableVectorFunction( f ); assertSame( f, instance.getScalarFunction() ); } }