Generalised floating point addition: Difference between revisions

Added Go
(Added Kotlin)
(Added Go)
Line 529:
</pre>
[[Category:Arbitrary precision]]
 
=={{header|Go}}==
Although the big.Float type already has a 'Mul' method, we re-implement it by repeated application of the 'Add' method.
<lang go>package main
 
import (
"fmt"
"math/big"
)
 
func repeatedAdd(bf *big.Float, times int) *big.Float {
if times < 2 {
return bf
}
var sum big.Float
for i := 0; i < times; i++ {
sum.Add(&sum, bf)
}
return &sum
}
 
func main() {
s := "12345679"
t := "123456790"
e := 63
var bf, extra big.Float
for n := -7; n <= 21; n++ {
bf.SetString(fmt.Sprintf("%se%d", s, e))
extra.SetString(fmt.Sprintf("1e%d", e))
bf = *repeatedAdd(&bf, 81)
bf.Add(&bf, &extra)
fmt.Printf("%2d : %s\n", n, bf.String())
s = t + s
e -= 9
}
}</lang>
 
{{out}}
<pre>
-7 : 1e+72
-6 : 1e+72
-5 : 1e+72
-4 : 1e+72
-3 : 1e+72
-2 : 1e+72
-1 : 1e+72
0 : 1e+72
1 : 1e+72
2 : 1e+72
3 : 1e+72
4 : 1e+72
5 : 1e+72
6 : 1e+72
7 : 1e+72
8 : 1e+72
9 : 1e+72
10 : 1e+72
11 : 1e+72
12 : 1e+72
13 : 1e+72
14 : 1e+72
15 : 1e+72
16 : 1e+72
17 : 1e+72
18 : 1e+72
19 : 1e+72
20 : 1e+72
21 : 1e+72
</pre>
 
=={{header|J}}==
9,479

edits