/** * Copyright (C) 2001-2017 by RapidMiner and the contributors * * Complete list of developers available at our web site: * * http://rapidminer.com * * This program is free software: you can redistribute it and/or modify it under the terms of the * GNU Affero General Public License as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License along with this program. * If not, see http://www.gnu.org/licenses/. */ package com.rapidminer.tools.expression.internal.function; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import org.apache.commons.math3.util.FastMath; import org.junit.Test; import com.rapidminer.tools.expression.Expression; import com.rapidminer.tools.expression.ExpressionException; import com.rapidminer.tools.expression.ExpressionType; import com.rapidminer.tools.expression.internal.antlr.AntlrParser; /** * * Tests the results of {@link AntlrParser#parse(String)} for trigonometric functions. * * @author Denis Schernov * */ public class AntlrParserTrigonometricTest extends AntlrParserTest { // sin() @Test public void sinInt() { try { Expression expression = getExpressionWithFunctionContext("sin(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sin(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinDouble() { try { Expression expression = getExpressionWithFunctionContext("sin(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sin(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinNegative() { try { Expression expression = getExpressionWithFunctionContext("sin(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sin(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinInf() { try { Expression expression = getExpressionWithFunctionContext("sin(INFINITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinEmpty() { try { getExpressionWithFunctionContext("sin()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinString() { try { getExpressionWithFunctionContext("sin( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinNull() { try { getExpressionWithFunctionContext("sin(0)"); Expression expression = getExpressionWithFunctionContext("sin(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sin(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinNinety() { try { Expression expression = getExpressionWithFunctionContext("sin(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sin(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinPi() { try { Expression expression = getExpressionWithFunctionContext("sin(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sin(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinPiHalf() { try { Expression expression = getExpressionWithFunctionContext("sin(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sin(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // cos() @Test public void cosInt() { try { Expression expression = getExpressionWithFunctionContext("cos(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cos(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosDouble() { try { Expression expression = getExpressionWithFunctionContext("cos(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cos(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosNegative() { try { Expression expression = getExpressionWithFunctionContext("cos(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cos(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosINFINITY() { try { Expression expression = getExpressionWithFunctionContext("cos(INFINITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosEmpty() { try { getExpressionWithFunctionContext("cos()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosString() { try { getExpressionWithFunctionContext("cos( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosNull() { try { getExpressionWithFunctionContext("cos(0)"); Expression expression = getExpressionWithFunctionContext("cos(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cos(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosNinety() { try { Expression expression = getExpressionWithFunctionContext("cos(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cos(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosPi() { try { Expression expression = getExpressionWithFunctionContext("cos(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cos(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosPiHalf() { try { Expression expression = getExpressionWithFunctionContext("cos(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cos(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // tan() @Test public void tanInt() { try { Expression expression = getExpressionWithFunctionContext("tan(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tan(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanDouble() { try { Expression expression = getExpressionWithFunctionContext("tan(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tan(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanNegative() { try { Expression expression = getExpressionWithFunctionContext("tan(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tan(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanInfinity() { try { Expression expression = getExpressionWithFunctionContext("tan(INFINITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanEmpty() { try { getExpressionWithFunctionContext("tan()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanString() { try { getExpressionWithFunctionContext("tan( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanNull() { try { getExpressionWithFunctionContext("tan(0)"); Expression expression = getExpressionWithFunctionContext("tan(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tan(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanNinety() { try { Expression expression = getExpressionWithFunctionContext("tan(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tan(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanPi() { try { Expression expression = getExpressionWithFunctionContext("tan(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tan(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanPiHalf() { try { Expression expression = getExpressionWithFunctionContext("tan(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tan(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // cot() @Test public void cotInt() { try { Expression expression = getExpressionWithFunctionContext("cot(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.tan(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotDouble() { try { Expression expression = getExpressionWithFunctionContext("cot(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.tan(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotNegative() { try { Expression expression = getExpressionWithFunctionContext("cot(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.tan(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotInfinity() { try { Expression expression = getExpressionWithFunctionContext("cot(INFINITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotEmpty() { try { getExpressionWithFunctionContext("cot()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotString() { try { getExpressionWithFunctionContext("cot( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotNull() { try { Expression expression = getExpressionWithFunctionContext("cot(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotPi() { try { Expression expression = getExpressionWithFunctionContext("cot(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cotPiHalf() { try { Expression expression = getExpressionWithFunctionContext("cot(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(0, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // sec() @Test public void secInt() { try { Expression expression = getExpressionWithFunctionContext("sec(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.cos(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secDouble() { try { Expression expression = getExpressionWithFunctionContext("sec(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.cos(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secNegative() { try { Expression expression = getExpressionWithFunctionContext("sec(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.cos(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secInfinity() { try { Expression expression = getExpressionWithFunctionContext("sec(INFINITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secEmpty() { try { getExpressionWithFunctionContext("sec()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secString() { try { getExpressionWithFunctionContext("sec( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secNull() { try { Expression expression = getExpressionWithFunctionContext("sec(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.cos(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secPi() { try { Expression expression = getExpressionWithFunctionContext("sec(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.cos(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void secPiHalf() { try { Expression expression = getExpressionWithFunctionContext("sec(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // cosec() @Test public void cosecInt() { try { Expression expression = getExpressionWithFunctionContext("cosec(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.sin(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecDouble() { try { Expression expression = getExpressionWithFunctionContext("cosec(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.sin(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecNegative() { try { Expression expression = getExpressionWithFunctionContext("cosec(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.sin(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecInfinity() { try { Expression expression = getExpressionWithFunctionContext("cosec(INFINITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecEmpty() { try { getExpressionWithFunctionContext("cosec()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecString() { try { getExpressionWithFunctionContext("cosec( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecNull() { try { Expression expression = getExpressionWithFunctionContext("cosec(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecNinety() { try { Expression expression = getExpressionWithFunctionContext("cosec(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.sin(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecPi() { try { Expression expression = getExpressionWithFunctionContext("cosec(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void cosecPiHalf() { try { Expression expression = getExpressionWithFunctionContext("cosec(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(1.0 / Math.sin(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // asin() @Test public void asinInt() { try { Expression expression = getExpressionWithFunctionContext("asin(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinDouble() { try { Expression expression = getExpressionWithFunctionContext("asin(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinNegative() { try { Expression expression = getExpressionWithFunctionContext("asin(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinInfinity() { try { Expression expression = getExpressionWithFunctionContext("asin(INIFNITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinEmpty() { try { getExpressionWithFunctionContext("asin()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinString() { try { getExpressionWithFunctionContext("asin( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinNull() { try { Expression expression = getExpressionWithFunctionContext("asin(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinNinety() { try { Expression expression = getExpressionWithFunctionContext("asin(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinPi() { try { Expression expression = getExpressionWithFunctionContext("asin(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinPiHalf() { try { Expression expression = getExpressionWithFunctionContext("asin(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // acos() @Test public void acosInt() { try { Expression expression = getExpressionWithFunctionContext("acos(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.acos(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosDouble() { try { Expression expression = getExpressionWithFunctionContext("acos(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.acos(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosNegative() { try { Expression expression = getExpressionWithFunctionContext("acos(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.acos(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosInfinity() { try { Expression expression = getExpressionWithFunctionContext("acos(INFINITY)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Double.NaN, expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosEmpty() { try { getExpressionWithFunctionContext("acos()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosString() { try { getExpressionWithFunctionContext("acos( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosNull() { try { Expression expression = getExpressionWithFunctionContext("acos(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.acos(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosNinety() { try { Expression expression = getExpressionWithFunctionContext("acos(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.acos(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosPi() { try { Expression expression = getExpressionWithFunctionContext("acos(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.acos(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acosPiHalf() { try { Expression expression = getExpressionWithFunctionContext("acos(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.acos(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // atan() @Test public void atanInt() { try { Expression expression = getExpressionWithFunctionContext("atan(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanDouble() { try { Expression expression = getExpressionWithFunctionContext("atan(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanNegative() { try { Expression expression = getExpressionWithFunctionContext("atan(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanEmpty() { try { getExpressionWithFunctionContext("atan()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanString() { try { getExpressionWithFunctionContext("atan( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanNull() { try { Expression expression = getExpressionWithFunctionContext("atan(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.asin(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanNinety() { try { Expression expression = getExpressionWithFunctionContext("atan(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanPi() { try { Expression expression = getExpressionWithFunctionContext("atan(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanPiHalf() { try { Expression expression = getExpressionWithFunctionContext("atan(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // atan2() @Test public void atan2IntInt() { try { Expression expression = getExpressionWithFunctionContext("atan2(16,16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(16, 16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2DoubleInt() { try { Expression expression = getExpressionWithFunctionContext("atan2(16.3,16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(16.3, 16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2IntDouble() { try { Expression expression = getExpressionWithFunctionContext("atan2(16,16.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(16, 16.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2DoubleDouble() { try { Expression expression = getExpressionWithFunctionContext("atan2(33.3,33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(33.3, 33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NegativeNegative() { try { Expression expression = getExpressionWithFunctionContext("atan2(-10,-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(-10, -10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NegativePositive() { try { Expression expression = getExpressionWithFunctionContext("atan2(-10,10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(-10, 10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PositiveNegative() { try { Expression expression = getExpressionWithFunctionContext("atan2(10,-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(10, -10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NullNull() { try { Expression expression = getExpressionWithFunctionContext("atan2(0,0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(0, 0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NullNinety() { try { Expression expression = getExpressionWithFunctionContext("atan2(0,90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(0, 90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NinetyNull() { try { Expression expression = getExpressionWithFunctionContext("atan2(90,0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(90, 0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NinetyNinety() { try { Expression expression = getExpressionWithFunctionContext("atan2(90,90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(90, 90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NullPi() { try { Expression expression = getExpressionWithFunctionContext("atan2(0,pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(0, Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NinetyPi() { try { Expression expression = getExpressionWithFunctionContext("atan2(90,pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(90, Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiNull() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi,0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI, 0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiNinety() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi,90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI, 90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NullPiHalf() { try { Expression expression = getExpressionWithFunctionContext("atan2(0,pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(0, Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2NinetyPiHalf() { try { Expression expression = getExpressionWithFunctionContext("atan2(90,pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(90, Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiHalfNull() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi/2,0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI / 2, 0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiHalfNinety() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi/2,90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI / 2, 90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiPi() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi,pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI, Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiPiHalf() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi,pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI, Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiHalfPi() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi/2,pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI / 2, Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2PiHalfPiHalf() { try { Expression expression = getExpressionWithFunctionContext("atan2(pi/2,pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.atan2(Math.PI / 2, Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2Empty() { try { getExpressionWithFunctionContext("atan2()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2String() { try { getExpressionWithFunctionContext("atan2( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atan2StringInt() { try { getExpressionWithFunctionContext("atan2( \"blup\",1)"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // sinh() @Test public void sinhInt() { try { Expression expression = getExpressionWithFunctionContext("sinh(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sinh(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhDouble() { try { Expression expression = getExpressionWithFunctionContext("sinh(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sinh(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhNegative() { try { Expression expression = getExpressionWithFunctionContext("sinh(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sinh(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhEmpty() { try { getExpressionWithFunctionContext("sinh()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhString() { try { getExpressionWithFunctionContext("sinh( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhNull() { try { Expression expression = getExpressionWithFunctionContext("sinh(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sinh(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhNinety() { try { Expression expression = getExpressionWithFunctionContext("sinh(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sinh(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhPi() { try { Expression expression = getExpressionWithFunctionContext("sinh(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sinh(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void sinhPiHalf() { try { Expression expression = getExpressionWithFunctionContext("sinh(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.sinh(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // cosh() @Test public void coshInt() { try { Expression expression = getExpressionWithFunctionContext("cosh(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cosh(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshDouble() { try { Expression expression = getExpressionWithFunctionContext("cosh(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cosh(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshNegative() { try { Expression expression = getExpressionWithFunctionContext("cosh(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cosh(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshEmpty() { try { getExpressionWithFunctionContext("cosh()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshString() { try { getExpressionWithFunctionContext("cosh( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshNull() { try { Expression expression = getExpressionWithFunctionContext("cosh(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cosh(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshNinety() { try { Expression expression = getExpressionWithFunctionContext("cosh(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cosh(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshPi() { try { Expression expression = getExpressionWithFunctionContext("cosh(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cosh(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void coshPiHalf() { try { Expression expression = getExpressionWithFunctionContext("cosh(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.cosh(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // tanh() @Test public void tanhInt() { try { Expression expression = getExpressionWithFunctionContext("tanh(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tanh(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhDouble() { try { Expression expression = getExpressionWithFunctionContext("tanh(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tanh(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhNegative() { try { Expression expression = getExpressionWithFunctionContext("tanh(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tanh(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhEmpty() { try { getExpressionWithFunctionContext("tanh()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhString() { try { getExpressionWithFunctionContext("tanh( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhNull() { try { Expression expression = getExpressionWithFunctionContext("tanh(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tanh(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhNinety() { try { Expression expression = getExpressionWithFunctionContext("tanh(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tanh(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhPi() { try { Expression expression = getExpressionWithFunctionContext("tanh(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tanh(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void tanhPiHalf() { try { Expression expression = getExpressionWithFunctionContext("tanh(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(Math.tanh(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // asinh() @Test public void asinhInt() { try { Expression expression = getExpressionWithFunctionContext("asinh(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.asinh(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhDouble() { try { Expression expression = getExpressionWithFunctionContext("asinh(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.asinh(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhNegative() { try { Expression expression = getExpressionWithFunctionContext("asinh(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.asinh(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhEmpty() { try { getExpressionWithFunctionContext("asinh()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhString() { try { getExpressionWithFunctionContext("asinh( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhNull() { try { Expression expression = getExpressionWithFunctionContext("asinh(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.asinh(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhNinety() { try { Expression expression = getExpressionWithFunctionContext("asinh(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.asinh(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhPi() { try { Expression expression = getExpressionWithFunctionContext("asinh(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.asinh(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void asinhPiHalf() { try { Expression expression = getExpressionWithFunctionContext("asinh(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.asinh(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // acosh() @Test public void acoshInt() { try { Expression expression = getExpressionWithFunctionContext("acosh(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.acosh(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshDouble() { try { Expression expression = getExpressionWithFunctionContext("acosh(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.acosh(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshNegative() { try { Expression expression = getExpressionWithFunctionContext("acosh(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.acosh(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshEmpty() { try { getExpressionWithFunctionContext("acosh()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshString() { try { getExpressionWithFunctionContext("acosh( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshNull() { try { Expression expression = getExpressionWithFunctionContext("acosh(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.acosh(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshNinety() { try { Expression expression = getExpressionWithFunctionContext("acosh(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.acosh(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshPi() { try { Expression expression = getExpressionWithFunctionContext("acosh(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.acosh(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void acoshPiHalf() { try { Expression expression = getExpressionWithFunctionContext("acosh(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.acosh(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } // atanh() @Test public void atanhInt() { try { Expression expression = getExpressionWithFunctionContext("atanh(16)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.atanh(16), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhDouble() { try { Expression expression = getExpressionWithFunctionContext("atanh(33.3)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.atanh(33.3), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhNegative() { try { Expression expression = getExpressionWithFunctionContext("atanh(-10)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.atanh(-10), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhEmpty() { try { getExpressionWithFunctionContext("atanh()"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhString() { try { getExpressionWithFunctionContext("atanh( \"blup\")"); fail(); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhNull() { try { Expression expression = getExpressionWithFunctionContext("atanh(0)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.atanh(0), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhNinety() { try { Expression expression = getExpressionWithFunctionContext("atanh(90)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.atanh(90), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhPi() { try { Expression expression = getExpressionWithFunctionContext("atanh(pi)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.atanh(Math.PI), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } @Test public void atanhPiHalf() { try { Expression expression = getExpressionWithFunctionContext("atanh(pi/2)"); assertEquals(ExpressionType.DOUBLE, expression.getExpressionType()); assertEquals(FastMath.atanh(Math.PI / 2), expression.evaluateNumerical(), 1e-15); } catch (ExpressionException e) { assertNotNull(e.getMessage()); } } }