Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap2_198111 - decus/20-0026/dcel1.ssp
There are 2 other files named dcel1.ssp in the archive. Click here to see a list.
C                                                                       DCE1  10
C     ..................................................................DCE1  20
C                                                                       DCE1  30
C        SUBROUTINE DCEL1                                               DCE1  40
C                                                                       DCE1  50
C        PURPOSE                                                        DCE1  60
C           CALCULATE COMPLETE ELLIPTIC INTEGRAL OF FIRST KIND          DCE1  70
C                                                                       DCE1  80
C        USAGE                                                          DCE1  90
C           CALL DCEL1(RES,AK,IER)                                      DCE1 100
C                                                                       DCE1 110
C        DESCRIPTION OF PARAMETERS                                      DCE1 120
C           RES   - RESULT VALUE IN DOUBLE PRECISION                    DCE1 130
C           AK    - MODULUS (INPUT) IN DOUBLE PRECISION                 DCE1 140
C           IER   - RESULTANT ERROR CODE WHERE                          DCE1 150
C                   IER=0  NO ERROR                                     DCE1 160
C                   IER=1  AK NOT IN RANGE -1 TO +1                     DCE1 170
C                                                                       DCE1 180
C        REMARKS                                                        DCE1 190
C           THE RESULT IS SET TO 1.E75 IF ABS(AK) GE 1                  DCE1 200
C           FOR MODULUS AK AND COMPLEMENTARY MODULUS CK,                DCE1 210
C           EQUATION AK*AK+CK*CK=1.D0 IS USED.                          DCE1 220
C           AK MUST BE IN THE RANGE -1 TO +1                            DCE1 230
C                                                                       DCE1 240
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  DCE1 250
C           NONE                                                        DCE1 260
C                                                                       DCE1 270
C        METHOD                                                         DCE1 280
C           DEFINITION                                                  DCE1 290
C           CEL1(AK)=INTEGRAL(1/SQRT((1+T*T)*(1+(CK*T)**2)), SUMMED     DCE1 300
C           OVER T FROM 0 TO INFINITY).                                 DCE1 310
C           EQUIVALENT ARE THE DEFINITIONS                              DCE1 320
C           CEL1(AK)=INTEGRAL(1/(COS(T)SQRT(1+(CK*TAN(T))**2)),SUMMED   DCE1 330
C           OVER T FROM 0 TO PI/2),                                     DCE1 340
C           CEL1(AK)=INTEGRAL(1/SQRT(1-(AK*SIN(T))**2),SUMMED OVER T    DCE1 350
C           FROM 0 TO PI/2), WHERE K=SQRT(1.-CK*CK).                    DCE1 360
C           EVALUATION                                                  DCE1 370
C           LANDENS TRANSFORMATION IS USED FOR CALCULATION.             DCE1 380
C           REFERENCE                                                   DCE1 390
C           R.BULIRSCH, 'NUMERICAL CALCULATION OF ELLIPTIC INTEGRALS    DCE1 400
C           AND ELLIPTIC FUNCTIONS', HANDBOOK SERIES SPECIAL FUNCTIONS, DCE1 410
C           NUMERISCHE MATHEMATIK VOL. 7, 1965, PP. 78-90.              DCE1 420
C                                                                       DCE1 430
C     ..................................................................DCE1 440
C                                                                       DCE1 450
      SUBROUTINE DCEL1(RES,AK,IER)                                      DCE1 460
      DOUBLE PRECISION RES,AK,GEO,ARI,AARI                              DCE1 470
      IER=0                                                             DCE1 480
      ARI=2.D0                                                          DCE1 490
      GEO=(0.5D0-AK)+0.5D0                                              DCE1 500
      GEO=GEO+GEO*AK                                                    DCE1 510
      RES=0.5D0                                                         DCE1 520
      IF(GEO)1,2,4                                                      DCE1 530
    1 IER=1                                                             DCE1 540
    2 RES=1.7D38                                                         DCE1 550
      RETURN                                                            DCE1 560
    3 GEO=GEO*AARI                                                      DCE1 570
    4 GEO=DSQRT(GEO)                                                    DCE1 580
      GEO=GEO+GEO                                                       DCE1 590
      AARI=ARI                                                          DCE1 600
      ARI=ARI+GEO                                                       DCE1 610
      RES=RES+RES                                                       DCE1 620
      IF(GEO/AARI-0.999999995D0)3,5,5                                   DCE1 630
    5 RES=RES/ARI*6.2831853071795865D0                                  DCE1 640
      RETURN                                                            DCE1 650
      END                                                               DCE1 660