Golang, math/big: cuál es el valor máximo de*big.Int
biginteger (1)
¿Cuál es el valor máximo de * big.Int y la precisión máxima de * big.Rat ?
Aquí están las definiciones de la estructura:
// A Word represents a single digit of a multi-precision unsigned integer.
type Word uintptr
type nat []Word
type Int struct {
neg bool // sign
abs nat // absolute value of the integer
}
type Rat struct {
// To make zero values for Rat work w/o initialization,
// a zero value of b (len(b) == 0) acts like b == 1.
// a.neg determines the sign of the Rat, b.neg is ignored.
a, b Int
}
No hay un límite explícito. El límite será su memoria o, teóricamente, el tamaño máximo de la matriz (2 ^ 31 o 2 ^ 63, dependiendo de su plataforma).
Si tiene inquietudes prácticas, puede que le interesen las pruebas realizadas en http://golang.org/src/pkg/math/big/nat_test.go , por ejemplo, en el que se compara 10 ^ 100000.
Y puede ejecutar fácilmente este tipo de programa:
package main
import (
"fmt"
"math/big"
)
func main() {
verybig := big.NewInt(1)
ten := big.NewInt(10)
for i:=0; i<100000; i++ {
verybig.Mul(verybig, ten)
}
fmt.Println(verybig)
}
(si quieres que funcione lo suficientemente rápido para Go Playground, usa un exponente más pequeño que 100000
)
El problema no será el tamaño máximo, sino la memoria utilizada y el tiempo que tardan dichos cálculos.