[go: up one dir, main page]

Menu

[267579]: / man / fr_FR / setaf.tea  Maximize  Restore  History

Download this file

258 lines (155 with data), 8.4 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
#
# Dos9 Manual pages, The Dos9 project
# Copyright (C) 2012-2013 Romain Garbi (DarkBatcher)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
{{Commande SET (/A)(flotants)}}
La commande {SET /A} permet d'assigner la valeur d'une expression mathématique à
une variable.
Ce manuel traite uniquement de l'option {/A} de la commande {SET}, dans le cas
particulier des expressions utilisant des nombres flotants. Pour
consulter le manuel de la commande {SET}, rendez vous sur le manuel {set|SET}.
Vous pouvez aussi consulter le manuel traitant des expression a nombres entiers
à la page {setai|SET (/A)(entiers)}.
{{Synopsis}}
${SET [/a | /a[:]f] variable=expression}
Affecte la valeur d'une {expression mathématique} à la variable
{variable}. Cette commande à un comportement dépendent du mode fixé par
la commande {setlocal|SETLOCAL} avec le paramètre {ENABLEFLOATS}.
L'opérateur {=} peut être remplacé dans cet exemple par les opérateurs suivants:
- {+=} : Addition du résultat à {variable}.
- {-=} : Soustraction du résultat à {variable}.
- {*=} : Multiplication de {variable} par le résultat.
- {/=} : Division de {variable} par le résultat.
{{Les Opérateurs}}
L'expression mathématique doit être constituée d'une suite d'opérateurs et d'opérandes. Chaque opérande
doît être séparé de l'opérande suivant par un opérateur.
Les opérateurs utilisables avec les nombres {flotants} sont:
- {=} : Affectation.
- {+} : Addition.
- {-} : Soustraction.
- {*} : Mutiplication.
- {/} : Division.
- {^} : Elevation à une puissance.
- {%} : Modulo (Reste de la division Euclidienne étendue aux nombres flotants).
L'opération ayant la priorité maximale est l'affectation. La multiplication, la
division et le modulo sont tous prioritaires sur l'addition et la
soustraction. Il est néamoins possible de modifier la priorité des opérations
en utilisant les parenthèse {(} et {)}.
Il est également possible d'utiliser des opérateurs unaires, c'est-à-dire des opérateur affectant
uniquement l'opérande qui le suit à droite. Ces opérateurs sont :
- {-} : Signe négatif.
Les opérateurs unaires ont la priorité la plus haute.
{{Les fonctions mathématiques}}
En plus de contenir des opérateurs, l'{expression mathématique} peut contenir des
fonctions mathématiques. Pour spécifier une fonction mathématique,
il faut entourer son argument par des parenthèses. Par exemple :
${fonction(expression)}
Les fonction fournies sont :
- {exp} : Fonction exponnentielle.
- {log} : Fonction logarithme népérien.
- {log10} : Fonction logarithme décimal.
- {sqrt} : Fonction racine carrée.
- Fonctions trigonométiques :
-- {sin} : Fonction sinus.
-- {cos} : Fonction cosinus.
-- {tan} : Fonction tangente.
-- {cot} : Fonction cotangente.
-- {sec} : Fonction sécante.
-- {csc} : Fonction cosécante.
- Fonction trigonométiques inverses :
-- {asin} : Fonction arc sinus.
-- {acos} : Fonction arc cosinus.
-- {atan} : Fonction arc tangente.
-- {acot} : Fonction arc cotangente.
-- {acec} : Fonction arc sécante.
-- {acsc} : Fonction arc cosécante.
- Fonctions trigonométiques hyperboliques :
-- {sinh} : Fonction sinus hyperbolique.
-- {cosh} : Fonction cosinus hyperbolique.
-- {tanh} : Fonction tangente hyperbolique.
-- {coth} : Fonction cotangente hyperbolique.
-- {sech} : Fonction sécante hyperbolique.
-- {csch} : Fonction cosécante hyperbolique.
- Fonction trigonométiques hyperboliques inverses :
-- {asinh} : Fonction argument sinus hyperbolique.
-- {acosh} : Fonction argument cosinus hyperbolique.
-- {atanh} : Fonction argument tangente hyperbolique.
-- {acoth} : Fonction argument cotangente hyperbolique.
-- {acech} : Fonction argument sécante hyperbolique.
-- {acsch} : Fonction argument cosécante hyperbolique.
- {abs} : Fonction valeur absolue.
- {step} : Fonction échelon unitaire (fonction de Heaviside). La fonction
vaut {0} si {x < 0} et {1} sinon.
- {delta} : Fonction de Dirac. Cette fonction vaut l'infini si {x = 0} et
{0} sinon.
- {nandelta} : Fonction de Dirac avec {NAN}. Cette fonction vaut {NAN} (Not A Number)
si {x=0} et {0} sinon.
{{Les Constantes}}
Enfin, des constantes mathématiques sont aussi définies. Ces constantes sont :
- {e}
- {log2e} : log2(e)
- {log10e} : log10(e)
- {ln2} : ln(2)
- {ln10} : ln(10)
- {pi}
- {pi_2} : pi/2
- {pi_4} : pi/4
- {1_pi} : 1/pi
- {2_pi} : 2/pi
- {2_sqrtpi} : 2/sqrt(pi)
- {sqrt2} : sqrt(2)
- {sqrt1_2} : sqrt(1/2), ou bien 1/sqrt(2) ou sqrt(2)/2.
{{Les nombres spéciaux}}
Les nombres spéciaux sont des valeurs qui ne sont pas des chiffres mais
qui sont interprétés comme tels. Ces valeurs sont dérivées des standard de
l'IEEE sur les calculs en nombres flotants. Il y a deux nombre spéciaux supportés
par {Dos9}
- {inf} (INFINITY) : Valeur infinie. Cette valeur est obtenue quand un dépassement à
lieux, ou qu'on effectue une division par 0 (cette liste n'est pas exhaustive).
- {nan} (NotANumber) : Valeur non défine. Cette valeur est obtenue quand on exécute une
fonction avec un argument en dehors de son ensemble de définition.
{{Précision}}
Contrairement aux entiers, traditionnelement bornés entre {-2 147 483 648} et {+2 147 483 647}, les
nombres flotants ont un rayon d'utilisation de {2,2250738585072014e-308} à {1,7976931348623157e+308} (en
valeur absolue). Les nombres flotants ont néamoins une précision restreinte (environ 16 chiffres significatifs),
les calculs qui sont exécutés sont donc de manière approchée, et les valeurs sont arrondies à la valeur la plus
proche.
{{Bogues fréquents}}
Le premier des bogues fréquents est du au fait que la précision des nombres flotants est réduite. En effet,
cette précision réduite cause des problèmes d'associativité (importance de l'odre des opérations)
durant les opérations mathématiques entre des
nombres d'ordre de grandeurs très éloignés. L'exemple suivant illustre ce cas de figure:
${(2*10^60+1)-2*10^60)}
Si l'on évaluait l'expression suivante avec des nombres flotants, on s'appercevrait que le résultat en est 0, ce
qui est surprenant car le résultat réel est évidemment 1. Ce problème est du au fait que {2*10^60} est largement
prépondérant devant {1} et donc que {2*10^60+1} est arrondi à {2*10^60}. On retombe bien sur le résultat inatendu.
L'ordre des opération est donc important. Ce problème peut être résolu de la façon suivante:
${2*10^60-2*10^60+1}
Un autre problème peut être la comparaison de deux résultats de nombres flotants. En effet, il est possible que les
arrondi donnent deux résultat distincts (et néanmoins très proches) pour deux expression qui rigoureusement donnent
le même résultat. Un tel exemple est {1/3*3} qui donnera {0.999999...} et non {1}. Ce type de petites imprécisions est
problématique pour la comparaision de nombres flotants. Pour rendre cette comparaison correcte, il faut utiliser le
comparant {FEQ} de la {if|commande IF}.
{{Notes}}
Cette commande utilise une version modifiée de la bibliothèque {GNU libmatheval}.
{{Compatibilité}}
Disponible depuis la version {0.7.1.0}. Auparavant, le support des expression n'était
pas complet. La version {0.7.0.0} ne supportait pas l'opérateur {%} ni la fonction {log}.
Les versions précédentes ne supportaient quant à elles qu'une version simplifiée des expressions.
Non compatible avec {cmd.exe}. En effet, {cmd.exe} ne supporte pas les expression
avec des nombres flotants.
{{À voir aussi}}
{set|Commande SET}, {setai|Commande SET(/a)(entiers)}