Made fl2exp' and
fl2log' not depend on correctly rounded `flexpt'
This commit is contained in:
parent
0182e3ff33
commit
efaa5bd181
|
@ -47,15 +47,19 @@ negative.
|
|||
(cond [(x . fl> . expm1-max) (values x 0.0 0.0)]
|
||||
[(x . fl>= . expm1-min)
|
||||
(define k (flfloor (fl/ (fllog x) (fllog base))))
|
||||
(define expm1-b^k (vector-ref positive-ds (- (fl->exact-integer k) kmin)))
|
||||
(define i (- (fl->exact-integer k) kmin))
|
||||
(define expm1-b^k (vector-ref positive-ds i))
|
||||
(define b^k (vector-ref base^ks i))
|
||||
(let*-values ([(d2 d1) (values (car expm1-b^k) (cdr expm1-b^k))])
|
||||
(values (fl- x (flexpt base k)) d2 d1))]
|
||||
(values (fl- x b^k) d2 d1))]
|
||||
[(x . fl> . (- expm1-min)) (values x 0.0 0.0)]
|
||||
[(x . fl> . -650.0)
|
||||
(define k (flfloor (fl/ (fllog (- x)) (fllog base))))
|
||||
(define expm1-b^k (vector-ref negative-ds (- (fl->exact-integer k) kmin)))
|
||||
(define i (- (fl->exact-integer k) kmin))
|
||||
(define expm1-b^k (vector-ref negative-ds i))
|
||||
(define b^k (vector-ref base^ks i))
|
||||
(let*-values ([(d2 d1) (values (car expm1-b^k) (cdr expm1-b^k))])
|
||||
(values (fl+ x (flexpt base k)) d2 d1))]
|
||||
(values (fl+ x b^k) d2 d1))]
|
||||
[(x . fl> . (fllog +min.0))
|
||||
;; This special case keeps flexpm1-reduction from returning subnormals
|
||||
(values (fl+ x 650.0) expm1-neg-650-hi expm1-neg-650-lo)]
|
||||
|
@ -67,6 +71,11 @@ negative.
|
|||
(require "../../../bigfloat.rkt"
|
||||
"expansion-base.rkt")
|
||||
|
||||
(: base^ks (Vectorof Flonum))
|
||||
;; base^k for each kmin <= k <= kmax
|
||||
(define base^ks
|
||||
(build-vector (- (+ kmax 1) kmin) (λ: ([k : Index]) (flexpt base (fl (+ k kmin))))))
|
||||
|
||||
(: positive-ds (Vectorof (Pair Flonum Flonum)))
|
||||
;; exp(base^k) - 1 for each kmin <= k <= kmax
|
||||
(define positive-ds
|
||||
|
@ -88,6 +97,472 @@ negative.
|
|||
(cons y2 y1)))))
|
||||
|#
|
||||
|
||||
(: base^ks (Vectorof Flonum))
|
||||
(define base^ks
|
||||
#(0.0004849953040935936
|
||||
0.0005001514073465185
|
||||
0.0005157811388260972
|
||||
0.0005318992994144127
|
||||
0.0005485211525211131
|
||||
0.0005656624385373979
|
||||
0.0005833393897416915
|
||||
0.0006015687456711194
|
||||
0.0006203677689733418
|
||||
0.0006397542617537588
|
||||
0.0006597465824335637
|
||||
0.0006803636631346127
|
||||
0.0007016250276075693
|
||||
0.0007235508097203059
|
||||
0.0007461617725240654
|
||||
0.0007694793279154424
|
||||
0.0007935255569128001
|
||||
0.000818323230566325
|
||||
0.0008438958315215226
|
||||
0.0008702675762565702
|
||||
0.0008974634380145881
|
||||
0.0009255091704525439
|
||||
0.000954431332029186
|
||||
0.000984257311155098
|
||||
0.0010150153521286949
|
||||
0.0010467345818827166
|
||||
0.0010794450375665515
|
||||
0.0011131776949905063
|
||||
0.0011479644979589595
|
||||
0.001183838388520177
|
||||
0.0012208333381614324
|
||||
0.0012589843799789772
|
||||
0.0012983276418533202
|
||||
0.0013389003806612365
|
||||
0.0013807410175569002
|
||||
0.0014238891743555532
|
||||
0.0014683857110541643
|
||||
0.001514272764524607
|
||||
0.001561593788416001
|
||||
0.001610393594304001
|
||||
0.001660718394126001
|
||||
0.0017126158439424385
|
||||
0.0017661350890656397
|
||||
0.0018213268105989411
|
||||
0.001878243273430158
|
||||
0.0019369383757248503
|
||||
0.001997467699966252
|
||||
0.0020598885655901972
|
||||
0.002124260083264891
|
||||
0.002190643210866919
|
||||
0.00225910081120651
|
||||
0.0023296977115567137
|
||||
0.0024025007650428608
|
||||
0.0024775789139504503
|
||||
0.002555003255011402
|
||||
0.002634847106730508
|
||||
0.0027171860788158366
|
||||
0.002802098143778831
|
||||
0.00288966371077192
|
||||
0.002979965701733542
|
||||
0.0030730896299127155
|
||||
0.003169123680847488
|
||||
0.003268158795873972
|
||||
0.0033702887582450335
|
||||
0.003475610281940191
|
||||
0.0035842231032508216
|
||||
0.00369623007522741
|
||||
0.0038117372650782666
|
||||
0.003930854054611963
|
||||
0.004053693243818586
|
||||
0.004180371157687917
|
||||
0.004311007756365664
|
||||
0.004445726748752091
|
||||
0.004584655709650594
|
||||
0.004727926200577175
|
||||
0.004875673894345212
|
||||
0.0050280387035435
|
||||
0.005185164913029235
|
||||
0.005347201316561398
|
||||
0.005514301357703941
|
||||
0.00568662327513219
|
||||
0.005864330252480071
|
||||
0.006047590572870073
|
||||
0.006236577778272263
|
||||
0.00643147083384327
|
||||
0.006632454297400873
|
||||
0.00683971849419465
|
||||
0.007053459697138233
|
||||
0.007273880312673803
|
||||
0.007501189072444859
|
||||
0.007735601230958761
|
||||
0.007977338769426223
|
||||
0.008226630605970791
|
||||
0.008483712812407378
|
||||
0.00874882883779511
|
||||
0.009022229738976206
|
||||
0.009304174418319213
|
||||
0.009594929868891688
|
||||
0.009894771427294554
|
||||
0.010203983034397509
|
||||
0.010522857504222431
|
||||
0.010851696801229382
|
||||
0.0111908123262678
|
||||
0.011540525211463669
|
||||
0.011901166624321908
|
||||
0.012273078081331969
|
||||
0.012656611771373592
|
||||
0.013052130889229017
|
||||
0.013460009979517424
|
||||
0.013880635291377343
|
||||
0.014314405144232885
|
||||
0.014761730304990162
|
||||
0.015223034377021105
|
||||
0.015698754201303015
|
||||
0.016189340270093736
|
||||
0.016695257153534163
|
||||
0.017216983939582105
|
||||
0.017755014687694047
|
||||
0.018309858896684485
|
||||
0.018882041987205875
|
||||
0.01947210579930606
|
||||
0.020080609105534372
|
||||
0.020708128140082323
|
||||
0.021355257144459894
|
||||
0.022022608930224268
|
||||
0.022710815459293775
|
||||
0.023420528442396706
|
||||
0.024152419956221603
|
||||
0.02490718307985353
|
||||
0.02568553255109895
|
||||
0.026488205443320794
|
||||
0.027315961863424568
|
||||
0.028169585671656585
|
||||
0.029049885223895854
|
||||
0.0299576941371426
|
||||
0.030893872078928304
|
||||
0.03185930558139482
|
||||
0.032854908880813403
|
||||
0.03388162478333882
|
||||
0.03494042555781816
|
||||
0.03603231385649998
|
||||
0.0371583236645156
|
||||
0.03831952127903172
|
||||
0.03951700631900146
|
||||
0.04075191276647025
|
||||
0.04202541004042245
|
||||
0.043338704104185645
|
||||
0.04469303860744145
|
||||
0.046089696063924
|
||||
0.04752999906592162
|
||||
0.04901531153673167
|
||||
0.05054704002225453
|
||||
0.05212663502294999
|
||||
0.05375559236741718
|
||||
0.05543545462889896
|
||||
0.05716781258605205
|
||||
0.058954306729366183
|
||||
0.060796628814658873
|
||||
0.06269652346511696
|
||||
0.06465578982340187
|
||||
0.06667628325538318
|
||||
0.0687599171071139
|
||||
0.07090866451671121
|
||||
0.07312456028285844
|
||||
0.07540970279169776
|
||||
0.07776625600393831
|
||||
0.08019645150406139
|
||||
0.0827025906135633
|
||||
0.08528704657023717
|
||||
0.08795226677555708
|
||||
0.09070077511229323
|
||||
0.0935351743345524
|
||||
0.09645814853250716
|
||||
0.09947246567414801
|
||||
0.10258098022646514
|
||||
0.10578663585854217
|
||||
0.10909246822912161
|
||||
0.11250160786128166
|
||||
0.11601728310694671
|
||||
0.1196428232040388
|
||||
0.12338166142916501
|
||||
0.12723733834882642
|
||||
0.13121350517222724
|
||||
0.13531392720885935
|
||||
0.1395424874341362
|
||||
0.14390319016645295
|
||||
0.1484001648591546
|
||||
0.15303767001100319
|
||||
0.15782009719884704
|
||||
0.16275197523631102
|
||||
0.16783797446244572
|
||||
0.17308291116439717
|
||||
0.17849175213828458
|
||||
0.18406961939260597
|
||||
0.1898217949986249
|
||||
0.19575372609233194
|
||||
0.2018710300327173
|
||||
0.20817949972123972
|
||||
0.21468510908752847
|
||||
0.22139401874651374
|
||||
0.22831258183234227
|
||||
0.23544735001460299
|
||||
0.24280507970255932
|
||||
0.2503927384432643
|
||||
0.2582175115196163
|
||||
0.2662868087546043
|
||||
0.2746082715281857
|
||||
0.2831897800134415
|
||||
0.29203946063886155
|
||||
0.30116569378382596
|
||||
0.3105771217145705
|
||||
0.3202826567681509
|
||||
0.33029148979215556
|
||||
0.34061309884816043
|
||||
0.35125725818716547
|
||||
0.36223404750551436
|
||||
0.3735538614900617
|
||||
0.3852274196616261
|
||||
0.39726577652605194
|
||||
0.40968033204249105
|
||||
0.4224828424188189
|
||||
0.435685431244407
|
||||
0.4493006009707947
|
||||
0.46334124475113203
|
||||
0.47782065864960493
|
||||
0.4927525542324051
|
||||
0.5081510715521678
|
||||
0.524030792538173
|
||||
0.5404067548049909
|
||||
0.5572944658926469
|
||||
0.574709917951792
|
||||
0.5926696028877856
|
||||
0.6111905279780289
|
||||
0.6302902319773422
|
||||
0.6499868017266343
|
||||
0.6702988892805916
|
||||
0.69124572957061
|
||||
0.7128471586196916
|
||||
0.735123632326557
|
||||
0.7580962458367618
|
||||
0.7817867535191607
|
||||
0.8062175895666345
|
||||
0.8314118892405917
|
||||
0.8573935107793602
|
||||
0.8841870579912152
|
||||
0.9118179035534407
|
||||
0.9403122130394858
|
||||
0.9696969696969697
|
||||
1.0
|
||||
1.03125
|
||||
1.0634765625
|
||||
1.096710205078125
|
||||
1.1309823989868164
|
||||
1.1663255989551544
|
||||
1.202773273922503
|
||||
1.2403599387325812
|
||||
1.2791211868179744
|
||||
1.319093723906036
|
||||
1.3603154027780997
|
||||
1.4028252591149153
|
||||
1.4466635484622565
|
||||
1.491871784351702
|
||||
1.5384927776126927
|
||||
1.5865706769130892
|
||||
1.6361510105666233
|
||||
1.6872807296468302
|
||||
1.7400082524482938
|
||||
1.794383510337303
|
||||
1.8504579950353437
|
||||
1.9082848073801981
|
||||
1.9679187076108293
|
||||
2.0294161672236677
|
||||
2.0928354224494075
|
||||
2.158236529400951
|
||||
2.225681420944731
|
||||
2.295233965349254
|
||||
2.366960026766418
|
||||
2.440927527602869
|
||||
2.5172065128404584
|
||||
2.5958692163667227
|
||||
2.676990129378183
|
||||
2.760646070921251
|
||||
2.8469162606375398
|
||||
2.935882393782463
|
||||
3.027628718588165
|
||||
3.1222421160440454
|
||||
3.2198121821704215
|
||||
3.3204313128632474
|
||||
3.424194791390224
|
||||
3.5312008786211684
|
||||
3.6415509060780797
|
||||
3.7553493718930198
|
||||
3.8727040397646766
|
||||
3.993726041007323
|
||||
4.118529979788802
|
||||
4.247234041657202
|
||||
4.37996010545899
|
||||
4.516833858754583
|
||||
4.657984916840664
|
||||
4.803546945491934
|
||||
4.953657787538557
|
||||
5.108459593399137
|
||||
5.26809895569286
|
||||
5.432727048058262
|
||||
5.602499768310082
|
||||
5.777577886069773
|
||||
5.958127195009453
|
||||
6.144318669853498
|
||||
6.33632862828642
|
||||
6.534338897920371
|
||||
6.738536988480383
|
||||
6.9491162693703945
|
||||
7.166276152788219
|
||||
7.390222282562851
|
||||
7.62116672889294
|
||||
7.859328189170845
|
||||
8.104932195082434
|
||||
8.35821132617876
|
||||
8.619405430121846
|
||||
8.888761849813154
|
||||
9.166535657619814
|
||||
9.452989896920434
|
||||
9.748395831199197
|
||||
10.053033200924173
|
||||
10.367190488453053
|
||||
10.69116519121721
|
||||
11.025264103442748
|
||||
11.369803606675335
|
||||
11.725109969383938
|
||||
12.091519655927186
|
||||
12.46937964517491
|
||||
12.859047759086627
|
||||
13.260893001558085
|
||||
13.675295907856775
|
||||
14.102648904977299
|
||||
14.543356683257839
|
||||
14.997836579609647
|
||||
15.466518972722447
|
||||
15.949847690620023
|
||||
16.4482804309519
|
||||
16.962289194419146
|
||||
17.492360731744746
|
||||
18.03899700461177
|
||||
18.602715661005888
|
||||
19.18405052541232
|
||||
19.783552104331456
|
||||
20.401788107591813
|
||||
21.03934398595406
|
||||
21.69682348551512
|
||||
22.37484921943747
|
||||
23.07406325754489
|
||||
23.79512773434317
|
||||
24.538725476041392
|
||||
25.305560647167685
|
||||
26.096359417391675
|
||||
26.911870649185165
|
||||
27.7528666069722
|
||||
28.620143688440084
|
||||
29.514523178703836
|
||||
30.43685202803833
|
||||
31.388003653914527
|
||||
32.36887876809936
|
||||
33.380406229602464
|
||||
34.42354392427754
|
||||
35.49927967191121
|
||||
36.60863216165844
|
||||
37.75265191671026
|
||||
38.93242228910746
|
||||
40.14906048564207
|
||||
41.403718625818385
|
||||
42.69758483287521
|
||||
44.03188435890256
|
||||
45.40788074511826
|
||||
46.82687701840321
|
||||
48.29021692522831
|
||||
49.799286204141694
|
||||
51.35551389802112
|
||||
52.960373707334284
|
||||
54.61538538568848
|
||||
56.322116178991244
|
||||
58.08218230958472
|
||||
59.89725050675924
|
||||
61.76903958509547
|
||||
63.6993220721297
|
||||
65.68992588688376
|
||||
67.74273607084888
|
||||
69.8596965730629
|
||||
72.04281209097111
|
||||
74.29414996881395
|
||||
76.6158421553394
|
||||
79.01008722269376
|
||||
81.47915244840293
|
||||
84.02537596241552
|
||||
86.65116896124101
|
||||
89.35901799127979
|
||||
92.15148730350728
|
||||
95.03122128174189
|
||||
98.00094694679632
|
||||
101.0634765388837
|
||||
104.22171018072382
|
||||
107.47863862387145
|
||||
110.83734608086742
|
||||
114.30101314589453
|
||||
117.87291980670373
|
||||
121.55644855066323
|
||||
125.35508756787145
|
||||
129.27243405436744
|
||||
133.31219761856642
|
||||
137.47820379414662
|
||||
141.7743976627137
|
||||
146.2048475896735
|
||||
150.7737490768508
|
||||
155.48542873550238
|
||||
160.34434838348685
|
||||
165.3551092704708
|
||||
170.522456435173
|
||||
175.85128319877217
|
||||
181.34663579873381
|
||||
187.01371816744424
|
||||
192.85789686017688
|
||||
198.8847061370574
|
||||
205.09985320384044
|
||||
211.50922361646045
|
||||
218.11888685447485
|
||||
224.93510206867717
|
||||
231.96432400832333
|
||||
239.21320913358343
|
||||
246.68862191900791
|
||||
254.39764135397692
|
||||
262.3475676462887
|
||||
270.5459291352352
|
||||
279.00048942071135
|
||||
287.71925471510855
|
||||
296.7104814249557
|
||||
305.98268396948555
|
||||
315.54464284353196
|
||||
325.4054129323924
|
||||
335.57433208652964
|
||||
346.0610299642337
|
||||
356.875437150616
|
||||
368.0277945615727
|
||||
379.52866314162185
|
||||
391.38893386479754
|
||||
403.6198380480725
|
||||
416.23295798707477
|
||||
429.24023792417086
|
||||
442.6539953593012
|
||||
456.4869327142793
|
||||
470.7521493616006
|
||||
485.4631540291506
|
||||
500.63387759256153
|
||||
516.2786862673291
|
||||
532.4123952131831
|
||||
549.050282563595
|
||||
566.2081038937074
|
||||
583.9021071403857
|
||||
602.1490479885229
|
||||
620.9662057381641
|
||||
640.3713996674818
|
||||
660.3830059070906
|
||||
681.0199748416873
|
||||
702.3018490554899
|
||||
724.248781838474))
|
||||
|
||||
(: positive-ds (Vectorof (Pair Flonum Flonum)))
|
||||
(define positive-ds
|
||||
#((0.00048511293333186416 . 7.287053259455084e-21)
|
||||
|
|
Loading…
Reference in New Issue
Block a user