Pathological floating point problems: Difference between revisions

Added Wren
m (→‎{{header|REXX}}: added a word to the REXX section header.)
(Added Wren)
Line 3,867:
Rounded: -0.8273960599468213681411650955
Exact: -54767/66192</pre>
 
=={{header|Wren}}==
{{trans|Kotlin}}
{{libheader|Wren-big}}
{{libheader|Wren-fmt}}
<lang ecmascript>import "/big" for BigRat
import "/fmt" for Fmt
 
var LIMIT = 100
var bigE = BigRat.fromDecimal("2.71828182845904523536028747135266249775724709369995")
 
// v(n) sequence task
var c1 = BigRat.new(111)
var c2 = BigRat.new(1130)
var c3 = BigRat.new(3000)
var v1 = BigRat.two
var v2 = BigRat.new(-4)
for (i in 3..LIMIT) {
var v3 = c1 - c2/v2 + c3/(v2*v1)
Fmt.print("$3d : $19s", i, v3.toDecimal(16, true, true))
v1 = v2
v2 = v3
}
 
// Chaotic Building Society task
var balance = bigE - 1
for (year in 1..25) balance = balance * year - 1
System.print("\nBalance after 25 years is %(balance.toDecimal(16))")
 
// Siegfried Rump task
var a = BigRat.new(77617)
var b = BigRat.new(33096)
var c4 = BigRat.new(33375, 100)
var c5 = BigRat.new(11)
var c6 = BigRat.new(121)
var c7 = BigRat.new(11, 2)
var f = c4 * b.pow(6) + c7 * b.pow(8) + a/(b*2)
var c8 = c5 * a.pow(2) * b.pow(2) - b.pow(6) - c6 * b.pow(4) - 2
f = f + c8 * a.pow(2)
System.print("\nf(77617.0, 33096.0) is %(f.toDecimal(16))")</lang>
 
{{out}}
<pre>
3 : 18.5000000000000000
4 : 9.3783783783783784
5 : 7.8011527377521614
6 : 7.1544144809752494
7 : 6.8067847369236330
8 : 6.5926327687044384
9 : 6.4494659337902880
10 : 6.3484520566543571
11 : 6.2744385982163279
12 : 6.2186957398023978
13 : 6.1758373049212301
14 : 6.1423590812383559
15 : 6.1158830665510808
16 : 6.0947394393336811
17 : 6.0777223048472427
18 : 6.0639403224998088
19 : 6.0527217610161522
20 : 6.0435521101892689
21 : 6.0360318810818568
22 : 6.0298473250239019
23 : 6.0247496523668479
24 : 6.0205399840615161
25 : 6.0170582573289876
26 : 6.0141749145508190
27 : 6.0117845878713337
28 : 6.0098012392984846
29 : 6.0081543789122289
30 : 6.0067860930312058
31 : 6.0056486887714203
32 : 6.0047028131881752
33 : 6.0039159416664605
34 : 6.0032611563057406
35 : 6.0027161539543513
36 : 6.0022624374405593
37 : 6.0018846538818819
38 : 6.0015700517342190
39 : 6.0013080341649643
40 : 6.0010897908901841
41 : 6.0009079941545271
42 : 6.0007565473053508
43 : 6.0006303766028389
44 : 6.0005252586505718
45 : 6.0004376772265183
46 : 6.0003647044182955
47 : 6.0003039018761868
48 : 6.0002532387368678
49 : 6.0002110233741743
50 : 6.0001758466271872
51 : 6.0001465345613879
52 : 6.0001221091522881
53 : 6.0001017555560260
54 : 6.0000847948586303
55 : 6.0000706613835716
56 : 6.0000588837928413
57 : 6.0000490693458029
58 : 6.0000408907870884
59 : 6.0000340754236785
60 : 6.0000283960251310
61 : 6.0000236632422855
62 : 6.0000197192908008
63 : 6.0000164326883272
64 : 6.0000136938694348
65 : 6.0000114115318177
66 : 6.0000095095917616
67 : 6.0000079246472413
68 : 6.0000066038639788
69 : 6.0000055032139253
70 : 6.0000045860073981
71 : 6.0000038216699107
72 : 6.0000031847228971
73 : 6.0000026539343389
74 : 6.0000022116109709
75 : 6.0000018430084630
76 : 6.0000015358399141
77 : 6.0000012798662675
78 : 6.0000010665549954
79 : 6.0000008887956715
80 : 6.0000007406629499
81 : 6.0000006172190487
82 : 6.0000005143491543
83 : 6.0000004286242585
84 : 6.0000003571868566
85 : 6.0000002976556961
86 : 6.0000002480464011
87 : 6.0000002067053257
88 : 6.0000001722544322
89 : 6.0000001435453560
90 : 6.0000001196211272
91 : 6.0000000996842706
92 : 6.0000000830702242
93 : 6.0000000692251858
94 : 6.0000000576876542
95 : 6.0000000480730447
96 : 6.0000000400608703
97 : 6.0000000333840583
98 : 6.0000000278200485
99 : 6.0000000231833736
100 : 6.0000000193194779
 
Balance after 25 years is 0.0399387296732302
 
f(77617.0, 33096.0) is -0.8273960599468214
<pre>
 
=={{header|zkl}}==
9,482

edits