J'ai essayé en fortran, pas l'habitude, désolé si la syntaxe est pas bonne. Je me suis "inspiré" (méchamment copié à ce stade) d'un stackoverflow sur la très célèbre question de la comparaison des flottants, version fortran.
L'effort est apprécié !
Juste pour information, je précise pour le lecteur intéressé par Fortran :
1. le séparateur est le passage à la ligne, donc pas de ; en fin de ligne en Fortran. Par contre, il peut éventuellement être utilisé pour séparer plusieurs instructions sur une même ligne.
2. L'opérateur += n'existe pas en Fortran.
3. Le séparateur pour les structures est le % : on écrirait aim%angle
4. Le test d'égalité est bien le ==. On peut aussi rencontrer l'ancienne syntaxe .eq.
5. Il est effectivement déconseillé, sauf exception, en calcul numérique d'utiliser ce test d'égalité avec des réels flottants, puisque les arrondis s'accumulant au fil des calculs, il y a généralement peu de chances qu'on tombe pile-poil sur la valeur prévue, c'est-à-dire avec environ 16 décimales exactes (ou 53 bits en binaire). Les compilateurs Fortran afficheront d'ailleurs en général un avertissement pour un tel test.
Dans un ton à peine provocateur, le calcul numérique c'est l'art d'obtenir un résultat valable en calculant faux. Car même en s'en tenant à des additions, avec les réels informatiques l'associativité de l'addition vole en éclat et en règle générale :
a+(b+c) \ne (a+b)+c
Par exemple, si on somme des nombres de grandeur variable, on aura alors intérêt à faire la somme du plus petit au plus grand, plutôt que l'inverse, pour limiter les erreurs d'arrondis. De quoi s'amuser...
[^] # Re: Sérieusement ?
Posté par vmagnin (site web personnel, Mastodon) . En réponse au journal Encore des nouvelles de Fortran. Évalué à 4. Dernière modification le 07 mai 2021 à 12:28.
L'effort est apprécié !
Juste pour information, je précise pour le lecteur intéressé par Fortran :
1. le séparateur est le passage à la ligne, donc pas de
;en fin de ligne en Fortran. Par contre, il peut éventuellement être utilisé pour séparer plusieurs instructions sur une même ligne.2. L'opérateur
+=n'existe pas en Fortran.3. Le séparateur pour les structures est le
%: on écriraitaim%angle4. Le test d'égalité est bien le
==. On peut aussi rencontrer l'ancienne syntaxe.eq.5. Il est effectivement déconseillé, sauf exception, en calcul numérique d'utiliser ce test d'égalité avec des réels flottants, puisque les arrondis s'accumulant au fil des calculs, il y a généralement peu de chances qu'on tombe pile-poil sur la valeur prévue, c'est-à-dire avec environ 16 décimales exactes (ou 53 bits en binaire). Les compilateurs Fortran afficheront d'ailleurs en général un avertissement pour un tel test.
Dans un ton à peine provocateur, le calcul numérique c'est l'art d'obtenir un résultat valable en calculant faux. Car même en s'en tenant à des additions, avec les réels informatiques l'associativité de l'addition vole en éclat et en règle générale :
a+(b+c) \ne (a+b)+c
Par exemple, si on somme des nombres de grandeur variable, on aura alors intérêt à faire la somme du plus petit au plus grand, plutôt que l'inverse, pour limiter les erreurs d'arrondis. De quoi s'amuser...