File:  [local] / rpl / src / bibliotheque_trigonometrique.f
Revision 1.65: download - view: text, annotated - select for diffs - revision graph
Fri Jan 10 11:15:39 2020 UTC (4 years, 3 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_32, HEAD
Modification du copyright.

    1: C===============================================================================
    2: C RPL/2 (R) version 4.1.32
    3: C Copyright (C) 1989-2020 Dr. BERTRAND Joël
    4: C
    5: C This file is part of RPL/2.
    6: C
    7: C RPL/2 is free software; you can redistribute it and/or modify it
    8: C under the terms of the CeCILL V2 License as published by the french
    9: C CEA, CNRS and INRIA.
   10: C
   11: C RPL/2 is distributed in the hope that it will be useful, but WITHOUT
   12: C ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13: C FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
   14: C for more details.
   15: C
   16: C You should have received a copy of the CeCILL License
   17: C along with RPL/2. If not, write to info@cecill.info.
   18: C===============================================================================
   19: 
   20: 
   21: C===============================================================================
   22: C  Fonctions trigonometriques diverses
   23: C===============================================================================
   24: 
   25: C-------------------------------------------------------------------------------
   26: C  Sinus (argument en radians)
   27: C-------------------------------------------------------------------------------
   28: 
   29:       subroutine F77SIN(ARGUMENT, RESULTAT)
   30: 
   31:       implicit none
   32: 
   33:       complex*16    ARGUMENT
   34:       complex*16    RESULTAT
   35: 
   36:       RESULTAT = sin(ARGUMENT)
   37:       return
   38:       end
   39: 
   40: C-------------------------------------------------------------------------------
   41: C  Arcsin (argument en radians)
   42: C-------------------------------------------------------------------------------
   43: 
   44:       subroutine F77ASIN(ARGUMENT, RESULTAT)
   45: 
   46:       implicit none
   47: 
   48:       complex*16    ARGUMENT
   49:       complex*16    RESULTAT
   50: 
   51:       RESULTAT = (0,-1) * log(((0,1) * ARGUMENT) + sqrt(1 -
   52:      +        (ARGUMENT ** 2)))
   53:       return
   54:       end
   55: 
   56: C-------------------------------------------------------------------------------
   57: C  Cosinus (argument en radians)
   58: C-------------------------------------------------------------------------------
   59: 
   60:       subroutine F77COS(ARGUMENT, RESULTAT)
   61: 
   62:       implicit none
   63: 
   64:       complex*16    ARGUMENT
   65:       complex*16    RESULTAT
   66: 
   67:       RESULTAT = cos(ARGUMENT)
   68:       return
   69:       end
   70: 
   71: C-------------------------------------------------------------------------------
   72: C  Arccos (argument en radians)
   73: C-------------------------------------------------------------------------------
   74: 
   75:       subroutine F77ACOS(ARGUMENT, RESULTAT)
   76: 
   77:       implicit none
   78: 
   79:       complex*16    ARGUMENT
   80:       complex*16    RESULTAT
   81: 
   82:       RESULTAT = (0,-1) * log(ARGUMENT + sqrt((ARGUMENT ** 2) - 1))
   83:       return
   84:       end
   85: 
   86: C-------------------------------------------------------------------------------
   87: C  Tangente (argument en radians)
   88: C-------------------------------------------------------------------------------
   89: 
   90:       subroutine F77TAN(ARGUMENT, RESULTAT, ERREUR)
   91: 
   92:       implicit none
   93: 
   94:       complex*16    ARGUMENT
   95:       complex*16    COSINUS
   96:       complex*16    RESULTAT
   97: 
   98:       integer*4     ERREUR
   99: 
  100:       ERREUR = 0
  101: 
  102:       if (dimag(ARGUMENT).eq.0) then
  103:           RESULTAT = dtan(dble(ARGUMENT))
  104:       else
  105:           COSINUS = cos(ARGUMENT)
  106: 
  107:           if (COSINUS.ne.0) then
  108:               RESULTAT = sin(ARGUMENT) / COSINUS
  109:           else
  110:               RESULTAT = 0
  111:               ERREUR = -1
  112:           end if
  113:       end if
  114:       return
  115:       end
  116: 
  117: C-------------------------------------------------------------------------------
  118: C  Arctg (argument en radians)
  119: C-------------------------------------------------------------------------------
  120: 
  121:       subroutine F77ATAN(ARGUMENT, RESULTAT, ERREUR)
  122: 
  123:       implicit none
  124: 
  125:       complex*16    ARGUMENT
  126:       complex*16    RESULTAT
  127: 
  128:       integer*4     ERREUR
  129: 
  130:       ERREUR = 0
  131: 
  132:       if ((ARGUMENT.ne.(0,1)).and.(ARGUMENT.ne.(0,-1))) then
  133:           RESULTAT = (0,.5) * log(((0,1) + ARGUMENT) /
  134:      +            ((0,1) - ARGUMENT))
  135:       else
  136:           RESULTAT = 0
  137:           ERREUR = -1
  138:       end if
  139:       return
  140:       end

CVSweb interface <joel.bertrand@systella.fr>