aboutsummaryrefslogtreecommitdiff
path: root/gnu/testlet/java/lang/StrictMath/atan.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/testlet/java/lang/StrictMath/atan.java')
-rw-r--r--gnu/testlet/java/lang/StrictMath/atan.java176
1 files changed, 176 insertions, 0 deletions
diff --git a/gnu/testlet/java/lang/StrictMath/atan.java b/gnu/testlet/java/lang/StrictMath/atan.java
new file mode 100644
index 00000000..a7279793
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/atan.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This file is part of Mauve.
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve 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 General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+package gnu.testlet.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.atan()
+ */
+public class atan implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.atan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute atan using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ StrictMath.PI/2.0, // Infinity
+ -StrictMath.PI/2.0, // -Infinity
+ 1.5707963267948966, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.19739555984988078, // 0.2
+ 0.3805063771123649, // 0.4
+ 0.4636476090008061, // 0.5
+ 0.5404195002705842, // 0.6
+ 0.6747409422235527, // 0.8
+ 0.7853981633974483, // 1.0
+ 1.1071487177940904, // 2.0
+ 1.5707963266948965, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.19739555984988078,// -0.2
+ -0.3805063771123649, // -0.4
+ -0.4636476090008061, // -0.5
+ -0.5404195002705842, // -0.6
+ -0.6747409422235527, // -0.8
+ -0.7853981633974483, // -1.0
+ -1.1071487177940904, // -2.0
+ -1.5707963266948965, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}