File:  [local] / rpl / src / bibliotheque_logarithmique.f
Revision 1.17: download - view: text, annotated - select for diffs - revision graph
Wed Apr 20 08:26:04 2011 UTC (13 years ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Ajout des premiers bouts de rplcas.

    1: C===============================================================================
    2: C RPL/2 (R) version 4.1.0.prerelease.0
    3: C Copyright (C) 1989-2011 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: <<<<<<< bibliotheque_logarithmique.f
   20: C RPL/2 (R) version 4.1.0.prerelease.0
   21: =======
   22: C RPL/2 (R) version 4.0.23
   23: >>>>>>> 1.15.2.2
   24: C Copyright (C) 1989-2011 Dr. BERTRAND Joël
   25: C
   26: C This file is part of RPL/2.
   27: C
   28: C RPL/2 is free software; you can redistribute it and/or modify it
   29: C under the terms of the CeCILL V2 License as published by the french
   30: C CEA, CNRS and INRIA.
   31: C
   32: C RPL/2 is distributed in the hope that it will be useful, but WITHOUT
   33: C ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   34: C FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
   35: C for more details.
   36: C
   37: C You should have received a copy of the CeCILL License
   38: C along with RPL/2. If not, write to info@cecill.info.
   39: C===============================================================================
   40: 
   41: 
   42: C===============================================================================
   43: C  Fonctions logarithmiques diverses
   44: C===============================================================================
   45: 
   46: C-------------------------------------------------------------------------------
   47: C  Logarithme naturel
   48: C-------------------------------------------------------------------------------
   49: 
   50:       subroutine F77LNIP(ARGUMENT, RESULTAT, ERREUR)
   51: 
   52:       implicit none
   53: 
   54:       integer*4     ERREUR
   55: 
   56:       integer*8     ARGUMENT
   57: 
   58:       real*8        RESULTAT
   59: 
   60:       if (ARGUMENT.ne.0) then
   61:           RESULTAT = log(dble(ARGUMENT))
   62:           ERREUR = 0
   63:       else
   64:           RESULTAT = 0
   65:           ERREUR = -1
   66:       end if
   67:       return
   68:       end
   69: 
   70:       subroutine F77LNIN(ARGUMENT, RESULTAT, ERREUR)
   71: 
   72:       implicit none
   73: 
   74:       complex*16    RESULTAT
   75: 
   76:       integer*4     ERREUR
   77: 
   78:       integer*8     ARGUMENT
   79: 
   80:       if (ARGUMENT.ne.0) then
   81:           RESULTAT = log(dble(ARGUMENT) + (0,0))
   82:           ERREUR = 0
   83:       else
   84:           RESULTAT = 0
   85:           ERREUR = -1
   86:       end if
   87:       return
   88:       end
   89: 
   90:       subroutine F77LNRP(ARGUMENT, RESULTAT, ERREUR)
   91: 
   92:       implicit none
   93: 
   94:       integer*4     ERREUR
   95: 
   96:       real*8        ARGUMENT
   97:       real*8        RESULTAT
   98: 
   99:       if (ARGUMENT.ne.0) then
  100:           RESULTAT = log(ARGUMENT)
  101:           ERREUR = 0
  102:       else
  103:           RESULTAT = 0
  104:           ERREUR = -1
  105:       end if
  106:       return
  107:       end
  108: 
  109:       subroutine F77LNRN(ARGUMENT, RESULTAT, ERREUR)
  110: 
  111:       implicit none
  112: 
  113:       complex*16    RESULTAT
  114: 
  115:       integer*4     ERREUR
  116: 
  117:       real*8        ARGUMENT
  118: 
  119:       if (ARGUMENT.ne.0) then
  120:           RESULTAT = log(ARGUMENT + (0,0))
  121:           ERREUR = 0
  122:       else
  123:           RESULTAT = 0
  124:           ERREUR = -1
  125:       end if
  126:       return
  127:       end
  128: 
  129:       subroutine F77LNC(ARGUMENT, RESULTAT, ERREUR)
  130: 
  131:       implicit none
  132: 
  133:       complex*16    ARGUMENT
  134:       complex*16    RESULTAT
  135: 
  136:       integer*4     ERREUR
  137: 
  138:       if (ARGUMENT.ne.0) then
  139:           RESULTAT = log(ARGUMENT)
  140:           ERREUR = 0
  141:       else
  142:           RESULTAT = 0
  143:           ERREUR = -1
  144:       end if
  145:       return
  146:       end
  147: 
  148: C-------------------------------------------------------------------------------
  149: C  Logarithme vulgaire
  150: C-------------------------------------------------------------------------------
  151: 
  152:       subroutine F77LOGIP(ARGUMENT, RESULTAT, ERREUR)
  153: 
  154:       implicit none
  155: 
  156:       integer*4     ERREUR
  157: 
  158:       integer*8     ARGUMENT
  159: 
  160:       real*8        RESULTAT
  161: 
  162:       if (ARGUMENT.ne.0) then
  163:           RESULTAT = log(dble(ARGUMENT)) / log(1D1)
  164:           ERREUR = 0
  165:       else
  166:           RESULTAT = 0
  167:           ERREUR = -1
  168:       end if
  169:       return
  170:       end
  171: 
  172:       subroutine F77LOGIN(ARGUMENT, RESULTAT, ERREUR)
  173: 
  174:       implicit none
  175: 
  176:       complex*16    RESULTAT
  177: 
  178:       integer*4     ERREUR
  179: 
  180:       integer*8     ARGUMENT
  181: 
  182:       if (ARGUMENT.ne.0) then
  183:           RESULTAT = log(dble(ARGUMENT) + (0,0)) / log(1D1)
  184:           ERREUR = 0
  185:       else
  186:           RESULTAT = 0
  187:           ERREUR = -1
  188:       end if
  189:       return
  190:       end
  191: 
  192:       subroutine F77LOGRP(ARGUMENT, RESULTAT, ERREUR)
  193: 
  194:       implicit none
  195: 
  196:       integer*4     ERREUR
  197: 
  198:       real*8        ARGUMENT
  199:       real*8        RESULTAT
  200: 
  201:       if (ARGUMENT.ne.0) then
  202:           RESULTAT = log(ARGUMENT) / log(1D1)
  203:           ERREUR = 0
  204:       else
  205:           RESULTAT = 0
  206:           ERREUR = -1
  207:       end if
  208:       return
  209:       end
  210: 
  211:       subroutine F77LOGRN(ARGUMENT, RESULTAT, ERREUR)
  212: 
  213:       implicit none
  214: 
  215:       complex*16    RESULTAT
  216:       integer*4     ERREUR
  217: 
  218:       real*8        ARGUMENT
  219: 
  220:       if (ARGUMENT.ne.0) then
  221:           RESULTAT = log(ARGUMENT + (0,0)) / log(1D1)
  222:           ERREUR = 0
  223:       else
  224:           RESULTAT = 0
  225:           ERREUR = -1
  226:       end if
  227:       return
  228:       end
  229: 
  230:       subroutine F77LOGC(ARGUMENT, RESULTAT, ERREUR)
  231: 
  232:       implicit none
  233: 
  234:       complex*16    ARGUMENT
  235:       complex*16    RESULTAT
  236: 
  237:       integer*4     ERREUR
  238: 
  239:       if (ARGUMENT.ne.0) then
  240:           RESULTAT = log(ARGUMENT) / log(1D1)
  241:           ERREUR = 0
  242:       else
  243:           RESULTAT = 0
  244:           ERREUR = -1
  245:       end if
  246:       return
  247:       end
  248: 
  249: C-------------------------------------------------------------------------------
  250: C  Sinus hyperbolique
  251: C-------------------------------------------------------------------------------
  252: 
  253:       subroutine F77SINH(ARGUMENT, RESULTAT)
  254: 
  255:       implicit none
  256: 
  257:       complex*16    ARGUMENT
  258:       complex*16    RESULTAT
  259: 
  260:       RESULTAT = (exp(ARGUMENT) - exp(-ARGUMENT)) / 2
  261:       return
  262:       end
  263: 
  264:       subroutine F77ASINHC(ARGUMENT, RESULTAT)
  265: 
  266:       implicit none
  267: 
  268:       complex*16    ARGUMENT
  269:       complex*16    RESULTAT
  270: 
  271:       RESULTAT = log(ARGUMENT + sqrt((ARGUMENT ** 2) + 1))
  272:       return
  273:       end
  274: 
  275:       subroutine F77ASINHI(ARGUMENT, RESULTAT)
  276: 
  277:       implicit none
  278: 
  279:       integer*8     ARGUMENT
  280:       real*8        RESULTAT
  281: 
  282:       RESULTAT = log(ARGUMENT + sqrt((dble(ARGUMENT) ** 2) + 1))
  283:       return
  284:       end
  285: 
  286:       subroutine F77ASINHR(ARGUMENT, RESULTAT)
  287: 
  288:       implicit none
  289: 
  290:       real*8        ARGUMENT
  291:       real*8        RESULTAT
  292: 
  293:       RESULTAT = log(ARGUMENT + sqrt((dble(ARGUMENT) ** 2) + 1))
  294:       return
  295:       end
  296: 
  297: C-------------------------------------------------------------------------------
  298: C  Cosinus hyperbolique
  299: C-------------------------------------------------------------------------------
  300: 
  301:       subroutine F77COSH(ARGUMENT, RESULTAT)
  302: 
  303:       implicit none
  304: 
  305:       complex*16    ARGUMENT
  306:       complex*16    RESULTAT
  307: 
  308:       RESULTAT = (exp(ARGUMENT) + exp(-ARGUMENT)) / 2
  309:       return
  310:       end
  311: 
  312:       subroutine F77ACOSHC(ARGUMENT, RESULTAT)
  313: 
  314:       implicit none
  315: 
  316:       complex*16    ARGUMENT
  317:       complex*16    RESULTAT
  318: 
  319:       RESULTAT = log(ARGUMENT + sqrt((ARGUMENT ** 2) - 1))
  320:       return
  321:       end
  322: 
  323:       subroutine F77ACOSHI(ARGUMENT, RESULTAT)
  324: 
  325:       implicit none
  326: 
  327:       integer*8     ARGUMENT
  328:       real*8        RESULTAT
  329: 
  330:       RESULTAT = log(ARGUMENT + sqrt((dble(ARGUMENT) ** 2) - 1))
  331:       return
  332:       end
  333: 
  334:       subroutine F77ACOSHR(ARGUMENT, RESULTAT)
  335: 
  336:       implicit none
  337: 
  338:       real*8        ARGUMENT
  339:       real*8        RESULTAT
  340: 
  341:       RESULTAT = log(ARGUMENT + sqrt((dble(ARGUMENT) ** 2) - 1))
  342:       return
  343:       end
  344: 
  345: C-------------------------------------------------------------------------------
  346: C  Tangente hyperbolique
  347: C-------------------------------------------------------------------------------
  348: 
  349:       subroutine F77TANH(ARGUMENT, RESULTAT, ERREUR)
  350: 
  351:       implicit none
  352: 
  353:       complex*16    ARGUMENT
  354:       complex*16    COSINUSH
  355:       complex*16    RESULTAT
  356:       complex*16    SINUSH
  357: 
  358:       integer*4     ERREUR
  359: 
  360:       ERREUR = 0
  361: 
  362:       if (dimag(ARGUMENT).eq.0) then
  363:           RESULTAT = dtan(dble(ARGUMENT))
  364:       else
  365:           call F77COSH(ARGUMENT, COSINUSH)
  366: 
  367:           if (COSINUSH.ne.0) then
  368:               call F77SINH(ARGUMENT, SINUSH)
  369:               RESULTAT = SINUSH / COSINUSH
  370:           else
  371:               RESULTAT = 0
  372:               ERREUR = -1
  373:           end if
  374:       end if
  375:       return
  376:       end
  377: 
  378:       subroutine F77ATANHC(ARGUMENT, RESULTAT)
  379: 
  380:       implicit none
  381: 
  382:       complex*16    ARGUMENT
  383:       complex*16    RESULTAT
  384: 
  385:       RESULTAT = log((1 + ARGUMENT) / (1 - ARGUMENT)) / 2
  386:       return
  387:       end
  388: 
  389:       subroutine F77ATANHI(ARGUMENT, RESULTAT)
  390: 
  391:       implicit none
  392: 
  393:       integer*8     ARGUMENT
  394:       real*8        RESULTAT
  395: 
  396:       RESULTAT = log((1 + dble(ARGUMENT)) / (1 - dble(ARGUMENT))) / 2
  397:       return
  398:       end
  399: 
  400:       subroutine F77ATANHR(ARGUMENT, RESULTAT)
  401: 
  402:       implicit none
  403: 
  404:       real*8        ARGUMENT
  405:       real*8        RESULTAT
  406: 
  407:       RESULTAT = log((1 + ARGUMENT) / (1 - ARGUMENT)) / 2
  408:       return
  409:       end
  410: 
  411: C-------------------------------------------------------------------------------
  412: C  Exponentielle complexe
  413: C-------------------------------------------------------------------------------
  414: 
  415:       subroutine F77EXPC(ARGUMENT, RESULTAT)
  416: 
  417:       implicit none
  418: 
  419:       complex*16    ARGUMENT
  420:       complex*16    RESULTAT
  421: 
  422:       RESULTAT = exp(ARGUMENT)
  423:       return
  424:       end
  425: 
  426: C-------------------------------------------------------------------------------
  427: C  Alog complexe
  428: C-------------------------------------------------------------------------------
  429: 
  430:       subroutine F77ALOGC(ARGUMENT, RESULTAT)
  431: 
  432:       implicit none
  433: 
  434:       complex*16    ARGUMENT
  435:       complex*16    RESULTAT
  436: 
  437:       RESULTAT = 10 ** ARGUMENT
  438:       return
  439:       end

CVSweb interface <joel.bertrand@systella.fr>