Pour comprendre cette notation un peu déroutante au début, il faut avoir à l'esprit la notion de pile d'arguments. Le système possède une pile sur laquelle on dépose des nombres et des variables. Lorsque l'on utilise un opérateur, celui-ci va chercher sur la pile les arguments dont il a besoin, en commençant par les objets les plus récemment déposés (pile LIFO : Last In, First Out).
Par exemple, pour effectuer l'addition des deux nombres 1 et 3, on dépose sur la pile les deux nombres, puis on aplique l'opérateur d'addition add (ou +) qui retira ces deux nombres de la pile puis déposera 4, le résultat de l'opération.
Opération | état de la pile |
---|---|
1 | 1 |
3 | 1, 3 |
add | 4 |
Pour l'exemple fourni dans le formulaire, c'est (x-3)^2 + 1 que l'on code
Opération | état de la pile |
---|---|
x | x |
3 | x, 3 |
- | x-3 |
2 | x-3, 2 |
^ | (x-3)^2 |
1 | (x-3)^2, 1 |
+ | (x-3)^2+1 |
Et pour coder 1/(x^2 + x + 1), on peut utiliser la procédure suivante :
Opération | état de la pile |
---|---|
1 | 1 |
x | 1, x |
2 | 1, x, 2 |
^ | 1, x^2 |
x | 1, x^2, x |
+ | 1, x^2+x |
1 | 1, x^2+x, 1 |
+ | 1, x^2+x+1 |
div | 1/(x^2+x+1) |
ou encore celle-ci
Opération | état de la pile |
---|---|
1 | 1 |
x | 1, x |
x | 1, x, x |
2 | 1, x, x, 2 |
^ | 1, x, x^2 |
+ | 1, x+x^2 |
+ | 1+x+x^2 |
1 | 1+x+x^2, 1 |
exch | 1, 1+x+x^2 |
div | 1/(1+x+x^2) |
Tout simplement parce que c'est celle-ci qui est a priori imposée par le langage Postscript, sachant qu'elle présente un avantage certain pour le système : c'est l'utilisateur qui gère le problème des priorités algébriques. Cet avantage au profit de la machine, même s'il bouscule un peu les habitudes des utilisateurs, se révèle à l'usage générateur d'une excellente gymnastique de l'esprit où tout le monde trouvera son compte.
En vrac : Sin, Cos, sin, cos, Exp, ln, add, sub, mul, div, +, -, *, exp (élevation à la puissance) et ^.