/*
* 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 4347132 8136799
* @ key randomness
* @ library / test / lib
* @ build jdk . test . lib . RandomFactory
* @ build Tests
* @ build FdlibmTranslit
* @ build CubeRootTests
* @ run main CubeRootTests
* @ summary Tests specifically for StrictMath . cbrt
*/
import jdk.test.lib.RandomFactory;
/**
* The tests in . . / Math / CubeRootTests . java test properties that should
* hold for any cube root implementation , including the FDLIBM - based
* one required for StrictMath . cbrt . Therefore , the test cases in
* . . / Math / CubeRootTests . java are run against both the Math and
* StrictMath versions of cube root . The role of this test is to
* verify that the FDLIBM cbrt algorithm is being used by running
* golden file tests on values that may vary from one conforming cube
* root implementation to another .
*/
public class CubeRootTests {
private CubeRootTests(){}
public static void main(String [] argv) {
int failures = 0 ;
failures += testCubeRoot();
failures += testAgainstTranslit();
if (failures > 0 ) {
System.err.println("Testing the cube root incurred "
+ failures + " failures." );
throw new RuntimeException();
}
}
static int testCubeRootCase(double input, double expected) {
int failures=0 ;
double minus_input = -input;
double minus_expected = -expected;
failures+=Tests.test("StrictMath.cbrt(double)" , input,
StrictMath::cbrt, expected);
failures+=Tests.test("StrictMath.cbrt(double)" , minus_input,
StrictMath::cbrt, minus_expected);
return failures;
}
static int testCubeRoot() {
int failures = 0 ;
double [][] testCases = {
{0 x1.ffffffffffffep-766 , 0 x1.fffffffffffffp-256 },
{0 x1.ffffffffffffep-763 , 0 x1.fffffffffffffp-255 },
{0 x1.ffffffffffffep-760 , 0 x1.fffffffffffffp-254 },
{0 x1.ffffffffffffep-757 , 0 x1.fffffffffffffp-253 },
{0 x1.ffffffffffffep-754 , 0 x1.fffffffffffffp-252 },
{0 x1.ffffffffffffep-751 , 0 x1.fffffffffffffp-251 },
{0 x1.ffffffffffffep-748 , 0 x1.fffffffffffffp-250 },
{0 x1.ffffffffffffep-745 , 0 x1.fffffffffffffp-249 },
{0 x1.ffffffffffffep-742 , 0 x1.fffffffffffffp-248 },
{0 x1.ffffffffffffep-739 , 0 x1.fffffffffffffp-247 },
{0 x1.ffffffffffffep-1006 , 0 x1.fffffffffffffp-336 },
{0 x1.ffffffffffffep-736 , 0 x1.fffffffffffffp-246 },
{0 x1.ffffffffffffep-733 , 0 x1.fffffffffffffp-245 },
{0 x1.ffffffffffffep-730 , 0 x1.fffffffffffffp-244 },
{0 x1.ffffffffffffep-727 , 0 x1.fffffffffffffp-243 },
{0 x1.ffffffffffffep-724 , 0 x1.fffffffffffffp-242 },
{0 x1.ffffffffffffep-721 , 0 x1.fffffffffffffp-241 },
{0 x1.ffffffffffffep-718 , 0 x1.fffffffffffffp-240 },
{0 x1.ffffffffffffep-715 , 0 x1.fffffffffffffp-239 },
{0 x1.ffffffffffffep-712 , 0 x1.fffffffffffffp-238 },
{0 x1.ffffffffffffep-709 , 0 x1.fffffffffffffp-237 },
{0 x1.ffffffffffffep-706 , 0 x1.fffffffffffffp-236 },
{0 x1.ffffffffffffep-703 , 0 x1.fffffffffffffp-235 },
{0 x1.ffffffffffffep-700 , 0 x1.fffffffffffffp-234 },
{0 x1.ffffffffffffep-697 , 0 x1.fffffffffffffp-233 },
{0 x1.ffffffffffffep-694 , 0 x1.fffffffffffffp-232 },
{0 x1.ffffffffffffep-691 , 0 x1.fffffffffffffp-231 },
{0 x1.ffffffffffffep-1003 , 0 x1.fffffffffffffp-335 },
{0 x1.ffffffffffffep-688 , 0 x1.fffffffffffffp-230 },
{0 x1.ffffffffffffep-685 , 0 x1.fffffffffffffp-229 },
{0 x1.ffffffffffffep-682 , 0 x1.fffffffffffffp-228 },
{0 x1.ffffffffffffep-679 , 0 x1.fffffffffffffp-227 },
{0 x1.ffffffffffffep-676 , 0 x1.fffffffffffffp-226 },
{0 x1.ffffffffffffep-673 , 0 x1.fffffffffffffp-225 },
{0 x1.ffffffffffffep-670 , 0 x1.fffffffffffffp-224 },
{0 x1.ffffffffffffep-667 , 0 x1.fffffffffffffp-223 },
{0 x1.ffffffffffffep-664 , 0 x1.fffffffffffffp-222 },
{0 x1.ffffffffffffep-661 , 0 x1.fffffffffffffp-221 },
{0 x1.ffffffffffffep-658 , 0 x1.fffffffffffffp-220 },
{0 x1.ffffffffffffep-655 , 0 x1.fffffffffffffp-219 },
{0 x1.ffffffffffffep-652 , 0 x1.fffffffffffffp-218 },
{0 x1.ffffffffffffep-649 , 0 x1.fffffffffffffp-217 },
{0 x1.ffffffffffffep-646 , 0 x1.fffffffffffffp-216 },
{0 x1.ffffffffffffep-643 , 0 x1.fffffffffffffp-215 },
{0 x1.ffffffffffffep-1000 , 0 x1.fffffffffffffp-334 },
{0 x1.ffffffffffffep-640 , 0 x1.fffffffffffffp-214 },
{0 x1.ffffffffffffep-637 , 0 x1.fffffffffffffp-213 },
{0 x1.ffffffffffffep-634 , 0 x1.fffffffffffffp-212 },
{0 x1.ffffffffffffep-631 , 0 x1.fffffffffffffp-211 },
{0 x1.ffffffffffffep-628 , 0 x1.fffffffffffffp-210 },
{0 x1.ffffffffffffep-625 , 0 x1.fffffffffffffp-209 },
{0 x1.ffffffffffffep-622 , 0 x1.fffffffffffffp-208 },
{0 x1.ffffffffffffep-619 , 0 x1.fffffffffffffp-207 },
{0 x1.ffffffffffffep-616 , 0 x1.fffffffffffffp-206 },
{0 x1.ffffffffffffep-613 , 0 x1.fffffffffffffp-205 },
{0 x1.ffffffffffffep-610 , 0 x1.fffffffffffffp-204 },
{0 x1.ffffffffffffep-607 , 0 x1.fffffffffffffp-203 },
{0 x1.ffffffffffffep-604 , 0 x1.fffffffffffffp-202 },
{0 x1.ffffffffffffep-601 , 0 x1.fffffffffffffp-201 },
{0 x1.ffffffffffffep-598 , 0 x1.fffffffffffffp-200 },
{0 x1.ffffffffffffep-595 , 0 x1.fffffffffffffp-199 },
{0 x1.ffffffffffffep-997 , 0 x1.fffffffffffffp-333 },
{0 x1.ffffffffffffep-592 , 0 x1.fffffffffffffp-198 },
{0 x1.ffffffffffffep-589 , 0 x1.fffffffffffffp-197 },
{0 x1.ffffffffffffep-586 , 0 x1.fffffffffffffp-196 },
{0 x1.ffffffffffffep-583 , 0 x1.fffffffffffffp-195 },
{0 x1.ffffffffffffep-580 , 0 x1.fffffffffffffp-194 },
{0 x1.ffffffffffffep-577 , 0 x1.fffffffffffffp-193 },
{0 x1.ffffffffffffep-574 , 0 x1.fffffffffffffp-192 },
{0 x1.ffffffffffffep-571 , 0 x1.fffffffffffffp-191 },
{0 x1.ffffffffffffep-568 , 0 x1.fffffffffffffp-190 },
{0 x1.ffffffffffffep-565 , 0 x1.fffffffffffffp-189 },
{0 x1.ffffffffffffep-562 , 0 x1.fffffffffffffp-188 },
{0 x1.ffffffffffffep-559 , 0 x1.fffffffffffffp-187 },
{0 x1.ffffffffffffep-556 , 0 x1.fffffffffffffp-186 },
{0 x1.ffffffffffffep-553 , 0 x1.fffffffffffffp-185 },
{0 x1.ffffffffffffep-550 , 0 x1.fffffffffffffp-184 },
{0 x1.ffffffffffffep-547 , 0 x1.fffffffffffffp-183 },
{0 x1.ffffffffffffep-994 , 0 x1.fffffffffffffp-332 },
{0 x1.ffffffffffffep-544 , 0 x1.fffffffffffffp-182 },
{0 x1.ffffffffffffep-541 , 0 x1.fffffffffffffp-181 },
{0 x1.ffffffffffffep-538 , 0 x1.fffffffffffffp-180 },
{0 x1.ffffffffffffep-535 , 0 x1.fffffffffffffp-179 },
{0 x1.ffffffffffffep-532 , 0 x1.fffffffffffffp-178 },
{0 x1.ffffffffffffep-529 , 0 x1.fffffffffffffp-177 },
{0 x0.00000000001 fp-1022 , 0 x1.fa9c313858568p-356 },
{0 x1.ffffffffffffep-526 , 0 x1.fffffffffffffp-176 },
{0 x1.ffffffffffffep-523 , 0 x1.fffffffffffffp-175 },
{0 x1.ffffffffffffep-520 , 0 x1.fffffffffffffp-174 },
{0 x1.ffffffffffffep-517 , 0 x1.fffffffffffffp-173 },
{0 x0.00000000001 fdp-1022 , 0 x1.feff7f94ea34dp-356 },
{0 x1.ffffffffffffep-514 , 0 x1.fffffffffffffp-172 },
{0 x0.00000001 fffe7p-1022 , 0 x1.ffff7aaa87f1bp-352 },
{0 x0.00000001 fffffp-1022 , 0 x1.fffffaaaaa9c7p-352 },
{0 x0.00001 ffffff4p-1022 , 0 x1.ffffffcp-348 },
{0 x0.00001 ffffffffp-1022 , 0 x1.ffffffffaaaabp-348 },
{0 x0.01 ffffffffffcp-1022 , 0 x1.ffffffffffeabp-344 },
{0 x1.ffffffffffffep-511 , 0 x1.fffffffffffffp-171 },
{0 x1.ffffffffffffep-508 , 0 x1.fffffffffffffp-170 },
{0 x1.ffffffffffffep-505 , 0 x1.fffffffffffffp-169 },
{0 x1.ffffffffffffep-502 , 0 x1.fffffffffffffp-168 },
{0 x1.ffffffffffffep-499 , 0 x1.fffffffffffffp-167 },
{0 x1.ffffffffffffep-991 , 0 x1.fffffffffffffp-331 },
{0 x1.ffffffffffffep-496 , 0 x1.fffffffffffffp-166 },
{0 x1.ffffffffffffep-493 , 0 x1.fffffffffffffp-165 },
{0 x1.ffffffffffffep-490 , 0 x1.fffffffffffffp-164 },
{0 x1.ffffffffffffep-487 , 0 x1.fffffffffffffp-163 },
{0 x1.ffffffffffffep-484 , 0 x1.fffffffffffffp-162 },
{0 x1.ffffffffffffep-481 , 0 x1.fffffffffffffp-161 },
{0 x1.ffffffffffffep-478 , 0 x1.fffffffffffffp-160 },
{0 x1.ffffffffffffep-475 , 0 x1.fffffffffffffp-159 },
{0 x1.ffffffffffffep-472 , 0 x1.fffffffffffffp-158 },
{0 x1.ffffffffffffep-469 , 0 x1.fffffffffffffp-157 },
{0 x1.ffffffffffffep-466 , 0 x1.fffffffffffffp-156 },
{0 x1.ffffffffffffep-463 , 0 x1.fffffffffffffp-155 },
{0 x1.ffffffffffffep-460 , 0 x1.fffffffffffffp-154 },
{0 x1.ffffffffffffep-457 , 0 x1.fffffffffffffp-153 },
{0 x1.ffffffffffffep-454 , 0 x1.fffffffffffffp-152 },
{0 x1.ffffffffffffep-451 , 0 x1.fffffffffffffp-151 },
{0 x1.ffffffffffffep-988 , 0 x1.fffffffffffffp-330 },
{0 x1.ffffffffffffep-448 , 0 x1.fffffffffffffp-150 },
{0 x1.ffffffffffffep-445 , 0 x1.fffffffffffffp-149 },
{0 x1.ffffffffffffep-442 , 0 x1.fffffffffffffp-148 },
{0 x1.ffffffffffffep-439 , 0 x1.fffffffffffffp-147 },
{0 x1.ffffffffffffep-436 , 0 x1.fffffffffffffp-146 },
{0 x1.ffffffffffffep-433 , 0 x1.fffffffffffffp-145 },
{0 x1.ffffffffffffep-430 , 0 x1.fffffffffffffp-144 },
{0 x1.ffffffffffffep-427 , 0 x1.fffffffffffffp-143 },
{0 x1.ffffffffffffep-424 , 0 x1.fffffffffffffp-142 },
{0 x1.ffffffffffffep-421 , 0 x1.fffffffffffffp-141 },
{0 x1.ffffffffffffep-418 , 0 x1.fffffffffffffp-140 },
{0 x1.ffffffffffffep-415 , 0 x1.fffffffffffffp-139 },
{0 x1.ffffffffffffep-412 , 0 x1.fffffffffffffp-138 },
{0 x1.ffffffffffffep-409 , 0 x1.fffffffffffffp-137 },
{0 x1.ffffffffffffep-406 , 0 x1.fffffffffffffp-136 },
{0 x1.ffffffffffffep-403 , 0 x1.fffffffffffffp-135 },
{0 x1.ffffffffffffep-985 , 0 x1.fffffffffffffp-329 },
{0 x1.ffffffffffffep-400 , 0 x1.fffffffffffffp-134 },
{0 x1.ffffffffffffep-397 , 0 x1.fffffffffffffp-133 },
{0 x1.ffffffffffffep-394 , 0 x1.fffffffffffffp-132 },
{0 x1.ffffffffffffep-391 , 0 x1.fffffffffffffp-131 },
{0 x1.ffffffffffffep-388 , 0 x1.fffffffffffffp-130 },
{0 x1.ffffffffffffep-385 , 0 x1.fffffffffffffp-129 },
{0 x1.ffffffffffffep-382 , 0 x1.fffffffffffffp-128 },
{0 x1.ffffffffffffep-379 , 0 x1.fffffffffffffp-127 },
{0 x1.ffffffffffffep-376 , 0 x1.fffffffffffffp-126 },
{0 x1.ffffffffffffep-373 , 0 x1.fffffffffffffp-125 },
{0 x1.ffffffffffffep-370 , 0 x1.fffffffffffffp-124 },
{0 x1.ffffffffffffep-367 , 0 x1.fffffffffffffp-123 },
{0 x1.ffffffffffffep-364 , 0 x1.fffffffffffffp-122 },
{0 x1.ffffffffffffep-361 , 0 x1.fffffffffffffp-121 },
{0 x1.ffffffffffffep-358 , 0 x1.fffffffffffffp-120 },
{0 x1.ffffffffffffep-355 , 0 x1.fffffffffffffp-119 },
{0 x1.ffffffffffffep-982 , 0 x1.fffffffffffffp-328 },
{0 x1.ffffffffffffep-352 , 0 x1.fffffffffffffp-118 },
{0 x1.ffffffffffffep-349 , 0 x1.fffffffffffffp-117 },
{0 x1.ffffffffffffep-346 , 0 x1.fffffffffffffp-116 },
{0 x1.ffffffffffffep-343 , 0 x1.fffffffffffffp-115 },
{0 x1.ffffffffffffep-340 , 0 x1.fffffffffffffp-114 },
{0 x1.ffffffffffffep-337 , 0 x1.fffffffffffffp-113 },
{0 x1.ffffffffffffep-334 , 0 x1.fffffffffffffp-112 },
{0 x1.ffffffffffffep-331 , 0 x1.fffffffffffffp-111 },
{0 x1.ffffffffffffep-328 , 0 x1.fffffffffffffp-110 },
{0 x1.ffffffffffffep-325 , 0 x1.fffffffffffffp-109 },
{0 x1.ffffffffffffep-322 , 0 x1.fffffffffffffp-108 },
{0 x1.ffffffffffffep-319 , 0 x1.fffffffffffffp-107 },
{0 x1.ffffffffffffep-316 , 0 x1.fffffffffffffp-106 },
{0 x1.ffffffffffffep-313 , 0 x1.fffffffffffffp-105 },
{0 x1.ffffffffffffep-310 , 0 x1.fffffffffffffp-104 },
{0 x1.ffffffffffffep-307 , 0 x1.fffffffffffffp-103 },
{0 x1.ffffffffffffep-979 , 0 x1.fffffffffffffp-327 },
{0 x1.ffffffffffffep-304 , 0 x1.fffffffffffffp-102 },
{0 x1.ffffffffffffep-301 , 0 x1.fffffffffffffp-101 },
{0 x1.ffffffffffffep-298 , 0 x1.fffffffffffffp-100 },
{0 x1.ffffffffffffep-295 , 0 x1.fffffffffffffp-99 },
{0 x1.ffffffffffffep-292 , 0 x1.fffffffffffffp-98 },
{0 x1.ffffffffffffep-289 , 0 x1.fffffffffffffp-97 },
{0 x1.ffffffffffffep-286 , 0 x1.fffffffffffffp-96 },
{0 x1.ffffffffffffep-283 , 0 x1.fffffffffffffp-95 },
{0 x1.ffffffffffffep-280 , 0 x1.fffffffffffffp-94 },
{0 x1.ffffffffffffep-277 , 0 x1.fffffffffffffp-93 },
{0 x1.ffffffffffffep-274 , 0 x1.fffffffffffffp-92 },
{0 x1.ffffffffffffep-271 , 0 x1.fffffffffffffp-91 },
{0 x1.ffffffffffffep-268 , 0 x1.fffffffffffffp-90 },
{0 x1.ffffffffffffep-265 , 0 x1.fffffffffffffp-89 },
{0 x1.ffffffffffffep-262 , 0 x1.fffffffffffffp-88 },
{0 x1.ffffffffffffep-259 , 0 x1.fffffffffffffp-87 },
{0 x1.ffffffffffffep-1021 , 0 x1.fffffffffffffp-341 },
{0 x1.ffffffffffffep-976 , 0 x1.fffffffffffffp-326 },
{0 x1.ffffffffffffep-256 , 0 x1.fffffffffffffp-86 },
{0 x1.ffffffffffffep-253 , 0 x1.fffffffffffffp-85 },
{0 x1.ffffffffffffep-250 , 0 x1.fffffffffffffp-84 },
{0 x1.ffffffffffffep-247 , 0 x1.fffffffffffffp-83 },
{0 x1.ffffffffffffep-244 , 0 x1.fffffffffffffp-82 },
{0 x1.ffffffffffffep-241 , 0 x1.fffffffffffffp-81 },
{0 x1.ffffffffffffep-238 , 0 x1.fffffffffffffp-80 },
{0 x1.ffffffffffffep-235 , 0 x1.fffffffffffffp-79 },
{0 x1.ffffffffffffep-232 , 0 x1.fffffffffffffp-78 },
{0 x1.ffffffffffffep-229 , 0 x1.fffffffffffffp-77 },
{0 x1.ffffffffffffep-226 , 0 x1.fffffffffffffp-76 },
{0 x1.ffffffffffffep-223 , 0 x1.fffffffffffffp-75 },
{0 x1.ffffffffffffep-220 , 0 x1.fffffffffffffp-74 },
{0 x1.ffffffffffffep-217 , 0 x1.fffffffffffffp-73 },
{0 x1.ffffffffffffep-214 , 0 x1.fffffffffffffp-72 },
{0 x1.ffffffffffffep-211 , 0 x1.fffffffffffffp-71 },
{0 x1.ffffffffffffep-973 , 0 x1.fffffffffffffp-325 },
{0 x1.ffffffffffffep-208 , 0 x1.fffffffffffffp-70 },
{0 x1.ffffffffffffep-205 , 0 x1.fffffffffffffp-69 },
{0 x1.ffffffffffffep-202 , 0 x1.fffffffffffffp-68 },
{0 x1.ffffffffffffep-199 , 0 x1.fffffffffffffp-67 },
{0 x1.ffffffffffffep-196 , 0 x1.fffffffffffffp-66 },
{0 x1.ffffffffffffep-193 , 0 x1.fffffffffffffp-65 },
{0 x1.ffffffffffffep-190 , 0 x1.fffffffffffffp-64 },
{0 x1.ffffffffffffep-187 , 0 x1.fffffffffffffp-63 },
{0 x1.ffffffffffffep-184 , 0 x1.fffffffffffffp-62 },
{0 x1.ffffffffffffep-181 , 0 x1.fffffffffffffp-61 },
{0 x1.ffffffffffffep-178 , 0 x1.fffffffffffffp-60 },
{0 x1.ffffffffffffep-175 , 0 x1.fffffffffffffp-59 },
{0 x1.ffffffffffffep-172 , 0 x1.fffffffffffffp-58 },
{0 x1.ffffffffffffep-169 , 0 x1.fffffffffffffp-57 },
{0 x1.ffffffffffffep-166 , 0 x1.fffffffffffffp-56 },
{0 x1.ffffffffffffep-163 , 0 x1.fffffffffffffp-55 },
{0 x1.ffffffffffffep-970 , 0 x1.fffffffffffffp-324 },
{0 x1.ffffffffffffep-160 , 0 x1.fffffffffffffp-54 },
{0 x1.ffffffffffffep-157 , 0 x1.fffffffffffffp-53 },
{0 x1.ffffffffffffep-154 , 0 x1.fffffffffffffp-52 },
{0 x1.ffffffffffffep-151 , 0 x1.fffffffffffffp-51 },
{0 x1.ffffffffffffep-148 , 0 x1.fffffffffffffp-50 },
{0 x1.ffffffffffffep-145 , 0 x1.fffffffffffffp-49 },
{0 x1.ffffffffffffep-142 , 0 x1.fffffffffffffp-48 },
{0 x1.ffffffffffffep-139 , 0 x1.fffffffffffffp-47 },
{0 x1.ffffffffffffep-136 , 0 x1.fffffffffffffp-46 },
{0 x1.ffffffffffffep-133 , 0 x1.fffffffffffffp-45 },
{0 x1.ffffffffffffep-130 , 0 x1.fffffffffffffp-44 },
{0 x1.ffffffffffffep-127 , 0 x1.fffffffffffffp-43 },
{0 x1.ffffffffffffep-124 , 0 x1.fffffffffffffp-42 },
{0 x1.ffffffffffffep-121 , 0 x1.fffffffffffffp-41 },
{0 x1.ffffffffffffep-118 , 0 x1.fffffffffffffp-40 },
{0 x1.ffffffffffffep-115 , 0 x1.fffffffffffffp-39 },
{0 x1.ffffffffffffep-967 , 0 x1.fffffffffffffp-323 },
{0 x1.ffffffffffffep-112 , 0 x1.fffffffffffffp-38 },
{0 x1.ffffffffffffep-109 , 0 x1.fffffffffffffp-37 },
{0 x1.ffffffffffffep-106 , 0 x1.fffffffffffffp-36 },
{0 x1.ffffffffffffep-103 , 0 x1.fffffffffffffp-35 },
{0 x1.ffffffffffffep-100 , 0 x1.fffffffffffffp-34 },
{0 x1.ffffffffffffep-97 , 0 x1.fffffffffffffp-33 },
{0 x1.ffffffffffffep-94 , 0 x1.fffffffffffffp-32 },
{0 x1.ffffffffffffep-91 , 0 x1.fffffffffffffp-31 },
{0 x1.ffffffffffffep-88 , 0 x1.fffffffffffffp-30 },
{0 x1.ffffffffffffep-85 , 0 x1.fffffffffffffp-29 },
{0 x1.ffffffffffffep-82 , 0 x1.fffffffffffffp-28 },
{0 x1.ffffffffffffep-79 , 0 x1.fffffffffffffp-27 },
{0 x1.ffffffffffffep-76 , 0 x1.fffffffffffffp-26 },
{0 x1.ffffffffffffep-73 , 0 x1.fffffffffffffp-25 },
{0 x1.ffffffffffffep-70 , 0 x1.fffffffffffffp-24 },
{0 x1.ffffffffffffep-67 , 0 x1.fffffffffffffp-23 },
{0 x1.ffffffffffffep-964 , 0 x1.fffffffffffffp-322 },
{0 x1.ffffffffffffep-64 , 0 x1.fffffffffffffp-22 },
{0 x1.ffffffffffffep-61 , 0 x1.fffffffffffffp-21 },
{0 x1.ffffffffffffep-58 , 0 x1.fffffffffffffp-20 },
{0 x1.ffffffffffffep-55 , 0 x1.fffffffffffffp-19 },
{0 x1.ffffffffffffep-52 , 0 x1.fffffffffffffp-18 },
{0 x1.ffffffffffffep-49 , 0 x1.fffffffffffffp-17 },
{0 x1.ffffffffffffep-46 , 0 x1.fffffffffffffp-16 },
{0 x1.ffffffffffffep-43 , 0 x1.fffffffffffffp-15 },
{0 x1.ffffffffffffep-40 , 0 x1.fffffffffffffp-14 },
{0 x1.ffffffffffffep-37 , 0 x1.fffffffffffffp-13 },
{0 x1.ffffffffffffep-34 , 0 x1.fffffffffffffp-12 },
{0 x1.ffffffffffffep-31 , 0 x1.fffffffffffffp-11 },
{0 x1.ffffffffffffep-28 , 0 x1.fffffffffffffp-10 },
{0 x1.ffffffffffffep-25 , 0 x1.fffffffffffffp-9 },
{0 x1.ffffffffffffep-22 , 0 x1.fffffffffffffp-8 },
{0 x0.000000000003 ep-1022 , 0 x1.fa9c313858568p-357 },
{0 x1.ffffffffffffep-19 , 0 x1.fffffffffffffp-7 },
{0 x1.ffffffffffffep-961 , 0 x1.fffffffffffffp-321 },
{0 x1.ffffffffffffep-16 , 0 x1.fffffffffffffp-6 },
{0 x1.ffffffffffffep-13 , 0 x1.fffffffffffffp-5 },
{0 x1.ffffffffffffep-10 , 0 x1.fffffffffffffp-4 },
{0 x1.ffffffffffffep-7 , 0 x1.fffffffffffffp-3 },
{0 x0.000000000003 fp-1022 , 0 x1.fd51bf2069fe6p-357 },
{0 x1.ffffffffffffep-4 , 0 x1.fffffffffffffp-2 },
{0 x1.ffffffffffffep-1 , 0 x1.fffffffffffffp-1 },
{0 x0.000000003 fffcp-1022 , 0 x1.ffff55551c71bp-353 },
{0 x0.000003 fffffe8p-1022 , 0 x1.ffffffcp-349 },
{0 x0.000003 ffffffcp-1022 , 0 x1.fffffff555555p-349 },
{0 x0.003 fffffffff9p-1022 , 0 x1.fffffffffed55p-345 },
{0 x1.ffffffffffffep2, 0 x1.fffffffffffffp0},
{0 x1.bp4, 0 x1.8 p1},
{0 x1.ffffffffffffep5, 0 x1.fffffffffffffp1},
{0 x1.f3ffffffffff4p6, 0 x1.3 fffffffffffep2},
{0 x1.f3ffffffffffcp6, 0 x1.3 ffffffffffffp2},
{0 x1.bp7, 0 x1.8 p2},
{0 x1.56 ffffffffffep8, 0 x1.bffffffffffffp2},
{0 x1.ffffffffffffep8, 0 x1.fffffffffffffp2},
{0 x1.6 c8p9, 0 x1.2 p3},
{0 x1.f3ffffffffff4p9, 0 x1.3 fffffffffffep3},
{0 x1.f3ffffffffffcp9, 0 x1.3 ffffffffffffp3},
{0 x1.4 cbfffffffffcp10, 0 x1.5 fffffffffffep3},
{0 x1.4 cbfffffffffep10, 0 x1.5 ffffffffffffp3},
{0 x1.bp10, 0 x1.8 p3},
{0 x1.129 ffffffffa4p11, 0 x1.9 ffffffffffd1p3},
{0 x1.129 fffffffffep11, 0 x1.9 ffffffffffffp3},
{0 x1.56 ffffffffffep11, 0 x1.bffffffffffffp3},
{0 x1.a5ep11, 0 x1.ep3},
{0 x1.ffffffffffffep11, 0 x1.fffffffffffffp3},
{0 x1.330 fffffffc1ep12, 0 x1.0 fffffffffedbp4},
{0 x1.331 p12, 0 x1.1 p4},
{0 x1.6 c8p12, 0 x1.2 p4},
{0 x1.acafffffffffap12, 0 x1.2 ffffffffffffp4},
{0 x1.acafffffffffep12, 0 x1.2 ffffffffffffp4},
{0 x1.ffffffffffffep-958 , 0 x1.fffffffffffffp-320 },
{0 x1.ffffffffffffep-955 , 0 x1.fffffffffffffp-319 },
{0 x1.ffffffffffffep-952 , 0 x1.fffffffffffffp-318 },
{0 x1.ffffffffffffep-949 , 0 x1.fffffffffffffp-317 },
{0 x1.ffffffffffffep-946 , 0 x1.fffffffffffffp-316 },
{0 x1.ffffffffffffep-943 , 0 x1.fffffffffffffp-315 },
{0 x1.ffffffffffffep-940 , 0 x1.fffffffffffffp-314 },
{0 x1.ffffffffffffep-937 , 0 x1.fffffffffffffp-313 },
{0 x1.ffffffffffffep-934 , 0 x1.fffffffffffffp-312 },
{0 x1.ffffffffffffep-931 , 0 x1.fffffffffffffp-311 },
{0 x1.ffffffffffffep-1018 , 0 x1.fffffffffffffp-340 },
{0 x1.ffffffffffffep-928 , 0 x1.fffffffffffffp-310 },
{0 x1.ffffffffffffep-925 , 0 x1.fffffffffffffp-309 },
{0 x1.ffffffffffffep-922 , 0 x1.fffffffffffffp-308 },
{0 x1.ffffffffffffep-919 , 0 x1.fffffffffffffp-307 },
{0 x1.ffffffffffffep-916 , 0 x1.fffffffffffffp-306 },
{0 x1.ffffffffffffep-913 , 0 x1.fffffffffffffp-305 },
{0 x1.ffffffffffffep-910 , 0 x1.fffffffffffffp-304 },
{0 x1.ffffffffffffep-907 , 0 x1.fffffffffffffp-303 },
{0 x1.ffffffffffffep-904 , 0 x1.fffffffffffffp-302 },
{0 x0.0000000000007 p-1022 , 0 x1.e9b5dba58189ep-358 },
{0 x1.ffffffffffffep-901 , 0 x1.fffffffffffffp-301 },
{0 x1.ffffffffffffep-898 , 0 x1.fffffffffffffp-300 },
{0 x0.0000000007 ffp-1022 , 0 x1.ffeaa9c70ca31p-354 },
{0 x0.0000000007 ffep-1022 , 0 x1.fffd5551c7149p-354 },
{0 x0.0000007 fffffdp-1022 , 0 x1.ffffffcp-350 },
{0 x0.0000007 fffffep-1022 , 0 x1.ffffffd555555p-350 },
{0 x0.0007 ffffffffap-1022 , 0 x1.fffffffff8p-346 },
{0 x0.7 ffffffffffffp-1022 , 0 x1.fffffffffffffp-342 },
{0 x1.ffffffffffffep-895 , 0 x1.fffffffffffffp-299 },
{0 x1.ffffffffffffep-892 , 0 x1.fffffffffffffp-298 },
{0 x1.ffffffffffffep-889 , 0 x1.fffffffffffffp-297 },
{0 x1.ffffffffffffep-886 , 0 x1.fffffffffffffp-296 },
{0 x1.ffffffffffffep-883 , 0 x1.fffffffffffffp-295 },
{0 x1.ffffffffffffep-1015 , 0 x1.fffffffffffffp-339 },
{0 x1.ffffffffffffep-880 , 0 x1.fffffffffffffp-294 },
{0 x1.ffffffffffffep-877 , 0 x1.fffffffffffffp-293 },
{0 x1.ffffffffffffep-874 , 0 x1.fffffffffffffp-292 },
{0 x1.ffffffffffffep-871 , 0 x1.fffffffffffffp-291 },
{0 x1.ffffffffffffep-868 , 0 x1.fffffffffffffp-290 },
{0 x1.ffffffffffffep-865 , 0 x1.fffffffffffffp-289 },
{0 x1.ffffffffffffep-862 , 0 x1.fffffffffffffp-288 },
{0 x1.ffffffffffffep-859 , 0 x1.fffffffffffffp-287 },
{0 x1.ffffffffffffep-856 , 0 x1.fffffffffffffp-286 },
{0 x1.ffffffffffffep-853 , 0 x1.fffffffffffffp-285 },
{0 x1.ffffffffffffep-850 , 0 x1.fffffffffffffp-284 },
{0 x1.ffffffffffffep-847 , 0 x1.fffffffffffffp-283 },
{0 x1.ffffffffffffep-844 , 0 x1.fffffffffffffp-282 },
{0 x1.ffffffffffffep-841 , 0 x1.fffffffffffffp-281 },
{0 x1.ffffffffffffep-838 , 0 x1.fffffffffffffp-280 },
{0 x1.ffffffffffffep-835 , 0 x1.fffffffffffffp-279 },
{0 x1.ffffffffffffep-1012 , 0 x1.fffffffffffffp-338 },
{0 x1.ffffffffffffep-832 , 0 x1.fffffffffffffp-278 },
{0 x1.ffffffffffffep-829 , 0 x1.fffffffffffffp-277 },
{0 x1.ffffffffffffep-826 , 0 x1.fffffffffffffp-276 },
{0 x1.ffffffffffffep-823 , 0 x1.fffffffffffffp-275 },
{0 x1.ffffffffffffep-820 , 0 x1.fffffffffffffp-274 },
{0 x1.ffffffffffffep-817 , 0 x1.fffffffffffffp-273 },
{0 x1.ffffffffffffep-814 , 0 x1.fffffffffffffp-272 },
{0 x1.ffffffffffffep-811 , 0 x1.fffffffffffffp-271 },
{0 x1.ffffffffffffep-808 , 0 x1.fffffffffffffp-270 },
{0 x1.ffffffffffffep-805 , 0 x1.fffffffffffffp-269 },
{0 x1.ffffffffffffep-802 , 0 x1.fffffffffffffp-268 },
{0 x1.ffffffffffffep-799 , 0 x1.fffffffffffffp-267 },
{0 x1.ffffffffffffep-796 , 0 x1.fffffffffffffp-266 },
{0 x1.ffffffffffffep-793 , 0 x1.fffffffffffffp-265 },
{0 x1.ffffffffffffep-790 , 0 x1.fffffffffffffp-264 },
{0 x1.ffffffffffffep-787 , 0 x1.fffffffffffffp-263 },
{0 x1.ffffffffffffep-1009 , 0 x1.fffffffffffffp-337 },
{0 x1.ffffffffffffep-784 , 0 x1.fffffffffffffp-262 },
{0 x1.ffffffffffffep-781 , 0 x1.fffffffffffffp-261 },
{0 x1.ffffffffffffep-778 , 0 x1.fffffffffffffp-260 },
{0 x1.ffffffffffffep-775 , 0 x1.fffffffffffffp-259 },
{0 x1.ffffffffffffep-772 , 0 x1.fffffffffffffp-258 },
{0 x1.ffffffffffffep-769 , 0 x1.fffffffffffffp-257 },
{0 x0.0000000000 ffep-1022 , 0 x1.ffeaa9c70ca31p-355 },
{0 x0.0000000000 fffp-1022 , 0 x1.fff5551c6fcd6p-355 },
{0 x0.0000000 ffff86p-1022 , 0 x1.ffffaeaa9dbf1p-351 },
{0 x0.0000000 ffffffp-1022 , 0 x1.ffffff5555552p-351 },
{0 x0.0000 ffffffap-1022 , 0 x1.ffffffcp-347 },
{0 x0.0000 ffffffff8p-1022 , 0 x1.ffffffffaaaabp-347 },
{0 x0.0 fffffffffffbp-1022 , 0 x1.fffffffffffcbp-343 }
};
for (double [] testCase: testCases)
failures+=testCubeRootCase(testCase[0 ], testCase[1 ]);
return failures;
}
// Initialize shared random number generator
private static java.util.Random random = RandomFactory.getRandom();
/**
* Test StrictMath . cbrt against transliteration port of cbrt .
*/
private static int testAgainstTranslit() {
int failures = 0 ;
double x;
// Test just above subnormal threshold...
x = Double .MIN_NORMAL;
failures += testRange(x, Math.ulp(x), 1000 );
// ... and just below subnormal threshold ...
x = Math.nextDown(Double .MIN_NORMAL);
failures += testRange(x, -Math.ulp(x), 1000 );
// ... and near zero.
failures += testRange(0 .0 , Double .MIN_VALUE, 1000 );
x = Tests.createRandomDouble(random);
// Make the increment twice the ulp value in case the random
// value is near an exponent threshold. Don't worry about test
// elements overflowing to infinity if the starting value is
// near Double.MAX_VALUE.
failures += testRange(x, 2 .0 * Math.ulp(x), 1000 );
return failures;
}
private static int testRange(double start, double increment, int count) {
int failures = 0 ;
double x = start;
for (int i = 0 ; i < count; i++, x += increment) {
failures += testCubeRootCase(x, FdlibmTranslit.Cbrt.compute(x));
}
return failures;
}
}
Messung V0.5 in Prozent C=95 H=90 G=92
¤ Dauer der Verarbeitung: 0.10 Sekunden
¤
*© Formatika GbR, Deutschland