/*
* Copyright ( c ) 2003 , 2022 , Oracle and / or its affiliates . All rights reserved .
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER .
*
* This code is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License version 2 only , as
* published by the Free Software Foundation .
*
* This code 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
* version 2 for more details ( a copy is included in the LICENSE file that
* accompanied this code ) .
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work ; if not , write to the Free Software Foundation ,
* Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA .
*
* Please contact Oracle , 500 Oracle Parkway , Redwood Shores , CA 94065 USA
* or visit www . oracle . com if you need additional information or have any
* questions .
*/
/*
* @ test
* @ bug 4851638
* @ key randomness
* @ summary Tests for StrictMath . hypot
* @ library / test / lib
* @ build jdk . test . lib . RandomFactory
* @ build Tests
* @ build FdlibmTranslit
* @ build HypotTests
* @ run main HypotTests
*/
import jdk.test.lib.RandomFactory;
/**
* The tests in . . / Math / HypotTests . java test properties that should
* hold for any hypot implementation , including the FDLIBM - based one
* required for StrictMath . hypot . Therefore , the test cases in
* . . / Math / HypotTests . java are run against both the Math and
* StrictMath versions of hypot . The role of this test is to verify
* that the FDLIBM hypot algorithm is being used by running golden
* file tests on values that may vary from one conforming hypot
* implementation to another .
*/
public class HypotTests {
private HypotTests(){}
public static void main(String... args) {
int failures = 0 ;
failures += testHypot();
failures += testAgainstTranslit();
if (failures > 0 ) {
System.err.println("Testing hypot incurred "
+ failures + " failures." );
throw new RuntimeException();
}
}
/**
* The hypot implementation is commutative , { @ code hypot ( a , b ) = =
* hypot ( b , a ) } , and independent of sign , { @ code hypot ( a , b ) = =
* hypot ( - a , b ) = = hypot ( a , - b ) = = hypot ( - a , - b ) } .
*/
static int testHypotCase(double input1, double input2, double expected) {
int failures = 0 ;
failures += Tests.test("StrictMath.hypot(double)" , input1, input2,
StrictMath::hypot, expected);
failures += Tests.test("StrictMath.hypot(double)" , input2, input1,
StrictMath::hypot, expected);
failures += Tests.test("StrictMath.hypot(double)" , -input1, input2,
StrictMath::hypot, expected);
failures += Tests.test("StrictMath.hypot(double)" , input2, -input1,
StrictMath::hypot, expected);
failures += Tests.test("StrictMath.hypot(double)" , input1, -input2,
StrictMath::hypot, expected);
failures += Tests.test("StrictMath.hypot(double)" , -input2, input1,
StrictMath::hypot, expected);
failures += Tests.test("StrictMath.hypot(double)" , -input1, -input2,
StrictMath::hypot, expected);
failures += Tests.test("StrictMath.hypot(double)" , -input2, -input1,
StrictMath::hypot, expected);
return failures;
}
static int testHypot() {
int failures = 0 ;
double [][] testCases = {
{0 x1.0 p0, 0 x1.ffffffffffab5p-1 , 0 x1.6 a09e667f39edp0},
{0 x1.0 p0, 0 x1.ffffffffffffbp0, 0 x1.1 e3779b97f4a6p1},
{0 x1.0 p0, 0 x1.7 ffffffffffffp1, 0 x1.94 c583ada5b51p1},
{0 x1.0 p0, 0 x1.ffffffffffffdp1, 0 x1.07 e0f66afed06p2},
{0 x1.0 p0, 0 x1.3 fffffffffffdp2, 0 x1.465655 f122ff3p2},
{0 x1.0 p0, 0 x1.4 p2, 0 x1.465655 f122ff6p2},
{0 x1.0 p0, 0 x1.7 ffffffffffffp2, 0 x1.854 bfb363dc38p2},
{0 x1.0 p0, 0 x1.8 p2, 0 x1.854 bfb363dc39p2},
{0 x1.0 p0, 0 x1.bfffffffffffep2, 0 x1.c48c6001f0abdp2},
{0 x1.0 p0, 0 x1.fffffffffffffp2, 0 x1.01 fe03f61badp3},
{0 x1.0 p0, 0 x1.1 fffffffffffap3, 0 x1.21 c5b70d9f81dp3},
{0 x1.0 p0, 0 x1.3 ffffffffffe5p3, 0 x1.419894 c2329d5p3},
{0 x1.0 p0, 0 x1.3 ffffffffffe7p3, 0 x1.419894 c2329d8p3},
{0 x1.0 p0, 0 x1.5 ffffffffff7ep3, 0 x1.617398 f2aa9c6p3},
{0 x1.0 p0, 0 x1.5 ffffffffff8dp3, 0 x1.617398 f2aa9d5p3},
{0 x1.0 p0, 0 x1.7 ffffffffff9bp3, 0 x1.8154 be27734c1p3},
{0 x1.0 p0, 0 x1.8 p3, 0 x1.8154 be2773526p3},
{0 x1.0 p0, 0 x1.9 fffffffffff4p3, 0 x1.a13a9cb996644p3},
{0 x1.0 p0, 0 x1.9 ffffffffffffp3, 0 x1.a13a9cb99664fp3},
{0 x1.0 p0, 0 x1.bfffffffffffep3, 0 x1.c12432fec0327p3},
{0 x1.0 p0, 0 x1.cp3, 0 x1.c12432fec0329p3},
{0 x1.0 p0, 0 x1.dffffffffffbcp3, 0 x1.e110c39105f6bp3},
{0 x1.0 p0, 0 x1.ep3, 0 x1.e110c39105fafp3},
{0 x1.0 p0, 0 x1.ffffffffffeafp3, 0 x1.007 fe00ff5fc8p4},
{0 x1.0 p0, 0 x1.0 fffffffffff4p4, 0 x1.10785 dd689a1cp4},
{0 x1.0 p0, 0 x1.0 fffffffffffbp4, 0 x1.10785 dd689a23p4},
{0 x1.0 p0, 0 x1.1 ffffffffff92p4, 0 x1.2071 b0abcd7cap4},
{0 x1.0 p0, 0 x1.1 ffffffffff99p4, 0 x1.2071 b0abcd7d1p4},
{0 x1.0 p0, 0 x1.2 fffffffffffcp4, 0 x1.306 bb705ae7bfp4},
{0 x1.0 p0, 0 x1.2 ffffffffffffp4, 0 x1.306 bb705ae7c3p4},
{0 x1.0 p0, 0 x1.3 fffffffffffdp4, 0 x1.4066560954 a8bp4},
{0 x1.0 p0, 0 x1.4 fffffffffe14p4, 0 x1.506177 f548fcfp4},
{0 x1.0 p0, 0 x1.5 p4, 0 x1.506177 f5491bbp4},
{0 x1.0 p0, 0 x1.5 fffffffffffdp4, 0 x1.605 d0af9d3a42p4},
{0 x1.0 p0, 0 x1.5 fffffffffffep4, 0 x1.605 d0af9d3a42p4},
{0 x1.0 p0, 0 x1.6 fffffffffff8p4, 0 x1.7059005 e2c015p4},
{0 x1.0 p0, 0 x1.6 ffffffffffffp4, 0 x1.7059005 e2c01dp4},
{0 x1.0 p0, 0 x1.7 fffffffffffdp4, 0 x1.80554 bdc2dc4dp4},
{0 x1.0 p0, 0 x1.7 ffffffffffffp4, 0 x1.80554 bdc2dc4ep4},
{0 x1.0 p0, 0 x1.8 fffffffffe68p4, 0 x1.9051 e3235a2cp4},
{0 x1.0 p0, 0 x1.9 p4, 0 x1.9051 e3235a458p4},
{0 x1.0 p0, 0 x1.9 fffffffffff4p4, 0 x1.a04ebd789d00cp4},
{0 x1.0 p0, 0 x1.ap4, 0 x1.a04ebd789d019p4},
{0 x1.0 p0, 0 x1.afffffffffed8p4, 0 x1.b04bd36b639fbp4},
{0 x1.0 p0, 0 x1.affffffffff43p4, 0 x1.b04bd36b63a66p4},
{0 x1.0 p0, 0 x1.bfffffffffe3ep4, 0 x1.c0491e9ab90fdp4},
{0 x1.0 p0, 0 x1.cp4, 0 x1.c0491e9ab92bfp4},
{0 x1.0 p0, 0 x1.cfffffffffed8p4, 0 x1.d0469986884d6p4},
{0 x1.0 p0, 0 x1.cfffffffffee8p4, 0 x1.d0469986884e5p4},
{0 x1.0 p0, 0 x1.dfffffffffe5cp4, 0 x1.e0443f6a33104p4},
{0 x1.0 p0, 0 x1.dffffffffffffp4, 0 x1.e0443f6a332a7p4},
{0 x1.0 p0, 0 x1.efffffffffff8p4, 0 x1.f0420c1e63084p4},
{0 x1.0 p0, 0 x1.fp4, 0 x1.f0420c1e6308dp4},
{0 x1.0 p0, 0 x1.ffffffffffffdp4, 0 x1.001 ffe003ff5fp5},
{0 x1.0 p0, 0 x1.07 ffffffffed8p5, 0 x1.081 f05ef4d755p5},
{0 x1.0 p0, 0 x1.07 ffffffffee8p5, 0 x1.081 f05ef4d764p5},
{0 x1.0 p0, 0 x1.0 fffffffffff4p5, 0 x1.101 e1c7371c6bp5},
{0 x1.0 p0, 0 x1.0 fffffffffffbp5, 0 x1.101 e1c7371c72p5},
{0 x1.0 p0, 0 x1.17 ffffffffff8p5, 0 x1.181 d404cf7f51p5},
{0 x1.0 p0, 0 x1.17 ffffffffffdp5, 0 x1.181 d404cf7f56p5},
{0 x1.0 p0, 0 x1.1 fffffffffbf2p5, 0 x1.201 c705fa7a27p5},
{0 x1.0 p0, 0 x1.1 fffffffffc65p5, 0 x1.201 c705fa7a9ap5},
{0 x1.0 p0, 0 x1.27 ffffffffe08p5, 0 x1.281 babadfba01p5},
{0 x1.0 p0, 0 x1.28 p5, 0 x1.281 babadfbbf9p5},
{0 x1.0 p0, 0 x1.2 ffffffffff64p5, 0 x1.301 af15517357p5},
{0 x1.0 p0, 0 x1.2 ffffffffff6cp5, 0 x1.301 af1551735ep5},
{0 x1.0 p0, 0 x1.37 ffffffffc78p5, 0 x1.381 a40895d3f5p5},
{0 x1.0 p0, 0 x1.37 ffffffffc88p5, 0 x1.381 a40895d406p5},
{0 x1.0 p0, 0 x1.3 fffffffffffdp5, 0 x1.4019989389 b2dp5},
{0 x1.0 p0, 0 x1.4 p5, 0 x1.4019989389 b3p5},
{0 x1.0 p0, 0 x1.47 fffffffffe8p5, 0 x1.4818 f8ce34e19p5},
{0 x1.0 p0, 0 x1.47 ffffffffffap5, 0 x1.4818 f8ce34e2cp5},
{0 x1.0 p0, 0 x1.4 fffffffffa64p5, 0 x1.501860 a3b54bep5},
{0 x1.0 p0, 0 x1.4 fffffffffe47p5, 0 x1.501860 a3b58a1p5},
{0 x1.0 p0, 0 x1.57 ffffffffff8p5, 0 x1.5817 cf8c4c199p5},
{0 x1.0 p0, 0 x1.57 fffffffffffp5, 0 x1.5817 cf8c4c1ap5},
{0 x1.0 p0, 0 x1.5 fffffffffbeep5, 0 x1.6017450 c8d3e7p5},
{0 x1.0 p0, 0 x1.6 p5, 0 x1.6017450 c8d7f9p5},
{0 x1.0 p0, 0 x1.67 fffffffffe8p5, 0 x1.6816 c0b405afp5},
{0 x1.0 p0, 0 x1.68 p5, 0 x1.6816 c0b405b09p5},
{0 x1.0 p0, 0 x1.6 fffffffffb78p5, 0 x1.7016421 c06043p5},
{0 x1.0 p0, 0 x1.7 p5, 0 x1.7016421 c064cbp5},
{0 x1.0 p0, 0 x1.77 ffffffffffp5, 0 x1.7815 c8e69cc37p5},
{0 x1.0 p0, 0 x1.77 ffffffffffcp5, 0 x1.7815 c8e69cc43p5},
{0 x1.0 p0, 0 x1.7 ffffffffffffp5, 0 x1.801554 bda99c5p5},
{0 x1.0 p0, 0 x1.87 fffffffffdp5, 0 x1.8814 e55214271p5},
{0 x1.0 p0, 0 x1.87 ffffffffffcp5, 0 x1.8814 e5521429ep5},
{0 x1.0 p0, 0 x1.8 ffffffffffe8p5, 0 x1.90147 a5b16ce5p5},
{0 x1.0 p0, 0 x1.8 fffffffffffcp5, 0 x1.90147 a5b16cfap5},
{0 x1.0 p0, 0 x1.97 ffffffffffp5, 0 x1.98141395 a0592p5},
{0 x1.0 p0, 0 x1.97 fffffffffffp5, 0 x1.98141395 a05a1p5},
{0 x1.0 p0, 0 x1.9 fffffffff8f4p5, 0 x1.a013b0c3c7377p5},
{0 x1.0 p0, 0 x1.9 fffffffffb18p5, 0 x1.a013b0c3c759bp5},
{0 x1.0 p0, 0 x1.a7fffffffffdp5, 0 x1.a81351ac4f317p5},
{0 x1.0 p0, 0 x1.a7ffffffffffp5, 0 x1.a81351ac4f338p5},
{0 x1.0 p0, 0 x1.afffffffff698p5, 0 x1.b012f61a35d98p5},
{0 x1.0 p0, 0 x1.bp5, 0 x1.b012f61a367p5},
{0 x1.0 p0, 0 x1.b7ffffffff85p5, 0 x1.b8129ddc56b26p5},
{0 x1.0 p0, 0 x1.b7ffffffff87p5, 0 x1.b8129ddc56b45p5},
{0 x1.0 p0, 0 x1.bfffffffffffdp5, 0 x1.c01248c50d99cp5},
{0 x1.0 p0, 0 x1.bfffffffffffep5, 0 x1.c01248c50d99cp5},
{0 x1.0 p0, 0 x1.c7ffffffffedp5, 0 x1.c811f6a9e9676p5},
{0 x1.0 p0, 0 x1.c8p5, 0 x1.c811f6a9e97a6p5},
{0 x1.0 p0, 0 x1.cffffffffffe8p5, 0 x1.d011a7636789ep5},
{0 x1.0 p0, 0 x1.d7ffffffffffp5, 0 x1.d8115accb20f3p5},
{0 x1.0 p0, 0 x1.d8p5, 0 x1.d8115accb2103p5},
{0 x1.0 p0, 0 x1.dfffffffffebcp5, 0 x1.e01110c367a41p5},
{0 x1.0 p0, 0 x1.ep5, 0 x1.e01110c367b85p5},
{0 x1.0 p0, 0 x1.e7fffffffffdp5, 0 x1.e810c927681fap5},
{0 x1.0 p0, 0 x1.e8p5, 0 x1.e810c9276822ap5},
{0 x1.0 p0, 0 x1.efffffffff7f8p5, 0 x1.f01083daa4dadp5},
{0 x1.0 p0, 0 x1.fp5, 0 x1.f01083daa55b5p5},
{0 x1.0 p0, 0 x1.f7ffffffffffp5, 0 x1.f81040c0f9c6p5},
{0 x1.0 p0, 0 x1.f8p5, 0 x1.f81040c0f9c71p5},
{0 x1.0 p0, 0 x1.fffffffffffffp5, 0 x1.0007 ffe000fffp6},
{0 x1.0 p0, 0 x1.03 fffffffffdp6, 0 x1.0407 e05f7d188p6},
{0 x1.0 p0, 0 x1.03 ffffffffffbp6, 0 x1.0407 e05f7d1b4p6},
{0 x1.0 p0, 0 x1.07 ffffffff7f8p6, 0 x1.0807 c1d34edd5p6},
{0 x1.0 p0, 0 x1.07 ffffffff808p6, 0 x1.0807 c1d34ede4p6},
{0 x1.0 p0, 0 x1.0 bffffffff65p6, 0 x1.0 c07a430870e5p6},
{0 x1.0 p0, 0 x1.0 bffffffff67p6, 0 x1.0 c07a43087104p6},
{0 x1.0 p0, 0 x1.0 fffffffffc54p6, 0 x1.1007876 cda509p6},
{0 x1.0 p0, 0 x1.0 fffffffffe0dp6, 0 x1.1007876 cda6c2p6},
{0 x1.0 p0, 0 x1.13 fffffffffdp6, 0 x1.14076 b7e954b4p6},
{0 x1.0 p0, 0 x1.13 ffffffffffep6, 0 x1.14076 b7e954e3p6},
{0 x1.0 p0, 0 x1.17 ffffffffff8p6, 0 x1.1807505 c9310dp6},
{0 x1.0 p0, 0 x1.18 p6, 0 x1.1807505 c93116p6},
{0 x1.0 p0, 0 x1.1 bfffffffecbp6, 0 x1.1 c0735fe3197ap6},
{0 x1.0 p0, 0 x1.1 bffffffff1dbp6, 0 x1.1 c0735fe31ea5p6},
{0 x1.0 p0, 0 x1.1 ffffffffebcap6, 0 x1.20071 c5b4ce64p6},
{0 x1.0 p0, 0 x1.1 fffffffffaf1p6, 0 x1.20071 c5b4dd8bp6},
{0 x1.0 p0, 0 x1.23 ffffffff83p6, 0 x1.2407036 c309fdp6},
{0 x1.0 p0, 0 x1.23 ffffffff85p6, 0 x1.2407036 c30a1cp6},
{0 x1.0 p0, 0 x1.27 ffffffffba8p6, 0 x1.2806 eb2991e76p6},
{0 x1.0 p0, 0 x1.28 p6, 0 x1.2806 eb29922cep6},
{0 x1.0 p0, 0 x1.2 bfffffffff7p6, 0 x1.2 c06d38c8b4ffp6},
{0 x1.0 p0, 0 x1.2 bfffffffff9p6, 0 x1.2 c06d38c8b52p6},
{0 x1.0 p0, 0 x1.2 fffffffffff4p6, 0 x1.3006 bc8e938c8p6},
{0 x1.0 p0, 0 x1.2 fffffffffffcp6, 0 x1.3006 bc8e938cfp6},
{0 x1.0 p0, 0 x1.33 ffffffff87p6, 0 x1.3406 a6297821ep6},
{0 x1.0 p0, 0 x1.33 ffffffff89p6, 0 x1.3406 a6297823dp6},
{0 x1.0 p0, 0 x1.37 ffffffff9d8p6, 0 x1.380690575943 dp6},
{0 x1.0 p0, 0 x1.37 ffffffff9eap6, 0 x1.380690575944 fp6},
{0 x1.0 p0, 0 x1.3 bffffffffffp6, 0 x1.3 c067b12a2013p6},
{0 x1.0 p0, 0 x1.3 cp6, 0 x1.3 c067b12a2024p6},
{0 x1.0 p0, 0 x1.3 fffffffffe19p6, 0 x1.40066656044 ep6},
{0 x1.0 p0, 0 x1.4 p6, 0 x1.40066656046 c7p6},
{0 x1.0 p0, 0 x1.43 ffffffff1dp6, 0 x1.4406521 c75c3p6},
{0 x1.0 p0, 0 x1.43 ffffffffccfp6, 0 x1.4406521 c7672fp6},
{0 x1.0 p0, 0 x1.47 ffffffff8a8p6, 0 x1.48063 e612ce7ap6},
{0 x1.0 p0, 0 x1.47 ffffffffcb9p6, 0 x1.48063 e612d28bp6},
{0 x1.0 p0, 0 x1.4 bfffffffe1fp6, 0 x1.4 c062b1f96823p6},
{0 x1.0 p0, 0 x1.4 cp6, 0 x1.4 c062b1f98633p6},
{0 x1.0 p0, 0 x1.4 ffffffffde04p6, 0 x1.500618535 d07dp6},
{0 x1.0 p0, 0 x1.5 p6, 0 x1.500618535 f279p6},
{0 x1.0 p0, 0 x1.53 fffffffef1p6, 0 x1.540605 f85c637p6},
{0 x1.0 p0, 0 x1.53 ffffffffdf3p6, 0 x1.540605 f85d51ap6},
{0 x1.0 p0, 0 x1.57 ffffffffff8p6, 0 x1.5805 f40aa0595p6},
{0 x1.0 p0, 0 x1.5 bffffffffffp6, 0 x1.5 c05e286636b5p6},
{0 x1.0 p0, 0 x1.5 bfffffffffffp6, 0 x1.5 c05e286636c4p6},
{0 x1.0 p0, 0 x1.5 ffffffffd9cep6, 0 x1.6005 d1680baa2p6},
{0 x1.0 p0, 0 x1.5 fffffffff873p6, 0 x1.6005 d1680d947p6},
{0 x1.0 p0, 0 x1.63 ffffffffa5p6, 0 x1.6405 c0ac30a35p6},
{0 x1.0 p0, 0 x1.63 ffffffffa7p6, 0 x1.6405 c0ac30a56p6},
{0 x1.0 p0, 0 x1.67 ffffffff988p6, 0 x1.6805 b04f83ac3p6},
{0 x1.0 p0, 0 x1.68 p6, 0 x1.6805 b04f8413bp6},
{0 x1.0 p0, 0 x1.6 bfffffffffep6, 0 x1.6 c05a04ee40c3p6},
{0 x1.0 p0, 0 x1.6 cp6, 0 x1.6 c05a04ee40e3p6},
{0 x1.0 p0, 0 x1.6 fffffffff018p6, 0 x1.700590 a74f9b5p6},
{0 x1.0 p0, 0 x1.6 fffffffffbe2p6, 0 x1.700590 a75057fp6},
{0 x1.0 p0, 0 x1.73 ffffffff4ap6, 0 x1.74058155 e9b72p6},
{0 x1.0 p0, 0 x1.74 p6, 0 x1.74058155 ea6d2p6},
{0 x1.0 p0, 0 x1.77 ffffffffffp6, 0 x1.78057257 f1868p6},
{0 x1.0 p0, 0 x1.78 p6, 0 x1.78057257 f1878p6},
{0 x1.0 p0, 0 x1.7 bfffffffffep6, 0 x1.7 c0563aac389bp6},
{0 x1.0 p0, 0 x1.7 bfffffffffe4p6, 0 x1.7 c0563aac389fp6},
{0 x1.0 p0, 0 x1.7 ffffffffffffp6, 0 x1.8005554 bda349p6},
{0 x1.0 p0, 0 x1.8 p6, 0 x1.8005554 bda34bp6},
{0 x1.0 p0, 0 x1.83 fffffffffap6, 0 x1.84054738 c9dcdp6},
{0 x1.0 p0, 0 x1.84 p6, 0 x1.84054738 c9e2dp6},
{0 x1.0 p0, 0 x1.87 ffffffff09p6, 0 x1.8805396 f3f494p6},
{0 x1.0 p0, 0 x1.87 ffffffff0bp6, 0 x1.8805396 f3f4b5p6},
{0 x1.0 p0, 0 x1.8 bfffffffffep6, 0 x1.8 c052bed02f7ap6},
{0 x1.0 p0, 0 x1.8 cp6, 0 x1.8 c052bed02f9bp6},
{0 x1.0 p0, 0 x1.8 fffffffff7c8p6, 0 x1.90051 eafee07bp6},
{0 x1.0 p0, 0 x1.9 p6, 0 x1.90051 eafee8b3p6},
{0 x1.0 p1, 0 x1.fffffffffdcb5p-1 , 0 x1.1 e3779b97f0b5p1},
{0 x1.0 p1, 0 x1.ffffffffffab5p0, 0 x1.6 a09e667f39edp1},
{0 x1.0 p1, 0 x1.7 ffffffffffffp1, 0 x1.cd82b446159f2p1},
{0 x1.0 p1, 0 x1.8 p1, 0 x1.cd82b446159f3p1},
{0 x1.0 p1, 0 x1.ffffffffffffbp1, 0 x1.1 e3779b97f4a6p2},
{0 x1.0 p1, 0 x1.3 fffffffffffdp2, 0 x1.58 a68a4a8d9fp2},
{0 x1.0 p1, 0 x1.3 fffffffffffep2, 0 x1.58 a68a4a8d9f1p2},
{0 x1.0 p1, 0 x1.7 ffffffffffffp2, 0 x1.94 c583ada5b51p2},
{0 x1.0 p1, 0 x1.bfffffffffffep2, 0 x1.d1ed52076fbe7p2},
{0 x1.0 p1, 0 x1.cp2, 0 x1.d1ed52076fbe9p2},
{0 x1.0 p1, 0 x1.ffffffffffffdp2, 0 x1.07 e0f66afed06p3},
{0 x1.0 p1, 0 x1.1 fffffffffff2p3, 0 x1.2706821902 e8cp3},
{0 x1.0 p1, 0 x1.2 p3, 0 x1.2706821902 e9ap3},
{0 x1.0 p1, 0 x1.3 fffffffffffdp3, 0 x1.465655 f122ff3p3},
{0 x1.0 p1, 0 x1.4 p3, 0 x1.465655 f122ff6p3},
{0 x1.0 p1, 0 x1.5 ffffffffffd6p3, 0 x1.65 c55827df1a8p3},
{0 x1.0 p1, 0 x1.7 ffffffffffffp3, 0 x1.854 bfb363dc38p3},
{0 x1.0 p1, 0 x1.8 p3, 0 x1.854 bfb363dc39p3},
{0 x1.0 p1, 0 x1.9 ffffffffffe4p3, 0 x1.a4e4efeda34c2p3},
{0 x1.0 p1, 0 x1.ap3, 0 x1.a4e4efeda34dep3},
{0 x1.0 p1, 0 x1.bfffffffffffep3, 0 x1.c48c6001f0abdp3},
{0 x1.0 p1, 0 x1.dfffffffffffcp3, 0 x1.e43f746f77956p3},
{0 x1.0 p1, 0 x1.ep3, 0 x1.e43f746f7795bp3},
{0 x1.0 p1, 0 x1.fffffffffffffp3, 0 x1.01 fe03f61badp4},
{0 x1.0 p1, 0 x1.0 ffffffffffc4p4, 0 x1.11 e039f40ee2ap4},
{0 x1.0 p1, 0 x1.0 ffffffffffc7p4, 0 x1.11 e039f40ee2dp4},
{0 x1.0 p1, 0 x1.1 fffffffffffap4, 0 x1.21 c5b70d9f81dp4},
{0 x1.0 p1, 0 x1.2 fffffffffffcp4, 0 x1.31 adf859f9e5ap4},
{0 x1.0 p1, 0 x1.2 fffffffffffep4, 0 x1.31 adf859f9e5cp4},
{0 x1.0 p1, 0 x1.3 ffffffffffe5p4, 0 x1.419894 c2329d5p4},
{0 x1.0 p1, 0 x1.3 ffffffffffe7p4, 0 x1.419894 c2329d8p4},
{0 x1.0 p1, 0 x1.4 fffffffffff4p4, 0 x1.518536 f3ca668p4},
{0 x1.0 p1, 0 x1.5 p4, 0 x1.518536 f3ca675p4},
{0 x1.0 p1, 0 x1.5 ffffffffff7ep4, 0 x1.617398 f2aa9c6p4},
{0 x1.0 p1, 0 x1.5 ffffffffff8dp4, 0 x1.617398 f2aa9d5p4},
{0 x1.0 p1, 0 x1.6 ffffffffffb8p4, 0 x1.716380 ce70352p4},
{0 x1.0 p1, 0 x1.7 p4, 0 x1.716380 ce7039ap4},
{0 x1.0 p1, 0 x1.7 ffffffffff9bp4, 0 x1.8154 be27734c1p4},
{0 x1.0 p1, 0 x1.8 p4, 0 x1.8154 be2773526p4},
{0 x1.0 p1, 0 x1.8 ffffffffffe8p4, 0 x1.9147284 a4142fp4},
{0 x1.0 p1, 0 x1.8 ffffffffffffp4, 0 x1.9147284 a41446p4},
{0 x1.0 p1, 0 x1.9 fffffffffff4p4, 0 x1.a13a9cb996644p4},
{0 x1.0 p1, 0 x1.9 ffffffffffffp4, 0 x1.a13a9cb99664fp4},
{0 x1.0 p1, 0 x1.affffffffff58p4, 0 x1.b12efe0a8f113p4},
{0 x1.0 p1, 0 x1.affffffffffd2p4, 0 x1.b12efe0a8f18dp4},
{0 x1.0 p1, 0 x1.bfffffffffffep4, 0 x1.c12432fec0327p4},
{0 x1.0 p1, 0 x1.cp4, 0 x1.c12432fec0329p4},
{0 x1.0 p1, 0 x1.cffffffffffe8p4, 0 x1.d11a25cd6ed78p4},
{0 x1.0 p1, 0 x1.dp4, 0 x1.d11a25cd6ed91p4},
{0 x1.0 p1, 0 x1.dffffffffffbcp4, 0 x1.e110c39105f6bp4},
{0 x1.0 p1, 0 x1.ep4, 0 x1.e110c39105fafp4},
{0 x1.0 p1, 0 x1.effffffffffe8p4, 0 x1.f107fbd0adcf1p4},
{0 x1.0 p1, 0 x1.efffffffffff8p4, 0 x1.f107fbd0addp4},
{0 x1.0 p1, 0 x1.ffffffffffeafp4, 0 x1.007 fe00ff5fc8p5},
{0 x1.0 p1, 0 x1.07 fffffffffe8p5, 0 x1.087 c01e7d5092p5},
{0 x1.0 p1, 0 x1.08 p5, 0 x1.087 c01e7d50abp5},
{0 x1.0 p1, 0 x1.0 fffffffffff4p5, 0 x1.10785 dd689a1cp5},
{0 x1.0 p1, 0 x1.0 fffffffffffbp5, 0 x1.10785 dd689a23p5},
{0 x1.0 p1, 0 x1.17 ffffffffed8p5, 0 x1.1874 eee5c5cb1p5},
{0 x1.0 p1, 0 x1.17 ffffffffee8p5, 0 x1.1874 eee5c5cc2p5},
{0 x1.0 p1, 0 x1.1 ffffffffff92p5, 0 x1.2071 b0abcd7cap5},
{0 x1.0 p1, 0 x1.1 ffffffffff99p5, 0 x1.2071 b0abcd7d1p5},
{0 x1.0 p1, 0 x1.27 ffffffffea8p5, 0 x1.286 e9f388de9fp5},
{0 x1.0 p1, 0 x1.28 p5, 0 x1.286 e9f388dff7p5},
{0 x1.0 p1, 0 x1.2 fffffffffffcp5, 0 x1.306 bb705ae7bfp5},
{0 x1.0 p1, 0 x1.2 ffffffffffffp5, 0 x1.306 bb705ae7c3p5},
{0 x1.0 p1, 0 x1.37 ffffffffff8p5, 0 x1.3868 f4e9108b9p5},
{0 x1.0 p1, 0 x1.38 p5, 0 x1.3868 f4e9108c1p5},
{0 x1.0 p1, 0 x1.3 fffffffffffdp5, 0 x1.4066560954 a8bp5},
{0 x1.0 p1, 0 x1.47 ffffffffe28p5, 0 x1.4863 d7d40ad39p5},
{0 x1.0 p1, 0 x1.48 p5, 0 x1.4863 d7d40af11p5},
{0 x1.0 p1, 0 x1.4 fffffffffe14p5, 0 x1.506177 f548fcfp5},
{0 x1.0 p1, 0 x1.5 p5, 0 x1.506177 f5491bbp5},
{0 x1.0 p1, 0 x1.57 ffffffffeb8p5, 0 x1.585 f34506bafbp5},
{0 x1.0 p1, 0 x1.58 p5, 0 x1.585 f34506bc43p5},
{0 x1.0 p1, 0 x1.5 fffffffffffdp5, 0 x1.605 d0af9d3a42p5},
{0 x1.0 p1, 0 x1.5 fffffffffffep5, 0 x1.605 d0af9d3a42p5},
{0 x1.0 p1, 0 x1.67 ffffffffda8p5, 0 x1.685 afa317791bp5},
{0 x1.0 p1, 0 x1.68 p5, 0 x1.685 afa3177b73p5},
{0 x1.0 p1, 0 x1.6 fffffffffff8p5, 0 x1.7059005 e2c015p5},
{0 x1.0 p1, 0 x1.6 ffffffffffffp5, 0 x1.7059005 e2c01dp5},
{0 x1.0 p1, 0 x1.77 ffffffffffp5, 0 x1.78571 c0982328p5},
{0 x1.0 p1, 0 x1.78 p5, 0 x1.78571 c0982339p5},
{0 x1.0 p1, 0 x1.7 fffffffffffdp5, 0 x1.80554 bdc2dc4dp5},
{0 x1.0 p1, 0 x1.7 ffffffffffffp5, 0 x1.80554 bdc2dc4ep5},
{0 x1.0 p1, 0 x1.87 fffffffffdp5, 0 x1.88538 e9ad8dacp5},
{0 x1.0 p1, 0 x1.87 fffffffffffp5, 0 x1.88538 e9ad8ddbp5},
{0 x1.0 p1, 0 x1.8 fffffffffe68p5, 0 x1.9051 e3235a2cp5},
{0 x1.0 p1, 0 x1.9 p5, 0 x1.9051 e3235a458p5},
{0 x1.0 p1, 0 x1.97 ffffffffffp5, 0 x1.9850486 a3f17p5},
{0 x1.0 p1, 0 x1.97 fffffffffffp5, 0 x1.9850486 a3f17fp5},
{0 x1.0 p1, 0 x1.9 fffffffffff4p5, 0 x1.a04ebd789d00cp5},
{0 x1.0 p1, 0 x1.ap5, 0 x1.a04ebd789d019p5},
{0 x1.0 p1, 0 x1.a7ffffffffe1p5, 0 x1.a84d416a2354dp5},
{0 x1.0 p1, 0 x1.a8p5, 0 x1.a84d416a2373dp5},
{0 x1.0 p1, 0 x1.afffffffffed8p5, 0 x1.b04bd36b639fbp5},
{0 x1.0 p1, 0 x1.affffffffff43p5, 0 x1.b04bd36b63a66p5},
{0 x1.0 p1, 0 x1.b7ffffffffd7p5, 0 x1.b84a72b848951p5},
{0 x1.0 p1, 0 x1.b7ffffffffe2bp5, 0 x1.b84a72b848a0cp5},
{0 x1.0 p1, 0 x1.bfffffffffe3ep5, 0 x1.c0491e9ab90fdp5},
{0 x1.0 p1, 0 x1.cp5, 0 x1.c0491e9ab92bfp5},
{0 x1.0 p1, 0 x1.c7fffffffffdp5, 0 x1.c847d6695dbc5p5},
{0 x1.0 p1, 0 x1.c8p5, 0 x1.c847d6695dbf6p5},
{0 x1.0 p1, 0 x1.cfffffffffed8p5, 0 x1.d0469986884d6p5},
{0 x1.0 p1, 0 x1.cfffffffffee8p5, 0 x1.d0469986884e5p5},
{0 x1.0 p1, 0 x1.d7ffffffffdfp5, 0 x1.d845675f37721p5},
{0 x1.0 p1, 0 x1.d8p5, 0 x1.d845675f37931p5},
{0 x1.0 p1, 0 x1.dfffffffffe5cp5, 0 x1.e0443f6a33104p5},
{0 x1.0 p1, 0 x1.dffffffffffffp5, 0 x1.e0443f6a332a7p5},
{0 x1.0 p1, 0 x1.e7fffffffff05p5, 0 x1.e84321273f31ep5},
{0 x1.0 p1, 0 x1.e7fffffffff1p5, 0 x1.e84321273f328p5},
{0 x1.0 p1, 0 x1.efffffffffff8p5, 0 x1.f0420c1e63084p5},
{0 x1.0 p1, 0 x1.fp5, 0 x1.f0420c1e6308dp5},
{0 x1.0 p1, 0 x1.f7ffffffffc3p5, 0 x1.f840ffdf40effp5},
{0 x1.0 p1, 0 x1.f7fffffffff08p5, 0 x1.f840ffdf411d7p5},
{0 x1.0 p1, 0 x1.ffffffffffffdp5, 0 x1.001 ffe003ff5fp6},
{0 x1.0 p1, 0 x1.03 fffffffffdp6, 0 x1.041 f800f9f928p6},
{0 x1.0 p1, 0 x1.03 ffffffffffap6, 0 x1.041 f800f9f953p6},
{0 x1.0 p1, 0 x1.07 ffffffffed8p6, 0 x1.081 f05ef4d755p6},
{0 x1.0 p1, 0 x1.07 ffffffffee8p6, 0 x1.081 f05ef4d764p6},
{0 x1.0 p1, 0 x1.0 bfffffffff5p6, 0 x1.0 c1e8f739cdcap6},
{0 x1.0 p1, 0 x1.0 bfffffffff7p6, 0 x1.0 c1e8f739cde9p6},
{0 x1.0 p1, 0 x1.0 fffffffffff4p6, 0 x1.101 e1c7371c6bp6},
{0 x1.0 p1, 0 x1.0 fffffffffffbp6, 0 x1.101 e1c7371c72p6},
{0 x1.0 p1, 0 x1.13 fffffffffdp6, 0 x1.141 dacc811a34p6},
{0 x1.0 p1, 0 x1.13 ffffffffffcp6, 0 x1.141 dacc811a6p6},
{0 x1.0 p1, 0 x1.17 ffffffffff8p6, 0 x1.181 d404cf7f51p6},
{0 x1.0 p1, 0 x1.17 ffffffffffdp6, 0 x1.181 d404cf7f56p6},
{0 x1.0 p1, 0 x1.1 bffffffffffp6, 0 x1.1 c1cd6dfae4a5p6},
{0 x1.0 p1, 0 x1.1 bffffffffffep6, 0 x1.1 c1cd6dfae4b4p6},
{0 x1.0 p1, 0 x1.1 fffffffffbf2p6, 0 x1.201 c705fa7a27p6},
{0 x1.0 p1, 0 x1.1 fffffffffc65p6, 0 x1.201 c705fa7a9ap6},
{0 x1.0 p1, 0 x1.23 fffffffffdp6, 0 x1.241 c0cae201cap6},
{0 x1.0 p1, 0 x1.23 ffffffffffp6, 0 x1.241 c0cae201ebp6},
{0 x1.0 p1, 0 x1.27 ffffffffe08p6, 0 x1.281 babadfba01p6},
{0 x1.0 p1, 0 x1.28 p6, 0 x1.281 babadfbbf9p6},
{0 x1.0 p1, 0 x1.2 bffffffffc1p6, 0 x1.2 c1b4d43ac4cfp6},
{0 x1.0 p1, 0 x1.2 bffffffffc3p6, 0 x1.2 c1b4d43ac4eep6},
{0 x1.0 p1, 0 x1.2 ffffffffff64p6, 0 x1.301 af15517357p6},
{0 x1.0 p1, 0 x1.2 ffffffffff6cp6, 0 x1.301 af1551735ep6},
{0 x1.0 p1, 0 x1.33 ffffffffadp6, 0 x1.341 a97c97b22ep6},
{0 x1.0 p1, 0 x1.33 ffffffffafp6, 0 x1.341 a97c97b24fp6},
{0 x1.0 p1, 0 x1.37 ffffffffc78p6, 0 x1.381 a40895d3f5p6},
{0 x1.0 p1, 0 x1.37 ffffffffc88p6, 0 x1.381 a40895d406p6},
{0 x1.0 p1, 0 x1.3 bffffffffffp6, 0 x1.3 c19eb7e71afcp6},
{0 x1.0 p1, 0 x1.3 bfffffffffffp6, 0 x1.3 c19eb7e71b0cp6},
{0 x1.0 p1, 0 x1.3 fffffffffffdp6, 0 x1.4019989389 b2dp6},
{0 x1.0 p1, 0 x1.4 p6, 0 x1.4019989389 b3p6},
{0 x1.0 p1, 0 x1.43 fffffffffdp6, 0 x1.441947 b4829e8p6},
{0 x1.0 p1, 0 x1.43 ffffffffff8p6, 0 x1.441947 b482a11p6},
{0 x1.0 p1, 0 x1.47 fffffffffe8p6, 0 x1.4818 f8ce34e19p6},
{0 x1.0 p1, 0 x1.47 ffffffffffap6, 0 x1.4818 f8ce34e2cp6},
{0 x1.0 p1, 0 x1.4 bffffffffffp6, 0 x1.4 c18abce6501fp6},
{0 x1.0 p1, 0 x1.4 bffffffffffcp6, 0 x1.4 c18abce6502cp6},
{0 x1.0 p1, 0 x1.4 fffffffffa64p6, 0 x1.501860 a3b54bep6},
{0 x1.0 p1, 0 x1.4 fffffffffe47p6, 0 x1.501860 a3b58a1p6},
{0 x1.0 p1, 0 x1.53 ffffffffd5p6, 0 x1.5418173 d9a501p6},
{0 x1.0 p1, 0 x1.53 ffffffffd7p6, 0 x1.5418173 d9a522p6},
{0 x1.0 p1, 0 x1.57 ffffffffff8p6, 0 x1.5817 cf8c4c199p6},
{0 x1.0 p1, 0 x1.57 fffffffffffp6, 0 x1.5817 cf8c4c1ap6},
{0 x1.0 p1, 0 x1.5 bffffffff83p6, 0 x1.5 c178980bc34bp6},
{0 x1.0 p1, 0 x1.5 bffffffff988p6, 0 x1.5 c178980bc4a3p6},
{0 x1.0 p1, 0 x1.5 fffffffffbeep6, 0 x1.6017450 c8d3e7p6},
{0 x1.0 p1, 0 x1.6 p6, 0 x1.6017450 c8d7f9p6},
{0 x1.0 p1, 0 x1.63 fffffffffdp6, 0 x1.6417022204 f99p6},
{0 x1.0 p1, 0 x1.67 fffffffffe8p6, 0 x1.6816 c0b405afp6},
{0 x1.0 p1, 0 x1.68 p6, 0 x1.6816 c0b405b09p6},
{0 x1.0 p1, 0 x1.6 bfffffffffep6, 0 x1.6 c1680b6059e8p6},
{0 x1.0 p1, 0 x1.6 cp6, 0 x1.6 c1680b605a08p6},
{0 x1.0 p1, 0 x1.6 fffffffffb78p6, 0 x1.7016421 c06043p6},
{0 x1.0 p1, 0 x1.7 p6, 0 x1.7016421 c064cbp6},
{0 x1.0 p1, 0 x1.73 fffffffffap6, 0 x1.741604 da8d2b9p6},
{0 x1.0 p1, 0 x1.73 ffffffffff8p6, 0 x1.741604 da8d311p6},
{0 x1.0 p1, 0 x1.77 ffffffffffp6, 0 x1.7815 c8e69cc37p6},
{0 x1.0 p1, 0 x1.77 ffffffffffcp6, 0 x1.7815 c8e69cc43p6},
{0 x1.0 p1, 0 x1.7 bfffffffffep6, 0 x1.7 c158e35adde4p6},
{0 x1.0 p1, 0 x1.7 bfffffffffe8p6, 0 x1.7 c158e35addecp6},
{0 x1.0 p1, 0 x1.7 ffffffffffffp6, 0 x1.801554 bda99c5p6},
{0 x1.0 p1, 0 x1.83 ffffffffdap6, 0 x1.84151 c74e35e4p6},
{0 x1.0 p1, 0 x1.83 ffffffffdep6, 0 x1.84151 c74e3625p6},
{0 x1.0 p1, 0 x1.87 fffffffffdp6, 0 x1.8814 e55214271p6},
{0 x1.0 p1, 0 x1.87 ffffffffffcp6, 0 x1.8814 e5521429ep6},
{0 x1.0 p1, 0 x1.8 bfffffffffep6, 0 x1.8 c14af4c540b6p6},
{0 x1.0 p1, 0 x1.8 bffffffffff6p6, 0 x1.8 c14af4c540cdp6},
{0 x1.0 p1, 0 x1.8 ffffffffffe8p6, 0 x1.90147 a5b16ce5p6},
{0 x1.0 p1, 0 x1.8 fffffffffffcp6, 0 x1.90147 a5b16cfap6},
{0 x1.8 p1, 0 x1.ffffffffffffdp-1 , 0 x1.94 c583ada5b53p1},
{0 x1.8 p1, 0 x1.0 p1, 0 x1.cd82b446159f3p1},
{0 x1.8 p1, 0 x1.7 fffffffffff7p1, 0 x1.0 f876ccdf6cd6p2},
{0 x1.8 p1, 0 x1.8 p1, 0 x1.0 f876ccdf6cd9p2},
{0 x1.8 p1, 0 x1.fffffffffffffp1, 0 x1.4 p2},
{0 x1.8 p1, 0 x1.3 ffffffffffe1p2, 0 x1.752 e50db3a387p2},
{0 x1.8 p1, 0 x1.4 p2, 0 x1.752 e50db3a3a2p2},
{0 x1.8 p1, 0 x1.7 ffffffffffffp2, 0 x1.ad5336963eefap2},
{0 x1.8 p1, 0 x1.bfffffffffffep2, 0 x1.e768d399dc46dp2},
{0 x1.8 p1, 0 x1.bffffffffffffp2, 0 x1.e768d399dc46fp2},
{0 x1.8 p1, 0 x1.fffffffffffffp2, 0 x1.11687 a8ae14a3p3},
{0 x1.8 p1, 0 x1.1 fffffffffff2p3, 0 x1.2 f9422c23c47p3},
{0 x1.8 p1, 0 x1.1 fffffffffff7p3, 0 x1.2 f9422c23c475p3},
{0 x1.8 p1, 0 x1.3 fffffffffff1p3, 0 x1.4 e16fdacff928p3},
{0 x1.8 p1, 0 x1.3 fffffffffff4p3, 0 x1.4 e16fdacff92bp3},
{0 x1.8 p1, 0 x1.5 ffffffffffffp3, 0 x1.6 cdb2bbb212ebp3},
{0 x1.8 p1, 0 x1.7 fffffffffffdp3, 0 x1.8 bd171a07e388p3},
{0 x1.8 p1, 0 x1.7 ffffffffffffp3, 0 x1.8 bd171a07e389p3},
{0 x1.8 p1, 0 x1.9 ffffffffffe4p3, 0 x1.aaeee979b481cp3},
{0 x1.8 p1, 0 x1.9 ffffffffffecp3, 0 x1.aaeee979b4825p3},
{0 x1.8 p1, 0 x1.bffffffffffeep3, 0 x1.ca2b9714180e5p3},
{0 x1.8 p1, 0 x1.cp3, 0 x1.ca2b9714180f7p3},
{0 x1.8 p1, 0 x1.dfffffffffffcp3, 0 x1.e98180e9b47edp3},
{0 x1.8 p1, 0 x1.dfffffffffffep3, 0 x1.e98180e9b47efp3},
{0 x1.8 p1, 0 x1.fffffffffffffp3, 0 x1.04760 c95db31p4},
{0 x1.8 p1, 0 x1.0 fffffffffff4p4, 0 x1.1433 ec467efefp4},
{0 x1.8 p1, 0 x1.1 ffffffffffeap4, 0 x1.23 f8fc68ae515p4},
{0 x1.8 p1, 0 x1.2 p4, 0 x1.23 f8fc68ae52bp4},
{0 x1.8 p1, 0 x1.2 fffffffffffcp4, 0 x1.33 c42213ee0c5p4},
{0 x1.8 p1, 0 x1.3 p4, 0 x1.33 c42213ee0c9p4},
{0 x1.8 p1, 0 x1.3 ffffffffffd9p4, 0 x1.439479381 ec96p4},
{0 x1.8 p1, 0 x1.3 fffffffffff6p4, 0 x1.439479381 ecb3p4},
{0 x1.8 p1, 0 x1.4 ffffffffffc4p4, 0 x1.53694801747 d4p4},
{0 x1.8 p1, 0 x1.4 ffffffffffccp4, 0 x1.53694801747 dcp4},
{0 x1.8 p1, 0 x1.5 ffffffffffbep4, 0 x1.6341 f58bad9d2p4},
{0 x1.8 p1, 0 x1.5 ffffffffffc2p4, 0 x1.6341 f58bad9d7p4},
{0 x1.8 p1, 0 x1.6 fffffffffff8p4, 0 x1.731 e02ed21f18p4},
{0 x1.8 p1, 0 x1.6 ffffffffffffp4, 0 x1.731 e02ed21f2p4},
{0 x1.8 p1, 0 x1.7 fffffffffffdp4, 0 x1.82 fd05f129836p4},
{0 x1.8 p1, 0 x1.7 ffffffffffffp4, 0 x1.82 fd05f129837p4},
{0 x1.8 p1, 0 x1.8 ffffffffffa8p4, 0 x1.92 dea50d28578p4},
{0 x1.8 p1, 0 x1.8 ffffffffffffp4, 0 x1.92 dea50d285cep4},
{0 x1.8 p1, 0 x1.9 ffffffffffe4p4, 0 x1.a2c2943e2866p4},
{0 x1.8 p1, 0 x1.9 fffffffffffcp4, 0 x1.a2c2943e28678p4},
{0 x1.8 p1, 0 x1.afffffffffff8p4, 0 x1.b2a892946f42dp4},
{0 x1.8 p1, 0 x1.afffffffffffep4, 0 x1.b2a892946f434p4},
{0 x1.8 p1, 0 x1.bffffffffffeep4, 0 x1.c2906842b6bf3p4},
{0 x1.8 p1, 0 x1.bfffffffffff2p4, 0 x1.c2906842b6bf8p4},
{0 x1.8 p1, 0 x1.cffffffffffe8p4, 0 x1.d279e51208c72p4},
{0 x1.8 p1, 0 x1.dp4, 0 x1.d279e51208c8ap4},
{0 x1.8 p1, 0 x1.dfffffffffff4p4, 0 x1.e264df234beddp4},
{0 x1.8 p1, 0 x1.dfffffffffffcp4, 0 x1.e264df234bee4p4},
{0 x1.8 p1, 0 x1.efffffffffff8p4, 0 x1.f25131ed54d64p4},
{0 x1.8 p1, 0 x1.fp4, 0 x1.f25131ed54d6cp4},
{0 x1.8 p1, 0 x1.fffffffffffffp4, 0 x1.011 f5eb54147p5},
{0 x1.8 p1, 0 x1.07 fffffffff88p5, 0 x1.0916 b2b5fff3ep5},
{0 x1.8 p1, 0 x1.07 fffffffffaap5, 0 x1.0916 b2b5fff6p5},
{0 x1.8 p1, 0 x1.0 ffffffffffc4p5, 0 x1.110 e8885865b8p5},
{0 x1.8 p1, 0 x1.0 ffffffffffccp5, 0 x1.110 e8885865c1p5},
{0 x1.8 p1, 0 x1.17 fffffffff58p5, 0 x1.1906 d51932b7ep5},
{0 x1.8 p1, 0 x1.17 fffffffff77p5, 0 x1.1906 d51932b9dp5},
{0 x1.8 p1, 0 x1.1 fffffffffffap5, 0 x1.20 ff8e9d967d6p5},
{0 x1.8 p1, 0 x1.1 fffffffffffep5, 0 x1.20 ff8e9d967dbp5},
{0 x1.8 p1, 0 x1.27 fffffffffc8p5, 0 x1.28 f8ac4cd98f2p5},
{0 x1.8 p1, 0 x1.27 fffffffffd8p5, 0 x1.28 f8ac4cd9903p5},
{0 x1.8 p1, 0 x1.2 ffffffffff7cp5, 0 x1.30 f2264b9c502p5},
{0 x1.8 p1, 0 x1.2 ffffffffffafp5, 0 x1.30 f2264b9c535p5},
{0 x1.8 p1, 0 x1.37 ffffffffff8p5, 0 x1.38 ebf58b30cb4p5},
{0 x1.8 p1, 0 x1.37 fffffffffffp5, 0 x1.38 ebf58b30cbcp5},
{0 x1.8 p1, 0 x1.3 fffffffffffdp5, 0 x1.40 e613b03f1dcp5},
{0 x1.8 p1, 0 x1.3 ffffffffffffp5, 0 x1.40 e613b03f1dfp5},
{0 x1.8 p1, 0 x1.47 fffffffffa1p5, 0 x1.48 e07afd169d5p5},
{0 x1.8 p1, 0 x1.47 fffffffffa8p5, 0 x1.48 e07afd169dbp5},
{0 x1.8 p1, 0 x1.4 ffffffffff84p5, 0 x1.50 db263f101e3p5},
{0 x1.8 p1, 0 x1.4 ffffffffff8cp5, 0 x1.50 db263f101ecp5},
{0 x1.8 p1, 0 x1.57 ffffffffff8p5, 0 x1.58 d610be831eep5},
{0 x1.8 p1, 0 x1.58 p5, 0 x1.58 d610be831f7p5},
{0 x1.8 p1, 0 x1.5 fffffffffffap5, 0 x1.60 d13630e611p5},
{0 x1.8 p1, 0 x1.5 fffffffffffep5, 0 x1.60 d13630e6113p5},
{0 x1.8 p1, 0 x1.67 fffffffffe8p5, 0 x1.68 cc92acc47abp5},
{0 x1.8 p1, 0 x1.68 p5, 0 x1.68 cc92acc47c3p5},
{0 x1.8 p1, 0 x1.6 fffffffffff8p5, 0 x1.70 c8229f43a38p5},
{0 x1.8 p1, 0 x1.6 fffffffffffap5, 0 x1.70 c8229f43a3ap5},
{0 x1.8 p1, 0 x1.77 ffffffffffp5, 0 x1.78 c3e2c2fb433p5},
{0 x1.8 p1, 0 x1.77 ffffffffffep5, 0 x1.78 c3e2c2fb441p5},
{0 x1.8 p1, 0 x1.7 ffffffffffffp5, 0 x1.80 bfd017f10a6p5},
{0 x1.8 p1, 0 x1.87 fffffffff5p5, 0 x1.88 bbe7dc8d9ap5},
{0 x1.8 p1, 0 x1.88 p5, 0 x1.88 bbe7dc8da5p5},
{0 x1.8 p1, 0 x1.8 ffffffffffe8p5, 0 x1.90 b8278768b67p5},
{0 x1.8 p1, 0 x1.9 p5, 0 x1.90 b8278768b8p5},
{0 x1.8 p1, 0 x1.97 fffffffff2bp5, 0 x1.98 b48cc1ce669p5},
{0 x1.8 p1, 0 x1.97 fffffffff3p5, 0 x1.98 b48cc1ce66dp5},
{0 x1.8 p1, 0 x1.9 ffffffffff34p5, 0 x1.a0b11562e5efcp5},
{0 x1.8 p1, 0 x1.ap5, 0 x1.a0b11562e5fc8p5},
{0 x1.8 p1, 0 x1.a7fffffffffdp5, 0 x1.a8adbf6b63874p5},
{0 x1.8 p1, 0 x1.a8p5, 0 x1.a8adbf6b638a4p5},
{0 x1.8 p1, 0 x1.affffffffffd8p5, 0 x1.b0aa8901b442cp5},
{0 x1.8 p1, 0 x1.affffffffffe8p5, 0 x1.b0aa8901b443dp5},
{0 x1.8 p1, 0 x1.b7ffffffffffp5, 0 x1.b8a7706e94761p5},
{0 x1.8 p1, 0 x1.b7ffffffffffep5, 0 x1.b8a7706e9477p5},
{0 x1.8 p1, 0 x1.bfffffffffffep5, 0 x1.c0a4741a02dcap5},
{0 x1.8 p1, 0 x1.cp5, 0 x1.c0a4741a02dcdp5},
{0 x1.8 p1, 0 x1.c7fffffffffdp5, 0 x1.c8a1928885b75p5},
{0 x1.8 p1, 0 x1.c7ffffffffff9p5, 0 x1.c8a1928885b9fp5},
{0 x1.8 p1, 0 x1.cffffffffff28p5, 0 x1.d09eca58b7d2cp5},
{0 x1.8 p1, 0 x1.dp5, 0 x1.d09eca58b7e04p5},
{0 x1.8 p1, 0 x1.d7ffffffffffp5, 0 x1.d89c1a4115253p5},
{0 x1.8 p1, 0 x1.d8p5, 0 x1.d89c1a4115264p5},
{0 x1.8 p1, 0 x1.dfffffffffffcp5, 0 x1.e099810dfefd1p5},
{0 x1.8 p1, 0 x1.e7fffffffffdp5, 0 x1.e896fd9ff2afep5},
{0 x1.8 p1, 0 x1.e7ffffffffffap5, 0 x1.e896fd9ff2b29p5},
{0 x1.8 p1, 0 x1.effffffffff98p5, 0 x1.f0948ee9ebc7bp5},
{0 x1.8 p1, 0 x1.effffffffffcap5, 0 x1.f0948ee9ebcadp5},
{0 x1.8 p1, 0 x1.f7fffffffff7p5, 0 x1.f89233efeda08p5},
{0 x1.8 p1, 0 x1.f7fffffffffb2p5, 0 x1.f89233efeda4ap5},
{0 x1.8 p1, 0 x1.ffffffffffda9p5, 0 x1.0047 f5e2d7ed7p6},
{0 x1.8 p1, 0 x1.03 ffffffffedp6, 0 x1.0446 dac6b5468p6},
{0 x1.8 p1, 0 x1.04 p6, 0 x1.0446 dac6b5598p6},
{0 x1.8 p1, 0 x1.07 fffffffffe8p6, 0 x1.0845 c83b5eb9bp6},
{0 x1.8 p1, 0 x1.07 ffffffffff9p6, 0 x1.0845 c83b5ebadp6},
{0 x1.8 p1, 0 x1.0 bffffffffe9bp6, 0 x1.0 c44bdded82bdp6},
{0 x1.8 p1, 0 x1.0 bffffffffebp6, 0 x1.0 c44bdded82d1p6},
{0 x1.8 p1, 0 x1.0 fffffffffed4p6, 0 x1.1043 bb54e5cc9p6},
{0 x1.8 p1, 0 x1.0 ffffffffff1fp6, 0 x1.1043 bb54e5d14p6},
{0 x1.8 p1, 0 x1.13 ffffffffe9p6, 0 x1.1442 c046a0ea6p6},
{0 x1.8 p1, 0 x1.13 fffffffff5ap6, 0 x1.1442 c046a0f7p6},
{0 x1.8 p1, 0 x1.17 fffffffffa8p6, 0 x1.1841 cc62174cbp6},
{0 x1.8 p1, 0 x1.17 fffffffffb8p6, 0 x1.1841 cc62174dap6},
{0 x1.8 p1, 0 x1.1 bffffffffffp6, 0 x1.1 c40df59f1a57p6},
{0 x1.8 p1, 0 x1.1 cp6, 0 x1.1 c40df59f1a67p6},
{0 x1.8 p1, 0 x1.1 fffffffffffap6, 0 x1.203 ff8e522535p6},
{0 x1.8 p1, 0 x1.1 ffffffffffffp6, 0 x1.203 ff8e52253bp6},
{0 x1.8 p1, 0 x1.23 fffffffffdp6, 0 x1.243 f18be9a334p6},
{0 x1.8 p1, 0 x1.23 ffffffffffbp6, 0 x1.243 f18be9a36p6},
{0 x1.8 p1, 0 x1.27 fffffffffe8p6, 0 x1.283 e3ea503c63p6},
{0 x1.8 p1, 0 x1.27 ffffffffff8p6, 0 x1.283 e3ea503c74p6},
{0 x1.8 p1, 0 x1.2 bffffffffdfp6, 0 x1.2 c3d6a5a83932p6},
{0 x1.8 p1, 0 x1.2 bffffffffe1p6, 0 x1.2 c3d6a5a83953p6},
{0 x1.8 p1, 0 x1.2 fffffffffffcp6, 0 x1.303 c9ba47e6d4p6},
{0 x1.8 p1, 0 x1.3 p6, 0 x1.303 c9ba47e6d8p6},
{0 x1.8 p1, 0 x1.33 fffffffffdp6, 0 x1.343 bd24b62468p6},
{0 x1.8 p1, 0 x1.33 fffffffffffp6, 0 x1.343 bd24b62498p6},
{0 x1.8 p1, 0 x1.37 ffffffffff8p6, 0 x1.383 b0e1a75c0ap6},
{0 x1.8 p1, 0 x1.37 fffffffffffp6, 0 x1.383 b0e1a75c12p6},
{0 x1.8 p1, 0 x1.3 bffffffffffp6, 0 x1.3 c3a4edfa9748p6},
{0 x1.8 p1, 0 x1.3 bffffffffffep6, 0 x1.3 c3a4edfa9756p6},
{0 x1.8 p1, 0 x1.3 fffffffffd4dp6, 0 x1.4039946 b6d79fp6},
{0 x1.8 p1, 0 x1.3 ffffffffffffp6, 0 x1.4039946 b6da51p6},
{0 x1.8 p1, 0 x1.43 fffffffff9p6, 0 x1.4438 de908abeap6},
{0 x1.8 p1, 0 x1.43 fffffffffbp6, 0 x1.4438 de908ac0bp6},
{0 x1.8 p1, 0 x1.47 ffffffffd08p6, 0 x1.48382 d23fccedp6},
{0 x1.8 p1, 0 x1.47 fffffffffa2p6, 0 x1.48382 d23fcf87p6},
{0 x1.8 p1, 0 x1.4 bffffffffcebp6, 0 x1.4 c377ffcd212fp6},
{0 x1.8 p1, 0 x1.4 bffffffffcfp6, 0 x1.4 c377ffcd2133p6},
{0 x1.8 p1, 0 x1.4 ffffffffff44p6, 0 x1.5036 d6f40ad53p6},
{0 x1.8 p1, 0 x1.4 ffffffffff9bp6, 0 x1.5036 d6f40adaap6},
{0 x1.8 p1, 0 x1.53 ffffffffedp6, 0 x1.543631 e47c1e1p6},
{0 x1.8 p1, 0 x1.54 p6, 0 x1.543631 e47c311p6},
{0 x1.8 p1, 0 x1.57 ffffffffd78p6, 0 x1.583590 aab542dp6},
{0 x1.8 p1, 0 x1.58 p6, 0 x1.583590 aab56b5p6},
{0 x1.8 p1, 0 x1.5 bffffffffc7p6, 0 x1.5 c34f324e60eep6},
{0 x1.8 p1, 0 x1.5 bffffffffc9p6, 0 x1.5 c34f324e610fp6},
{0 x1.8 p1, 0 x1.5 fffffffffffdp6, 0 x1.60345932 c760dp6},
{0 x1.8 p1, 0 x1.5 fffffffffffep6, 0 x1.60345932 c760dp6},
{0 x1.8 p1, 0 x1.63 fffffffff79p6, 0 x1.6433 c2b58421fp6},
{0 x1.8 p1, 0 x1.63 fffffffff9p6, 0 x1.6433 c2b584235p6},
{0 x1.8 p1, 0 x1.67 ffffffffda8p6, 0 x1.68332 f8fa63a6p6},
{0 x1.8 p1, 0 x1.67 fffffffff4dp6, 0 x1.68332 f8fa654bp6},
{0 x1.8 p1, 0 x1.6 bfffffffffep6, 0 x1.6 c329fa502ccfp6},
{0 x1.8 p1, 0 x1.6 cp6, 0 x1.6 c329fa502cefp6},
{0 x1.8 p1, 0 x1.6 fffffffffff8p6, 0 x1.703212 daa75f3p6},
{0 x1.8 p1, 0 x1.6 ffffffffffffp6, 0 x1.703212 daa75fbp6},
{0 x1.8 p1, 0 x1.73 fffffffffap6, 0 x1.74318916 ca409p6},
{0 x1.8 p1, 0 x1.74 p6, 0 x1.74318916 ca46ap6},
{0 x1.8 p1, 0 x1.77 ffffffffffp6, 0 x1.78310240 ba47p6},
{0 x1.8 p1, 0 x1.78 p6, 0 x1.78310240 ba481p6},
{0 x1.8 p1, 0 x1.7 bfffffffffep6, 0 x1.7 c307e40cff7fp6},
{0 x1.8 p1, 0 x1.7 bfffffffffe4p6, 0 x1.7 c307e40cff83p6},
{0 x1.8 p1, 0 x1.7 fffffffffff7p6, 0 x1.802 ffd005ff07p6},
{0 x1.8 p1, 0 x1.7 fffffffffff9p6, 0 x1.802 ffd005ff0ap6},
{0 x1.8 p1, 0 x1.83 fffffffffap6, 0 x1.842 f7e69adc1ep6},
{0 x1.8 p1, 0 x1.83 fffffffffffp6, 0 x1.842 f7e69adc7dp6},
{0 x1.8 p1, 0 x1.87 fffffffffdp6, 0 x1.882 f0267dfef4p6},
{0 x1.8 p1, 0 x1.88 p6, 0 x1.882 f0267dff24p6},
{0 x1.8 p1, 0 x1.8 bfffffffffep6, 0 x1.8 c2e88e6f449ap6},
{0 x1.8 p1, 0 x1.8 bffffffffff6p6, 0 x1.8 c2e88e6f44b1p6},
{0 x1.8 p1, 0 x1.8 ffffffffffe8p6, 0 x1.902 e11d3b5549p6},
{0 x1.8 p1, 0 x1.8 fffffffffffep6, 0 x1.902 e11d3b556p6},
// Test near decision points of the fdlibm algorithm
{0 x1.0000000000001 p501, 0 x1.000000000000 p501, 0 x1.6 a09e667f3bcdp501},
{0 x1.0 p501, 0 x1.0 p499, 0 x1.07 e0f66afed07p501},
{0 x1.0 p500, 0 x1.0 p450, 0 x1.0 p500},
{0 x1.0000000000001 p500, 0 x1.0 p450, 0 x1.0000000000001 p500},
{0 x1.0 p500, 0 x1.0 p440, 0 x1.0 p500},
{0 x1.0000000000001 p500, 0 x1.0 p440, 0 x1.0000000000001 p500},
{0 x1.0 p500, 0 x1.0 p439, 0 x1.0 p500},
{0 x1.0000000000001 p500, 0 x1.0 p439, 0 x1.0000000000001 p500},
{0 x1.0 p-450 , 0 x1.0 p-500 , 0 x1.0 p-450 },
{0 x1.0000000000001 p-450 , 0 x1.0 p-500 , 0 x1.0000000000001 p-450 },
{0 x1.0 p-450 , 0 x1.fffffffffffffp-499 , 0 x1.0 p-450 },
{0 x1.0000000000001 p-450 , 0 x1.fffffffffffffp-499 , 0 x1.0000000000001 p-450 },
{0 x1.0 p-450 , 0 x1.0 p-500 , 0 x1.0 p-450 },
{0 x1.0000000000001 p-450 , 0 x1.0 p-500 , 0 x1.0000000000001 p-450 },
{0 x1.0 p-450 , 0 x1.fffffffffffffp-499 , 0 x1.0 p-450 },
{0 x1.0000000000001 p-450 , 0 x1.fffffffffffffp-499 , 0 x1.0000000000001 p-450 },
{0 x1.00000 _ffff_0000p500, 0 x1.fffffffffffffp499, 0 x1.6 a09f1b837ccfp500},
{0 x1.00000 _0000 _0001 p500, 0 x1.fffffffffffffp499, 0 x1.6 a09e667f3bcdp500},
{0 x1.00000 _ffff_ffffp500, 0 x1.fffffffffffffp499, 0 x1.6 a09f1b8431d3p500},
{0 x1.00001 _0000 _0000 p500, 0 x1.fffffffffffffp499, 0 x1.6 a09f1b8431d5p500},
// 0x1.0p-1022 is MIN_NORMAL
{0 x1.0000000000001 p-1022 , 0 x1.0000000000001 p-1022 , 0 x1.6 a09e667f3bcep-1022 },
{0 x1.0000000000001 p-1022 , 0 x1.0 p-1022 , 0 x1.6 a09e667f3bcdp-1022 },
{0 x1.0000000000001 p-1022 , 0 x0.fffffffffffffp-1022 , 0 x1.6 a09e667f3bcdp-1022 },
{0 x1.0000000000001 p-1022 , 0 x0.0000000000001 P-1022 , 0 x1.0000000000001 p-1022 },
{0 x1.0000000000001 p-1022 , 0 .0 , 0 x1.0000000000001 p-1022 },
{0 x1.0000000000000 p-1022 , 0 x0.fffffffffffffp-1022 , 0 x1.6 a09e667f3bccp-1022 },
{0 x1.0000000000000 p-1021 , 0 x0.fffffffffffffp-1022 , 0 x1.1 e3779b97f4a8p-1021 },
{0 x1.0000000000000 p-1020 , 0 x0.fffffffffffffp-1022 , 0 x1.07 e0f66afed07p-1020 },
// 0x0.0000000000001P-1022 is MIN_VALUE (smallest nonzero number)
{0 x0.0000000000001 p-1022 , 0 x0.0000000000001 p-1022 , 0 x0.0000000000001 p-1022 },
{0 x0.0000000000002 p-1022 , 0 x0.0000000000001 p-1022 , 0 x0.0000000000002 p-1022 },
{0 x0.0000000000003 p-1022 , 0 x0.0000000000002 p-1022 , 0 x0.0000000000004 p-1022 },
};
for (double [] testCase: testCases)
failures += testHypotCase(testCase[0 ], testCase[1 ], testCase[2 ]);
return failures;
}
// Initialize shared random number generator
private static java.util.Random random = RandomFactory.getRandom();
/**
* Test StrictMath . hypot against transliteration port of hypot .
*/
private static int testAgainstTranslit() {
int failures = 0 ;
double x = Tests.createRandomDouble(random);
double y = Tests.createRandomDouble(random);
// Make the increment twice the ulp value in case the random
// value is near an exponent threshold.
double increment_x = 2 .0 * Math.ulp(x);
double increment_y = 2 .0 * Math.ulp(y);
// Don't worry about x or y overflowing to infinity if their
// exponent is MAX_EXPONENT.
for (int i = 0 ; i < 200 ; i++, x += increment_x) {
for (int j = 0 ; j < 200 ; j++, y += increment_y) {
failures += testHypotCase(x, y, FdlibmTranslit.hypot(x, y));
}
}
return failures;
}
}
Messung V0.5 in Prozent C=95 H=89 G=91
¤ Dauer der Verarbeitung: 0.15 Sekunden
¤
*© Formatika GbR, Deutschland