IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Appel de fonction Fortran via un programme C


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Par défaut Appel de fonction Fortran via un programme C
    Bonjour

    Depuis un programme écrit en C, j'appelle des fonctions Fortran. J'ai eu quelques soucis parce que le C passe les paramètres par valeurs tandis que le fortran les attend par adresse. Le problème que j'ai est pour récupérer la valeur retournée par la fonction Fortran.

    Voici le code C de ma fonction :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    double sortie2;
    sortie2 = hspt_ (0.08, 0.08, 1);

    Voici le code Fortran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         real*8 function hspt (a,b,c) 
          hspt=a+b+c
          return
          end
    Normalement, sortie2 devrait valoir 1.16. Mais en sortie j'ai une valeur de type 1073741824.
    Est-ce que quelqu'un pourrait m'aider ?
    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    salut,

    Regarde dans la doc de ton compilateur l'attribut VALUE (je ne sais pas si cet attribut est implémenté partout) pour tes variables a, b, c.

    Si ton compilateur supporte la norme 2003, jette un œil à www.idris.fr/data/cours/lang/fortran/f2003/Fortran_2003.pdf

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Une idée en passant: tu ne spécifie pas les types de a, b et c dans ta fonction fortran; il sont probablement (sauf option de compilation spécifiques) considéré comme des réels simple précision.
    Et si je ne m'abuse, en C les constantes littérales (telles tes '0.08' et '1' des arguments mis à l'appel de ta fonction fortran) sont par défaut en double précision...

    Rajouter une saine déclaration explicite des types des arguments
    dans ta fonction fortran te permettras de voir si le problème est bien là.

    Bonne continuation.

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Par défaut
    hspt dans le code fortran en mode debug vaut bien 1.16.
    Je ne pense pas que le problème vinne de la déclaration de a,b,c.

Discussions similaires

  1. Appeler une fonction matlab dans un programme C++
    Par samiaarch dans le forum C++
    Réponses: 1
    Dernier message: 15/10/2012, 22h22
  2. Appel de fonction PHP via un lien
    Par redvivi dans le forum Langage
    Réponses: 1
    Dernier message: 21/02/2008, 20h56
  3. appeler une fonction dans un autre programme
    Par elghadi_mohamed dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2007, 19h58
  4. Réponses: 20
    Dernier message: 08/09/2006, 10h55
  5. Appeler une fonction Access via un .bat
    Par kluh dans le forum Access
    Réponses: 12
    Dernier message: 27/11/2005, 23h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo