Un résultat faux tout de suite ou correct trop tard ?

Transcription

Un résultat faux tout de suite ou correct trop tard ?
Un résultat faux tout de suite ou correct trop tard ?
!"
!
)
1
*+
!
"
&
/ .
0
"
)
,)
!
-
!
)
()
$#
'
%&
2
)
: 1
3
!
*
/
6 1
7
!
!
;<
#
4
489
54
3
'
2
BA
?@ >
=
8
8
VWX
UTRS
K
Q PON
M
M
L
F
8
DC
FL
IJ
H
FG E
souvent imprécis ;
– arithmétiques « multi-précision », « exactes », calcul
symbolique : le bon résultat. . . mais bien trop tard !
– arithmétiques « virgule flottante » : rapides, mais résultats
Corollaire de la loi de Murphy
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
vers 100
semble converger très vite
– sur n’importe quelle machine
converge vers 6
–
Quelques exemples
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
x := (3*x^4-20*x^3+35*x^2-24)/(4*x^3-30*x^2+70*x-50)
od end
a:=1.510005072136258: Digits:=10: diverge(a);
4.000000033
Digits:=12: diverge(a);
1.00000000000
Digits:=14: diverge(a);
3.0000000000000
Digits:=16: diverge(a);
4.000000000000033
Digits:=18: diverge(a);
1.00000000000000000
confiance totale en le résultat !
Essai sur 10, puis 16 chiffres
x := a; for i to 100 do
diverge := proc(a)
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
et
.
Sur un IBM 370 :
simple précision :
1.172603
double précision :
1.1726039400531
précision étendue :
bonne valeur :
1.172603940053178
avec
Dans le même genre (S. Rump)
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
des réels ;
de la mantisse,
max et le mode d’arrondi actif
plage des exposants min
– principales caractéristiques : base , taille
– Virgule flottante presque toujours utilisée pour représenter
Autre chose que de la cuisine
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
utilisé ;
– en général, la somme, le produit, le quotient de 2 nombres
machines ne sont pas des nombres machine : il faut les
arrondir. Modes d’arrondi usuels :
si
, et
– au plus près :
si
vaut
est le plus petit nombre machine
est le plus grand nombre machine
:
– vers
:
– vers
:
– vers
;
;
;
nombre machine le plus proche de .
– nombre machine exactement représentable dans le système
Modes d’arrondi
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
dynamique
48
-8192
8191
2
96
-8192
8191
2
24
-127
127
2
56
-127
127
16
6 (24 bits)
-64
63
16
14 (56 bits)
-64
63
2
23+1
-126
+127
2
52+1
-1022
+1023
2
IEEE-754
IBM 370
DEC VAX
Cray-1
base
Exemples
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
– caractéristique la plus intéressante : « arrondi exact »
et
–
– mode d’arrondi actif :
: nombres machine
ou
,
,
), le résultat obtenu
, i.e. l’arrondi du résultat exact.
doit toujours être
( étant
Quand on calcule
– caractéristiques les plus connues : formats des représentations
norme IEEE-754 (1985)
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
différentes machines ;
– des algorithmes & preuves peuvent être construits en utilisant
cette propriété (arithmétique à précision arbitraire, somme de
plusieurs nombres machine, prise de décisions en
géométrie. . . ) ;
– arithmétique d’intervalles, minorations & majoration de
résultats, . . .
structure mathématique
recettes de cuisine
hélas : rarement accessible dans un langage de haut niveau, et
pas encore de spécification pour les fonctions élémentaires.
mêmes résultats sur
– compatibilité : même programme
Conséquences
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
et
où
sont des nombres machine, donnera toujours un résultat
et
compris entre
.
Une telle propriété peut être cruciale, car le concepteur d’un
logiciel peut utiliser ce résultat qui lui semble intuitif. Ce résultat est
faux sur de nombreuses machines Cray.
Sur toute machine compatible avec la norme IEEE le calcul de
Exemple de propriété de la norme
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
déclarés comme nombres réels (Virgule Flottante).
base du système de numération interne de votre machine
(calculettes : 10, autres machines : 2 ou 16)
et
Algorithme de Gentleman
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
sur une arithmétique avec « arrondi exact » (marche sur une
machine compatible IEEE, pas par exemple sur un Cray).
dernier_bit
, soit
, et soit
donnera
proc sum_and_error(a,b)
begin
c := a+b; e := c-a;
f := b-e; g := c-e;
h := g-a; d := f-h;
return (c,d)
end;
Somme et erreur (Priest)
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
exact « tombe juste » (par exemple si c’est un entier), on
l’obtient sans erreur.
– Sur une machine non conforme (ex. certains Cray), parfois
faux. Sur certaines de ces machines, l’instruction
I
= 14.0/7.0 donnera comme résultat 1. Sur certains Cray, il y
provoque un dépassement.
tels que le calcul
a des nombres représentables
– Sur une machine conforme à la norme IEEE, quand le résultat
Une dernière propriété
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
Et les fonctions élémentaires ?
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
1
/
"
!
Error
Casio fx-8100, fx180p, fx 6910 G
!
Sharp EL5806
PC : Borland TurboC 2.0
IBM 3090/600S-VF AIX 370
IBM RS/6000 AIX 3005
SPARC
Sun3, NeXt
HP 375, 425t (4.3 BSD)
"
HP 700
!
-
)
HP 28S, 48 SX
Résultat exact
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
exp, log, arctan)
– on a longtemps crû que c’était une tâche impossible
– pas d’exigence d’« arrondi exact » pour ces fonctions (sin, cos,
Pourquoi ?
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
de base 2,
bits de mantisse ;
), on peut calculer une
?
en arrondissant
obtient on l’arrondi de
est
dont l’erreur sur la mantisse
Problème
approximation de
(
et
– en partant de
– fonction (sin, cos, log, exp, arctg), système virgule flottante
Pourquoi est-ce difficile ?
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
– En arrondi au plus près
– avec les autres modes d’arrondi
Dilemme du Constructeur de Tables (TMD) .
Ce problème est appelé le
bits
bits
bits
bits
ou
bits
bits
ou
bits
bits
est de la forme :
Impossible si
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
chiffres de mantisse
Exemple 1 : base 10,
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
chiffres de mantisse
Exemple 2 : base 2,
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
failure
success
m = n+40
m = 2n
rounded
m=?
result
m = n+20
La stratégie “peau d’oignon” (Abraham Ziv)
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
– peut-on le résoudre en un temps raisonnable ?
– peut-on résoudre ce problème ? oui
Résoudre le TMD
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
– les nombres virgule flottante sont algébriques ;
, pour
, et
pour
, ne peuvent pas avoir une infinité de 0 ou 1 consécutifs dans
leur écriture binaire.
tel que le TMD ne peut pas se produire.
Pour tout , il existe
,il existe
Le nombre de nombres machine est fini
tout
tel que pour
le TMD ne peut se produire. Problème : trouver cet
.
n’est pas algébrique ;
– Lindemann, 1882 l’exponentielle d’un nombre algébrique
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
51
24 bits de mantisse, nombres compris entre 1 et 2.
49
53
49
50
Il semble que
53
Quelques expériences
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
intuitivement d’où vient la relation
. On suppose
– arrondi au plus près ;
est un nombre machine, les bits de
– quand
après la
-ième position peuvent être vus comme des
suites aléatoires de 0 et de 1 , le 0 et le 1 étant
équiprobables ;
– ces suites peuvent être considérées « indépendantes » pour
deux nombres machine différents.
Attention approche non rigoureuse. On cherche à comprendre
Un peu de cuisine
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
.
exposants possibles (i.e.
est
nombres machine)
?
la “probabilité” d’avoir
bits de mantisse, et
. Plus grande valeur de
Nos hypothèses
avec
ou
la probabilité d’avoir au moins un nombre
conduisant à une valeur
est :
. Résultat de la forme :
de
On calcule la mantisse
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
vaut :
Si on ne considère qu’un petit nombre d’exposants possibles, la
plus grande valeur de
sera en moyenne légèrement supérieure à
.
doit être légèrement supérieur à
En pratique,
.
ait une probabilité
tel que
Donc le nombre
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
1
2
3
4
5
6
7
8
9
10
1
1
1
0
0
0
0
0
0
0
0
0
2
3
1
0
0
0
0
0
0
0
0
0
3
5
2
1
0
0
0
0
0
0
0
0
4
9
3
1
2
1
0
0
0
0
0
0
5
18
7
3
1
1
1
0
0
0
1
0
6
34
15
13
2
0
0
0
0
0
0
0
7
72
26
13
7
3
6
1
0
0
0
0
8
130
65
31
13
5
6
4
1
0
1
0
9
272
119
67
23
16
6
4
3
1
1
0
10
538
239
114
69
26
20
15
3
0
0
0
11
1037
527
215
121
71
50
14
6
2
4
0
12
2049
1030
521
255
127
49
27
21
7
6
3
13
4144
2017
1025
502
255
142
56
26
11
10
3
14
8247
4081
2044
1012
516
251
106
65
30
23
2
0
pour
Nombre d’occurences de divers
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
,
,
M
en « double précision »
et
), faire les calculs intermédiaires sur
(
Application pour calculer
bits suffit ! ! !
–
–
(cas particulier)
Passons à la théorie des nombres
VWX
UTRS
K
Q PON
M
M
L
F
FL
IJ
H
FG E
alors
:
ses racines complexes sont
, et
Z
est
polynôme minimal de
: le
hauteur logarithmique absolue de Weil de
–
: nombre algébrique ;
–
Une avancée significative. . .
234
01./
-,+*
$
))(
'
'&
%
$"#
!
$%
$%
%
$$
(
(%
'
&%$
#"!
"
4
5
23
1
/0
-
.
,+
*)(
9
C
D
A
F
8
,+
(
2=
;<
E
-
,
)(
BA@
?>
8
1=
;<
8
7
G
:
4
6
J
J
H 9
I
)
K
8
+
J
Q
P
K
,S
(
4=
;<
O
K
-=
;<
R
K
=
1=
;<
;<
K
M
E
2=
;< @
P
-P
O
?L
N
C
W
Q
Q
Q
,
4=
;< (
4=
;<
K
O,
K
(
-=
;<
E
E
VU@
- FU
T
K
4=
;<
4O
K
1=
;<
- @
X
Y
?>
P
(
,
.
(%
%
(
K Q
Q
K
C
Théorème
S
234
01./
-,+*
$
))(
'
'&
%
$"#
!
%$ $%
%
W
P
– Encore beaucoup. . . mais il y a 2 transparents, c’était
$$
(
domaine pour l’exponentielle
(%
(%
%
(
Très cher
– Impossible
et
Application au calcul de
234
01./
-,+*
$
))(
'
'&
%
$"#
!
P
T
bits ;
– une “mauvaise configuration” tous les 170 ans.
Le problème de mon arrière-arrière petit fils ?
– résultat double précision ;
%$ – 200 MHz, ne calculant que des sinus, en permanence ;
, sur un Cyrix 83D87 : 121 cycles ;
%
–
$%
$$
(
(%
(%
%
(
Une estimation pessimiste
234
01./
-,+*
$
))(
'
'&
%
$"#
!
%$ %
$%
$$
(
(%
(%
%
(
Calculer sur un million de bits ?
,
(
= nombre d’opérations élémentaires pour multiplier 2
nombres de
bits.
O
chiffres
peut être calculé sur
(,
sont pré-calculés,
=
et
;<
opérations élémentaires, où
;<
,
(
(
P ,,
K
(
=
en
Si
W
;<
?L
(,
(,
(,
M
ou
PU
=
si
<
(,
(,
(,
ou
!
>
!"
>
ou
R
U
si
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
– HP-9000/720, 50 MHz
– multiplication de nombres de 1 million de bits :
4 secondes
Conséquence avec une machine à 50 MHz, calculer une
exponentielle sur un million de bits demande
moins de 18 minutes
multiplication
– Dan Zuras, 1993, analyse de différents algorithmes de
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Et la multiplication ?
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
très loin le plus utilisé ;
est certainement proche
– on « sait » que la bonne valeur de
de 110 ;
P
– meilleure borne : environ
P
P
Or, faire des circuits de calcul avec
serait très facilement
réalisable. . .
Seule solution : tester tous les cas possibles
U
), de
– But le format « IEEE double précision » (base 2,
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Que tout cela est décevant !
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
– Filtre très vite éliminer la plupart des cas ;
– découpage en très petits sous-domaines : dans chaque
domaine, l’exponentielle est approchée par une fonction affine.
O
ans) ;
P
exponentielles (
R
R
P
par seconde demanderait
O
O
O
– ne pas calculer
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Tests exhaustifs pour
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
sur le cercle ;
)
– angle
d’un angle .
)
D
est obtenu en faisant tourner
le point
donné.
–
– cercle unité ;
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Le théorème des trois distances
S
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
*
+
+
&
F IG . 1: Construction des premiers points.
x3
x0
.
x2
&
+
.
&
.+
+
.
α
*+
*
*
x1
89:
7645
&
,
3210
*
/
/.
$
$&+
&
*()
'&
$%#
*
+
+
&
*+
*
*
.
F IG . 2: Construction des points suivants.
&
+
.
&
x9
x0
x2
.+
+
.
x4
x7
x5
x6
x8
x3
1
x 10 x
89:
7645
&
,
3210
*
/
/.
$
$&+
&
*()
'&
$%#
construits), la distance angulaire entre 2 points qui sont voisins sur
le cercle ne peut prendre qu’au plus 3 valeurs possibles . Ces
valeurs dépendent de
et . De plus, il y a une infinité de valeurs
)
de
pour lesquelles cette distance ne prend que
2 valeurs possibles
sont
W
,. . . ,
,
D
,
donné, quand les points
(i.e. pour un
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Propriété À tout moment durant ce processus de construction
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
chaque sous-domaine ;
– changements de variable : on se ramène à des calculs sur des
O
entiers (en multipliant par des puissances de )
étant
donnés une grille dont les coordonnées sont des entier, une
droite et un (petit) réel positif , a-t-on des points de la grille à
distance
de la droite ?
– translation : a-t-on des points de la grille au dessus de la
O
de celle-ci ?
droite, et à distance
par une fonction affine. Nombres de même exposant dans
– Sous domaines dans lesquels l’exponentielle est approchée
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Quel est le rapport avec le TMD ?
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
O
est
P
modulo
J
que
dans le domaine considéré tel
;
– on retrouve le théorème des 3 distances avec
et
J
O
)
,
– on se contente de construire la suite des distances atteintes
pour lesquelles il y a 2 distances.
pour les valeurs de
– on cherche s’il y a un entier
;
J
– Équation de la droite
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Calcul modulo 1
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
ces distances la ème fois qu’il y a 2 distances.
et
–
.
et
J
-
, où
P
J
. Résultat
'&
J
Notation :
Théorème (V. Lefèvre) L’algorithme suivant calcule
.
est un entier dans
points sur le cercle peut prendre 2 valeurs ;
pour lesquelles la distance entre 2
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
– Infinité de valeurs de
89:
7645
&
,
3210
*
/
/.
$
$&+
&
*()
$%#
*
+
+
&
*+
*
.
&
+
.
S
C
S
S
C
S
C
S
C
S
S
C
S
Returned value :
exit
*
D
else
&
Infinite loop :
.+
+
.
exit
exit
>
if
C
D
while
exit
>
if
>
if
while
>
if
if
Initialization :
89:
7645
&
,
3210
*
/
/.
$
$&+
&
*()
'&
$%#
D
;<
O
M
=
C
C
W
D
D
O
O
O
O
O
<
!
O
;<
=
W
Pires cas :
+
C
O
?L
C
O
PK
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
F
W
O
P
P
U
P
R
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
R
RU
P
P
P
avec
*
+
+
.
&
.
&
*+
*
*
&
.+
+
.
et ,
et .
entre
entre
Fonctions testées, en double précision :
entre
et ,
entre
et ,
Résultats complets pour
et .
Quelques résultats
F
F
F F
F
F
F
F
P P
P
P
P
P
P
P P
P
P
P
P
P
P
P
P
P
89:
7645
&
,
3210
*
/
/.
$
$&+
&
*()
'&
$%#
*
+
+
+
.
+
.+
&
.
&
.
&
*+
*
*
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
F
W
R
P
T
U
P
T
RU
O
O
R
R
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
!
>
F
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
F
F
F
F
F
F
F O
P
K
TK
T
U
P
O
O
C
P
K
K
T
U
P
P
89:
7645
&
,
3210
*
/
/.
$
$&+
*()
&
'&
!
$%#
>
est
pour
et la valeur de
est
dans
pour
Donc la valeur de
avec
disponibles garantiront l’« arrondi exact » des fonctions en
« double précision » ;
P
8
– très grandes précisions (
bits) peu d’espoirs de résultats
certains, mais estimations probabilistes + détection ;
– Conséquence préservation de propriétés (p.ex. monotonie),
système complètement spécifié
axiomes sur lesquels on
peut (et doit !) bâtir des preuves et des algorithmes
d’ici environ 10 ans, les systèmes
– calculs en cours
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Conclusion
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
R
arctangente arrondies au + près. Le nombre machine le plus
,
O(
>
!"
>
proche de
est
T
P
PU
O
O
F
T
T
U
P
T
U
T
F
P
5
O
T
U
.
O
On aura
Sur notre système, on obtiendra donc un résultat + grand que
O
). Tangente et
+
Format IEEE-754 simple précision (
*
+
&
.
&
+
.
&
.+
+
.
*+
*
*
La perfection n’est pas de ce monde. . .
J
Q
P
OF
O
>
!"
>
>
F
E
E
@
O @
"
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#
,
(,
est un nombre machine,
?>
(,
–
est un nombre machine,
est calculé avec arrondi exact pour un nombre
(,
alors si
.
pas de problème avec sin, cos, th. . .
, le résultat obtenu sera dans
machine
est défini
(,
–
–
Théorème élémentaire Si une fonction vérifie
*
+
+
&
.
&
+
.
&
.+
+
.
*+
*
*
Le pire n’est pas toujours certain !
89:
7645
&
,
3210
*
/
/.
-
$
$&+
&
*()
'&
$%#