|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3200 (0xc80) Types: TextFile Names: »EXPFCT.SRC«
└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80) └─ ⟦this⟧ »EXPFCT.SRC«
; intrinsic function for e to the x ; NAME EXPFCT ENTRY EXPFCT,L133 EXT ABS,FPSQR,TRUNC INCLUDE DEFLT.SRC INCLUDE FCTMAC.SRC ; ; ; L118 EQU FPSQR L115 EQU ABS L129 EQU TRUNC ; ; ; function exp( x: real ):real; ; const yc = 0.34657359; ; a0 = 12.015017; ; a1 = -601.80427; ; b1 = 60.090191; ; log2e = 1.442695; ; var t1, ty, tn: real; ; t2, i: integer; ; begin L133: expfct: FC2285 ENTR D,2,16 ; t1 := x * log2e; LXI H,-4 DADD S SPHL XCHG PUSH IX POP H LXI B,8 DADD B LXI B,4 LDIR LXI H,348 LXI D,21789 PUSH H PUSH D MULT D,-4 LXI H,3 DADD S XCHG PUSH IX POP H XCHG LXI B,4 LDDR POP H POP H ; t2 := trunc( t1 ); LXI H,-4 DADD S SPHL XCHG PUSH IX POP H DCX H DCX H DCX H LXI B,4 LDIR CALL L129 MOV -14(IX),D MOV -15(IX),E ; tn := 1.0; LXI H,320 MOV D,A MOV E,A PUSH H PUSH D LXI H,3 DADD S XCHG PUSH IX POP H LXI B,-4 DADD B XCHG LXI B,4 LDDR POP H POP H ; for i := 1 to abs( t2 ) do tn := tn + tn; MOV -12(IX),A MVI -13(IX),1 PUSH IX POP H LXI B,-12 DADD B PUSH H MOV L,-15(IX) MOV H,-14(IX) CALL L115 XTHL FC2348 MOV D,M DCX H MOV E,M XTHL PUSH H GE D,0 JNC FC2349 inr -4(x) ;multiply by 2 by incrementing the exponent POP H XTHL INR M INX H JRNZ FC2369 INR M JV FC2370 FC2369 JMP FC2348 FC2349 POP D FC2370 POP D ; if t2 < 0 then tn := 1.0 / tn; MOV L,-15(IX) MOV H,-14(IX) MOV D,A MOV E,A LESS D,0 JNC FC2372 LXI H,320 MOV D,A MOV E,A PUSH H PUSH D LXI H,-4 DADD S SPHL XCHG PUSH IX POP H LXI B,-7 DADD B LXI B,4 LDIR FDVD D,-4 LXI H,3 DADD S XCHG PUSH IX POP H LXI B,-4 DADD B XCHG LXI B,4 LDDR POP H POP H FC2372 ; ty := (t1 - t2) * yc; LXI H,-4 DADD S SPHL XCHG PUSH IX POP H DCX H DCX H DCX H LXI B,4 LDIR MOV L,-15(IX) MOV H,-14(IX) PUSH H CVTF B DSUB D,-4 LXI H,-168 LXI D,-18165 PUSH H PUSH D MULT D,-4 LXI H,3 DADD S XCHG PUSH IX POP H LXI B,-8 DADD B XCHG LXI B,4 LDDR POP H POP H ; exp := tn * sqr( 1.0 + 2.0 * ty / (a0 - ty + (a1 / (b1 + sqr( ty ) ) ) ) ); LXI H,-4 DADD S SPHL XCHG PUSH IX POP H LXI B,-7 DADD B LXI B,4 LDIR LXI H,320 MOV D,A MOV E,A PUSH H PUSH D LXI H,576 MOV D,A MOV E,A PUSH H PUSH D LXI H,-4 DADD S SPHL XCHG PUSH IX POP H LXI B,-11 DADD B LXI B,4 LDIR MULT D,-4 LXI H,1120 LXI D,7873 PUSH H PUSH D LXI H,-4 DADD S SPHL XCHG PUSH IX POP H LXI B,-11 DADD B LXI B,4 LDIR DSUB D,-4 LXI H,2763 LXI D,14780 PUSH H PUSH D LXI H,1656 LXI D,11821 PUSH H PUSH D LXI H,-4 DADD S SPHL XCHG PUSH IX POP H LXI B,-11 DADD B LXI B,4 LDIR CALL L118 DADD D,-4 FDVD D,-4 DADD D,-4 FDVD D,-4 DADD D,-4 CALL L118 MULT D,-4 LXI H,3 DADD S XCHG PUSH IX POP H LXI B,15 DADD B XCHG LXI B,4 LDDR POP H POP H ; end; EXIT D,4 ; «eof»