[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)

3 réponses

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
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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 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
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