[fortran] transtypage

Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -  
hssissen Messages postés 844 Date d'inscription   Statut Membre Dernière intervention   -
bonjour.
Dans un programme fortran, j'utilise la fonction "atanh"
le problème c'est qu'elle renvoie n'importe quoi : atanh(x)=2.1...e-269
quelque soit x
x est un REAL*8, et je pense que le problème vien de la.
Je pense que si j'utilisait un real*4 ça tournerai.
problème je ne peux modifier x, il faudrai donc que je change le type de x.
Comment faire???
En "C" c'est simple :
double x;
atanh(float(x));
Merci de l'aide que vous pourrez m'aporter.
P.S. : la fonction datanh n'est pas prise en compte par le compilo (gcc)
--
Salutation !
Char Snipeur

3 réponses

  1. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Pas de cast en fortran, le compilateur assure ça lors de l'affectation.
    Je dis ça vis à vis du seul fortran que j'ai pratiqué : le f77
    C Declaration
        REAL*8 x8, a, b
        REAL*4 x4
    C Calcul
        a=1.
        b=11.
        x8=a/b
    C changement de type
        x4=x8
    C resultat
        write(*,100) x8
        write(*,101) x4
    100 format ('REAL*8 x = ', D25.20 )
    101 format ('REAL*4 x = ', E25.20 )
        RETURN
        END   
    

    Ce qui donner le résultat suivant
    REAL*8 x = .90909090909090911614E-01
    REAL*4 x = .90909093618392944336E-01
    


    A+, crabs
    0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    ok. Merci Crabs, je vais essayer ta méthode.
    Mais lors de l'apel d'une fonction, il modifie aussi le type?
    si l'argument de tanh doit être un real*4 et que je le passe un real*8 il va convertir.
    Sinon, je pense que le fortran inclu dans gcc est bien du fortran 77.
    Merci encore.
    0
    1. crabs Messages postés 909 Statut Membre 507
       
      Salut,
      J'ai fait qu'un peu du fortran sur MicroSparc, UltraSparc et R4400, mais je
      crois me rappeler que la lib mathématique en f77 elle est en real*8 et que oui
      il fait les adaptations lors de l'appel.
      J'ai essayer sous mon linux de faire un atanh, mais la fonction n'est pas incluse
      dans le g77 :-(
      Enfin si un expert fortran passe par là, je suis preneur d'une infirmation ou
      confirmation sur le sujet...
      A+, crabs
      0
  3. hssissen Messages postés 844 Date d'inscription   Statut Membre Dernière intervention   50
     
    Salut, Essaie avec le type double x. Avec les recentes versions du compilateurs du Fortran f77, f90..., les "real" sont mal supportes, car j'·ai eu au passé ce type de problemes.
    0