Représentation des nombres en machine

Nous allons simuler la représentation des nombres en machine à l’aide de Python. Supposons que l’on veuille représenter ces nombres en base 10, avec une précision donnée de $p$ décimales. Le terme « décimales » compte ici le nombre de chiffres significatifs (au sens IEEE 754) et pas le nombre de chiffres après la virgule. Comme il ne s’agit que d’une simulation, on supposera que $p$ est faible. cette représentation est appelée ici la représentation décimale réduite. Tous les calculs appelés ici “réels” seront les calculs effectués par Python.

  • Question : Ecrire une fonction qui, étant donné un nombre $x$, calcule sa représentation décimale réduite rp(x,p).

Les exemples suivants peuvent servir de batterie de tests :

Nombre réel Sur 4 décimales Sur 6 décimales
3.141592658 3.142 3.14159
10507.1823 10510 10507.2
0.0001857563 0.0001858 0.000185756

L’exercice porte uniquement sur des manipulations de nombres flottants, et pas des manipulations de bits en mémoire.

Cette fonction doit calculer un nombre (par opposition à simplement afficher un résultat).

  • Question : Simuler les opérations usuelles que sont l’addition et la multiplication en représentation décimale réduite.

Considérons deux nombres $x$ et $y$ en représentation décimale réduite. Il est possible de calculer l’erreur relative réalisée en ajoutant $y$ à $x$ à l’aide de la formule :

$$ \delta_s(x,y) = \frac{\left| (x\underset{\textsf{réel}}{+}y)-(x\underset{\textsf{machine}}{+}y)\right|}{\left| (x \underset{\textsf{réel}}{+} y) \right|} $$

  • Question : Ecrire une fonction permettant de calculer cette erreur relative en fonction de $x$ et $y$.

De même, il est possible de calculer l’erreur relative réalisée en multiplant $x$ et $y$ à l’aide de la formule :

$$\delta_p(x,y) = \frac{\left| (x\underset{\textsf{réel}}{\times}y)-(x\underset{\textsf{machine}}{\times}y)\right|}{\left| (x \underset{\textsf{réel}}{\times} y) \right|}$$

  • Question : Ecrire une fonction permettant de calculer cette erreur relative en fonction de $x$ et $y$.
  • Question : Fixer $x$ et tracer le graphe des fonctions précédentes en fonction de $y$. Essayer de choisir $x$ de manière à faire apparaître une erreur relative aussi grande que possible. Donner des exemples d’erreurs relatives maximales obtenus.