Precisión arbitraria
En computación, precisión arbitraria o bignum (por big number, "número grande" en inglés) es un método que permite la representación, en un programa informático, de números ya sean enteros o racionales con tantos dígitos de precisión como sean deseados y además posibilita la realización de operaciones aritméticas sobre dichos números.
Los números son normalmente almacenados como arrays de dígitos utilizando la base binaria u otra base para la representación. A diferencia de los tipos de datos implementados en hardware (de una longitud fija determinada por ejemplo por la longitud de los registros de la CPU), los números de precisión arbitraria pueden variar en tamaño, utilizando memoria dinámica.
Si se trata de números fraccionarios se puede representar con arrays separados el denominador y el numerador; o bien utilizar una notación de punto fijo almacenando los dígitos decimales con la precisión deseada; o bien utilizar un formato de punto flotante con un significando multiplicado por un exponente.
Historia e implementaciones
La precisión arbitraria fue implementada por primera vez en MacLisp. Más tarde, el sistema operativo VAX/VMS ofrecía capacidades de precisión arbitraria como una colección de funciones que operaban con cadenas. Hoy en día, bibliotecas bignum están disponibles para los lenguajes de programación más usados. Incluso existen lenguajes diseñados específicamente para cálculo con precisión arbitraria, como por ejemplo el lenguaje de programación bc. Todos los sistemas de álgebra computacional implementan facilidades bignum.
Aplicaciones
Una aplicación común es la criptografía de clave pública, cuyos algoritmos suelen emplear aritmética con enteros de cientos o miles de dígitos.
También se usa para computar constantes matemáticas fundamentales tales como pi con millones o más dígitos y analizar sus propiedades.