X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Ff4%2FFRTSRC%2Fcosh.ra;fp=sw%2Ff4%2FFRTSRC%2Fcosh.ra;h=3715b77cfd56aa132181e9b97e4d49fab408c638;hb=7af5ad59491ddf2066641aef1e0025a337c0f247;hp=0000000000000000000000000000000000000000;hpb=919757fd611e482003ce51f366f6783cab73dea3;p=pdp8.git diff --git a/sw/f4/FRTSRC/cosh.ra b/sw/f4/FRTSRC/cosh.ra new file mode 100644 index 0000000..3715b77 --- /dev/null +++ b/sw/f4/FRTSRC/cosh.ra @@ -0,0 +1,83 @@ +/ +/ VERSION 5A 4-27-77 PT +/ +/ C O S H +/ - - - - +/ +/SUBROUTINE COSH(X) +/ +/ VERSION 5A 4-27-77 PT + SECT COSH + JA #COSH +COSHE, FLDA COSHB /GIVE INFINITY IN CASE OF NO REC + EXTERN #ARGER + TRAP4 #ARGER + TEXT +COSH + +COSHXR, SETX XRCOSH + SETB BPCOSH +BPCOSH, FNOP + 0 + 0 +XRCOSH, F 0.0 +COSH7, F 0.0 +COSH8, F 0.0 +F1COSH, F 1. +F2COSH, F 2. + ORG 10*3+BPCOSH + FNOP + JA COSHXR + 0 +CSHRTN, JA . +/ +COSHLG, 0 + 2613 + 4412 +/ +COSHB, 3777 + 3777 + 7777 +/ +/ +COSH1, F 88.029 /LIMIT FACTOR. + BASE 0 +#COSH, STARTD + FLDA 10*3 + FSTA CSHRTN + FLDA 0 + SETX XRCOSH + SETB BPCOSH + BASE BPCOSH + LDX 1,1 + FSTA BPCOSH + FLDA% BPCOSH,1 /ADDR OF X + FSTA BPCOSH + STARTF + FLDA% BPCOSH /GET X + FSTA COSH8 /SAVE ARGUMENT + JGE .+3 /ABS(X) + FNEG + FSTA COSH7 + FSUB COSH1 /TEST FOR LIMITS. + JGE COSHBG + EXTERN EXP + JSR EXP /EXP(X) + JA .+4 + JA COSH8 + FSTA COSH7 + FLDA F1COSH /1. + FDIV COSH7 / 1./EXP(X) + FADD COSH7 / EXP(X)+1./EXP(X) + FDIV F2COSH / (EXP(X)+1./EXP(X))2. + JA CSHRTN /AND THAT IS THE DEFINITION OF COSH. +/ +/ +COSHBG, FSUB COSHLG /SEE IF TOO BIG + JGT COSHE /YEP. ERROR + FADD COSH1 /READD IN SUBTRACTION FACTOR. + FSTA COSH8 / EXP(ABS(X)-LN(2)) + EXTERN EXP + JSR EXP + JA .+4 + JA COSH8 + JA CSHRTN / A VERY GOOD APPROXIMATION. +