Pathological floating point problems: Difference between revisions

m
(Added XPL0 example.)
m (→‎{{header|Wren}}: Minor tidy)
(3 intermediate revisions by 2 users not shown)
Line 1,980:
=={{header|Fōrmulæ}}==
 
{{FormulaeEntry|page=https://formulae.org/?script=examples/Pathological_floating_point_problems}}
Fōrmulæ programs are not textual, visualization/edition of programs is done showing/manipulating structures but not text. Moreover, there can be multiple visual representations of the same program. Even though it is possible to have textual representation —i.e. XML, JSON— they are intended for storage and transfer purposes more than visualization and edition.
 
'''Solution'''
Programs in Fōrmulæ are created/edited online in its [https://formulae.org website], However they run on execution servers. By default remote servers are used, but they are limited in memory and processing power, since they are intended for demonstration and casual use. A local server can be downloaded and installed, it has no limitations (it runs in your own computer). Because of that, example programs can be fully visualized and edited, but some of them will not run if they require a moderate or heavy computation/memory resources, and no local server is being used.
 
'''Case 1. Introduction example'''
In '''[https://formulae.org/?example=Pathological_floating_point_problems this]''' page you can see the program(s) related to this task and their results.
 
[[File:Fōrmulæ - Pathological floating point problems 01.png]]
 
[[File:Fōrmulæ - Pathological floating point problems 02.png]]
 
'''Case 2. A sequence that seems to converge to a wrong limit'''
 
[[File:Fōrmulæ - Pathological floating point problems 03.png]]
 
[[File:Fōrmulæ - Pathological floating point problems 04.png]]
 
'''Case 3. The Chaotic Bank Society'''
 
[[File:Fōrmulæ - Pathological floating point problems 05.png]]
 
[[File:Fōrmulæ - Pathological floating point problems 06.png]]
 
'''Case 4. Siegfried Rump's example'''
 
[[File:Fōrmulæ - Pathological floating point problems 07.png]]
 
[[File:Fōrmulæ - Pathological floating point problems 08.png]]
 
=={{header|Go}}==
Line 2,782 ⟶ 2,804:
f(77617.0, 33096.0) is -0.8273960599468214
</pre>
 
=={{header|M2000 Interpreter}}==
From n=26 we get wrong numbers (not shown here). For Task 2 only Decimal can show a good result, although has less accuracy.
 
<syntaxhighlight lang="m2000 interpreter">
module Pathological_floating_point_problems{
decimal vn[3]
vn[1]=2
vn[2]=-4
for i=3 to 100
vn[i]=111@-1130@/vn[i-1]+3000@/(vn[i-1]*vn[i-2])
next
n=list:=3,4,5,6,7,8,20,25
k=each(n)
while k
report "n = "+eval$(k)+chr$(9)+(vn[eval(k)])
end while
}
print "Task 1"
Pathological_floating_point_problems
print
print "Task 2"
module Chaotic_Bank_Society {
decimal Balance=2.7182818284590452353602874713@-1@
string frmt="year {0::-2} Balance:{1}"
for i=1 to 25
Balance=Balance*i-1@
rem print format$(frmt, i, Balance)
next i
Print "Starting balance: $e-1"
Print "Balance = (Balance * year) - 1 for 25 years"
print "Balance after 25 years: $"+Balance
}
Chaotic_Bank_Society
</syntaxhighlight>
{{out}}
<pre>
Task 1
n = 3 18.5
n = 4 9.378378378378378378378378378
n = 5 7.80115273775216138328530259
n = 6 7.154414480975249353527890606
n = 7 6.806784736923632983941755925
n = 8 6.592632768704438392741992887
n = 20 6.04355210719488789087813234
n = 25 6.01330401514055310928530167
 
Task 2
Starting balance: $e-1
Balance = (Balance * year) - 1 for 25 years
Balance after 25 years: $0.0391218706091111022592
</pre>
 
 
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
Line 4,442 ⟶ 4,518:
{{libheader|Wren-big}}
{{libheader|Wren-fmt}}
<syntaxhighlight lang="ecmascriptwren">import "./big" for BigRat
import "./fmt" for Fmt
 
var LIMIT = 100
9,482

edits