[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 -
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)
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)
3 réponses
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
Ce qui donner le résultat suivant
A+, crabs
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
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.
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.
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
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