/*
* 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
* @summary Tests for StrictMath.log1p
*/
/**
* The tests in ../Math/Log1pTests.java test properties that should
* hold for any log1p implementation, including the FDLIBM-based one
* required for StrictMath.log1p. Therefore, the test cases in
* ../Math/Log1pTests.java are run against both the Math and
* StrictMath versions of log1p. The role of this test is to verify
* that the FDLIBM log1p algorithm is being used by running golden
* file tests on values that may vary from one conforming log1p
* implementation to another.
*/
public class Log1pTests {
private Log1pTests(){}
static int testLog1pCase(double input, double expected) {
return Tests.test("StrictMath.log1p(double)" , input,
StrictMath::log1p, expected);
}
static int testLog1p() {
int failures = 0 ;
double [][] testCases = {
{0 x1.fffffffffffffp-54 , 0 x1.fffffffffffffp-54 },
{0 x1.fffffffffcc48p-15 , 0 x1.fffc000aa74f3p-15 },
{0 x1.ffffffffff224p-14 , 0 x1.fff8002aa8ccfp-14 },
{0 x1.ffffffffff90cp-13 , 0 x1.fff000aaa23bdp-13 },
{0 x1.fffffffffffcep-4 , 0 x1.e27076e2af2bap-4 },
{0 x1.fffffffffffffp-2 , 0 x1.9 f323ecbf984bp-2 },
{0 x1.ffffffffffffdp-1 , 0 x1.62 e42fefa39eep-1 },
{0 x1.0 p1, 0 x1.193 ea7aad030ap0},
{0 x1.ffffffffffffbp1, 0 x1.9 c041f7ed8d31p0},
{0 x1.fffffffffffffp2, 0 x1.193 ea7aad030ap1},
{0 x1.fffffffffffe1p3, 0 x1.6 aa6bc1fa7f73p1},
{0 x1.fffffffffffe1p4, 0 x1.bf8d8f4d5b8cap1},
{0 x1.ffffffffffff1p5, 0 x1.0 b29293942974p2},
{0 x1.fffffffffff41p6, 0 x1.37072 a9b5b6b4p2},
{0 x1.ffffffffffe65p7, 0 x1.63241004 e8fdep2},
{0 x1.ffffffffffca1p8, 0 x1.8 f60adf041b73p2},
{0 x1.fffffffffffffp9, 0 x1.bbad39ebe1ccp2},
{0 x1.fffffffffffffp10, 0 x1.e801c1698ba43p2},
{0 x1.ffffffffff2dep11, 0 x1.0 a2d23e3bb54bp3},
{0 x1.ffffffffff18dp12, 0 x1.205 a66eeb4f81p3},
{0 x1.ffffffffffff9p13, 0 x1.368829 f0af2dcp3},
{0 x1.fffffffffbc1ep14, 0 x1.4 cb62cf069217p3},
{0 x1.ffffffffffff5p16, 0 x1.791282 ee99d8ep3},
{0 x1.fffffffffba46p17, 0 x1.8 f40bded96cd1p3},
{0 x1.ffffffffffff7p18, 0 x1.a56efcec920cbp3},
{0 x1.ffffffffffff7p19, 0 x1.bb9d3deb8c76ap3},
{0 x1.ffffffffffff9p20, 0 x1.d1cb7fea86bcap3},
{0 x1.ffffffffffff7p24, 0 x1.1542457 b37d42p4},
{0 x1.fffffffffffe7p29, 0 x1.4 cb5ecf0e964fp4},
{0 x1.ffffffffffff9p30, 0 x1.57 cd0e704682p4},
{0 x1.ffffffffffffbp34, 0 x1.8429946 e1cf5dp4},
{0 x1.fffffffffffedp35, 0 x1.8 f40b5ed9912dp4},
{0 x1.fffffffffffefp39, 0 x1.bb9d3beb8c96ap4},
{0 x1.fffffffffffe1p40, 0 x1.c6b45d6b09abap4},
{0 x1.fffffffffffe3p44, 0 x1.f310e368fe17fp4},
{0 x1.ffffffffffff5p45, 0 x1.fe2804e87b34cp4},
{0 x1.fffffffffffc5p66, 0 x1.7386 e22edf4a5p5},
{0 x1.fffffffffff98p90, 0 x1.f89c7428bca5fp5},
{0 x1.a36e2eb1c317dp-14 , 0 x1.a368d0657ee51p-14 },
{0 x1.0624 dd2f18d5cp-10 , 0 x1.060354 f8c2226p-10 },
{0 x1.ffffffffffffdp-1 , 0 x1.62 e42fefa39eep-1 },
{0 x1.8 ffffffffffccp6, 0 x1.275 e2271bba28p2},
{0 x1.f3fffffffff1p9, 0 x1.ba2909ce4f846p2},
{0 x1.387 ffffffffa8p13, 0 x1.26 bbed6fbd838p3},
{0 x1.869 ffffffffe4p16, 0 x1.7069 f7a2d94f4p3},
{0 x1.e847fffffff3ep19, 0 x1.ba18abb1dedbcp3},
{0 x1.312 cfffffff23p23, 0 x1.01 e3b85ec299p4},
{0 x1.7 d783ffffff17p26, 0 x1.26 bb1bbe0482ap4},
{0 x1.dcd64ffffffcep29, 0 x1.4 b927f3304b3ap4},
{0 x1.2 a05f1ffffa3p33, 0 x1.7069 e2aa317fep4},
{0 x1.74876 e7ffffbep36, 0 x1.9541462195 ffap4},
{0 x1.d1a94a1fffddp39, 0 x1.ba18a999000a6p4},
{0 x1.2309 ce53ffed2p43, 0 x1.def00d106aa4ep4},
{0 x1.6 bcc41e8ffe73p46, 0 x1.01 e3b843eaa6cp5},
{0 x1.c6bf52633fe7dp49, 0 x1.144 f69ff9ffbep5},
{0 x1.1 c37937e07fffp53, 0 x1.26 bb1bbb55515p5},
{0 x1.6345785 d89f12p56, 0 x1.3926 cd770aa62p5},
{0 x1.bc16d674ec76ap59, 0 x1.4 b927f32bffb6p5},
{0 x1.158 e460913c51p63, 0 x1.5 dfe30ee75504p5},
{0 x1.5 af1d78b58badp66, 0 x1.7069 e2aa2aa58p5},
{0 x1.b1ae4d6e2ecd4p69, 0 x1.82 d59465dffap5},
{0 x1.0 f0cf064dd066p73, 0 x1.95414621954 d6p5},
{0 x1.52 d02c7e14a9p76, 0 x1.a7acf7dd4aa4cp5},
{0 x1.a784379d99c19p79, 0 x1.ba18a998fff98p5},
{0 x1.08 b2a2c27fb5p83, 0 x1.cc845b54b54bap5},
{0 x1.4 adf4b7320322p86, 0 x1.def00d106aa42p5},
{0 x1.9 d971e4fe7b91p89, 0 x1.f15bbecc1ff6ap5},
{0 x1.027 e72f1f0ea3p93, 0 x1.01 e3b843eaa63p6},
{0 x1.431 e0fae6d44bp96, 0 x1.0 b199121c5512p6},
{0 x1.93 e5939a086bcp99, 0 x1.144 f69ff9ffb4p6},
{0 x1.f8def8808ac86p102, 0 x1.1 d8542dd7aa65p6},
{0 x1.3 b8b5b5056dc7p106, 0 x1.26 bb1bbb55514p6},
{0 x1.8 a6e32246c76cp109, 0 x1.2 ff0f4992ffb8p6},
{0 x1.ed09bead86a07p112, 0 x1.3926 cd770aa41p6},
{0 x1.3426172 c74d33p116, 0 x1.425 ca654e550ep6},
{0 x1.812 f9cf791f1ep119, 0 x1.4 b927f32bffb4p6},
{0 x1.e17b8435758f2p122, 0 x1.54 c858109aa3ep6},
{0 x1.2 ced32a169cfap126, 0 x1.5 dfe30ee754fap6},
{0 x1.78287 f49c497cp129, 0 x1.673409 cc4ffbp6},
{0 x1.d6329f1c3492ep132, 0 x1.7069 e2aa2aa3p6},
{0 x1.25 dfa371a14b8p136, 0 x1.799 fbb88054f2p6},
{0 x1.6 f578c4e09f0ap139, 0 x1.82 d59465dffa8p6},
{0 x1.cb2d6f618c4b4p142, 0 x1.8 c0b6d43baa4cp6},
{0 x1.1 efc659cf77abp146, 0 x1.95414621954 eap6},
{0 x1.66 bb7f0435c5bp149, 0 x1.9 e771eff6ffa6p6},
{0 x1.c06a5ec5428a4p152, 0 x1.a7acf7dd4aa36p6},
{0 x1.18427 b3b49fc9p156, 0 x1.b0e2d0bb254f6p6},
{0 x1.5 e531a0a1c729p159, 0 x1.ba18a998fff9cp6},
{0 x1.b5e7e08ca3686p162, 0 x1.c34e8276daa4p6},
{0 x1.11 b0ec57e6492p166, 0 x1.cc845b54b54f2p6},
{0 x1.561 d276ddfd7dp169, 0 x1.d5ba34328ff9ap6},
{0 x1.aba471495757bp172, 0 x1.def00d106aa3p6},
{0 x1.0 b46c6cdd6a8ep176, 0 x1.e825e5ee454ddp6},
{0 x1.4 e1878814c5f4p179, 0 x1.f15bbecc1ff88p6},
{0 x1.a19e96a19f65ap182, 0 x1.fa9197a9faa2ep6},
{0 x1.05031 e2503cfcp186, 0 x1.01 e3b843eaa71p7},
{0 x1.4643 e5ae441d2p189, 0 x1.067 ea4b2d7fb6p7},
{0 x1.97 d4df19d5c5dp192, 0 x1.0 b199121c5516p7},
{0 x1.fdca16e04ae24p195, 0 x1.0 fb47d90b2a65p7},
{0 x1.3 e9e4e4c2f2dap199, 0 x1.144 f69ff9ffc4p7},
{0 x1.8 e45e1df3ac31p202, 0 x1.18 ea566e8d514p7},
{0 x1.f1d75a5709306p205, 0 x1.1 d8542dd7aa63p7},
{0 x1.372698766608 cp209, 0 x1.22202 f4c67fcp7},
{0 x1.84 f03e93fef5p212, 0 x1.26 bb1bbb55508p7},
{0 x1.e62c4e38fdba1p215, 0 x1.2 b56082a42a4bp7},
{0 x1.2 fdbb0e39f6b8p219, 0 x1.2 ff0f4992ffb6p7},
{0 x1.7 bd29d1c875a2p222, 0 x1.348 be1081d50cp7},
{0 x1.dac74463a76e9p225, 0 x1.3926 cd770aa42p7},
{0 x1.28 bc8abe48f57p229, 0 x1.3 dc1b9e5f7fap7},
{0 x1.72 ebad6ddc67ep232, 0 x1.425 ca654e550ep7},
{0 x1.cfa698c952a3ap235, 0 x1.46 f792c3d2a53p7},
{0 x1.21 c81f7dd42b1p239, 0 x1.4 b927f32bffb6p7},
{0 x1.6 a3a275d4926bp242, 0 x1.502 d6ba1ad50ap7},
{0 x1.c4c8b134970ddp245, 0 x1.54 c858109aa0ep7},
{0 x1.61 bcca711985dp252, 0 x1.5 dfe30ee75508p7},
{0 x1.ba2bfd0d5fe2ap255, 0 x1.62991 d5d62a5cp7},
{0 x1.59725 db2728b7p262, 0 x1.6 bcef63b3d4fcp7},
{0 x1.afcef51f0fa33p265, 0 x1.7069 e2aa2aa5ap7},
{0 x1.0 de1593368f8cp269, 0 x1.7504 cf1917f95p7},
{0 x1.5159 af804425ep272, 0 x1.799 fbb88055p7},
{0 x1.a5b01b605409p275, 0 x1.7 e3aa7f6f2a3ep7},
{0 x1.078 e111c34e5bp279, 0 x1.82 d59465dff9fp7},
{0 x1.497195634225 fp282, 0 x1.877080 d4cd4f4p7},
{0 x1.9 bcdfabc13053p285, 0 x1.8 c0b6d43baa4ep7},
{0 x1.0160 bcb58c08cp289, 0 x1.90 a659b2a7fa7p7},
{0 x1.41 b8ebe2eec13p292, 0 x1.95414621954 f4p7},
{0 x1.922726 dbaa542p295, 0 x1.99 dc329082a46p7},
{0 x1.f6b0f09295714p298, 0 x1.9 e771eff6ffa3p7},
{0 x1.3 a2e965b9d0b2p302, 0 x1.a3120b6e5d4eep7},
{0 x1.88 ba3bf284dd1p305, 0 x1.a7acf7dd4aa4ep7},
{0 x1.32 d17ed576f35p312, 0 x1.b0e2d0bb254ep7},
{0 x1.7 f85de8ad56bep315, 0 x1.b57dbd2a12a44p7},
{0 x1.df67562d87c5cp318, 0 x1.ba18a998fff65p7},
{0 x1.2 ba095dc76db7p322, 0 x1.beb39607ed4fp7},
{0 x1.7688 bb5394bd3p325, 0 x1.c34e8276daa48p7},
{0 x1.d42aea2878b45p328, 0 x1.c7e96ee5c7f87p7},
{0 x1.249 ad2594989p332, 0 x1.cc845b54b54a6p7},
};
for (double [] testCase: testCases)
failures+=testLog1pCase(testCase[0 ], testCase[1 ]);
return failures;
}
public static void main(String [] argv) {
int failures = 0 ;
failures += testLog1p();
if (failures > 0 ) {
System.err.println("Testing log1p incurred "
+ failures + " failures." );
throw new RuntimeException();
}
}
}
Messung V0.5 in Prozent C=99 H=91 G=94
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland