[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)
--
Salutation !
Char Snipeur
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
-
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 f77C 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 suivantREAL*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.-
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
-
-
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.