1990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson/* 2990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 3990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * contributor license agreements. See the NOTICE file distributed with 4990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * this work for additional information regarding copyright ownership. 5990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 6990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * (the "License"); you may not use this file except in compliance with 7990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * the License. You may obtain a copy of the License at 8990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * 9990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 10990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * 11990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * Unless required by applicable law or agreed to in writing, software 12990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 13990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * See the License for the specific language governing permissions and 15990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson * limitations under the License. 16990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson */ 17990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 18990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonpackage libcore.java.lang; 19990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 20990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport junit.framework.Assert; 21990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonimport junit.framework.TestCase; 22990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 23990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilsonpublic class OldAndroidMathTest extends TestCase { 24990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 25990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson private static final double HYP = Math.sqrt(2.0); 26990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 27990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson private static final double OPP = 1.0; 28990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 29990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson private static final double ADJ = 1.0; 30990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 31990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson /* Required to make previous preprocessor flags work - do not remove */ 32990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson int unused = 0; 33990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 34990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public static void assertEquals(String message, double expected, double actual, double delta) { 35990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (delta == 0D) { 36990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Assert.assertEquals(message, expected, actual, Math.ulp(expected)); 37990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } else { 38990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Assert.assertEquals(message, expected, actual, delta); 39990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 40990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 41990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 42990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public static void assertEquals(String message, float expected, float actual, float delta) { 43990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson if (delta == 0F) { 44990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Assert.assertEquals(message, expected, actual, Math.ulp(expected)); 45990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } else { 46990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Assert.assertEquals(message, expected, actual, delta); 47990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 48990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 49990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 50990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAbsD() { 51990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.abs(double) 52990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 53990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect double abs value", 54990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson (Math.abs(-1908.8976) == 1908.8976)); 55990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect double abs value", 56990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson (Math.abs(1908.8976) == 1908.8976)); 57990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 58990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 59990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAbsF() { 60990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method float java.lang.Math.abs(float) 61990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float abs value", 62990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson (Math.abs(-1908.8976f) == 1908.8976f)); 63990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float abs value", 64990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson (Math.abs(1908.8976f) == 1908.8976f)); 65990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 66990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 67990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAbsI() { 68990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method int java.lang.Math.abs(int) 69990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect int abs value", (Math.abs(-1908897) == 1908897)); 70990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect int abs value", (Math.abs(1908897) == 1908897)); 71990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 72990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 73990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAbsJ() { 74990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method long java.lang.Math.abs(long) 75990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect long abs value", 76990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson (Math.abs(-19088976000089L) == 19088976000089L)); 77990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect long abs value", 78990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson (Math.abs(19088976000089L) == 19088976000089L)); 79990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 80990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 81990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAcosD() { 82990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.acos(double) 83990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double r = Math.cos(Math.acos(ADJ / HYP)); 84990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson long lr = Double.doubleToLongBits(r); 85990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson long t = Double.doubleToLongBits(ADJ / HYP); 86990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Returned incorrect arc cosine", lr == t || (lr + 1) == t 87990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson || (lr - 1) == t); 88990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 89990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 90990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAsinD() { 91990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.asin(double) 92990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double r = Math.sin(Math.asin(OPP / HYP)); 93990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson long lr = Double.doubleToLongBits(r); 94990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson long t = Double.doubleToLongBits(OPP / HYP); 95990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Returned incorrect arc sine", lr == t || (lr + 1) == t 96990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson || (lr - 1) == t); 97990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 98990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 99990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAtanD() { 100990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.atan(double) 101990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double answer = Math.tan(Math.atan(1.0)); 102990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Returned incorrect arc tangent: " + answer, answer <= 1.0 103990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson && answer >= 9.9999999999999983E-1); 104990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 105990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 106990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testAtan2DD() { 107990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.atan2(double, double) 108990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double answer = Math.atan(Math.tan(1.0)); 109990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Returned incorrect arc tangent: " + answer, answer <= 1.0 110990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson && answer >= 9.9999999999999983E-1); 111990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 112990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 113990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testCbrtD() { 114990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson //Test for special situations 115990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return Double.NaN", Double.isNaN(Math 116990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cbrt(Double.NaN))); 117990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return Double.POSITIVE_INFINITY", 118990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math 119990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cbrt(Double.POSITIVE_INFINITY), 0D); 120990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return Double.NEGATIVE_INFINITY", 121990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.NEGATIVE_INFINITY, Math 122990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cbrt(Double.NEGATIVE_INFINITY), 0D); 123990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(0.0), Double.doubleToLongBits(Math 124990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cbrt(0.0))); 125990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(+0.0), Double.doubleToLongBits(Math 126990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cbrt(+0.0))); 127990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(-0.0), Double.doubleToLongBits(Math 128990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cbrt(-0.0))); 129990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 130990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 3.0", 3.0, Math.cbrt(27.0), 0D); 131990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 23.111993172558684", 23.111993172558684, 132990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.cbrt(12345.6), 0D); 133990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 5.643803094122362E102", 134990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 5.643803094122362E102, Math.cbrt(Double.MAX_VALUE), 0D); 135990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 0.01", 0.01, Math.cbrt(0.000001), 0D); 136990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 137990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -3.0", -3.0, Math.cbrt(-27.0), 0D); 138990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -23.111993172558684", -23.111993172558684, 139990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.cbrt(-12345.6), 0D); 140990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.7031839360032603E-108", 141990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1.7031839360032603E-108, Math.cbrt(Double.MIN_VALUE), 0D); 142990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -0.01", -0.01, Math.cbrt(-0.000001), 0D); 143990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 144990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 145990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testCeilD() { 146990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.ceil(double) 147990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect ceiling for double", 148990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 79, Math.ceil(78.89), 0); 149990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect ceiling for double", 150990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -78, Math.ceil(-78.89), 0); 151990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 152990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 153990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testCosD() { 154990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.cos(double) 155990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect answer", 1.0, Math.cos(0), 0D); 156990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect answer", 0.5403023058681398, Math.cos(1), 0D); 157990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 158990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 159990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testCoshD() { 160990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special situations 161990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue(Double.isNaN(Math.cosh(Double.NaN))); 162990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 163990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.cosh(Double.POSITIVE_INFINITY), 0D); 164990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 165990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.cosh(Double.NEGATIVE_INFINITY), 0D); 166990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0", 1.0, Math.cosh(+0.0), 0D); 167990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0", 1.0, Math.cosh(-0.0), 0D); 168990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 169990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 170990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.cosh(1234.56), 0D); 171990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 172990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.cosh(-1234.56), 0D); 173990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0000000000005", 1.0000000000005, Math 174990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cosh(0.000001), 0D); 175990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0000000000005", 1.0000000000005, Math 176990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cosh(-0.000001), 0D); 177990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 5.212214351945598", 5.212214351945598, Math 178990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .cosh(2.33482), 0D); 179990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 180990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 181990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.cosh(Double.MAX_VALUE), 0D); 182990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0", 1.0, Math.cosh(Double.MIN_VALUE), 0D); 183990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 184990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 185990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testExpD() { 186990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.exp(double) 187990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect answer returned for simple power", Math.abs(Math 188990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .exp(4D) 189990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson - Math.E * Math.E * Math.E * Math.E) < 0.1D); 190990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect answer returned for larger power", Math.log(Math 191990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .abs(Math.exp(5.5D)) - 5.5D) < 10.0D); 192990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 193990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 194990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testExpm1D() { 195990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special cases 196990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return NaN", Double.isNaN(Math.expm1(Double.NaN))); 197990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 198990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.expm1(Double.POSITIVE_INFINITY), 0D); 199990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -1.0", -1.0, Math 200990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .expm1(Double.NEGATIVE_INFINITY), 0D); 201990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(0.0), Double.doubleToLongBits(Math 202990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .expm1(0.0))); 203990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(+0.0), Double 204990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.expm1(+0.0))); 205990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(-0.0), Double 206990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.expm1(-0.0))); 207990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 208990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -9.999950000166666E-6", 209990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -9.999950000166666E-6, Math.expm1(-0.00001), 0D); 210990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0145103074469635E60", 211990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1.0145103074469635E60, Math.expm1(138.16951162), 0D); 212990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 213990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math 214990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .expm1(123456789123456789123456789.4521584223), 0D); 215990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 216990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.expm1(Double.MAX_VALUE), 0D); 217990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return MIN_VALUE", Double.MIN_VALUE, Math 218990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .expm1(Double.MIN_VALUE), 0D); 219990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 220990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 221990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testFloorD() { 222990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.floor(double) 223990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect floor for double", 224990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 78, Math.floor(78.89), 0); 225990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect floor for double", 226990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -79, Math.floor(-78.89), 0); 227990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 228990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 229990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testHypotDD() { 230990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special cases 231990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 232990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.hypot(Double.POSITIVE_INFINITY, 233990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1.0), 0D); 234990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 235990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.hypot(Double.NEGATIVE_INFINITY, 236990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 123.324), 0D); 237990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 238990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.hypot(-758.2587, 239990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY), 0D); 240990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 241990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.hypot(5687.21, 242990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.NEGATIVE_INFINITY), 0D); 243990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 244990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.hypot(Double.POSITIVE_INFINITY, 245990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.NEGATIVE_INFINITY), 0D); 246990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 247990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.hypot(Double.NEGATIVE_INFINITY, 248990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY), 0D); 249990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should be NaN", Double.isNaN(Math.hypot(Double.NaN, 250990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 2342301.89843))); 251990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should be NaN", Double.isNaN(Math.hypot(-345.2680, 252990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.NaN))); 253990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 254990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 2396424.905416697", 2396424.905416697, Math 255990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .hypot(12322.12, -2396393.2258), 0D); 256990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 138.16958070558556", 138.16958070558556, 257990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.hypot(-138.16951162, 0.13817035864), 0D); 258990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.7976931348623157E308", 259990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1.7976931348623157E308, Math.hypot(Double.MAX_VALUE, 211370.35), 0D); 260990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 5413.7185", 5413.7185, Math.hypot( 261990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -5413.7185, Double.MIN_VALUE), 0D); 262990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 263990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 264990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testIEEEremainderDD() { 265990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.IEEEremainder(double, double) 266990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect remainder returned", 267990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 0.0, Math.IEEEremainder(1.0, 1.0), 0D); 268990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect remainder returned", Math.IEEEremainder(1.32, 269990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 89.765) >= 1.4705063220631647E-2 270990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson || Math.IEEEremainder(1.32, 89.765) >= 1.4705063220631649E-2); 271990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 272990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 273990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testLogD() { 274990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.log(double) 275990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson for (double d = 10; d >= -10; d -= 0.5) { 276990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double answer = Math.log(Math.exp(d)); 277990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Answer does not equal expected answer for d = " + d 278990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson + " answer = " + answer, Math.abs(answer - d) <= Math 279990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .abs(d * 0.00000001)); 280990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 281990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 282990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 283990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson @SuppressWarnings("boxing") 284990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testLog10D() { 285990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special cases 286990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue(Double.isNaN(Math.log10(Double.NaN))); 287990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue(Double.isNaN(Math.log10(-2541.05745687234187532))); 288990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue(Double.isNaN(Math.log10(-0.1))); 289990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.POSITIVE_INFINITY, Math.log10(Double.POSITIVE_INFINITY)); 290990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.NEGATIVE_INFINITY, Math.log10(0.0)); 291990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.NEGATIVE_INFINITY, Math.log10(+0.0)); 292990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.NEGATIVE_INFINITY, Math.log10(-0.0)); 293990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 294990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(3.0, Math.log10(1000.0)); 295990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(14.0, Math.log10(Math.pow(10, 14))); 296990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(3.7389561269540406, Math.log10(5482.2158)); 297990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(14.661551142893833, Math.log10(458723662312872.125782332587)); 298990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-0.9083828622192334, Math.log10(0.12348583358871)); 299990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(308.25471555991675, Math.log10(Double.MAX_VALUE)); 300990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-323.3062153431158, Math.log10(Double.MIN_VALUE)); 301990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 302990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 303990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testLog1pD() { 304990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special cases 305990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return NaN", Double.isNaN(Math.log1p(Double.NaN))); 306990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return NaN", Double.isNaN(Math.log1p(-32.0482175))); 307990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 308990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.log1p(Double.POSITIVE_INFINITY), 0D); 309990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(0.0), Double.doubleToLongBits(Math 310990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .log1p(0.0))); 311990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(+0.0), Double 312990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.log1p(+0.0))); 313990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(-0.0), Double 314990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.log1p(-0.0))); 315990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 316990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -0.2941782295312541", -0.2941782295312541, 317990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.log1p(-0.254856327), 0D); 318990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 7.368050685564151", 7.368050685564151, Math 319990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .log1p(1583.542), 0D); 320990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 0.4633708685409921", 0.4633708685409921, 321990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.log1p(0.5894227), 0D); 322990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 709.782712893384", 709.782712893384, Math 323990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .log1p(Double.MAX_VALUE), 0D); 324990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return Double.MIN_VALUE", Double.MIN_VALUE, Math 325990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .log1p(Double.MIN_VALUE), 0D); 326990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 327990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 328990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMaxDD() { 329990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.max(double, double) 330990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect double max value", 1908897.6000089, Math.max(-1908897.6000089, 331990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1908897.6000089), 0D); 332990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect double max value", 333990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1908897.6000089, Math.max(2.0, 1908897.6000089), 0D); 334990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect double max value", -2.0, Math.max(-2.0, 335990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -1908897.6000089), 0D); 336990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 337990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 338990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 339990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMaxFF() { 340990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method float java.lang.Math.max(float, float) 341990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float max value", Math.max(-1908897.600f, 342990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1908897.600f) == 1908897.600f); 343990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float max value", 344990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.max(2.0f, 1908897.600f) == 1908897.600f); 345990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float max value", 346990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.max(-2.0f, -1908897.600f) == -2.0f); 347990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 348990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 349990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMaxII() { 350990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method int java.lang.Math.max(int, int) 351990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect int max value", 352990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 19088976, Math.max(-19088976, 19088976)); 353990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect int max value", 354990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 19088976, Math.max(20, 19088976)); 355990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect int max value", -20, Math.max(-20, -19088976)); 356990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 357990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 358990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMaxJJ() { 359990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method long java.lang.Math.max(long, long) 360990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect long max value", 19088976000089L, Math.max(-19088976000089L, 361990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 19088976000089L)); 362990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect long max value", 363990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 19088976000089L, Math.max(20, 19088976000089L)); 364990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect long max value", 365990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -20, Math.max(-20, -19088976000089L)); 366990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 367990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 368990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMinDD() { 369990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.min(double, double) 370990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect double min value", -1908897.6000089, Math.min(-1908897.6000089, 371990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1908897.6000089), 0D); 372990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect double min value", 373990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 2.0, Math.min(2.0, 1908897.6000089), 0D); 374990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect double min value", -1908897.6000089, Math.min(-2.0, 375990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -1908897.6000089), 0D); 376990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 377990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 378990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMinFF() { 379990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method float java.lang.Math.min(float, float) 380990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float min value", Math.min(-1908897.600f, 381990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1908897.600f) == -1908897.600f); 382990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float min value", 383990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.min(2.0f, 1908897.600f) == 2.0f); 384990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Incorrect float min value", 385990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.min(-2.0f, -1908897.600f) == -1908897.600f); 386990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 387990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 388990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMinII() { 389990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method int java.lang.Math.min(int, int) 390990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect int min value", 391990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -19088976, Math.min(-19088976, 19088976)); 392990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect int min value", 20, Math.min(20, 19088976)); 393990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect int min value", 394990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -19088976, Math.min(-20, -19088976)); 395990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 396990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 397990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 398990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testMinJJ() { 399990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method long java.lang.Math.min(long, long) 400990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect long min value", -19088976000089L, Math.min(-19088976000089L, 401990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 19088976000089L)); 402990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect long min value", 403990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 20, Math.min(20, 19088976000089L)); 404990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect long min value", 405990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -19088976000089L, Math.min(-20, -19088976000089L)); 406990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 407990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 408990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testPowDD() { 409990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.pow(double, double) 410990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("pow returned incorrect value", 411990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson (long) Math.pow(2, 8) == 256l); 412990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("pow returned incorrect value", 413990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.pow(2, -8) == 0.00390625d); 414990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect root returned1", 415990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 2, Math.sqrt(Math.pow(Math.sqrt(2), 4)), 0); 416990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 417990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 418990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testRintD() { 419990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.rint(double) 420990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Failed to round properly - up to odd", 421990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 3.0, Math.rint(2.9), 0D); 422990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Failed to round properly - NaN", Double.isNaN(Math 423990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .rint(Double.NaN))); 424990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Failed to round properly down to even", 425990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 2.0, Math.rint(2.1), 0D); 426990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Failed to round properly " + 2.5 + " to even", Math 427990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .rint(2.5) == 2.0); 428990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 429990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 430990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testRoundD() { 431990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method long java.lang.Math.round(double) 432990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect rounding of a float", -91, Math.round(-90.89d)); 433990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 434990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 435990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testRoundF() { 436990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method int java.lang.Math.round(float) 437990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect rounding of a float", -91, Math.round(-90.89f)); 438990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 439990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 440990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testSignumD() { 441990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue(Double.isNaN(Math.signum(Double.NaN))); 442990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue(Double.isNaN(Math.signum(Double.NaN))); 443990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(0.0), Double.doubleToLongBits(Math 444990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .signum(0.0))); 445990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(+0.0), Double 446990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.signum(+0.0))); 447990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(-0.0), Double 448990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.signum(-0.0))); 449990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 450990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0, Math.signum(253681.2187962), 0D); 451990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0, Math.signum(-125874693.56), 0D); 452990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0, Math.signum(1.2587E-308), 0D); 453990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0, Math.signum(-1.2587E-308), 0D); 454990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 455990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0, Math.signum(Double.MAX_VALUE), 0D); 456990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0, Math.signum(Double.MIN_VALUE), 0D); 457990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0, Math.signum(-Double.MAX_VALUE), 0D); 458990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0, Math.signum(-Double.MIN_VALUE), 0D); 459990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0, Math.signum(Double.POSITIVE_INFINITY), 0D); 460990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0, Math.signum(Double.NEGATIVE_INFINITY), 0D); 461990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 462990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 463990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testSignumF() { 464990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue(Float.isNaN(Math.signum(Float.NaN))); 465990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Float.floatToIntBits(0.0f), Float 466990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .floatToIntBits(Math.signum(0.0f))); 467990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Float.floatToIntBits(+0.0f), Float 468990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .floatToIntBits(Math.signum(+0.0f))); 469990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Float.floatToIntBits(-0.0f), Float 470990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .floatToIntBits(Math.signum(-0.0f))); 471990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 472990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0f, Math.signum(253681.2187962f), 0f); 473990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0f, Math.signum(-125874693.56f), 0f); 474990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0f, Math.signum(1.2587E-11f), 0f); 475990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0f, Math.signum(-1.2587E-11f), 0f); 476990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 477990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0f, Math.signum(Float.MAX_VALUE), 0f); 478990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0f, Math.signum(Float.MIN_VALUE), 0f); 479990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0f, Math.signum(-Float.MAX_VALUE), 0f); 480990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0f, Math.signum(-Float.MIN_VALUE), 0f); 481990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(1.0f, Math.signum(Float.POSITIVE_INFINITY), 0f); 482990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(-1.0f, Math.signum(Float.NEGATIVE_INFINITY), 0f); 483990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 484990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 485990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testSinD() { 486990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.sin(double) 487990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect answer", 0.0, Math.sin(0), 0D); 488990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect answer", 0.8414709848078965, Math.sin(1), 0D); 489990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 490990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 491990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testSinhD() { 492990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special situations 493990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return NaN", Double.isNaN(Math.sinh(Double.NaN))); 494990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 495990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.sinh(Double.POSITIVE_INFINITY), 0D); 496990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return NEGATIVE_INFINITY", 497990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.NEGATIVE_INFINITY, Math.sinh(Double.NEGATIVE_INFINITY), 0D); 498990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(0.0), Double.doubleToLongBits(Math 499990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .sinh(0.0))); 500990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(+0.0), Double 501990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.sinh(+0.0))); 502990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(-0.0), Double 503990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.sinh(-0.0))); 504990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 505990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 506990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.sinh(1234.56), 0D); 507990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return NEGATIVE_INFINITY", 508990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.NEGATIVE_INFINITY, Math.sinh(-1234.56), 0D); 509990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0000000000001666E-6", 510990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 1.0000000000001666E-6, Math.sinh(0.000001), 0D); 511990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -1.0000000000001666E-6", 512990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson -1.0000000000001666E-6, Math.sinh(-0.000001), 0D); 513990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 5.115386441963859", 5.115386441963859, Math 514990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .sinh(2.33482), 0D); 515990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return POSITIVE_INFINITY", 516990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Double.POSITIVE_INFINITY, Math.sinh(Double.MAX_VALUE), 0D); 517990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 4.9E-324", 4.9E-324, Math 518990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .sinh(Double.MIN_VALUE), 0D); 519990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 520990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 521990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testSqrtD() { 522990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.sqrt(double) 523990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect root returned2", 7, Math.sqrt(49), 0); 524990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 525990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 526990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testTanD() { 527990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for method double java.lang.Math.tan(double) 528990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect answer", 0.0, Math.tan(0), 0D); 529990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Incorrect answer", 1.5574077246549023, Math.tan(1), 0D); 530990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 531990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 532990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 533990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testTanhD() { 534990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special situations 535990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return NaN", Double.isNaN(Math.tanh(Double.NaN))); 536990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return +1.0", +1.0, Math 537990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .tanh(Double.POSITIVE_INFINITY), 0D); 538990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -1.0", -1.0, Math 539990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .tanh(Double.NEGATIVE_INFINITY), 0D); 540990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(0.0), Double.doubleToLongBits(Math 541990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .tanh(0.0))); 542990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(+0.0), Double 543990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.tanh(+0.0))); 544990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals(Double.doubleToLongBits(-0.0), Double 545990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .doubleToLongBits(Math.tanh(-0.0))); 546990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 547990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0", 1.0, Math.tanh(1234.56), 0D); 548990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return -1.0", -1.0, Math.tanh(-1234.56), 0D); 549990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 9.999999999996666E-7", 550990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 9.999999999996666E-7, Math.tanh(0.000001), 0D); 551990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 0.981422884124941", 0.981422884124941, Math 552990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .tanh(2.33482), 0D); 553990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 1.0", 1.0, Math.tanh(Double.MAX_VALUE), 0D); 554990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Should return 4.9E-324", 4.9E-324, Math 555990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .tanh(Double.MIN_VALUE), 0D); 556990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 557990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 558990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testRandom() { 559990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // There isn't a place for these tests so just stick them here 560990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Wrong value E", 561990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 4613303445314885481L, Double.doubleToLongBits(Math.E)); 562990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Wrong value PI", 563990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 4614256656552045848L, Double.doubleToLongBits(Math.PI)); 564990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 565990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson for (int i = 500; i >= 0; i--) { 566990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double d = Math.random(); 567990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Generated number is out of range: " + d, d >= 0.0 568990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson && d < 1.0); 569990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 570990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 571990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 572990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testToRadiansD() { 573990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson for (double d = 500; d >= 0; d -= 1.0) { 574990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double converted = Math.toDegrees(Math.toRadians(d)); 575990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Converted number not equal to original. d = " + d, 576990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson converted >= d * 0.99999999 && converted <= d * 1.00000001); 577990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 578990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 579990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 580990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testToDegreesD() { 581990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson for (double d = 500; d >= 0; d -= 1.0) { 582990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson double converted = Math.toRadians(Math.toDegrees(d)); 583990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Converted number not equal to original. d = " + d, 584990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson converted >= d * 0.99999999 && converted <= d * 1.00000001); 585990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 586990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 587990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 588990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson @SuppressWarnings("boxing") 589990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testUlpD() { 590990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special cases 591990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return NaN", Double.isNaN(Math.ulp(Double.NaN))); 592990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, Math 593990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Double.POSITIVE_INFINITY), 0D); 594990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, Math 595990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Double.NEGATIVE_INFINITY), 0D); 596990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Double.MIN_VALUE, Math 597990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(0.0), 0D); 598990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Double.MIN_VALUE, Math 599990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(+0.0), 0D); 600990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Double.MIN_VALUE, Math 601990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(-0.0), 0D); 602990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Math.pow(2, 971), Math 603990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Double.MAX_VALUE), 0D); 604990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Math.pow(2, 971), Math 605990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(-Double.MAX_VALUE), 0D); 606990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 607990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Double.MIN_VALUE, Math 608990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Double.MIN_VALUE), 0D); 609990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Double.MIN_VALUE, Math 610990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(-Double.MIN_VALUE), 0D); 611990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 612990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 2.220446049250313E-16, Math 613990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(1.0), 0D); 614990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 2.220446049250313E-16, Math 615990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(-1.0), 0D); 616990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 2.2737367544323206E-13, Math 617990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(1153.0), 0D); 618990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 619990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 620990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson @SuppressWarnings("boxing") 621990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson public void testUlpf() { 622990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson // Test for special cases 623990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertTrue("Should return NaN", Float.isNaN(Math.ulp(Float.NaN))); 624990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, Math 625990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Float.POSITIVE_INFINITY), 0f); 626990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, Math 627990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Float.NEGATIVE_INFINITY), 0f); 628990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Float.MIN_VALUE, Math 629990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(0.0f), 0f); 630990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Float.MIN_VALUE, Math 631990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(+0.0f), 0f); 632990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", Float.MIN_VALUE, Math 633990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(-0.0f), 0f); 634990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 2.028241E31f, Math 635990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Float.MAX_VALUE), 0f); 636990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 2.028241E31f, Math 637990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(-Float.MAX_VALUE), 0f); 638990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 639990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 1.4E-45f, Math 640990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(Float.MIN_VALUE), 0f); 641990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 1.4E-45f, Math 642990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(-Float.MIN_VALUE), 0f); 643990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 644990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 1.1920929E-7f, Math.ulp(1.0f), 645990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson 0f); 646990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 1.1920929E-7f, 647990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson Math.ulp(-1.0f), 0f); 648990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 1.2207031E-4f, Math 649990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(1153.0f), 0f); 650990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson assertEquals("Returned incorrect value", 5.6E-45f, Math 651990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson .ulp(9.403954E-38f), 0f); 652990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson } 653990640f1775dc6f429a5f8b9fc6cab6b4220c03aJesse Wilson} 654