Accumulator factory: Difference between revisions

Content added Content deleted
(Add Lang example)
(→‎{{header|Bracmat}}: Added a solution that handles floating point values,)
Line 496:
 
=={{header|Bracmat}}==
NoticeUntil that2023 Bracmat hashad no facility for handling floating point numbers,. This solution handles only rational numbers.
<syntaxhighlight lang="bracmat">( ( accumulator
=
Line 514:
Output:
<pre>83/10</pre>
 
The following solution uses UFP (UnIfancyfied Floating Point) objects to handle the terms in case not both are rational numbers.
<syntaxhighlight lang="bracmat">( ( accumulator
=
.
' ( add sum object addFunction
. ( addFunction
= A B
. !arg:(?A.?B)
& ( !A:#
& !B:#
& "If both values are recognized as integer or fractional values, just use '+'."
& !A+!B
| "Otherwise, create an object for adding two C doubles and let that run."
& ( new
$ (UFP,'(.$($A)+$($B)))
. go
)
$
)
)
& ( object
= add
= addFunction$($arg.!arg)
)
& !(object.add):?sum
& 'addFunction$($($sum).!arg)
: (=?(object.add))
& !sum
)
)
& accumulator$1:(=?x)
& x$5
& accumulator$1:(=?y)
& y$"5.0"
& out$(x$23/10)
& out$(y$"2.3")
)</syntaxhighlight>
 
Output
<pre>83/10
8.3000000000000007E+00</pre>
 
=={{header|Brat}}==