@@ -227,6 +227,51 @@ alignas(64) const double LOG_R[128] = {
227
227
0x1 .5707a26bb8c66p-1 , 0x1 .5af405c3649ep-1 , 0x1 .5af405c3649ep-1 ,
228
228
0x1 .5ee82aa24192p-1 , 0x0 .000000000000p0};
229
229
230
+ alignas (64 ) const double LOG2_R[128 ] = {
231
+ 0x0 .0000000000000p+0 , 0x1 .72c7ba20f7327p-7 , 0x1 .743ee861f3556p-6 ,
232
+ 0x1 .184b8e4c56af8p-5 , 0x1 .77394c9d958d5p-5 , 0x1 .d6ebd1f1febfep -5 ,
233
+ 0x1 .1bb32a600549dp-4 , 0x1 .4c560fe68af88p-4 , 0x1 .7d60496cfbb4cp-4 ,
234
+ 0x1 .960caf9abb7cap-4 , 0x1 .c7b528b70f1c5p -4 , 0x1 .f9c95dc1d1165p -4 ,
235
+ 0x1 .097e38ce60649p-3 , 0x1 .22dadc2ab3497p-3 , 0x1 .3c6fb650cde51p-3 ,
236
+ 0x1 .494f863b8df35p-3 , 0x1 .633a8bf437ce1p-3 , 0x1 .7046031c79f85p-3 ,
237
+ 0x1 .8a8980abfbd32p-3 , 0x1 .97c1cb13c7ec1p-3 , 0x1 .b2602497d5346p -3 ,
238
+ 0x1 .bfc67a7fff4ccp -3 , 0x1 .dac22d3e441d3p -3 , 0x1 .e857d3d361368p -3 ,
239
+ 0x1 .01d9bbcfa61d4p-2 , 0x1 .08bce0d95fa38p-2 , 0x1 .169c05363f158p-2 ,
240
+ 0x1 .1d982c9d52708p-2 , 0x1 .249cd2b13cd6cp-2 , 0x1 .32bfee370ee68p-2 ,
241
+ 0x1 .39de8e1559f6fp-2 , 0x1 .4106017c3eca3p-2 , 0x1 .4f6fbb2cec598p-2 ,
242
+ 0x1 .56b22e6b578e5p-2 , 0x1 .5dfdcf1eeae0ep-2 , 0x1 .6552b49986277p-2 ,
243
+ 0x1 .6cb0f6865c8eap-2 , 0x1 .7b89f02cf2aadp-2 , 0x1 .8304d90c11fd3p-2 ,
244
+ 0x1 .8a8980abfbd32p-2 , 0x1 .921800924dd3bp-2 , 0x1 .99b072a96c6b2p-2 ,
245
+ 0x1 .a8ff971810a5ep -2 , 0x1 .b0b67f4f4681p -2 , 0x1 .b877c57b1b07p -2 ,
246
+ 0x1 .c043859e2fdb3p -2 , 0x1 .c819dc2d45fe4p -2 , 0x1 .cffae611ad12bp -2 ,
247
+ 0x1 .d7e6c0abc3579p -2 , 0x1 .dfdd89d586e2bp -2 , 0x1 .e7df5fe538ab3p -2 ,
248
+ 0x1 .efec61b011f85p -2 , 0x1 .f804ae8d0cd02p -2 , 0x1 .0014332be0033p-1 ,
249
+ 0x1 .042bd4b9a7c99p-1 , 0x1 .08494c66b8efp-1 , 0x1 .0c6caaf0c5597p-1 ,
250
+ 0x1 .1096015dee4dap-1 , 0x1 .14c560fe68af9p-1 , 0x1 .18fadb6e2d3c2p-1 ,
251
+ 0x1 .1d368296b5255p-1 , 0x1 .217868b0c37e8p-1 , 0x1 .25c0a0463bebp-1 ,
252
+ 0x1 .2a0f3c340705cp-1 , 0x1 .2e644fac04fd8p-1 , 0x1 .2e644fac04fd8p-1 ,
253
+ 0x1 .32bfee370ee68p-1 , 0x1 .37222bb70747cp-1 , 0x1 .3b8b1c68fa6edp-1 ,
254
+ 0x1 .3ffad4e74f1d6p-1 , 0x1 .44716a2c08262p-1 , 0x1 .44716a2c08262p-1 ,
255
+ 0x1 .48eef19317991p-1 , 0x1 .4d7380dcc422dp-1 , 0x1 .51ff2e30214bcp-1 ,
256
+ 0x1 .5692101d9b4a6p-1 , 0x1 .5b2c3da19723bp-1 , 0x1 .5b2c3da19723bp-1 ,
257
+ 0x1 .5fcdce2727ddbp-1 , 0x1 .6476d98ad990ap-1 , 0x1 .6927781d932a8p-1 ,
258
+ 0x1 .6927781d932a8p-1 , 0x1 .6ddfc2a78fc63p-1 , 0x1 .729fd26b707c8p-1 ,
259
+ 0x1 .7767c12967a45p-1 , 0x1 .7767c12967a45p-1 , 0x1 .7c37a9227e7fbp-1 ,
260
+ 0x1 .810fa51bf65fdp-1 , 0x1 .810fa51bf65fdp-1 , 0x1 .85efd062c656dp-1 ,
261
+ 0x1 .8ad846cf369a4p-1 , 0x1 .8ad846cf369a4p-1 , 0x1 .8fc924c89ac84p-1 ,
262
+ 0x1 .94c287492c4dbp-1 , 0x1 .94c287492c4dbp-1 , 0x1 .99c48be2063c8p-1 ,
263
+ 0x1 .9ecf50bf43f13p-1 , 0x1 .9ecf50bf43f13p-1 , 0x1 .a3e2f4ac43f6p -1 ,
264
+ 0x1 .a8ff971810a5ep -1 , 0x1 .a8ff971810a5ep -1 , 0x1 .ae255819f022dp -1 ,
265
+ 0x1 .b35458761d479p -1 , 0x1 .b35458761d479p -1 , 0x1 .b88cb9a2ab521p -1 ,
266
+ 0x1 .b88cb9a2ab521p -1 , 0x1 .bdce9dcc96187p -1 , 0x1 .c31a27dd00b4ap -1 ,
267
+ 0x1 .c31a27dd00b4ap -1 , 0x1 .c86f7b7ea4a89p -1 , 0x1 .c86f7b7ea4a89p -1 ,
268
+ 0x1 .cdcebd2373995p -1 , 0x1 .d338120a6dd9dp -1 , 0x1 .d338120a6dd9dp -1 ,
269
+ 0x1 .d8aba045b01c8p -1 , 0x1 .d8aba045b01c8p -1 , 0x1 .de298ec0bac0dp -1 ,
270
+ 0x1 .de298ec0bac0dp -1 , 0x1 .e3b20546f554ap -1 , 0x1 .e3b20546f554ap -1 ,
271
+ 0x1 .e9452c8a71028p -1 , 0x1 .e9452c8a71028p -1 , 0x1 .eee32e2aeccbfp -1 ,
272
+ 0x1 .eee32e2aeccbfp -1 , 0x1 .f48c34bd1e96fp -1 , 0x1 .f48c34bd1e96fp -1 ,
273
+ 0x1 .fa406bd2443dfp -1 , 0x1 .0000000000000p0};
274
+
230
275
// Generated by Sollya with:
231
276
// for i from 0 to 127 do {
232
277
// r = 2^-8 * ceil( 2^8 * (1 - 2^(-8)) / (1 + i*2^-7) );
@@ -395,6 +440,48 @@ alignas(64) const int S2[193] = {
395
440
-0x1cd , -0x1d1 , -0x1d5 , -0x1d9 , -0x1dd , -0x1e0 , -0x1e4 , -0x1e8 , -0x1ec ,
396
441
-0x1f0 , -0x1f4 , -0x1f8 , -0x1fc };
397
442
443
+ alignas (64 ) const double R2[193 ] = {
444
+ 0x1 .0101p0, 0x1 .00fdp0, 0x1 .00f9p0, 0x1 .00f5p0, 0x1 .00f1p0,
445
+ 0x1 .00edp0, 0x1 .00e9p0, 0x1 .00e5p0, 0x1 .00e1p0, 0x1 .00ddp0,
446
+ 0x1 .00d9p0, 0x1 .00d5p0, 0x1 .00d1p0, 0x1 .00cdp0, 0x1 .00c9p0,
447
+ 0x1 .00c5p0, 0x1 .00c1p0, 0x1 .00bdp0, 0x1 .00b9p0, 0x1 .00b4p0,
448
+ 0x1 .00bp0, 0x1 .00acp0, 0x1 .00a8p0, 0x1 .00a4p0, 0x1 .00ap0,
449
+ 0x1 .009cp0, 0x1 .0098p0, 0x1 .0094p0, 0x1 .009p0, 0x1 .008cp0,
450
+ 0x1 .0088p0, 0x1 .0084p0, 0x1 .008p0, 0x1 .007cp0, 0x1 .0078p0,
451
+ 0x1 .0074p0, 0x1 .007p0, 0x1 .006cp0, 0x1 .0068p0, 0x1 .0064p0,
452
+ 0x1 .006p0, 0x1 .005cp0, 0x1 .0058p0, 0x1 .0054p0, 0x1 .005p0,
453
+ 0x1 .004cp0, 0x1 .0048p0, 0x1 .0044p0, 0x1 .004p0, 0x1 .003cp0,
454
+ 0x1 .0038p0, 0x1 .0034p0, 0x1 .003p0, 0x1 .002cp0, 0x1 .0028p0,
455
+ 0x1 .0024p0, 0x1 .002p0, 0x1 .001cp0, 0x1 .0018p0, 0x1 .0014p0,
456
+ 0x1 .001p0, 0x1 .000cp0, 0x1 .0008p0, 0x1 .0004p0, 0x1p0,
457
+ 0x1 .fff8p -1 , 0x1 .fffp -1 , 0x1 .ffe8p -1 , 0x1 .ffep -1 , 0x1 .ffd8p -1 ,
458
+ 0x1 .ffdp -1 , 0x1 .ffc8p -1 , 0x1 .ffcp -1 , 0x1 .ffb8p -1 , 0x1 .ffbp -1 ,
459
+ 0x1 .ffa8p -1 , 0x1 .ffap -1 , 0x1 .ff98p -1 , 0x1 .ff9p -1 , 0x1 .ff88p -1 ,
460
+ 0x1 .ff8p -1 , 0x1 .ff78p -1 , 0x1 .ff7p -1 , 0x1 .ff68p -1 , 0x1 .ff6p -1 ,
461
+ 0x1 .ff58p -1 , 0x1 .ff5p -1 , 0x1 .ff48p -1 , 0x1 .ff4p -1 , 0x1 .ff38p -1 ,
462
+ 0x1 .ff3p -1 , 0x1 .ff28p -1 , 0x1 .ff2p -1 , 0x1 .ff18p -1 , 0x1 .ff1p -1 ,
463
+ 0x1 .ff08p -1 , 0x1 .ffp -1 , 0x1 .fef8p -1 , 0x1 .fefp -1 , 0x1 .fee8p -1 ,
464
+ 0x1 .feep -1 , 0x1 .fed8p -1 , 0x1 .fedp -1 , 0x1 .fec8p -1 , 0x1 .fecp -1 ,
465
+ 0x1 .feb8p -1 , 0x1 .febp -1 , 0x1 .fea8p -1 , 0x1 .feap -1 , 0x1 .fe98p -1 ,
466
+ 0x1 .fe92p -1 , 0x1 .fe8ap -1 , 0x1 .fe82p -1 , 0x1 .fe7ap -1 , 0x1 .fe72p -1 ,
467
+ 0x1 .fe6ap -1 , 0x1 .fe62p -1 , 0x1 .fe5ap -1 , 0x1 .fe52p -1 , 0x1 .fe4ap -1 ,
468
+ 0x1 .fe42p -1 , 0x1 .fe3ap -1 , 0x1 .fe32p -1 , 0x1 .fe2ap -1 , 0x1 .fe22p -1 ,
469
+ 0x1 .fe1ap -1 , 0x1 .fe12p -1 , 0x1 .fe0ap -1 , 0x1 .fe02p -1 , 0x1 .fdfap -1 ,
470
+ 0x1 .fdf2p -1 , 0x1 .fdeap -1 , 0x1 .fde2p -1 , 0x1 .fddap -1 , 0x1 .fdd2p -1 ,
471
+ 0x1 .fdcap -1 , 0x1 .fdc2p -1 , 0x1 .fdbap -1 , 0x1 .fdb2p -1 , 0x1 .fdaap -1 ,
472
+ 0x1 .fda2p -1 , 0x1 .fd9ap -1 , 0x1 .fd92p -1 , 0x1 .fd8cp -1 , 0x1 .fd84p -1 ,
473
+ 0x1 .fd7cp -1 , 0x1 .fd74p -1 , 0x1 .fd6cp -1 , 0x1 .fd64p -1 , 0x1 .fd5cp -1 ,
474
+ 0x1 .fd54p -1 , 0x1 .fd4cp -1 , 0x1 .fd44p -1 , 0x1 .fd3cp -1 , 0x1 .fd34p -1 ,
475
+ 0x1 .fd2cp -1 , 0x1 .fd24p -1 , 0x1 .fd1cp -1 , 0x1 .fd14p -1 , 0x1 .fd0cp -1 ,
476
+ 0x1 .fd04p -1 , 0x1 .fcfcp -1 , 0x1 .fcf4p -1 , 0x1 .fcecp -1 , 0x1 .fce4p -1 ,
477
+ 0x1 .fcdcp -1 , 0x1 .fcd6p -1 , 0x1 .fccep -1 , 0x1 .fcc6p -1 , 0x1 .fcbep -1 ,
478
+ 0x1 .fcb6p -1 , 0x1 .fcaep -1 , 0x1 .fca6p -1 , 0x1 .fc9ep -1 , 0x1 .fc96p -1 ,
479
+ 0x1 .fc8ep -1 , 0x1 .fc86p -1 , 0x1 .fc7ep -1 , 0x1 .fc76p -1 , 0x1 .fc6ep -1 ,
480
+ 0x1 .fc66p -1 , 0x1 .fc5ep -1 , 0x1 .fc56p -1 , 0x1 .fc4ep -1 , 0x1 .fc46p -1 ,
481
+ 0x1 .fc4p -1 , 0x1 .fc38p -1 , 0x1 .fc3p -1 , 0x1 .fc28p -1 , 0x1 .fc2p -1 ,
482
+ 0x1 .fc18p -1 , 0x1 .fc1p -1 , 0x1 .fc08p -1 ,
483
+ };
484
+
398
485
// Logarithm range reduction - Step 3:
399
486
// r(k) = 2^-21 round(2^21 / (1 + k*2^-21)) for k = -80 .. 80.
400
487
// Output range:
0 commit comments