Ratios

Contrairement à la plupart des autres langages de programmation, Common Lisp est capable de manipuler des nombres rationnels arbitraires. Certains nombres rationnels (comme les entiers ou les flottants en base 2) sont manipulables par un grand nombre de langages, alors que certains autres, comme 1/3 ne le sont pas. Ces derniers nécessitent une représentation sous la forme de deux entiers (numérateur et dénominateur). En Common Lisp ces nombres sont des ratios.

Les nombres de type ratio permettent une représentation exacte d'un grand nombre de calculs. Par exemple, la résolution d'un système linéaire d'équations avec coefficients rationnels donne toujours des solutions rationnelles. L'utilisation de ratio pour ce type de calcul évite alors la perte de précision pendant le calcul.

La représentation externe d'un ratio en Common Lisp comprend deux entiers séparés par le caractère / (en Anglais : slash), précédés éventuellement d'un signe. Exemple :

* 3/4

3/4
* +24/10

12/5
* -224/4

-56
*

On remarque que read crée un objet en représentation canonique. Les facteurs communs entre dénominateur et numérateurs sont supprimés et si possible, un entier est créé à la place du ratio.

Irene DURAND
2011-10-14