A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / exp.ra
diff --git a/sw/os8/v3d/sources/fortran/dectapes/dectape2/exp.ra b/sw/os8/v3d/sources/fortran/dectapes/dectape2/exp.ra
new file mode 100644 (file)
index 0000000..141e20e
--- /dev/null
@@ -0,0 +1,109 @@
+/
+/
+/      E  X  P
+/      -  -  -
+/
+/SUBROUTINE    EXP(X)
+/
+/ VERSION 5A 4-27-77  PT
+/
+       SECT    EXP
+       JA      #EXP
+       0
+EXPFUD,        0
+       0
+       0
+/
+       EXTERN  #ARGER
+EXPER, TRAP4   #ARGER
+       TEXT    +EXP   +
+EXPXR, SETX    XREXP
+       SETB    BPEXP
+BPEXP, F 0.0
+XREXP, F 0.0
+EXP1,  F 0.0
+EXP2,  F 0.0
+EXP33, F 0.0
+EXP4,  F 0.0
+F1EXP, F       1.
+F2EXP, F       2.
+       ORG     10*3+BPEXP
+       FNOP
+       JA      EXPXR
+       0
+EXPRTN,        JA      .
+/
+EXPAF, 4
+       2372
+       1402
+/
+EXPBF, 7774
+       2157
+       5157
+/
+EXPCF, 12
+       5454
+       343
+/
+EXPDF, 7
+       2566
+       5341
+/
+EXP2E, 1
+       2705
+       2435
+       BASE    0
+#EXP,  STARTD
+       FLDA    10*3
+       FSTA    EXPRTN
+       FLDA    0
+       SETX    XREXP
+       SETB    BPEXP
+       BASE    BPEXP
+       LDX     1,1     
+       FSTA    BPEXP
+       FLDA%   BPEXP,1 /ADDR OF X
+       FSTA    BPEXP
+       STARTF
+       FLDA%   BPEXP   /GET X
+       LDX     -1,0            /PRESERVE SIGN.
+       JGE     .+5
+       FNEG                    /IF NEGATIVE NEGATE IT.
+       LDX     0,0             /AND REMEMBER IT,BUBBY.
+       FMUL    EXP2E           /MULTIPLY TO BINARY TYPE.
+       FSTA    EXP1            /AND SAVE IT AWAY.
+       JAL     EXPER           /CAN T FIX IT, ERROR.
+       ALN     0               /FIX IT UP.
+       FSTA    EXP33           /AND SAVE IT.
+       FNORM                   /NOW NORMALIZE FOR OUR COMPUTATIONS.
+       FNEG                    /NEGATE THE FAC
+       FADD    EXP1            /ADD IN BEFORE NORMAL.
+       FSTA    EXP1            /AND STORE BACK. NO FADDM
+       FMUL    EXP1            /NOW SQUARE IT.
+       FSTA    EXP2            /AND SAVE IT.
+       FADD    EXPDF           /START THE ITERATION.
+       FSTA    EXP4            /SAVE IN ANOTHER TEMP.
+       FLDA    EXPCF           /NEXT CONSTANT.
+       FDIV    EXP4            /AND DIVIDE INTO IT.
+       FSUB    EXP1            /SUBTRACT BACK NOW.
+       FADD    EXPAF           /NEXT CONSTANT.
+       FSTA    EXP4            /AND SAVE AGAIN. KEEP THIS UP.
+       FLDA    EXPBF
+       FMUL    EXP2
+       FADDM   EXP4
+       FLDA    EXP1
+       FDIV    EXP4
+       FMUL    F2EXP
+       FADD    F1EXP
+       FSTA    EXPFUD          /NOW FIDDLE THE EXPONENT.
+       STARTD
+       FLDA    EXP33
+       FADDM   EXPFUD-1        /EXPONENT UPDATE.
+       STARTF
+       JXN     EXPP,0          /NO INVERSION NECESSARY. RETURN.
+       FLDA    F1EXP           /INVERT IT
+       FDIV    EXPFUD
+       JA      EXPRTN
+EXPP,  FLDA    EXPFUD          /AN EXIT.
+       JA      EXPRTN
+\f