IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

[Fortran 77] Ordre de grandeur des nombres en double précision


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut [Fortran 77] Ordre de grandeur des nombres en double précision
    Bonjour,
    Jusqu'à quel ordre de nombre le Fortran peut lire en double précision ?
    Par exemple, est-ce que le nombre $1*10^(-100)$ peut être accepté ?
    Merci

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Ce n'est pas une question de Fortran, mais de caractéristiques du processeur, qui sont généralement régies par la norme IEEE 754. Tu trouveras toutes les informations à ce sujet sous ce nom dans Wikipedia.
    Jean-Marc Blanc

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    En plus du processeur, tu dois utiliser la solution des kinds de Fortran 90. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    integer, parameter :: Real100 = selected_real_kind(r=100)
    ...
    real (kind=Real100) x,y,z
    ...
    x = 1e-100_Real100
    ...

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    habituellement, sur un pc 32 bits, les double precision sont codés sur 8octets (64bits) (NB: un réél est codé par son signe, sa mantisse et son exposant) donc t'inquiète, tu peux largement monter dans les exposant, en tout cas, j'ai déjà vu passer des nombres à trois chiffres dans l'exposant sans problèmes...

    le truc c'est qu'après tu fleurte avec l'erreur machine et donc tu peux avoir des surprises... (surtout pour les petits nombres)

    il se compose génralement:
    1bits de signe, 52bits de mantisse enfin 11 pour l'exposant.

    dans l'exposant, il y a: 1bit de signe, et 10 pour le nombre soit:
    de -1023 à 1024

    Remarque, pour les real*4, il y a
    1 bit pour le signe, 23 bits pour la mantisse et 8 bits pour l'exposant
    soit pour l'exposant: de -127 à 128

    donc même avec un real*4 tu peut avoir un 10^100

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    ...
    Remarque, pour les real*4, il y a 1 bit pour le signe, 23 bits pour la mantisse et 8 bits pour l'exposant soit pour l'exposant: de -127 à 128

    donc même avec un real*4 tu peut avoir un 10^100
    Non. La plage d'exposant -127:128 doit être appliquée à une base de 2. Et 2^128 donne environ 3.4 x 10 ^ 38. En fait, la plage en base 10 des reals 4 est d'environ 1.175E-38 à 3.402E38. On est donc loin de 10^100...

    Pour les real (8), la plage en base 10 est d'environ 2.225e-308 à 1.797e308

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Merci pour vos réponses c est un peu plus claire maintenant,
    mais si dans le coeur d une subroutine les nombres commencent a dépasser l ordre 10^-351, alors tout va etre detruit meme si la reponses finale de la subroutine n est pas de l ordre 10^-351, alors il n y aura pas de solutions dans ce cas?
    merci

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Il ne suffit pas que le résultat final soit dans le domaine des nombres tolérés par ton processeur; il faut aussi que cette condition soit vérifiée pour tous les résultats intermédiaires. C'est à toi de faire le nécessaire lors de la formulation de ton problème et de la conception de ton programme.
    Jean-Marc Blanc

Discussions similaires

  1. [Batch] Trier des nombres ordre croissant dans fichier texte
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 20
    Dernier message: 01/11/2009, 10h22
  2. algo qui affiche par ordre croissant des nombres
    Par jeremdu69300 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/09/2008, 23h16
  3. Réponses: 1
    Dernier message: 17/05/2008, 22h44
  4. envoyer des nombres en ordre
    Par Micheal1221 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 07/08/2006, 03h37
  5. [Fortran] Format décimal des nombres
    Par bert24 dans le forum Fortran
    Réponses: 4
    Dernier message: 12/05/2005, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo