Fortran : fonction inconnue [Résolu/Fermé]

Signaler
-
 BP06 -
Bonjour, j'aimerais comprendre un programme écrit en Fortran 77 mais je ne connais pas du tout ce langage.

La ligne qui me gêne est la suivante :

scr2=sign(1.0/y(i) ,0.1*epsmin*ascr - d(i) )

où epsmin, ascr sont des réels, y(i) est la ième composante du vecteur y (c'est donc un réel), de-même pour d(i).

Que fait la fonction sign ?

Je comprends que sign(x) = 1 ou -1 suivant le fait que x soit positif ou nul, mais sign(x,y) ?

Merci beaucoup.

3 réponses

Messages postés
1225
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
13 juin 2005
140
salut,
Voila ce qui devrais t'aider (si tu comprend l'anglais)

http://www.math.hawaii.edu/lab/197/fortran/fort4.htm

en gros, c'est son role:
The function sign in Fortran is called the sign transfer function. It is a function of two variables, and its definition involves two cases:

CASE 1:   If y ≥ 0 then 		
		sign(x,y) = abs(x)   ,
CASE 2:   If y < 0 then 		
		sign(x,y) = - abs(x)


sinon je vais te traduire ça ici (tu demance si c'est le cas!)
soit pour la fonction sign(x) = + ou - un selon le signe de x, tapper:
sign(1D0,x), remplacer 1D0 par le type de x selon usage...
SIGN(parametre1,parametre2)

renvoie parametre1 avec signe du 2ème parametre
exemple:
SIGN(50,-20) renvoie -50 (explication 50x-1)

SIGN(-50,-20) renvoie +50(explication -50x-1)


SIGN(50,20) renvoie 50(explication 50x1)

SIGN(-50,40) renvoie -50(explication -50x1)

attention si tu donnes parametre2=0 ,resultat imprevu(unsafe)
Afin de ne pas laisser des erreurs :
SIGN(-20,+50) --> +20
SIGN(-20,-50) --> -20
SIGN(+20,+50) --> +20
SING(+20,-50) --> -20

Si le deuxieme parametre est nul, il faut distinguer le cas entier (traité comme positif) du cas flottant où les conventions IEEE s'appliquent (cas du zéro négatif)