package jscl.math.function.trigonometric; import jscl.AngleUnit; import jscl.JsclMathEngine; import org.junit.Test; import static org.junit.Assert.assertEquals; /** * User: serso * Date: 1/7/12 * Time: 4:03 PM */ public class TanTest { @Test public void testIntegrate() throws Exception { final JsclMathEngine me = JsclMathEngine.getInstance(); // todo serso: uncomment after variable modification issue fixed /* Assert.assertEquals("-2*ln(2)-ln(cos(x))", me.simplify("∫(tan(x), x)")); Assert.assertEquals("-(2*ln(2)+ln(cos(x*π)))/π", me.simplify("∫(tan(π*x), x)")); Assert.assertEquals("-0.015308831465985804", me.evaluate("ln(cos(10))")); Assert.assertEquals("-0.1438410362258904", me.evaluate("ln(cos(30))")); Assert.assertEquals("0.12853220475990468", me.evaluate("∫ab(tan(x), x, 10, 30)"));*/ try { me.setAngleUnits(AngleUnit.rad); assertEquals("-2*ln(2)-ln(cos(x))", me.simplify("∫(tan(x), x)")); assertEquals("-(2*ln(2)+ln(cos(x*π)))/π", me.simplify("∫(tan(π*x), x)")); assertEquals("-0.015308831465986", me.evaluate("ln(cos(10*π/180))")); assertEquals("-0.14384103622589", me.evaluate("ln(cos(30*π/180))")); assertEquals("0.128532204759905", me.evaluate("∫ab(tan(x), x, 10*π/180, 30*π/180)")); } finally { me.setAngleUnits(AngleUnit.deg); } } @Test public void testBoundaryConditions() throws Exception { final JsclMathEngine me = JsclMathEngine.getInstance(); assertEquals("-∞", me.evaluate("tan(-450)")); assertEquals("0", me.evaluate("tan(-360)")); assertEquals("-∞", me.evaluate("tan(-270)")); assertEquals("0", me.evaluate("tan(-180)")); assertEquals("-∞", me.evaluate("tan(-90)")); assertEquals("0", me.evaluate("tan(0)")); assertEquals("∞", me.evaluate("tan(180/2)")); assertEquals("∞", me.evaluate("tan(45 + 45)")); assertEquals("∞", me.evaluate("tan(30*3)")); assertEquals("∞", me.evaluate("tan(90)")); assertEquals("0", me.evaluate("tan(180)")); assertEquals("∞", me.evaluate("tan(270)")); assertEquals("0", me.evaluate("tan(360)")); assertEquals("∞", me.evaluate("tan(450)")); } }