[fortran] transtypage

Fermé
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 oct. 2005 à 17:19
hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 - 11 oct. 2005 à 19:12
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)

3 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
10 oct. 2005 à 18:03
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
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
11 oct. 2005 à 09:41
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
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
11 oct. 2005 à 18:07
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
hssissen Messages postés 844 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 9 janvier 2017 50
11 oct. 2005 à 19:12
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