File:  [local] / rpl / src / bibliotheque_logarithmique.f
Revision 1.70: download - view: text, annotated - select for diffs - revision graph
Wed Jan 17 16:57:08 2024 UTC (3 months, 1 week ago) by bertrand
Branches: MAIN
CVS tags: HEAD
En route pour la 4.1.36.

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

CVSweb interface <joel.bertrand@systella.fr>