2362N/A * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. 809N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 809N/A * This code is free software; you can redistribute it and/or modify it 809N/A * under the terms of the GNU General Public License version 2 only, as 809N/A * published by the Free Software Foundation. 809N/A * This code is distributed in the hope that it will be useful, but WITHOUT 809N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 809N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 809N/A * version 2 for more details (a copy is included in the LICENSE file that 809N/A * accompanied this code). 809N/A * You should have received a copy of the GNU General Public License version 809N/A * 2 along with this work; if not, write to the Free Software Foundation, 809N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 809N/A * @summary Tests for {Float, Double}.toHexString methods 809N/A * @author Joseph D. Darcy 809N/A * Given a double value, create a hexadecimal floating-point 809N/A * string via an intermediate long hex string. 809N/A * Transform the hexadecimal long output into the equivalent 809N/A * hexadecimal double value. 809N/A // assert transString.length == 16; 809N/A // check for NaN and infinity 809N/A {
"Infinity",
"Infinity"},
809N/A {
"-Infinity",
"-Infinity"},
809N/A {
"1.7976931348623157e+308",
"0x1.fffffffffffffp1023"},
// MAX_VALUE 809N/A {
"2.2250738585072014E-308",
"0x1.0p-1022"},
// MIN_NORMAL 809N/A {
"2.225073858507201E-308",
"0x0.fffffffffffffp-1022"},
// MAX_SUBNORMAL 809N/A {
"4.9e-324",
"0x0.0000000000001p-1022"}
// MIN_VALUE 809N/A // Compare decimal string -> double -> hex string to hex string 809N/A // Except for float subnormals, the output for numerically 809N/A // equal float and double values should be the same. 809N/A // Therefore, we will explicitly test float subnormal values. 809N/A {
"Infinity",
"Infinity"},
809N/A {
"-Infinity",
"-Infinity"},
809N/A {
"3.4028235e+38f",
"0x1.fffffep127"},
// MAX_VALUE 809N/A {
"1.17549435E-38f",
"0x1.0p-126"},
// MIN_NORMAL 809N/A {
"1.1754942E-38",
"0x0.fffffep-126"},
// MAX_SUBNORMAL 809N/A {
"1.4e-45f",
"0x0.000002p-126"}
// MIN_VALUE 809N/A // Compare decimal string -> double -> hex string to hex string 809N/A // Particular floating-point values and hex equivalents, mostly 809N/A // taken from fdlibm source. 809N/A {
"+0.0",
"0000000000000000"},
809N/A {
"-0.0",
"8000000000000000"},
809N/A {
"+4.9e-324",
"0000000000000001"},
809N/A {
"-4.9e-324",
"8000000000000001"},
809N/A {
"+5.00000000000000000000e-01",
"3FE0000000000000"},
809N/A {
"-1.66666666666666324348e-01",
"BFC5555555555549"},
809N/A {
"+8.33333333332248946124e-03",
"3F8111111110F8A6"},
809N/A {
"-1.98412698298579493134e-04",
"BF2A01A019C161D5"},
809N/A {
"+2.75573137070700676789e-06",
"3EC71DE357B1FE7D"},
809N/A {
"-2.50507602534068634195e-08",
"BE5AE5E68A2B9CEB"},
809N/A {
"+1.58969099521155010221e-10",
"3DE5D93A5ACFD57C"},
809N/A {
"+4.16666666666666019037e-02",
"3FA555555555554C"},
809N/A {
"-1.38888888888741095749e-03",
"BF56C16C16C15177"},
809N/A {
"+2.48015872894767294178e-05",
"3EFA01A019CB1590"},
809N/A {
"-2.75573143513906633035e-07",
"BE927E4F809C52AD"},
809N/A {
"+2.08757232129817482790e-09",
"3E21EE9EBDB4B1C4"},
809N/A {
"-1.13596475577881948265e-11",
"BDA8FAE9BE8838D4"},
809N/A {
"1.67772160000000000000e+07",
"4170000000000000"},
809N/A {
"6.36619772367581382433e-01",
"3FE45F306DC9C883"},
809N/A {
"1.57079632673412561417e+00",
"3FF921FB54400000"},
809N/A {
"6.07710050650619224932e-11",
"3DD0B4611A626331"},
809N/A {
"6.07710050630396597660e-11",
"3DD0B4611A600000"},
809N/A {
"2.02226624879595063154e-21",
"3BA3198A2E037073"},
809N/A {
"2.02226624871116645580e-21",
"3BA3198A2E000000"},
809N/A {
"8.47842766036889956997e-32",
"397B839A252049C1"},
809N/A {
"+5.42857142857142815906e-01",
"3FE15F15F15F15F1"},
809N/A {
"-7.05306122448979611050e-01",
"BFE691DE2532C834"},
809N/A {
"+1.41428571428571436819e+00",
"3FF6A0EA0EA0EA0F"},
809N/A {
"+1.60714285714285720630e+00",
"3FF9B6DB6DB6DB6E"},
809N/A {
"+3.57142857142857150787e-01",
"3FD6DB6DB6DB6DB7"},
809N/A // Compare decimal string -> double -> hex string to 809N/A // long hex string -> double hex string 809N/A // Test random double values; 809N/A // compare double -> Double.toHexString with local doubleToHexString 809N/A for (
int i =
0; i <
1000; i++) {