stringtranslate.com

Biblioteca de clases para números

Class Library for Numbers ( CLN ) es una biblioteca gratuita para aritmética de precisión arbitraria . Opera con enteros con signo , números racionales , números de punto flotante , números complejos , números modulares y polinomios univariados . Su lenguaje de programación de implementación es C++ .

Detalles

CLN utiliza técnicas orientadas a objetos y sobrecarga de operadores para lograr una sintaxis algebraica natural : la suma x de dos variables a y b se escribe como x  =  a  +  b , a diferencia de la función suma(& xab ).

CLN utiliza la herencia de clases para modelar los subconjuntos naturales de los tipos de números disponibles: por ejemplo, la clase entera es un subtipo de la clase racional, del mismo modo que los números enteros son un subconjunto de los números racionales. Los números complejos y todos sus subtipos se comportan exactamente como los tipos de números conocidos por el lenguaje Common Lisp , dándole a CLN otro significado: se convierte en una abreviatura de Common Lisp Numbers . Debido a esto, CLN puede ser y se utiliza para implementaciones de Common Lisp, otros lenguajes interpretados o sistemas de álgebra informática .

La implementación es eficiente. Se puede configurar para utilizar la biblioteca de precisión múltiple GNU como núcleo para bucles internos de velocidad crítica e implementa algoritmos avanzados como la multiplicación de Schönhage-Strassen , la división binaria [1] para calcular ciertas constantes matemáticas y otras. Todos los objetos CLN son inmediatos o cuentan con referencias , lo que permite una recolección de basura no interrumpida sin carga para la aplicación principal.

Referencias

  1. ^ Haible, Bruno; Papanikolaou, Thomas (1998). "Evaluación rápida de multiprecisión de series de números racionales". En Buhler, Joe P. (ed.). Teoría algorítmica de números . Apuntes de conferencias sobre informática. vol. 1423, págs. 338–350. doi :10.1007/BFb0054873. ISBN 978-3-540-69113-6.

enlaces externos