hare

The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

commit 0dadb04584223e1493440f1f5abc3d818bf499d4
parent ec0e51f9c746f7c662621aea2e676104f799475d
Author: Alexey Yerin <yyp@disroot.org>
Date:   Fri,  8 Oct 2021 20:19:32 +0300

math: only build testdata on +test

Also de-export them while here.

Signed-off-by: Alexey Yerin <yyp@disroot.org>

Diffstat:
Amath/data+test.ha | 440+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dmath/testdata.ha | 440-------------------------------------------------------------------------------
Mscripts/gen-stdlib | 13+++++++++++--
Mstdlib.mk | 5++---
4 files changed, 453 insertions(+), 445 deletions(-)

diff --git a/math/data+test.ha b/math/data+test.ha @@ -0,0 +1,440 @@ +// The test data below is based on Go's implementation, and came with the +// following note and copyright notice: +// +// The expected results below were computed by the high precision calculators +// at https://keisan.casio.com/. More exact input values (array vf[], above) +// were obtained by printing them with "%.26f". The answers were calculated +// to 26 digits (by using the "Digit number" drop-down control of each +// calculator). +// +// The Go copyright notice: +// ==================================================== +// Copyright (c) 2009 The Go Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// ==================================================== + +const TEST_INPUTS: [_]f64 = [ + 4.9790119248836735e+00, + 7.7388724745781045e+00, + -2.7688005719200159e-01, + -5.0106036182710749e+00, + 9.6362937071984173e+00, + 2.9263772392439646e+00, + 5.2290834314593066e+00, + 2.7279399104360102e+00, + 1.8253080916808550e+00, + -8.6859247685756013e+00, +]; + +const TEST_ACOS: [_]f64 = [ + 1.0496193546107222142571536e+00, + 6.8584012813664425171660692e-01, + 1.5984878714577160325521819e+00, + 2.0956199361475859327461799e+00, + 2.7053008467824138592616927e-01, + 1.2738121680361776018155625e+00, + 1.0205369421140629186287407e+00, + 1.2945003481781246062157835e+00, + 1.3872364345374451433846657e+00, + 2.6231510803970463967294145e+00, +]; +const TEST_ACOSH: [_]f64 = [ + 2.4743347004159012494457618e+00, + 2.8576385344292769649802701e+00, + 7.2796961502981066190593175e-01, + 2.4796794418831451156471977e+00, + 3.0552020742306061857212962e+00, + 2.044238592688586588942468e+00, + 2.5158701513104513595766636e+00, + 1.99050839282411638174299e+00, + 1.6988625798424034227205445e+00, + 2.9611454842470387925531875e+00, +]; +const TEST_ASIN: [_]f64 = [ + 5.2117697218417440497416805e-01, + 8.8495619865825236751471477e-01, + -02.769154466281941332086016e-02, + -5.2482360935268931351485822e-01, + 1.3002662421166552333051524e+00, + 2.9698415875871901741575922e-01, + 5.5025938468083370060258102e-01, + 2.7629597861677201301553823e-01, + 1.83559892257451475846656e-01, + -1.0523547536021497774980928e+00, +]; +const TEST_ASINH: [_]f64 = [ + 2.3083139124923523427628243e+00, + 2.743551594301593620039021e+00, + -2.7345908534880091229413487e-01, + -2.3145157644718338650499085e+00, + 2.9613652154015058521951083e+00, + 1.7949041616585821933067568e+00, + 2.3564032905983506405561554e+00, + 1.7287118790768438878045346e+00, + 1.3626658083714826013073193e+00, + -2.8581483626513914445234004e+00, +]; +const TEST_ATAN: [_]f64 = [ + 1.372590262129621651920085e+00, + 1.442290609645298083020664e+00, + -2.7011324359471758245192595e-01, + -1.3738077684543379452781531e+00, + 1.4673921193587666049154681e+00, + 1.2415173565870168649117764e+00, + 1.3818396865615168979966498e+00, + 1.2194305844639670701091426e+00, + 1.0696031952318783760193244e+00, + -1.4561721938838084990898679e+00, +]; +const TEST_ATANH: [_]f64 = [ + 5.4651163712251938116878204e-01, + 1.0299474112843111224914709e+00, + -2.7695084420740135145234906e-02, + -5.5072096119207195480202529e-01, + 1.9943940993171843235906642e+00, + 3.01448604578089708203017e-01, + 5.8033427206942188834370595e-01, + 2.7987997499441511013958297e-01, + 1.8459947964298794318714228e-01, + -1.3273186910532645867272502e+00, +]; +const TEST_CEIL: [_]f64 = [ + 5.0000000000000000e+00, + 8.0000000000000000e+00, + -0.0000000000000000e+00, + -5.0000000000000000e+00, + 1.0000000000000000e+01, + 3.0000000000000000e+00, + 6.0000000000000000e+00, + 3.0000000000000000e+00, + 2.0000000000000000e+00, + -8.0000000000000000e+00, +]; +const TEST_COS: [_]f64 = [ + 2.634752140995199110787593e-01, + 1.148551260848219865642039e-01, + 9.6191297325640768154550453e-01, + 2.938141150061714816890637e-01, + -9.777138189897924126294461e-01, + -9.7693041344303219127199518e-01, + 4.940088096948647263961162e-01, + -9.1565869021018925545016502e-01, + -2.517729313893103197176091e-01, + -7.39241351595676573201918e-01, +]; +// Results for 100000 * PI + TEST_INPUTS[i] +const TEST_COSLARGE: [_]f64 = [ + 2.634752141185559426744e-01, + 1.14855126055543100712e-01, + 9.61912973266488928113e-01, + 2.9381411499556122552e-01, + -9.777138189880161924641e-01, + -9.76930413445147608049e-01, + 4.940088097314976789841e-01, + -9.15658690217517835002e-01, + -2.51772931436786954751e-01, + -7.3924135157173099849e-01, +]; +const TEST_COSH: [_]f64 = [ + 7.2668796942212842775517446e+01, + 1.1479413465659254502011135e+03, + 1.0385767908766418550935495e+00, + 7.5000957789658051428857788e+01, + 7.655246669605357888468613e+03, + 9.3567491758321272072888257e+00, + 9.331351599270605471131735e+01, + 7.6833430994624643209296404e+00, + 3.1829371625150718153881164e+00, + 2.9595059261916188501640911e+03, +]; +const TEST_EXP: [_]f64 = [ + 1.4533071302642137507696589e+02, + 2.2958822575694449002537581e+03, + 7.5814542574851666582042306e-01, + 6.6668778421791005061482264e-03, + 1.5310493273896033740861206e+04, + 1.8659907517999328638667732e+01, + 1.8662167355098714543942057e+02, + 1.5301332413189378961665788e+01, + 6.2047063430646876349125085e+00, + 1.6894712385826521111610438e-04, +]; +const TEST_EXP2: [_]f64 = [ + 3.1537839463286288034313104e+01, + 2.1361549283756232296144849e+02, + 8.2537402562185562902577219e-01, + 3.1021158628740294833424229e-02, + 7.9581744110252191462569661e+02, + 7.6019905892596359262696423e+00, + 3.7506882048388096973183084e+01, + 6.6250893439173561733216375e+00, + 3.5438267900243941544605339e+00, + 2.4281533133513300984289196e-03, +]; +const TEST_ABSF: [_]f64 = [ + 4.9790119248836735e+00, + 7.7388724745781045e+00, + 2.7688005719200159e-01, + 5.0106036182710749e+00, + 9.6362937071984173e+00, + 2.9263772392439646e+00, + 5.2290834314593066e+00, + 2.7279399104360102e+00, + 1.8253080916808550e+00, + 8.6859247685756013e+00, +]; +const TEST_FLOOR: [_]f64 = [ + 4.0000000000000000e+00, + 7.0000000000000000e+00, + -1.0000000000000000e+00, + -6.0000000000000000e+00, + 9.0000000000000000e+00, + 2.0000000000000000e+00, + 5.0000000000000000e+00, + 2.0000000000000000e+00, + 1.0000000000000000e+00, + -9.0000000000000000e+00, +]; +const TEST_MODF: [_]f64 = [ + 4.197615023265299782906368e-02, + 2.261127525421895434476482e+00, + 3.231794108794261433104108e-02, + 4.989396381728925078391512e+00, + 3.637062928015826201999516e-01, + 1.220868282268106064236690e+00, + 4.770916568540693347699744e+00, + 1.816180268691969246219742e+00, + 8.734595415957246977711748e-01, + 1.314075231424398637614104e+00, +]; +const TEST_FREXP: [_](f64, i64) = [ + (6.2237649061045918750e-01, 3), + (9.6735905932226306250e-01, 3), + (-5.5376011438400318000e-01, -1), + (-6.2632545228388436250e-01, 3), + (6.02268356699901081250e-01, 4), + (7.3159430981099115000e-01, 2), + (6.5363542893241332500e-01, 3), + (6.8198497760900255000e-01, 2), + (9.1265404584042750000e-01, 1), + (-5.4287029803597508250e-01, 4), +]; +const TEST_LOG: [_]f64 = [ + 1.605231462693062999102599e+00, + 2.0462560018708770653153909e+00, + -1.2841708730962657801275038e+00, + 1.6115563905281545116286206e+00, + 2.2655365644872016636317461e+00, + 1.0737652208918379856272735e+00, + 1.6542360106073546632707956e+00, + 1.0035467127723465801264487e+00, + 6.0174879014578057187016475e-01, + 2.161703872847352815363655e+00, +]; +const TEST_LOG10: [_]f64 = [ + 6.9714316642508290997617083e-01, + 8.886776901739320576279124e-01, + -5.5770832400658929815908236e-01, + 6.998900476822994346229723e-01, + 9.8391002850684232013281033e-01, + 4.6633031029295153334285302e-01, + 7.1842557117242328821552533e-01, + 4.3583479968917773161304553e-01, + 2.6133617905227038228626834e-01, + 9.3881606348649405716214241e-01, +]; +const TEST_LOG2: [_]f64 = [ + 2.3158594707062190618898251e+00, + 2.9521233862883917703341018e+00, + -1.8526669502700329984917062e+00, + 2.3249844127278861543568029e+00, + 3.268478366538305087466309e+00, + 1.5491157592596970278166492e+00, + 2.3865580889631732407886495e+00, + 1.447811865817085365540347e+00, + 8.6813999540425116282815557e-01, + 3.118679457227342224364709e+00, +]; +const TEST_LOG1P: []f64 = [ + 4.8590257759797794104158205e-02, + 7.4540265965225865330849141e-02, + -2.7726407903942672823234024e-03, + -5.1404917651627649094953380e-02, + 9.1998280672258624681335010e-02, + 2.8843762576593352865894824e-02, + 5.0969534581863707268992645e-02, + 2.6913947602193238458458594e-02, + 1.8088493239630770262045333e-02, + -9.0865245631588989681559268e-02, +]; +const TEST_MODFRAC: [_](i64, f64) = [ + (4i64, 9.7901192488367350108546816e-01), + (7i64, 7.3887247457810456552351752e-01), + (-0i64, -2.7688005719200159404635997e-01), + (-5i64, -1.060361827107492160848778e-02), + (9i64, 6.3629370719841737980004837e-01), + (2i64, 9.2637723924396464525443662e-01), + (5i64, 2.2908343145930665230025625e-01), + (2i64, 7.2793991043601025126008608e-01), + (1i64, 8.2530809168085506044576505e-01), + (-8i64, -6.8592476857560136238589621e-01), +]; +const TEST_POW: [_]f64 = [ + 9.5282232631648411840742957e+04, + 5.4811599352999901232411871e+07, + 5.2859121715894396531132279e-01, + 9.7587991957286474464259698e-06, + 4.328064329346044846740467e+09, + 8.4406761805034547437659092e+02, + 1.6946633276191194947742146e+05, + 5.3449040147551939075312879e+02, + 6.688182138451414936380374e+01, + 2.0609869004248742886827439e-09, +]; +const TEST_ROUND: [_]f64 = [ + 5.0f64, + 8.0f64, + -0.0f64, + -5.0f64, + 10.0f64, + 3.0f64, + 5.0f64, + 3.0f64, + 2.0f64, + -9.0f64, +]; +const TEST_SIGNF: [_]i8 = [ + 1, + 1, + -1, + -1, + 1, + 1, + 1, + 1, + 1, + -1, +]; +const TEST_SIN: [_]f64 = [ + -9.6466616586009283766724726e-01, + 9.9338225271646545763467022e-01, + -2.7335587039794393342449301e-01, + 9.5586257685042792878173752e-01, + -2.099421066779969164496634e-01, + 2.135578780799860532750616e-01, + -8.694568971167362743327708e-01, + 4.019566681155577786649878e-01, + 9.6778633541687993721617774e-01, + -6.734405869050344734943028e-01, +]; +// Results for 100000 * PI + TEST_INPUTS[i] +const TEST_SINLARGE: [_]f64 = [ + -9.646661658548936063912e-01, + 9.933822527198506903752e-01, + -2.7335587036246899796e-01, + 9.55862576853689321268e-01, + -2.099421066862688873691e-01, + 2.13557878070308981163e-01, + -8.694568970959221300497e-01, + 4.01956668098863248917e-01, + 9.67786335404528727927e-01, + -6.7344058693131973066e-01, +]; +const TEST_SINH: [_]f64 = [ + 7.2661916084208532301448439e+01, + 1.1479409110035194500526446e+03, + -2.8043136512812518927312641e-01, + -7.499429091181587232835164e+01, + 7.6552466042906758523925934e+03, + 9.3031583421672014313789064e+00, + 9.330815755828109072810322e+01, + 7.6179893137269146407361477e+00, + 3.021769180549615819524392e+00, + -2.95950575724449499189888e+03, +]; +const TEST_SQRT: [_]f64 = [ + 2.2313699659365484748756904e+00, + 2.7818829009464263511285458e+00, + 5.2619393496314796848143251e-01, + 2.2384377628763938724244104e+00, + 3.1042380236055381099288487e+00, + 1.7106657298385224403917771e+00, + 2.286718922705479046148059e+00, + 1.6516476350711159636222979e+00, + 1.3510396336454586262419247e+00, + 2.9471892997524949215723329e+00, +]; +const TEST_TAN: [_]f64 = [ + -3.661316565040227801781974e+00, + 8.64900232648597589369854e+00, + -2.8417941955033612725238097e-01, + 3.253290185974728640827156e+00, + 2.147275640380293804770778e-01, + -2.18600910711067004921551e-01, + -1.760002817872367935518928e+00, + -4.389808914752818126249079e-01, + -3.843885560201130679995041e+00, + 9.10988793377685105753416e-01, +]; +// Results for 100000 * PI + TEST_INPUTS[i] +const TEST_TANLARGE: [_]f64 = [ + -3.66131656475596512705e+00, + 8.6490023287202547927e+00, + -2.841794195104782406e-01, + 3.2532901861033120983e+00, + 2.14727564046880001365e-01, + -2.18600910700688062874e-01, + -1.760002817699722747043e+00, + -4.38980891453536115952e-01, + -3.84388555942723509071e+00, + 9.1098879344275101051e-01, +]; +const TEST_TANH: [_]f64 = [ + 9.9990531206936338549262119e-01, + 9.9999962057085294197613294e-01, + -2.7001505097318677233756845e-01, + -9.9991110943061718603541401e-01, + 9.9999999146798465745022007e-01, + 9.9427249436125236705001048e-01, + 9.9994257600983138572705076e-01, + 9.9149409509772875982054701e-01, + 9.4936501296239685514466577e-01, + -9.9999994291374030946055701e-01, +]; +const TEST_TRUNC: [_]f64 = [ + 4.0000000000000000e+00, + 7.0000000000000000e+00, + -0.0000000000000000e+00, + -5.0000000000000000e+00, + 9.0000000000000000e+00, + 2.0000000000000000e+00, + 5.0000000000000000e+00, + 2.0000000000000000e+00, + 1.0000000000000000e+00, + -8.0000000000000000e+00, +]; diff --git a/math/testdata.ha b/math/testdata.ha @@ -1,440 +0,0 @@ -// The test data below is based on Go's implementation, and came with the -// following note and copyright notice: -// -// The expected results below were computed by the high precision calculators -// at https://keisan.casio.com/. More exact input values (array vf[], above) -// were obtained by printing them with "%.26f". The answers were calculated -// to 26 digits (by using the "Digit number" drop-down control of each -// calculator). -// -// The Go copyright notice: -// ==================================================== -// Copyright (c) 2009 The Go Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// ==================================================== - -export const TEST_INPUTS: [_]f64 = [ - 4.9790119248836735e+00, - 7.7388724745781045e+00, - -2.7688005719200159e-01, - -5.0106036182710749e+00, - 9.6362937071984173e+00, - 2.9263772392439646e+00, - 5.2290834314593066e+00, - 2.7279399104360102e+00, - 1.8253080916808550e+00, - -8.6859247685756013e+00, -]; - -export const TEST_ACOS: [_]f64 = [ - 1.0496193546107222142571536e+00, - 6.8584012813664425171660692e-01, - 1.5984878714577160325521819e+00, - 2.0956199361475859327461799e+00, - 2.7053008467824138592616927e-01, - 1.2738121680361776018155625e+00, - 1.0205369421140629186287407e+00, - 1.2945003481781246062157835e+00, - 1.3872364345374451433846657e+00, - 2.6231510803970463967294145e+00, -]; -export const TEST_ACOSH: [_]f64 = [ - 2.4743347004159012494457618e+00, - 2.8576385344292769649802701e+00, - 7.2796961502981066190593175e-01, - 2.4796794418831451156471977e+00, - 3.0552020742306061857212962e+00, - 2.044238592688586588942468e+00, - 2.5158701513104513595766636e+00, - 1.99050839282411638174299e+00, - 1.6988625798424034227205445e+00, - 2.9611454842470387925531875e+00, -]; -export const TEST_ASIN: [_]f64 = [ - 5.2117697218417440497416805e-01, - 8.8495619865825236751471477e-01, - -02.769154466281941332086016e-02, - -5.2482360935268931351485822e-01, - 1.3002662421166552333051524e+00, - 2.9698415875871901741575922e-01, - 5.5025938468083370060258102e-01, - 2.7629597861677201301553823e-01, - 1.83559892257451475846656e-01, - -1.0523547536021497774980928e+00, -]; -export const TEST_ASINH: [_]f64 = [ - 2.3083139124923523427628243e+00, - 2.743551594301593620039021e+00, - -2.7345908534880091229413487e-01, - -2.3145157644718338650499085e+00, - 2.9613652154015058521951083e+00, - 1.7949041616585821933067568e+00, - 2.3564032905983506405561554e+00, - 1.7287118790768438878045346e+00, - 1.3626658083714826013073193e+00, - -2.8581483626513914445234004e+00, -]; -export const TEST_ATAN: [_]f64 = [ - 1.372590262129621651920085e+00, - 1.442290609645298083020664e+00, - -2.7011324359471758245192595e-01, - -1.3738077684543379452781531e+00, - 1.4673921193587666049154681e+00, - 1.2415173565870168649117764e+00, - 1.3818396865615168979966498e+00, - 1.2194305844639670701091426e+00, - 1.0696031952318783760193244e+00, - -1.4561721938838084990898679e+00, -]; -export const TEST_ATANH: [_]f64 = [ - 5.4651163712251938116878204e-01, - 1.0299474112843111224914709e+00, - -2.7695084420740135145234906e-02, - -5.5072096119207195480202529e-01, - 1.9943940993171843235906642e+00, - 3.01448604578089708203017e-01, - 5.8033427206942188834370595e-01, - 2.7987997499441511013958297e-01, - 1.8459947964298794318714228e-01, - -1.3273186910532645867272502e+00, -]; -export const TEST_CEIL: [_]f64 = [ - 5.0000000000000000e+00, - 8.0000000000000000e+00, - -0.0000000000000000e+00, - -5.0000000000000000e+00, - 1.0000000000000000e+01, - 3.0000000000000000e+00, - 6.0000000000000000e+00, - 3.0000000000000000e+00, - 2.0000000000000000e+00, - -8.0000000000000000e+00, -]; -export const TEST_COS: [_]f64 = [ - 2.634752140995199110787593e-01, - 1.148551260848219865642039e-01, - 9.6191297325640768154550453e-01, - 2.938141150061714816890637e-01, - -9.777138189897924126294461e-01, - -9.7693041344303219127199518e-01, - 4.940088096948647263961162e-01, - -9.1565869021018925545016502e-01, - -2.517729313893103197176091e-01, - -7.39241351595676573201918e-01, -]; -// Results for 100000 * PI + TEST_INPUTS[i] -export const TEST_COSLARGE: [_]f64 = [ - 2.634752141185559426744e-01, - 1.14855126055543100712e-01, - 9.61912973266488928113e-01, - 2.9381411499556122552e-01, - -9.777138189880161924641e-01, - -9.76930413445147608049e-01, - 4.940088097314976789841e-01, - -9.15658690217517835002e-01, - -2.51772931436786954751e-01, - -7.3924135157173099849e-01, -]; -export const TEST_COSH: [_]f64 = [ - 7.2668796942212842775517446e+01, - 1.1479413465659254502011135e+03, - 1.0385767908766418550935495e+00, - 7.5000957789658051428857788e+01, - 7.655246669605357888468613e+03, - 9.3567491758321272072888257e+00, - 9.331351599270605471131735e+01, - 7.6833430994624643209296404e+00, - 3.1829371625150718153881164e+00, - 2.9595059261916188501640911e+03, -]; -export const TEST_EXP: [_]f64 = [ - 1.4533071302642137507696589e+02, - 2.2958822575694449002537581e+03, - 7.5814542574851666582042306e-01, - 6.6668778421791005061482264e-03, - 1.5310493273896033740861206e+04, - 1.8659907517999328638667732e+01, - 1.8662167355098714543942057e+02, - 1.5301332413189378961665788e+01, - 6.2047063430646876349125085e+00, - 1.6894712385826521111610438e-04, -]; -export const TEST_EXP2: [_]f64 = [ - 3.1537839463286288034313104e+01, - 2.1361549283756232296144849e+02, - 8.2537402562185562902577219e-01, - 3.1021158628740294833424229e-02, - 7.9581744110252191462569661e+02, - 7.6019905892596359262696423e+00, - 3.7506882048388096973183084e+01, - 6.6250893439173561733216375e+00, - 3.5438267900243941544605339e+00, - 2.4281533133513300984289196e-03, -]; -export const TEST_ABSF: [_]f64 = [ - 4.9790119248836735e+00, - 7.7388724745781045e+00, - 2.7688005719200159e-01, - 5.0106036182710749e+00, - 9.6362937071984173e+00, - 2.9263772392439646e+00, - 5.2290834314593066e+00, - 2.7279399104360102e+00, - 1.8253080916808550e+00, - 8.6859247685756013e+00, -]; -export const TEST_FLOOR: [_]f64 = [ - 4.0000000000000000e+00, - 7.0000000000000000e+00, - -1.0000000000000000e+00, - -6.0000000000000000e+00, - 9.0000000000000000e+00, - 2.0000000000000000e+00, - 5.0000000000000000e+00, - 2.0000000000000000e+00, - 1.0000000000000000e+00, - -9.0000000000000000e+00, -]; -export const TEST_MODF: [_]f64 = [ - 4.197615023265299782906368e-02, - 2.261127525421895434476482e+00, - 3.231794108794261433104108e-02, - 4.989396381728925078391512e+00, - 3.637062928015826201999516e-01, - 1.220868282268106064236690e+00, - 4.770916568540693347699744e+00, - 1.816180268691969246219742e+00, - 8.734595415957246977711748e-01, - 1.314075231424398637614104e+00, -]; -export const TEST_FREXP: [_](f64, i64) = [ - (6.2237649061045918750e-01, 3), - (9.6735905932226306250e-01, 3), - (-5.5376011438400318000e-01, -1), - (-6.2632545228388436250e-01, 3), - (6.02268356699901081250e-01, 4), - (7.3159430981099115000e-01, 2), - (6.5363542893241332500e-01, 3), - (6.8198497760900255000e-01, 2), - (9.1265404584042750000e-01, 1), - (-5.4287029803597508250e-01, 4), -]; -export const TEST_LOG: [_]f64 = [ - 1.605231462693062999102599e+00, - 2.0462560018708770653153909e+00, - -1.2841708730962657801275038e+00, - 1.6115563905281545116286206e+00, - 2.2655365644872016636317461e+00, - 1.0737652208918379856272735e+00, - 1.6542360106073546632707956e+00, - 1.0035467127723465801264487e+00, - 6.0174879014578057187016475e-01, - 2.161703872847352815363655e+00, -]; -export const TEST_LOG10: [_]f64 = [ - 6.9714316642508290997617083e-01, - 8.886776901739320576279124e-01, - -5.5770832400658929815908236e-01, - 6.998900476822994346229723e-01, - 9.8391002850684232013281033e-01, - 4.6633031029295153334285302e-01, - 7.1842557117242328821552533e-01, - 4.3583479968917773161304553e-01, - 2.6133617905227038228626834e-01, - 9.3881606348649405716214241e-01, -]; -export const TEST_LOG2: [_]f64 = [ - 2.3158594707062190618898251e+00, - 2.9521233862883917703341018e+00, - -1.8526669502700329984917062e+00, - 2.3249844127278861543568029e+00, - 3.268478366538305087466309e+00, - 1.5491157592596970278166492e+00, - 2.3865580889631732407886495e+00, - 1.447811865817085365540347e+00, - 8.6813999540425116282815557e-01, - 3.118679457227342224364709e+00, -]; -export const TEST_LOG1P: []f64 = [ - 4.8590257759797794104158205e-02, - 7.4540265965225865330849141e-02, - -2.7726407903942672823234024e-03, - -5.1404917651627649094953380e-02, - 9.1998280672258624681335010e-02, - 2.8843762576593352865894824e-02, - 5.0969534581863707268992645e-02, - 2.6913947602193238458458594e-02, - 1.8088493239630770262045333e-02, - -9.0865245631588989681559268e-02, -]; -export const TEST_MODFRAC: [_](i64, f64) = [ - (4i64, 9.7901192488367350108546816e-01), - (7i64, 7.3887247457810456552351752e-01), - (-0i64, -2.7688005719200159404635997e-01), - (-5i64, -1.060361827107492160848778e-02), - (9i64, 6.3629370719841737980004837e-01), - (2i64, 9.2637723924396464525443662e-01), - (5i64, 2.2908343145930665230025625e-01), - (2i64, 7.2793991043601025126008608e-01), - (1i64, 8.2530809168085506044576505e-01), - (-8i64, -6.8592476857560136238589621e-01), -]; -export const TEST_POW: [_]f64 = [ - 9.5282232631648411840742957e+04, - 5.4811599352999901232411871e+07, - 5.2859121715894396531132279e-01, - 9.7587991957286474464259698e-06, - 4.328064329346044846740467e+09, - 8.4406761805034547437659092e+02, - 1.6946633276191194947742146e+05, - 5.3449040147551939075312879e+02, - 6.688182138451414936380374e+01, - 2.0609869004248742886827439e-09, -]; -export const TEST_ROUND: [_]f64 = [ - 5.0f64, - 8.0f64, - -0.0f64, - -5.0f64, - 10.0f64, - 3.0f64, - 5.0f64, - 3.0f64, - 2.0f64, - -9.0f64, -]; -export const TEST_SIGNF: [_]i8 = [ - 1, - 1, - -1, - -1, - 1, - 1, - 1, - 1, - 1, - -1, -]; -export const TEST_SIN: [_]f64 = [ - -9.6466616586009283766724726e-01, - 9.9338225271646545763467022e-01, - -2.7335587039794393342449301e-01, - 9.5586257685042792878173752e-01, - -2.099421066779969164496634e-01, - 2.135578780799860532750616e-01, - -8.694568971167362743327708e-01, - 4.019566681155577786649878e-01, - 9.6778633541687993721617774e-01, - -6.734405869050344734943028e-01, -]; -// Results for 100000 * PI + TEST_INPUTS[i] -export const TEST_SINLARGE: [_]f64 = [ - -9.646661658548936063912e-01, - 9.933822527198506903752e-01, - -2.7335587036246899796e-01, - 9.55862576853689321268e-01, - -2.099421066862688873691e-01, - 2.13557878070308981163e-01, - -8.694568970959221300497e-01, - 4.01956668098863248917e-01, - 9.67786335404528727927e-01, - -6.7344058693131973066e-01, -]; -export const TEST_SINH: [_]f64 = [ - 7.2661916084208532301448439e+01, - 1.1479409110035194500526446e+03, - -2.8043136512812518927312641e-01, - -7.499429091181587232835164e+01, - 7.6552466042906758523925934e+03, - 9.3031583421672014313789064e+00, - 9.330815755828109072810322e+01, - 7.6179893137269146407361477e+00, - 3.021769180549615819524392e+00, - -2.95950575724449499189888e+03, -]; -export const TEST_SQRT: [_]f64 = [ - 2.2313699659365484748756904e+00, - 2.7818829009464263511285458e+00, - 5.2619393496314796848143251e-01, - 2.2384377628763938724244104e+00, - 3.1042380236055381099288487e+00, - 1.7106657298385224403917771e+00, - 2.286718922705479046148059e+00, - 1.6516476350711159636222979e+00, - 1.3510396336454586262419247e+00, - 2.9471892997524949215723329e+00, -]; -export const TEST_TAN: [_]f64 = [ - -3.661316565040227801781974e+00, - 8.64900232648597589369854e+00, - -2.8417941955033612725238097e-01, - 3.253290185974728640827156e+00, - 2.147275640380293804770778e-01, - -2.18600910711067004921551e-01, - -1.760002817872367935518928e+00, - -4.389808914752818126249079e-01, - -3.843885560201130679995041e+00, - 9.10988793377685105753416e-01, -]; -// Results for 100000 * PI + TEST_INPUTS[i] -export const TEST_TANLARGE: [_]f64 = [ - -3.66131656475596512705e+00, - 8.6490023287202547927e+00, - -2.841794195104782406e-01, - 3.2532901861033120983e+00, - 2.14727564046880001365e-01, - -2.18600910700688062874e-01, - -1.760002817699722747043e+00, - -4.38980891453536115952e-01, - -3.84388555942723509071e+00, - 9.1098879344275101051e-01, -]; -export const TEST_TANH: [_]f64 = [ - 9.9990531206936338549262119e-01, - 9.9999962057085294197613294e-01, - -2.7001505097318677233756845e-01, - -9.9991110943061718603541401e-01, - 9.9999999146798465745022007e-01, - 9.9427249436125236705001048e-01, - 9.9994257600983138572705076e-01, - 9.9149409509772875982054701e-01, - 9.4936501296239685514466577e-01, - -9.9999994291374030946055701e-01, -]; -export const TEST_TRUNC: [_]f64 = [ - 4.0000000000000000e+00, - 7.0000000000000000e+00, - -0.0000000000000000e+00, - -5.0000000000000000e+00, - 9.0000000000000000e+00, - 2.0000000000000000e+00, - 5.0000000000000000e+00, - 2.0000000000000000e+00, - 1.0000000000000000e+00, - -8.0000000000000000e+00, -]; diff --git a/scripts/gen-stdlib b/scripts/gen-stdlib @@ -599,10 +599,19 @@ linux_vdso() { gen_ssa linux::vdso linux strings format::elf } +gensrcs_math() { + gen_srcs math \ + math.ha floats.ha ints.ha uints.ha trig.ha \ + $* +} + math() { printf '# math\n' - gen_srcs math \ - testdata.ha math.ha floats.ha ints.ha uints.ha trig.ha + if [ $testing -eq 0 ]; then + gensrcs_math + else + gensrcs_math data+test.ha + fi gen_ssa math types } diff --git a/stdlib.mk b/stdlib.mk @@ -883,7 +883,6 @@ $(HARECACHE)/linux/vdso/linux_vdso.ssa: $(stdlib_linux_vdso_srcs) $(stdlib_rt) $ # math # math stdlib_math_srcs= \ - $(STDLIB)/math/testdata.ha \ $(STDLIB)/math/math.ha \ $(STDLIB)/math/floats.ha \ $(STDLIB)/math/ints.ha \ @@ -2138,12 +2137,12 @@ $(TESTCACHE)/linux/vdso/linux_vdso.ssa: $(testlib_linux_vdso_srcs) $(testlib_rt) # math # math testlib_math_srcs= \ - $(STDLIB)/math/testdata.ha \ $(STDLIB)/math/math.ha \ $(STDLIB)/math/floats.ha \ $(STDLIB)/math/ints.ha \ $(STDLIB)/math/uints.ha \ - $(STDLIB)/math/trig.ha + $(STDLIB)/math/trig.ha \ + $(STDLIB)/math/data+test.ha $(TESTCACHE)/math/math.ssa: $(testlib_math_srcs) $(testlib_rt) $(testlib_types) @printf 'HAREC \t$@\n'