Web pdp-10.trailing-edge.com

Trailing-Edge - PDP-10 Archives - decuslib10-02 - 43,50145/eli1.ssp
There are 2 other files named eli1.ssp in the archive. Click here to see a list.
```C                                                                       ELI1  10
C     ..................................................................ELI1  20
C                                                                       ELI1  30
C        SUBROUTINE ELI1                                                ELI1  40
C                                                                       ELI1  50
C        PURPOSE                                                        ELI1  60
C           COMPUTES THE ELLIPTIC INTEGRAL OF FIRST KIND                ELI1  70
C                                                                       ELI1  80
C        USAGE                                                          ELI1  90
C           CALL ELI1(RES,X,CK)                                         ELI1 100
C                                                                       ELI1 110
C        DESCRIPTION OF PARAMETERS                                      ELI1 120
C           RES   - RESULT VALUE                                        ELI1 130
C           X     - UPPER INTEGRATION BOUND (ARGUMENT OF ELLIPTIC       ELI1 140
C                   INTEGRAL OF FIRST KIND)                             ELI1 150
C           CK    - COMPLEMENTARY MODULUS                               ELI1 160
C                                                                       ELI1 170
C        REMARKS                                                        ELI1 180
C           MODULUS K = SQRT(1.-CK*CK).                                 ELI1 190
C                                                                       ELI1 200
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  ELI1 210
C           NONE                                                        ELI1 220
C                                                                       ELI1 230
C        METHOD                                                         ELI1 240
C           DEFINITION                                                  ELI1 250
C           RES=INTEGRAL(1/SQRT((1+T*T)*(1+(CK*T)**2)), SUMMED          ELI1 260
C           OVER T FROM 0 TO X).                                        ELI1 270
C           EQUIVALENT ARE THE DEFINITIONS                              ELI1 280
C           RES=INTEGRAL(1/(COS(T)*SQRT(1+(CK*TAN(T))**2)), SUMMED      ELI1 290
C           OVER T FROM 0 TO ATAN(X)),                                  ELI1 300
C           RES=INTEGRAL(1/SQRT(1-(K*SIN(T))**2), SUMMED OVER           ELI1 310
C           T FROM 0 TO ATAN(X)).                                       ELI1 320
C           EVALUATION                                                  ELI1 330
C           LANDENS TRANSFORMATION IS USED FOR CALCULATION.             ELI1 340
C           REFERENCE                                                   ELI1 350
C           R. BULIRSCH, NUMERICAL CALCULATION OF ELLIPTIC INTEGRALS ANDELI1 360
C                  ELLIPTIC FUNCTIONS.                                  ELI1 370
C                  HANDBOOK SERIES OF SPECIAL FUNCTIONS                 ELI1 380
C                  NUMERISCHE MATHEMATIK VOL. 7, 1965, PP. 78-90.       ELI1 390
C                                                                       ELI1 400
C     ..................................................................ELI1 410
C                                                                       ELI1 420
SUBROUTINE ELI1(RES,X,CK)                                         ELI1 430
C                                                                       ELI1 440
IF(X)2,1,2                                                        ELI1 450
1 RES=0.                                                            ELI1 460
RETURN                                                            ELI1 470
2 IF(CK)4,3,4                                                       ELI1 480
3 RES=ALOG(ABS(X)+SQRT(1.+X*X))                                     ELI1 490
GOTO 13                                                           ELI1 500
4 ANGLE=ABS(1./X)                                                   ELI1 510
GEO=ABS(CK)                                                       ELI1 520
ARI=1.                                                            ELI1 530
PIM=0.                                                            ELI1 540
5 SQGEO=ARI*GEO                                                     ELI1 550
AARI=ARI                                                          ELI1 560
ARI=GEO+ARI                                                       ELI1 570
ANGLE=-SQGEO/ANGLE+ANGLE                                          ELI1 580
SQGEO=SQRT(SQGEO)                                                 ELI1 590
IF(ANGLE)7,6,7                                                    ELI1 600
C     REPLACE 0 BY SMALL VALUE                                          ELI1 610
6 ANGLE=SQGEO*1.E-8                                                 ELI1 620
7 TEST=AARI*1.E-4                                                   ELI1 630
IF(ABS(AARI-GEO)-TEST)10,10,8                                     ELI1 640
8 GEO=SQGEO+SQGEO                                                   ELI1 650
PIM=PIM+PIM                                                       ELI1 660
IF(ANGLE)9,5,5                                                    ELI1 670
9 PIM=PIM+3.1415927                                                 ELI1 680
GOTO 5                                                            ELI1 690
10 IF(ANGLE)11,12,12                                                 ELI1 700
11 PIM=PIM+3.1415927                                                 ELI1 710
12 RES=(ATAN(ARI/ANGLE)+PIM)/ARI                                     ELI1 720
13 IF(X)14,15,15                                                     ELI1 730
14 RES=-RES                                                          ELI1 740
15 RETURN                                                            ELI1 750
END                                                               ELI1 760
```