Package bigfloat provides the implementation of a few additional operations (square root, exponentiation, natural logarithm, exponential function) for the standard library big.Float
type.
go get github.com/ALTree/bigfloat
Please note that bigfloat
requires Go >= 1.5 (since the big.Float
type is not available in previous versions).
package main
import (
"fmt"
"math/big"
"github.com/ALTree/bigfloat"
)
// In this example, we'll compute the value of the
// transcendental number 2 ** √2, also known as
// the Gelfond–Schneider constant, to 1000 bits.
func main() {
// Work with 1000 binary digits of precision.
const prec = 1000
two := big.NewFloat(2).SetPrec(prec)
// Compute √2.
// Sqrt uses the argument's precision.
sqrtTwo := bigfloat.Sqrt(two)
// Compute 2 ** √2
// Pow uses the first argument's precision.
gsc := bigfloat.Pow(two, sqrtTwo)
// Print gsc, truncated to 60 decimal digits.
fmt.Printf("gsc = %.60f...\n", gsc)
}
outputs
gsc = 2.665144142690225188650297249873139848274211313714659492835980...