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