hare

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

data.ha (13940B)


      1 // SPDX-License-Identifier: MPL-2.0
      2 // (c) Hare authors <https://harelang.org>
      3 
      4 // The test data below is based on Go's implementation, and came with the
      5 // following note and copyright notice:
      6 //
      7 // The expected results below were computed by the high precision calculators
      8 // at https://keisan.casio.com/.  More exact input values (array vf[], above)
      9 // were obtained by printing them with "%.26f".  The answers were calculated
     10 // to 26 digits (by using the "Digit number" drop-down control of each
     11 // calculator).
     12 //
     13 // The Go copyright notice:
     14 // ====================================================
     15 // Copyright (c) 2009 The Go Authors. All rights reserved.
     16 //
     17 // Redistribution and use in source and binary forms, with or without
     18 // modification, are permitted provided that the following conditions are
     19 // met:
     20 //
     21 //    * Redistributions of source code must retain the above copyright
     22 // notice, this list of conditions and the following disclaimer.
     23 //    * Redistributions in binary form must reproduce the above
     24 // copyright notice, this list of conditions and the following disclaimer
     25 // in the documentation and/or other materials provided with the
     26 // distribution.
     27 //    * Neither the name of Google Inc. nor the names of its
     28 // contributors may be used to endorse or promote products derived from
     29 // this software without specific prior written permission.
     30 //
     31 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     34 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     36 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     37 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     38 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     39 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     40 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     41 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     42 // ====================================================
     43 
     44 const TEST_INPUTS: [_]f64 = [
     45 	4.9790119248836735e+00,
     46 	7.7388724745781045e+00,
     47 	-2.7688005719200159e-01,
     48 	-5.0106036182710749e+00,
     49 	9.6362937071984173e+00,
     50 	2.9263772392439646e+00,
     51 	5.2290834314593066e+00,
     52 	2.7279399104360102e+00,
     53 	1.8253080916808550e+00,
     54 	-8.6859247685756013e+00,
     55 ];
     56 
     57 const TEST_ACOS: [_]f64 = [
     58 	1.0496193546107222142571536e+00,
     59 	6.8584012813664425171660692e-01,
     60 	1.5984878714577160325521819e+00,
     61 	2.0956199361475859327461799e+00,
     62 	2.7053008467824138592616927e-01,
     63 	1.2738121680361776018155625e+00,
     64 	1.0205369421140629186287407e+00,
     65 	1.2945003481781246062157835e+00,
     66 	1.3872364345374451433846657e+00,
     67 	2.6231510803970463967294145e+00,
     68 ];
     69 const TEST_ACOSH: [_]f64 = [
     70 	2.4743347004159012494457618e+00,
     71 	2.8576385344292769649802701e+00,
     72 	7.2796961502981066190593175e-01,
     73 	2.4796794418831451156471977e+00,
     74 	3.0552020742306061857212962e+00,
     75 	2.044238592688586588942468e+00,
     76 	2.5158701513104513595766636e+00,
     77 	1.99050839282411638174299e+00,
     78 	1.6988625798424034227205445e+00,
     79 	2.9611454842470387925531875e+00,
     80 ];
     81 const TEST_ASIN: [_]f64 = [
     82 	5.2117697218417440497416805e-01,
     83 	8.8495619865825236751471477e-01,
     84 	-2.769154466281941332086016e-02,
     85 	-5.2482360935268931351485822e-01,
     86 	1.3002662421166552333051524e+00,
     87 	2.9698415875871901741575922e-01,
     88 	5.5025938468083370060258102e-01,
     89 	2.7629597861677201301553823e-01,
     90 	1.83559892257451475846656e-01,
     91 	-1.0523547536021497774980928e+00,
     92 ];
     93 const TEST_ASINH: [_]f64 = [
     94 	2.3083139124923523427628243e+00,
     95 	2.743551594301593620039021e+00,
     96 	-2.7345908534880091229413487e-01,
     97 	-2.3145157644718338650499085e+00,
     98 	2.9613652154015058521951083e+00,
     99 	1.7949041616585821933067568e+00,
    100 	2.3564032905983506405561554e+00,
    101 	1.7287118790768438878045346e+00,
    102 	1.3626658083714826013073193e+00,
    103 	-2.8581483626513914445234004e+00,
    104 ];
    105 const TEST_ATAN: [_]f64 = [
    106 	1.372590262129621651920085e+00,
    107 	1.442290609645298083020664e+00,
    108 	-2.7011324359471758245192595e-01,
    109 	-1.3738077684543379452781531e+00,
    110 	1.4673921193587666049154681e+00,
    111 	1.2415173565870168649117764e+00,
    112 	1.3818396865615168979966498e+00,
    113 	1.2194305844639670701091426e+00,
    114 	1.0696031952318783760193244e+00,
    115 	-1.4561721938838084990898679e+00,
    116 ];
    117 const TEST_ATAN2: [_]f64 = [
    118 	1.1088291730037004444527075e+00,
    119 	9.1218183188715804018797795e-01,
    120 	1.5984772603216203736068915e+00,
    121 	2.0352918654092086637227327e+00,
    122 	8.0391819139044720267356014e-01,
    123 	1.2861075249894661588866752e+00,
    124 	1.0889904479131695712182587e+00,
    125 	1.3044821793397925293797357e+00,
    126 	1.3902530903455392306872261e+00,
    127 	2.2859857424479142655411058e+00,
    128 ];
    129 const TEST_ATANH: [_]f64 = [
    130 	5.4651163712251938116878204e-01,
    131 	1.0299474112843111224914709e+00,
    132 	-2.7695084420740135145234906e-02,
    133 	-5.5072096119207195480202529e-01,
    134 	1.9943940993171843235906642e+00,
    135 	3.01448604578089708203017e-01,
    136 	5.8033427206942188834370595e-01,
    137 	2.7987997499441511013958297e-01,
    138 	1.8459947964298794318714228e-01,
    139 	-1.3273186910532645867272502e+00,
    140 ];
    141 const TEST_CEIL: [_]f64 = [
    142 	5.0000000000000000e+00,
    143 	8.0000000000000000e+00,
    144 	-0.0000000000000000e+00,
    145 	-5.0000000000000000e+00,
    146 	1.0000000000000000e+01,
    147 	3.0000000000000000e+00,
    148 	6.0000000000000000e+00,
    149 	3.0000000000000000e+00,
    150 	2.0000000000000000e+00,
    151 	-8.0000000000000000e+00,
    152 ];
    153 const TEST_COS: [_]f64 = [
    154 	2.634752140995199110787593e-01,
    155 	1.148551260848219865642039e-01,
    156 	9.6191297325640768154550453e-01,
    157 	2.938141150061714816890637e-01,
    158 	-9.777138189897924126294461e-01,
    159 	-9.7693041344303219127199518e-01,
    160 	4.940088096948647263961162e-01,
    161 	-9.1565869021018925545016502e-01,
    162 	-2.517729313893103197176091e-01,
    163 	-7.39241351595676573201918e-01,
    164 ];
    165 // Results for 100000 * PI + TEST_INPUTS[i]
    166 const TEST_COSLARGE: [_]f64 = [
    167 	2.634752141185559426744e-01,
    168 	1.14855126055543100712e-01,
    169 	9.61912973266488928113e-01,
    170 	2.9381411499556122552e-01,
    171 	-9.777138189880161924641e-01,
    172 	-9.76930413445147608049e-01,
    173 	4.940088097314976789841e-01,
    174 	-9.15658690217517835002e-01,
    175 	-2.51772931436786954751e-01,
    176 	-7.3924135157173099849e-01,
    177 ];
    178 const TEST_COSH: [_]f64 = [
    179 	7.2668796942212842775517446e+01,
    180 	1.1479413465659254502011135e+03,
    181 	1.0385767908766418550935495e+00,
    182 	7.5000957789658051428857788e+01,
    183 	7.655246669605357888468613e+03,
    184 	9.3567491758321272072888257e+00,
    185 	9.331351599270605471131735e+01,
    186 	7.6833430994624643209296404e+00,
    187 	3.1829371625150718153881164e+00,
    188 	2.9595059261916188501640911e+03,
    189 ];
    190 const TEST_EXP: [_]f64 = [
    191 	1.4533071302642137507696589e+02,
    192 	2.2958822575694449002537581e+03,
    193 	7.5814542574851666582042306e-01,
    194 	6.6668778421791005061482264e-03,
    195 	1.5310493273896033740861206e+04,
    196 	1.8659907517999328638667732e+01,
    197 	1.8662167355098714543942057e+02,
    198 	1.5301332413189378961665788e+01,
    199 	6.2047063430646876349125085e+00,
    200 	1.6894712385826521111610438e-04,
    201 ];
    202 const TEST_EXP2: [_]f64 = [
    203 	3.1537839463286288034313104e+01,
    204 	2.1361549283756232296144849e+02,
    205 	8.2537402562185562902577219e-01,
    206 	3.1021158628740294833424229e-02,
    207 	7.9581744110252191462569661e+02,
    208 	7.6019905892596359262696423e+00,
    209 	3.7506882048388096973183084e+01,
    210 	6.6250893439173561733216375e+00,
    211 	3.5438267900243941544605339e+00,
    212 	2.4281533133513300984289196e-03,
    213 ];
    214 const TEST_ABSF: [_]f64 = [
    215 	4.9790119248836735e+00,
    216 	7.7388724745781045e+00,
    217 	2.7688005719200159e-01,
    218 	5.0106036182710749e+00,
    219 	9.6362937071984173e+00,
    220 	2.9263772392439646e+00,
    221 	5.2290834314593066e+00,
    222 	2.7279399104360102e+00,
    223 	1.8253080916808550e+00,
    224 	8.6859247685756013e+00,
    225 ];
    226 const TEST_FLOOR: [_]f64 = [
    227 	4.0000000000000000e+00,
    228 	7.0000000000000000e+00,
    229 	-1.0000000000000000e+00,
    230 	-6.0000000000000000e+00,
    231 	9.0000000000000000e+00,
    232 	2.0000000000000000e+00,
    233 	5.0000000000000000e+00,
    234 	2.0000000000000000e+00,
    235 	1.0000000000000000e+00,
    236 	-9.0000000000000000e+00,
    237 ];
    238 const TEST_MODF: [_]f64 = [
    239 	4.197615023265299782906368e-02,
    240 	2.261127525421895434476482e+00,
    241 	3.231794108794261433104108e-02,
    242 	4.989396381728925078391512e+00,
    243 	3.637062928015826201999516e-01,
    244 	1.220868282268106064236690e+00,
    245 	4.770916568540693347699744e+00,
    246 	1.816180268691969246219742e+00,
    247 	8.734595415957246977711748e-01,
    248 	1.314075231424398637614104e+00,
    249 ];
    250 const TEST_FREXP: [_](f64, i64) = [
    251 	(6.2237649061045918750e-01, 3),
    252 	(9.6735905932226306250e-01, 3),
    253 	(-5.5376011438400318000e-01, -1),
    254 	(-6.2632545228388436250e-01, 3),
    255 	(6.02268356699901081250e-01, 4),
    256 	(7.3159430981099115000e-01, 2),
    257 	(6.5363542893241332500e-01, 3),
    258 	(6.8198497760900255000e-01, 2),
    259 	(9.1265404584042750000e-01, 1),
    260 	(-5.4287029803597508250e-01, 4),
    261 ];
    262 const TEST_LOG: [_]f64 = [
    263 	1.605231462693062999102599e+00,
    264 	2.0462560018708770653153909e+00,
    265 	-1.2841708730962657801275038e+00,
    266 	1.6115563905281545116286206e+00,
    267 	2.2655365644872016636317461e+00,
    268 	1.0737652208918379856272735e+00,
    269 	1.6542360106073546632707956e+00,
    270 	1.0035467127723465801264487e+00,
    271 	6.0174879014578057187016475e-01,
    272 	2.161703872847352815363655e+00,
    273 ];
    274 const TEST_LOG10: [_]f64 = [
    275 	6.9714316642508290997617083e-01,
    276 	8.886776901739320576279124e-01,
    277 	-5.5770832400658929815908236e-01,
    278 	6.998900476822994346229723e-01,
    279 	9.8391002850684232013281033e-01,
    280 	4.6633031029295153334285302e-01,
    281 	7.1842557117242328821552533e-01,
    282 	4.3583479968917773161304553e-01,
    283 	2.6133617905227038228626834e-01,
    284 	9.3881606348649405716214241e-01,
    285 ];
    286 const TEST_LOG2: [_]f64 = [
    287 	2.3158594707062190618898251e+00,
    288 	2.9521233862883917703341018e+00,
    289 	-1.8526669502700329984917062e+00,
    290 	2.3249844127278861543568029e+00,
    291 	3.268478366538305087466309e+00,
    292 	1.5491157592596970278166492e+00,
    293 	2.3865580889631732407886495e+00,
    294 	1.447811865817085365540347e+00,
    295 	8.6813999540425116282815557e-01,
    296 	3.118679457227342224364709e+00,
    297 ];
    298 const TEST_LOG1P: []f64 = [
    299 	4.8590257759797794104158205e-02,
    300 	7.4540265965225865330849141e-02,
    301 	-2.7726407903942672823234024e-03,
    302 	-5.1404917651627649094953380e-02,
    303 	9.1998280672258624681335010e-02,
    304 	2.8843762576593352865894824e-02,
    305 	5.0969534581863707268992645e-02,
    306 	2.6913947602193238458458594e-02,
    307 	1.8088493239630770262045333e-02,
    308 	-9.0865245631588989681559268e-02,
    309 ];
    310 const TEST_MODFRAC: [_](f64, f64) = [
    311 	(4f64, 9.7901192488367350108546816e-01),
    312 	(7f64, 7.3887247457810456552351752e-01),
    313 	(-0f64, -2.7688005719200159404635997e-01),
    314 	(-5f64, -1.060361827107492160848778e-02),
    315 	(9f64, 6.3629370719841737980004837e-01),
    316 	(2f64, 9.2637723924396464525443662e-01),
    317 	(5f64, 2.2908343145930665230025625e-01),
    318 	(2f64, 7.2793991043601025126008608e-01),
    319 	(1f64, 8.2530809168085506044576505e-01),
    320 	(-8f64, -6.8592476857560136238589621e-01),
    321 ];
    322 const TEST_POW: [_]f64 = [
    323 	9.5282232631648411840742957e+04,
    324 	5.4811599352999901232411871e+07,
    325 	5.2859121715894396531132279e-01,
    326 	9.7587991957286474464259698e-06,
    327 	4.328064329346044846740467e+09,
    328 	8.4406761805034547437659092e+02,
    329 	1.6946633276191194947742146e+05,
    330 	5.3449040147551939075312879e+02,
    331 	6.688182138451414936380374e+01,
    332 	2.0609869004248742886827439e-09,
    333 ];
    334 const TEST_ROUND: [_]f64 = [
    335 	5.0f64,
    336 	8.0f64,
    337 	-0.0f64,
    338 	-5.0f64,
    339 	10.0f64,
    340 	3.0f64,
    341 	5.0f64,
    342 	3.0f64,
    343 	2.0f64,
    344 	-9.0f64,
    345 ];
    346 const TEST_SIGNF: [_]i8 = [
    347 	1,
    348 	1,
    349 	-1,
    350 	-1,
    351 	1,
    352 	1,
    353 	1,
    354 	1,
    355 	1,
    356 	-1,
    357 ];
    358 const TEST_SIN: [_]f64 = [
    359 	-9.6466616586009283766724726e-01,
    360 	9.9338225271646545763467022e-01,
    361 	-2.7335587039794393342449301e-01,
    362 	9.5586257685042792878173752e-01,
    363 	-2.099421066779969164496634e-01,
    364 	2.135578780799860532750616e-01,
    365 	-8.694568971167362743327708e-01,
    366 	4.019566681155577786649878e-01,
    367 	9.6778633541687993721617774e-01,
    368 	-6.734405869050344734943028e-01,
    369 ];
    370 // Results for 100000 * PI + TEST_INPUTS[i]
    371 const TEST_SINLARGE: [_]f64 = [
    372 	-9.646661658548936063912e-01,
    373 	9.933822527198506903752e-01,
    374 	-2.7335587036246899796e-01,
    375 	9.55862576853689321268e-01,
    376 	-2.099421066862688873691e-01,
    377 	2.13557878070308981163e-01,
    378 	-8.694568970959221300497e-01,
    379 	4.01956668098863248917e-01,
    380 	9.67786335404528727927e-01,
    381 	-6.7344058693131973066e-01,
    382 ];
    383 const TEST_SINH: [_]f64 = [
    384 	7.2661916084208532301448439e+01,
    385 	1.1479409110035194500526446e+03,
    386 	-2.8043136512812518927312641e-01,
    387 	-7.499429091181587232835164e+01,
    388 	7.6552466042906758523925934e+03,
    389 	9.3031583421672014313789064e+00,
    390 	9.330815755828109072810322e+01,
    391 	7.6179893137269146407361477e+00,
    392 	3.021769180549615819524392e+00,
    393 	-2.95950575724449499189888e+03,
    394 ];
    395 const TEST_SQRT: [_]f64 = [
    396 	2.2313699659365484748756904e+00,
    397 	2.7818829009464263511285458e+00,
    398 	5.2619393496314796848143251e-01,
    399 	2.2384377628763938724244104e+00,
    400 	3.1042380236055381099288487e+00,
    401 	1.7106657298385224403917771e+00,
    402 	2.286718922705479046148059e+00,
    403 	1.6516476350711159636222979e+00,
    404 	1.3510396336454586262419247e+00,
    405 	2.9471892997524949215723329e+00,
    406 ];
    407 const TEST_TAN: [_]f64 = [
    408 	-3.661316565040227801781974e+00,
    409 	8.64900232648597589369854e+00,
    410 	-2.8417941955033612725238097e-01,
    411 	3.253290185974728640827156e+00,
    412 	2.147275640380293804770778e-01,
    413 	-2.18600910711067004921551e-01,
    414 	-1.760002817872367935518928e+00,
    415 	-4.389808914752818126249079e-01,
    416 	-3.843885560201130679995041e+00,
    417 	9.10988793377685105753416e-01,
    418 ];
    419 // Results for 100000 * PI + TEST_INPUTS[i]
    420 const TEST_TANLARGE: [_]f64 = [
    421 	-3.66131656475596512705e+00,
    422 	8.6490023287202547927e+00,
    423 	-2.841794195104782406e-01,
    424 	3.2532901861033120983e+00,
    425 	2.14727564046880001365e-01,
    426 	-2.18600910700688062874e-01,
    427 	-1.760002817699722747043e+00,
    428 	-4.38980891453536115952e-01,
    429 	-3.84388555942723509071e+00,
    430 	9.1098879344275101051e-01,
    431 ];
    432 const TEST_TANH: [_]f64 = [
    433 	9.9990531206936338549262119e-01,
    434 	9.9999962057085294197613294e-01,
    435 	-2.7001505097318677233756845e-01,
    436 	-9.9991110943061718603541401e-01,
    437 	9.9999999146798465745022007e-01,
    438 	9.9427249436125236705001048e-01,
    439 	9.9994257600983138572705076e-01,
    440 	9.9149409509772875982054701e-01,
    441 	9.4936501296239685514466577e-01,
    442 	-9.9999994291374030946055701e-01,
    443 ];
    444 const TEST_TRUNC: [_]f64 = [
    445 	4.0000000000000000e+00,
    446 	7.0000000000000000e+00,
    447 	-0.0000000000000000e+00,
    448 	-5.0000000000000000e+00,
    449 	9.0000000000000000e+00,
    450 	2.0000000000000000e+00,
    451 	5.0000000000000000e+00,
    452 	2.0000000000000000e+00,
    453 	1.0000000000000000e+00,
    454 	-8.0000000000000000e+00,
    455 ];