function fact (ival,ier) c* c*********************************************************************** c* c* "Copyright [c] CNES 98 - tous droits reserves" c* ********************************************** c* c*pro MAGLIB c* c*VER 99.03.31 - V 1.0 c*VER 01.06.05 - V 2.0 c*VER 03.01.06 - V 2.1 c* c*AUT spec. CNES c*AUT port. CISI c* c*ROL Theme : Calculs mathematiques c*ROL Calcul de la factorielle d'un nombre c* c*PAR ival (I) : nombre dont on veut calculer la factorielle c* c*PAR fact (O) : resultat de la fonction : factorielle c* c*PAR ier (O) : code de retour c* c*NOT ier : sans objet c* c*INF utilise : sans objet c* c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP c*HST version 2.0 - 01.06.05 - correction de commentaires de code c*HST version 2.1 - 03.01.06 - corrections en compilation avec g77 c* c*********************************************************************** c* implicit none c c ------------------------- c*FON Declaration dela fonction c ------------------------- c double precision fact c c --------------------------------- c*FON Declaration identificateur rcs_id c --------------------------------- c character rcs_id*100 c c -------------------------- c*FON Declaration des parametres c -------------------------- c integer ival integer ier c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer i c*LOC i : indice de boucles c double precision fac(0:1000) c SAVE c c --------------------------------- c*FON Affectation identificateur rcs_id c --------------------------------- c data rcs_id /" >$Id$"/ c c c ****************** c Debut de programme c ****************** c ier = 0 c fac(0) = 1.d0 c if (ival .eq. 0) then c fac(ival) = 1.d0 c else if (ival .ge. 1) then c do 10 i = 1, ival fac(i) = fac(i - 1) * dble(i) 10 continue c endif c fact = fac(ival) c c **************** c Fin de programme c **************** c return end