Path: blob/master/test/jdk/java/lang/StrictMath/CubeRootTests.java
41149 views
/*1* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 4347132 813679926* @key randomness27* @library /test/lib28* @build jdk.test.lib.RandomFactory29* @build Tests30* @build FdlibmTranslit31* @build CubeRootTests32* @run main CubeRootTests33* @summary Tests specifically for StrictMath.cbrt34* @author Joseph D. Darcy35*/3637import jdk.test.lib.RandomFactory;3839/**40* The tests in ../Math/CubeRootTests.java test properties that should41* hold for any cube root implementation, including the FDLIBM-based42* one required for StrictMath.cbrt. Therefore, the test cases in43* ../Math/CubeRootTests.java are run against both the Math and44* StrictMath versions of cube root. The role of this test is to45* verify that the FDLIBM cbrt algorithm is being used by running46* golden file tests on values that may vary from one conforming cube47* root implementation to another.48*/4950public class CubeRootTests {51private CubeRootTests(){}5253public static void main(String [] argv) {54int failures = 0;5556failures += testCubeRoot();57failures += testAgainstTranslit();5859if (failures > 0) {60System.err.println("Testing the cube root incurred "61+ failures + " failures.");62throw new RuntimeException();63}64}6566static int testCubeRootCase(double input, double expected) {67int failures=0;6869double minus_input = -input;70double minus_expected = -expected;7172failures+=Tests.test("StrictMath.cbrt(double)", input,73StrictMath.cbrt(input), expected);74failures+=Tests.test("StrictMath.cbrt(double)", minus_input,75StrictMath.cbrt(minus_input), minus_expected);76return failures;77}7879static int testCubeRoot() {80int failures = 0;81double [][] testCases = {82{0x1.ffffffffffffep-766, 0x1.fffffffffffffp-256},83{0x1.ffffffffffffep-763, 0x1.fffffffffffffp-255},84{0x1.ffffffffffffep-760, 0x1.fffffffffffffp-254},85{0x1.ffffffffffffep-757, 0x1.fffffffffffffp-253},86{0x1.ffffffffffffep-754, 0x1.fffffffffffffp-252},87{0x1.ffffffffffffep-751, 0x1.fffffffffffffp-251},88{0x1.ffffffffffffep-748, 0x1.fffffffffffffp-250},89{0x1.ffffffffffffep-745, 0x1.fffffffffffffp-249},90{0x1.ffffffffffffep-742, 0x1.fffffffffffffp-248},91{0x1.ffffffffffffep-739, 0x1.fffffffffffffp-247},92{0x1.ffffffffffffep-1006, 0x1.fffffffffffffp-336},93{0x1.ffffffffffffep-736, 0x1.fffffffffffffp-246},94{0x1.ffffffffffffep-733, 0x1.fffffffffffffp-245},95{0x1.ffffffffffffep-730, 0x1.fffffffffffffp-244},96{0x1.ffffffffffffep-727, 0x1.fffffffffffffp-243},97{0x1.ffffffffffffep-724, 0x1.fffffffffffffp-242},98{0x1.ffffffffffffep-721, 0x1.fffffffffffffp-241},99{0x1.ffffffffffffep-718, 0x1.fffffffffffffp-240},100{0x1.ffffffffffffep-715, 0x1.fffffffffffffp-239},101{0x1.ffffffffffffep-712, 0x1.fffffffffffffp-238},102{0x1.ffffffffffffep-709, 0x1.fffffffffffffp-237},103{0x1.ffffffffffffep-706, 0x1.fffffffffffffp-236},104{0x1.ffffffffffffep-703, 0x1.fffffffffffffp-235},105{0x1.ffffffffffffep-700, 0x1.fffffffffffffp-234},106{0x1.ffffffffffffep-697, 0x1.fffffffffffffp-233},107{0x1.ffffffffffffep-694, 0x1.fffffffffffffp-232},108{0x1.ffffffffffffep-691, 0x1.fffffffffffffp-231},109{0x1.ffffffffffffep-1003, 0x1.fffffffffffffp-335},110{0x1.ffffffffffffep-688, 0x1.fffffffffffffp-230},111{0x1.ffffffffffffep-685, 0x1.fffffffffffffp-229},112{0x1.ffffffffffffep-682, 0x1.fffffffffffffp-228},113{0x1.ffffffffffffep-679, 0x1.fffffffffffffp-227},114{0x1.ffffffffffffep-676, 0x1.fffffffffffffp-226},115{0x1.ffffffffffffep-673, 0x1.fffffffffffffp-225},116{0x1.ffffffffffffep-670, 0x1.fffffffffffffp-224},117{0x1.ffffffffffffep-667, 0x1.fffffffffffffp-223},118{0x1.ffffffffffffep-664, 0x1.fffffffffffffp-222},119{0x1.ffffffffffffep-661, 0x1.fffffffffffffp-221},120{0x1.ffffffffffffep-658, 0x1.fffffffffffffp-220},121{0x1.ffffffffffffep-655, 0x1.fffffffffffffp-219},122{0x1.ffffffffffffep-652, 0x1.fffffffffffffp-218},123{0x1.ffffffffffffep-649, 0x1.fffffffffffffp-217},124{0x1.ffffffffffffep-646, 0x1.fffffffffffffp-216},125{0x1.ffffffffffffep-643, 0x1.fffffffffffffp-215},126{0x1.ffffffffffffep-1000, 0x1.fffffffffffffp-334},127{0x1.ffffffffffffep-640, 0x1.fffffffffffffp-214},128{0x1.ffffffffffffep-637, 0x1.fffffffffffffp-213},129{0x1.ffffffffffffep-634, 0x1.fffffffffffffp-212},130{0x1.ffffffffffffep-631, 0x1.fffffffffffffp-211},131{0x1.ffffffffffffep-628, 0x1.fffffffffffffp-210},132{0x1.ffffffffffffep-625, 0x1.fffffffffffffp-209},133{0x1.ffffffffffffep-622, 0x1.fffffffffffffp-208},134{0x1.ffffffffffffep-619, 0x1.fffffffffffffp-207},135{0x1.ffffffffffffep-616, 0x1.fffffffffffffp-206},136{0x1.ffffffffffffep-613, 0x1.fffffffffffffp-205},137{0x1.ffffffffffffep-610, 0x1.fffffffffffffp-204},138{0x1.ffffffffffffep-607, 0x1.fffffffffffffp-203},139{0x1.ffffffffffffep-604, 0x1.fffffffffffffp-202},140{0x1.ffffffffffffep-601, 0x1.fffffffffffffp-201},141{0x1.ffffffffffffep-598, 0x1.fffffffffffffp-200},142{0x1.ffffffffffffep-595, 0x1.fffffffffffffp-199},143{0x1.ffffffffffffep-997, 0x1.fffffffffffffp-333},144{0x1.ffffffffffffep-592, 0x1.fffffffffffffp-198},145{0x1.ffffffffffffep-589, 0x1.fffffffffffffp-197},146{0x1.ffffffffffffep-586, 0x1.fffffffffffffp-196},147{0x1.ffffffffffffep-583, 0x1.fffffffffffffp-195},148{0x1.ffffffffffffep-580, 0x1.fffffffffffffp-194},149{0x1.ffffffffffffep-577, 0x1.fffffffffffffp-193},150{0x1.ffffffffffffep-574, 0x1.fffffffffffffp-192},151{0x1.ffffffffffffep-571, 0x1.fffffffffffffp-191},152{0x1.ffffffffffffep-568, 0x1.fffffffffffffp-190},153{0x1.ffffffffffffep-565, 0x1.fffffffffffffp-189},154{0x1.ffffffffffffep-562, 0x1.fffffffffffffp-188},155{0x1.ffffffffffffep-559, 0x1.fffffffffffffp-187},156{0x1.ffffffffffffep-556, 0x1.fffffffffffffp-186},157{0x1.ffffffffffffep-553, 0x1.fffffffffffffp-185},158{0x1.ffffffffffffep-550, 0x1.fffffffffffffp-184},159{0x1.ffffffffffffep-547, 0x1.fffffffffffffp-183},160{0x1.ffffffffffffep-994, 0x1.fffffffffffffp-332},161{0x1.ffffffffffffep-544, 0x1.fffffffffffffp-182},162{0x1.ffffffffffffep-541, 0x1.fffffffffffffp-181},163{0x1.ffffffffffffep-538, 0x1.fffffffffffffp-180},164{0x1.ffffffffffffep-535, 0x1.fffffffffffffp-179},165{0x1.ffffffffffffep-532, 0x1.fffffffffffffp-178},166{0x1.ffffffffffffep-529, 0x1.fffffffffffffp-177},167{0x0.00000000001fp-1022, 0x1.fa9c313858568p-356},168{0x1.ffffffffffffep-526, 0x1.fffffffffffffp-176},169{0x1.ffffffffffffep-523, 0x1.fffffffffffffp-175},170{0x1.ffffffffffffep-520, 0x1.fffffffffffffp-174},171{0x1.ffffffffffffep-517, 0x1.fffffffffffffp-173},172{0x0.00000000001fdp-1022, 0x1.feff7f94ea34dp-356},173{0x1.ffffffffffffep-514, 0x1.fffffffffffffp-172},174{0x0.00000001fffe7p-1022, 0x1.ffff7aaa87f1bp-352},175{0x0.00000001fffffp-1022, 0x1.fffffaaaaa9c7p-352},176{0x0.00001ffffff4p-1022, 0x1.ffffffcp-348},177{0x0.00001ffffffffp-1022, 0x1.ffffffffaaaabp-348},178{0x0.01ffffffffffcp-1022, 0x1.ffffffffffeabp-344},179{0x1.ffffffffffffep-511, 0x1.fffffffffffffp-171},180{0x1.ffffffffffffep-508, 0x1.fffffffffffffp-170},181{0x1.ffffffffffffep-505, 0x1.fffffffffffffp-169},182{0x1.ffffffffffffep-502, 0x1.fffffffffffffp-168},183{0x1.ffffffffffffep-499, 0x1.fffffffffffffp-167},184{0x1.ffffffffffffep-991, 0x1.fffffffffffffp-331},185{0x1.ffffffffffffep-496, 0x1.fffffffffffffp-166},186{0x1.ffffffffffffep-493, 0x1.fffffffffffffp-165},187{0x1.ffffffffffffep-490, 0x1.fffffffffffffp-164},188{0x1.ffffffffffffep-487, 0x1.fffffffffffffp-163},189{0x1.ffffffffffffep-484, 0x1.fffffffffffffp-162},190{0x1.ffffffffffffep-481, 0x1.fffffffffffffp-161},191{0x1.ffffffffffffep-478, 0x1.fffffffffffffp-160},192{0x1.ffffffffffffep-475, 0x1.fffffffffffffp-159},193{0x1.ffffffffffffep-472, 0x1.fffffffffffffp-158},194{0x1.ffffffffffffep-469, 0x1.fffffffffffffp-157},195{0x1.ffffffffffffep-466, 0x1.fffffffffffffp-156},196{0x1.ffffffffffffep-463, 0x1.fffffffffffffp-155},197{0x1.ffffffffffffep-460, 0x1.fffffffffffffp-154},198{0x1.ffffffffffffep-457, 0x1.fffffffffffffp-153},199{0x1.ffffffffffffep-454, 0x1.fffffffffffffp-152},200{0x1.ffffffffffffep-451, 0x1.fffffffffffffp-151},201{0x1.ffffffffffffep-988, 0x1.fffffffffffffp-330},202{0x1.ffffffffffffep-448, 0x1.fffffffffffffp-150},203{0x1.ffffffffffffep-445, 0x1.fffffffffffffp-149},204{0x1.ffffffffffffep-442, 0x1.fffffffffffffp-148},205{0x1.ffffffffffffep-439, 0x1.fffffffffffffp-147},206{0x1.ffffffffffffep-436, 0x1.fffffffffffffp-146},207{0x1.ffffffffffffep-433, 0x1.fffffffffffffp-145},208{0x1.ffffffffffffep-430, 0x1.fffffffffffffp-144},209{0x1.ffffffffffffep-427, 0x1.fffffffffffffp-143},210{0x1.ffffffffffffep-424, 0x1.fffffffffffffp-142},211{0x1.ffffffffffffep-421, 0x1.fffffffffffffp-141},212{0x1.ffffffffffffep-418, 0x1.fffffffffffffp-140},213{0x1.ffffffffffffep-415, 0x1.fffffffffffffp-139},214{0x1.ffffffffffffep-412, 0x1.fffffffffffffp-138},215{0x1.ffffffffffffep-409, 0x1.fffffffffffffp-137},216{0x1.ffffffffffffep-406, 0x1.fffffffffffffp-136},217{0x1.ffffffffffffep-403, 0x1.fffffffffffffp-135},218{0x1.ffffffffffffep-985, 0x1.fffffffffffffp-329},219{0x1.ffffffffffffep-400, 0x1.fffffffffffffp-134},220{0x1.ffffffffffffep-397, 0x1.fffffffffffffp-133},221{0x1.ffffffffffffep-394, 0x1.fffffffffffffp-132},222{0x1.ffffffffffffep-391, 0x1.fffffffffffffp-131},223{0x1.ffffffffffffep-388, 0x1.fffffffffffffp-130},224{0x1.ffffffffffffep-385, 0x1.fffffffffffffp-129},225{0x1.ffffffffffffep-382, 0x1.fffffffffffffp-128},226{0x1.ffffffffffffep-379, 0x1.fffffffffffffp-127},227{0x1.ffffffffffffep-376, 0x1.fffffffffffffp-126},228{0x1.ffffffffffffep-373, 0x1.fffffffffffffp-125},229{0x1.ffffffffffffep-370, 0x1.fffffffffffffp-124},230{0x1.ffffffffffffep-367, 0x1.fffffffffffffp-123},231{0x1.ffffffffffffep-364, 0x1.fffffffffffffp-122},232{0x1.ffffffffffffep-361, 0x1.fffffffffffffp-121},233{0x1.ffffffffffffep-358, 0x1.fffffffffffffp-120},234{0x1.ffffffffffffep-355, 0x1.fffffffffffffp-119},235{0x1.ffffffffffffep-982, 0x1.fffffffffffffp-328},236{0x1.ffffffffffffep-352, 0x1.fffffffffffffp-118},237{0x1.ffffffffffffep-349, 0x1.fffffffffffffp-117},238{0x1.ffffffffffffep-346, 0x1.fffffffffffffp-116},239{0x1.ffffffffffffep-343, 0x1.fffffffffffffp-115},240{0x1.ffffffffffffep-340, 0x1.fffffffffffffp-114},241{0x1.ffffffffffffep-337, 0x1.fffffffffffffp-113},242{0x1.ffffffffffffep-334, 0x1.fffffffffffffp-112},243{0x1.ffffffffffffep-331, 0x1.fffffffffffffp-111},244{0x1.ffffffffffffep-328, 0x1.fffffffffffffp-110},245{0x1.ffffffffffffep-325, 0x1.fffffffffffffp-109},246{0x1.ffffffffffffep-322, 0x1.fffffffffffffp-108},247{0x1.ffffffffffffep-319, 0x1.fffffffffffffp-107},248{0x1.ffffffffffffep-316, 0x1.fffffffffffffp-106},249{0x1.ffffffffffffep-313, 0x1.fffffffffffffp-105},250{0x1.ffffffffffffep-310, 0x1.fffffffffffffp-104},251{0x1.ffffffffffffep-307, 0x1.fffffffffffffp-103},252{0x1.ffffffffffffep-979, 0x1.fffffffffffffp-327},253{0x1.ffffffffffffep-304, 0x1.fffffffffffffp-102},254{0x1.ffffffffffffep-301, 0x1.fffffffffffffp-101},255{0x1.ffffffffffffep-298, 0x1.fffffffffffffp-100},256{0x1.ffffffffffffep-295, 0x1.fffffffffffffp-99},257{0x1.ffffffffffffep-292, 0x1.fffffffffffffp-98},258{0x1.ffffffffffffep-289, 0x1.fffffffffffffp-97},259{0x1.ffffffffffffep-286, 0x1.fffffffffffffp-96},260{0x1.ffffffffffffep-283, 0x1.fffffffffffffp-95},261{0x1.ffffffffffffep-280, 0x1.fffffffffffffp-94},262{0x1.ffffffffffffep-277, 0x1.fffffffffffffp-93},263{0x1.ffffffffffffep-274, 0x1.fffffffffffffp-92},264{0x1.ffffffffffffep-271, 0x1.fffffffffffffp-91},265{0x1.ffffffffffffep-268, 0x1.fffffffffffffp-90},266{0x1.ffffffffffffep-265, 0x1.fffffffffffffp-89},267{0x1.ffffffffffffep-262, 0x1.fffffffffffffp-88},268{0x1.ffffffffffffep-259, 0x1.fffffffffffffp-87},269{0x1.ffffffffffffep-1021, 0x1.fffffffffffffp-341},270{0x1.ffffffffffffep-976, 0x1.fffffffffffffp-326},271{0x1.ffffffffffffep-256, 0x1.fffffffffffffp-86},272{0x1.ffffffffffffep-253, 0x1.fffffffffffffp-85},273{0x1.ffffffffffffep-250, 0x1.fffffffffffffp-84},274{0x1.ffffffffffffep-247, 0x1.fffffffffffffp-83},275{0x1.ffffffffffffep-244, 0x1.fffffffffffffp-82},276{0x1.ffffffffffffep-241, 0x1.fffffffffffffp-81},277{0x1.ffffffffffffep-238, 0x1.fffffffffffffp-80},278{0x1.ffffffffffffep-235, 0x1.fffffffffffffp-79},279{0x1.ffffffffffffep-232, 0x1.fffffffffffffp-78},280{0x1.ffffffffffffep-229, 0x1.fffffffffffffp-77},281{0x1.ffffffffffffep-226, 0x1.fffffffffffffp-76},282{0x1.ffffffffffffep-223, 0x1.fffffffffffffp-75},283{0x1.ffffffffffffep-220, 0x1.fffffffffffffp-74},284{0x1.ffffffffffffep-217, 0x1.fffffffffffffp-73},285{0x1.ffffffffffffep-214, 0x1.fffffffffffffp-72},286{0x1.ffffffffffffep-211, 0x1.fffffffffffffp-71},287{0x1.ffffffffffffep-973, 0x1.fffffffffffffp-325},288{0x1.ffffffffffffep-208, 0x1.fffffffffffffp-70},289{0x1.ffffffffffffep-205, 0x1.fffffffffffffp-69},290{0x1.ffffffffffffep-202, 0x1.fffffffffffffp-68},291{0x1.ffffffffffffep-199, 0x1.fffffffffffffp-67},292{0x1.ffffffffffffep-196, 0x1.fffffffffffffp-66},293{0x1.ffffffffffffep-193, 0x1.fffffffffffffp-65},294{0x1.ffffffffffffep-190, 0x1.fffffffffffffp-64},295{0x1.ffffffffffffep-187, 0x1.fffffffffffffp-63},296{0x1.ffffffffffffep-184, 0x1.fffffffffffffp-62},297{0x1.ffffffffffffep-181, 0x1.fffffffffffffp-61},298{0x1.ffffffffffffep-178, 0x1.fffffffffffffp-60},299{0x1.ffffffffffffep-175, 0x1.fffffffffffffp-59},300{0x1.ffffffffffffep-172, 0x1.fffffffffffffp-58},301{0x1.ffffffffffffep-169, 0x1.fffffffffffffp-57},302{0x1.ffffffffffffep-166, 0x1.fffffffffffffp-56},303{0x1.ffffffffffffep-163, 0x1.fffffffffffffp-55},304{0x1.ffffffffffffep-970, 0x1.fffffffffffffp-324},305{0x1.ffffffffffffep-160, 0x1.fffffffffffffp-54},306{0x1.ffffffffffffep-157, 0x1.fffffffffffffp-53},307{0x1.ffffffffffffep-154, 0x1.fffffffffffffp-52},308{0x1.ffffffffffffep-151, 0x1.fffffffffffffp-51},309{0x1.ffffffffffffep-148, 0x1.fffffffffffffp-50},310{0x1.ffffffffffffep-145, 0x1.fffffffffffffp-49},311{0x1.ffffffffffffep-142, 0x1.fffffffffffffp-48},312{0x1.ffffffffffffep-139, 0x1.fffffffffffffp-47},313{0x1.ffffffffffffep-136, 0x1.fffffffffffffp-46},314{0x1.ffffffffffffep-133, 0x1.fffffffffffffp-45},315{0x1.ffffffffffffep-130, 0x1.fffffffffffffp-44},316{0x1.ffffffffffffep-127, 0x1.fffffffffffffp-43},317{0x1.ffffffffffffep-124, 0x1.fffffffffffffp-42},318{0x1.ffffffffffffep-121, 0x1.fffffffffffffp-41},319{0x1.ffffffffffffep-118, 0x1.fffffffffffffp-40},320{0x1.ffffffffffffep-115, 0x1.fffffffffffffp-39},321{0x1.ffffffffffffep-967, 0x1.fffffffffffffp-323},322{0x1.ffffffffffffep-112, 0x1.fffffffffffffp-38},323{0x1.ffffffffffffep-109, 0x1.fffffffffffffp-37},324{0x1.ffffffffffffep-106, 0x1.fffffffffffffp-36},325{0x1.ffffffffffffep-103, 0x1.fffffffffffffp-35},326{0x1.ffffffffffffep-100, 0x1.fffffffffffffp-34},327{0x1.ffffffffffffep-97, 0x1.fffffffffffffp-33},328{0x1.ffffffffffffep-94, 0x1.fffffffffffffp-32},329{0x1.ffffffffffffep-91, 0x1.fffffffffffffp-31},330{0x1.ffffffffffffep-88, 0x1.fffffffffffffp-30},331{0x1.ffffffffffffep-85, 0x1.fffffffffffffp-29},332{0x1.ffffffffffffep-82, 0x1.fffffffffffffp-28},333{0x1.ffffffffffffep-79, 0x1.fffffffffffffp-27},334{0x1.ffffffffffffep-76, 0x1.fffffffffffffp-26},335{0x1.ffffffffffffep-73, 0x1.fffffffffffffp-25},336{0x1.ffffffffffffep-70, 0x1.fffffffffffffp-24},337{0x1.ffffffffffffep-67, 0x1.fffffffffffffp-23},338{0x1.ffffffffffffep-964, 0x1.fffffffffffffp-322},339{0x1.ffffffffffffep-64, 0x1.fffffffffffffp-22},340{0x1.ffffffffffffep-61, 0x1.fffffffffffffp-21},341{0x1.ffffffffffffep-58, 0x1.fffffffffffffp-20},342{0x1.ffffffffffffep-55, 0x1.fffffffffffffp-19},343{0x1.ffffffffffffep-52, 0x1.fffffffffffffp-18},344{0x1.ffffffffffffep-49, 0x1.fffffffffffffp-17},345{0x1.ffffffffffffep-46, 0x1.fffffffffffffp-16},346{0x1.ffffffffffffep-43, 0x1.fffffffffffffp-15},347{0x1.ffffffffffffep-40, 0x1.fffffffffffffp-14},348{0x1.ffffffffffffep-37, 0x1.fffffffffffffp-13},349{0x1.ffffffffffffep-34, 0x1.fffffffffffffp-12},350{0x1.ffffffffffffep-31, 0x1.fffffffffffffp-11},351{0x1.ffffffffffffep-28, 0x1.fffffffffffffp-10},352{0x1.ffffffffffffep-25, 0x1.fffffffffffffp-9},353{0x1.ffffffffffffep-22, 0x1.fffffffffffffp-8},354{0x0.000000000003ep-1022, 0x1.fa9c313858568p-357},355{0x1.ffffffffffffep-19, 0x1.fffffffffffffp-7},356{0x1.ffffffffffffep-961, 0x1.fffffffffffffp-321},357{0x1.ffffffffffffep-16, 0x1.fffffffffffffp-6},358{0x1.ffffffffffffep-13, 0x1.fffffffffffffp-5},359{0x1.ffffffffffffep-10, 0x1.fffffffffffffp-4},360{0x1.ffffffffffffep-7, 0x1.fffffffffffffp-3},361{0x0.000000000003fp-1022, 0x1.fd51bf2069fe6p-357},362{0x1.ffffffffffffep-4, 0x1.fffffffffffffp-2},363{0x1.ffffffffffffep-1, 0x1.fffffffffffffp-1},364{0x0.000000003fffcp-1022, 0x1.ffff55551c71bp-353},365{0x0.000003fffffe8p-1022, 0x1.ffffffcp-349},366{0x0.000003ffffffcp-1022, 0x1.fffffff555555p-349},367{0x0.003fffffffff9p-1022, 0x1.fffffffffed55p-345},368{0x1.ffffffffffffep2, 0x1.fffffffffffffp0},369{0x1.bp4, 0x1.8p1},370{0x1.ffffffffffffep5, 0x1.fffffffffffffp1},371{0x1.f3ffffffffff4p6, 0x1.3fffffffffffep2},372{0x1.f3ffffffffffcp6, 0x1.3ffffffffffffp2},373{0x1.bp7, 0x1.8p2},374{0x1.56ffffffffffep8, 0x1.bffffffffffffp2},375{0x1.ffffffffffffep8, 0x1.fffffffffffffp2},376{0x1.6c8p9, 0x1.2p3},377{0x1.f3ffffffffff4p9, 0x1.3fffffffffffep3},378{0x1.f3ffffffffffcp9, 0x1.3ffffffffffffp3},379{0x1.4cbfffffffffcp10, 0x1.5fffffffffffep3},380{0x1.4cbfffffffffep10, 0x1.5ffffffffffffp3},381{0x1.bp10, 0x1.8p3},382{0x1.129ffffffffa4p11, 0x1.9ffffffffffd1p3},383{0x1.129fffffffffep11, 0x1.9ffffffffffffp3},384{0x1.56ffffffffffep11, 0x1.bffffffffffffp3},385{0x1.a5ep11, 0x1.ep3},386{0x1.ffffffffffffep11, 0x1.fffffffffffffp3},387{0x1.330fffffffc1ep12, 0x1.0fffffffffedbp4},388{0x1.331p12, 0x1.1p4},389{0x1.6c8p12, 0x1.2p4},390{0x1.acafffffffffap12, 0x1.2ffffffffffffp4},391{0x1.acafffffffffep12, 0x1.2ffffffffffffp4},392{0x1.ffffffffffffep-958, 0x1.fffffffffffffp-320},393{0x1.ffffffffffffep-955, 0x1.fffffffffffffp-319},394{0x1.ffffffffffffep-952, 0x1.fffffffffffffp-318},395{0x1.ffffffffffffep-949, 0x1.fffffffffffffp-317},396{0x1.ffffffffffffep-946, 0x1.fffffffffffffp-316},397{0x1.ffffffffffffep-943, 0x1.fffffffffffffp-315},398{0x1.ffffffffffffep-940, 0x1.fffffffffffffp-314},399{0x1.ffffffffffffep-937, 0x1.fffffffffffffp-313},400{0x1.ffffffffffffep-934, 0x1.fffffffffffffp-312},401{0x1.ffffffffffffep-931, 0x1.fffffffffffffp-311},402{0x1.ffffffffffffep-1018, 0x1.fffffffffffffp-340},403{0x1.ffffffffffffep-928, 0x1.fffffffffffffp-310},404{0x1.ffffffffffffep-925, 0x1.fffffffffffffp-309},405{0x1.ffffffffffffep-922, 0x1.fffffffffffffp-308},406{0x1.ffffffffffffep-919, 0x1.fffffffffffffp-307},407{0x1.ffffffffffffep-916, 0x1.fffffffffffffp-306},408{0x1.ffffffffffffep-913, 0x1.fffffffffffffp-305},409{0x1.ffffffffffffep-910, 0x1.fffffffffffffp-304},410{0x1.ffffffffffffep-907, 0x1.fffffffffffffp-303},411{0x1.ffffffffffffep-904, 0x1.fffffffffffffp-302},412{0x0.0000000000007p-1022, 0x1.e9b5dba58189ep-358},413{0x1.ffffffffffffep-901, 0x1.fffffffffffffp-301},414{0x1.ffffffffffffep-898, 0x1.fffffffffffffp-300},415{0x0.0000000007ffp-1022, 0x1.ffeaa9c70ca31p-354},416{0x0.0000000007ffep-1022, 0x1.fffd5551c7149p-354},417{0x0.0000007fffffdp-1022, 0x1.ffffffcp-350},418{0x0.0000007fffffep-1022, 0x1.ffffffd555555p-350},419{0x0.0007ffffffffap-1022, 0x1.fffffffff8p-346},420{0x0.7ffffffffffffp-1022, 0x1.fffffffffffffp-342},421{0x1.ffffffffffffep-895, 0x1.fffffffffffffp-299},422{0x1.ffffffffffffep-892, 0x1.fffffffffffffp-298},423{0x1.ffffffffffffep-889, 0x1.fffffffffffffp-297},424{0x1.ffffffffffffep-886, 0x1.fffffffffffffp-296},425{0x1.ffffffffffffep-883, 0x1.fffffffffffffp-295},426{0x1.ffffffffffffep-1015, 0x1.fffffffffffffp-339},427{0x1.ffffffffffffep-880, 0x1.fffffffffffffp-294},428{0x1.ffffffffffffep-877, 0x1.fffffffffffffp-293},429{0x1.ffffffffffffep-874, 0x1.fffffffffffffp-292},430{0x1.ffffffffffffep-871, 0x1.fffffffffffffp-291},431{0x1.ffffffffffffep-868, 0x1.fffffffffffffp-290},432{0x1.ffffffffffffep-865, 0x1.fffffffffffffp-289},433{0x1.ffffffffffffep-862, 0x1.fffffffffffffp-288},434{0x1.ffffffffffffep-859, 0x1.fffffffffffffp-287},435{0x1.ffffffffffffep-856, 0x1.fffffffffffffp-286},436{0x1.ffffffffffffep-853, 0x1.fffffffffffffp-285},437{0x1.ffffffffffffep-850, 0x1.fffffffffffffp-284},438{0x1.ffffffffffffep-847, 0x1.fffffffffffffp-283},439{0x1.ffffffffffffep-844, 0x1.fffffffffffffp-282},440{0x1.ffffffffffffep-841, 0x1.fffffffffffffp-281},441{0x1.ffffffffffffep-838, 0x1.fffffffffffffp-280},442{0x1.ffffffffffffep-835, 0x1.fffffffffffffp-279},443{0x1.ffffffffffffep-1012, 0x1.fffffffffffffp-338},444{0x1.ffffffffffffep-832, 0x1.fffffffffffffp-278},445{0x1.ffffffffffffep-829, 0x1.fffffffffffffp-277},446{0x1.ffffffffffffep-826, 0x1.fffffffffffffp-276},447{0x1.ffffffffffffep-823, 0x1.fffffffffffffp-275},448{0x1.ffffffffffffep-820, 0x1.fffffffffffffp-274},449{0x1.ffffffffffffep-817, 0x1.fffffffffffffp-273},450{0x1.ffffffffffffep-814, 0x1.fffffffffffffp-272},451{0x1.ffffffffffffep-811, 0x1.fffffffffffffp-271},452{0x1.ffffffffffffep-808, 0x1.fffffffffffffp-270},453{0x1.ffffffffffffep-805, 0x1.fffffffffffffp-269},454{0x1.ffffffffffffep-802, 0x1.fffffffffffffp-268},455{0x1.ffffffffffffep-799, 0x1.fffffffffffffp-267},456{0x1.ffffffffffffep-796, 0x1.fffffffffffffp-266},457{0x1.ffffffffffffep-793, 0x1.fffffffffffffp-265},458{0x1.ffffffffffffep-790, 0x1.fffffffffffffp-264},459{0x1.ffffffffffffep-787, 0x1.fffffffffffffp-263},460{0x1.ffffffffffffep-1009, 0x1.fffffffffffffp-337},461{0x1.ffffffffffffep-784, 0x1.fffffffffffffp-262},462{0x1.ffffffffffffep-781, 0x1.fffffffffffffp-261},463{0x1.ffffffffffffep-778, 0x1.fffffffffffffp-260},464{0x1.ffffffffffffep-775, 0x1.fffffffffffffp-259},465{0x1.ffffffffffffep-772, 0x1.fffffffffffffp-258},466{0x1.ffffffffffffep-769, 0x1.fffffffffffffp-257},467{0x0.0000000000ffep-1022, 0x1.ffeaa9c70ca31p-355},468{0x0.0000000000fffp-1022, 0x1.fff5551c6fcd6p-355},469{0x0.0000000ffff86p-1022, 0x1.ffffaeaa9dbf1p-351},470{0x0.0000000ffffffp-1022, 0x1.ffffff5555552p-351},471{0x0.0000ffffffap-1022, 0x1.ffffffcp-347},472{0x0.0000ffffffff8p-1022, 0x1.ffffffffaaaabp-347},473{0x0.0fffffffffffbp-1022, 0x1.fffffffffffcbp-343}474};475476for(double[] testCase: testCases)477failures+=testCubeRootCase(testCase[0], testCase[1]);478479return failures;480}481482// Initialize shared random number generator483private static java.util.Random random = RandomFactory.getRandom();484485/**486* Test StrictMath.cbrt against transliteration port of cbrt.487*/488private static int testAgainstTranslit() {489int failures = 0;490double x;491492// Test just above subnormal threshold...493x = Double.MIN_NORMAL;494failures += testRange(x, Math.ulp(x), 1000);495496// ... and just below subnormal threshold ...497x = Math.nextDown(Double.MIN_NORMAL);498failures += testRange(x, -Math.ulp(x), 1000);499500// ... and near zero.501failures += testRange(0.0, Double.MIN_VALUE, 1000);502503x = Tests.createRandomDouble(random);504505// Make the increment twice the ulp value in case the random506// value is near an exponent threshold. Don't worry about test507// elements overflowing to infinity if the starting value is508// near Double.MAX_VALUE.509failures += testRange(x, 2.0 * Math.ulp(x), 1000);510511return failures;512}513514private static int testRange(double start, double increment, int count) {515int failures = 0;516double x = start;517for (int i = 0; i < count; i++, x += increment) {518failures += testCubeRootCase(x, FdlibmTranslit.Cbrt.compute(x));519}520return failures;521}522}523524525