21 pages
Français

Arithmétique des ordinateurs préambule

Obtenez un accès à la bibliothèque pour le consulter en ligne
En savoir plus

Description

Arithmétique des ordinateurs préambule

Sujets

Informations

Publié par
Nombre de lectures 94
Langue Français

Exrait

Arithm´etiquedesordinateurs INSA-Lyon,d´epartementInformatique,troisi`emeann´ee G. Beslon, L A TEX, novembre 2009, v1.4 pre´ambule 23aouˆt1991,Gandsfjorden,Norv`ege: une plate-forme de forage de plus de cent milletonnescoulesuite`alarupturedelaparoidesballasts,provoquantunse´isme demagnitude3surle´chelledeRichter;coˆutestime´:700millionsdedollars. Les experts remontent les causes de la catastrophe jusqu’au logiciel de calcul des ´el´ementsnisutilise´pourledessindesballasts.Uneapproximationdecalculdans celogicielaconduita`unesous-estimationdelatailledesparoisdubalastde47%. Compte-tenudecettesous-estimation,lesexpertsestimentlaruptureprobable`a partir de 62m de profondeur. La catastrophe s’est produite par 65m de fond. 25fe´vrier1991,Dharan,ArabieSaoudite: unmissileScudirakiende´truitunba-raquementam´ericain;28morts,100blesse´s.Enraisonduneerreurdarrondisur lecalculdutemps(au24ie`mebit 1 ),labatteriedemissilesPatriotsuppose´e protegerlebasede´viaitde0,3secondes(lavitessedunScude´tantde1676m/s, ´ lerreurcommisesurlaposition´etaitdoncdeplusde500m).Aucunmissileanti-missilena´et´elance´.Lebugavait´ete´d´etecte´le11fe´vrier.Lecorrectifestarrive´ a`Dharanle26. 4juin1996,Kourou,GuyaneFranc¸aise: apre`s39secondedevol,lafus´eeAriane 5sautode´truitavecsonchargement(coˆutestim´e:500millionsdedollars).Lau-todestructionae´t´eprovoque´esuitea`unecorrectiondelangledevolapr`esquune vitessehorizontaleimportanteaite´te´signal´eeparleSyste`medeRe´fe´renceIner-tielle(SRI).Enpratique,lavitessee´taitnormalemaisuneconversiondedouble(oating-Point,64bits)enshort(integer,16bits)avaitprovoqu´eund´epassement decapacit´e.LeSRIdesecoursutilisantlemeˆmecode,ilprovoqueuneerreursi-milaire 2 . 2001,passage`aleuro: letauxdeconversionesttre`spr´ecis(uneuro=1,95583DM). Supposonsunebanqueallemandedanslaquelleuninformaticiend´eveloppedeux fonctions pour la conversion Deutchmark-Euro ... #include <stdio.h> #include <math.h> #define TAUX 1.95583 // taux de conversion deutchmark-euro float dm2euro(float dm) { float temp; // conversion deutchmark-euro temp=dm*TAUX; temp*=100.0; 1 L’erreur commise est de 0,000000095 secondes mais elle s’accumule sur l’ensemble du temps d’uti-lisationdelabatterie.Aumomentdelattaque,lesyst`eme´etaitactiv´edepuis100heures. 2 LeSRIavaite´te´de´veloppe´pourAriane4dontlavitesseinfe´rieurea`celledAriane5ne provoquaitpasded´epassementdecapacite´.Ilestimportantderemarquerquecesyst`emen´etaitplus utile sur Ariane 5.
1
temp=roundf(temp); return temp/100.0; } float euro2dm(float euro) { float temp; // conversion euro-deutchmark temp=euro/TAUX; temp*=100.0; temp=roundf(temp); return temp/100.0; } /* Si, partant d’une fortune initiale de 0.02 DM, je convertis les Deuchmarks en Euros centime par centime, puis mes Euros en Deutchmarks centime par centime, etc. */ main() { float euro=0; float dm=0.02; for(;;) { while (dm>0.01) { // je vends mes deutchmarks centime par centime dm=dm-0.01; euro=euro+dm2euro(0.01); } while (euro>0.01) { // je vends mes euros centime par centime euro=euro-0.01; dm=dm+euro2dm(0.01); } printf("ma fortune est : %f dm\n",dm); } } et je suis rapidement milliardaire . . .
1 Introduction Comment manipule-t-on les nombres en informatique (sous-entendu “sur une ma-chine r´eelle ”) . . . et d’ailleurs, qu’est-ce qu’un nombre en informatique ? Troisaspects`adistinguer: Lecodagedesdonn´ees(transcriptionbinaire,exacteouapproch´eedunevaleur particulie`re) Lar´ealisationmate´rielledeso´atinse´le´mentaires(g´ene´ralement:addition, per o soustraction,multiplication,divisionauxquellessajoutentlescompl´ements,les comparaisons, . . .) Lar´ealisationlogicielledesope´rationsdehautniveau.Cetroisi`emeniveaupeut lui-meˆmeˆetrered´ecompose´endeuxsous-niveaux:
2