Opérations arithmétiques simples

Comme d'autres langages, Common Lisp a des opérations d'addition, soustraction, mulitplication et division. Mais comme pour les opérations de comparaison, il s'agit en Common Lisp de fonctions normales dont les noms sont les symboles suivants :

nom fonction
+ addition
- soustraction
* multiplication
/ division

La fonction d'addition prend un nombre arbitraire de paramètres. Elle renvoie la somme des arguments, ou 0 si aucun argument n'a été fourni. Les arguments peuvent être de sous-type arbitraire du type number, y compris complex. Exemples :

* (+)

0
* (+ 123)

123
* (+ 12 #c(3.1 9))

#C(15.1 9.0)
* (+ 12 #c(3.1 9d0))

#C(15.099999904632568d0 9.0d0)
* (+ 1 2 3 4 5 6 7 8 9 10)

55
*

La fonction de soustraction prend au moins un argument. Si un seul argument est fourni, cette fonction renvoie l'opposé de celui-ci. Si le nombre d'arguments fournis est supérieur à un, alors la fonction de soustraction renvoie la différence entre le premier et la somme des autres. Exemples :

* (- 234)

-234
* (- #c(2345 22/3))

#C(-2345 -22/3)
* (- 33 2 5 3 4 1.4)

17.6
* (- 33 2 5 3 4 1.4d2)

-121.0d0
* (- 33 2 5 3 4 1.4d1)

5.0d0
* (- 33 2 5 3 4 1.41d1)

4.9d0
*

Comme l'addition, la fonction de multiplication prend un nombre arbitraire d'arguments. Elle renvoie le produit des arguments, ou 1 si aucun argument n'a été fourni. Exemples :

* (*)

1
* (* 123/11)

123/11
* (* 123/11 12.33)

137.87181
* (* 123/11 12.33 #c(33 11))

#C(4549.7695 1516.59)
*

Comme la soustraction, la fonction de divison prend au moins un argument. Si un seul argument est fourni, cette fonction renvoie l'inverse de celui-ci. Si le nombre d'arguments fournis est supérieur à un, alors elle renvoie le premier argument divisé par le produit des autres. Exemples :

* (/ 2345)

1/2345
* (/ #c(22 4.8))

#C(0.04338908 -0.009466709)
* (/ 12 3.0)

4.0
* (/ 112 2 8.0 2d1)

0.35d0
*

Les fonctions max et min prennent au moins un argument. Les arguments doivent être de type real. Exemples :

* (max 4)

4
* (max 9 46/5 9.01)

46/5
* (min 9 46/5 9.01)

9
*

Irene DURAND
2011-10-14