54 lines
1.8 KiB
Plaintext
54 lines
1.8 KiB
Plaintext
* Pathological floating point problems 03/05/2016
|
|
PATHOFP CSECT
|
|
USING PATHOFP,R13
|
|
SAVEAR B STM-SAVEAR(R15)
|
|
DC 17F'0'
|
|
STM STM R14,R12,12(R13)
|
|
ST R13,4(R15)
|
|
ST R15,8(R13)
|
|
LR R13,R15
|
|
LE F0,=E'2'
|
|
STE F0,U u(1)=2
|
|
LE F0,=E'-4'
|
|
STE F0,U+4 u(2)=-4
|
|
LA R6,3 n=3
|
|
LA R7,U+4 @u(n-1)
|
|
LA R8,U @u(n-2)
|
|
LA R9,U+8 @u(n)
|
|
LOOPN CH R6,=H'100' do n=3 to 100
|
|
BH ELOOPN
|
|
LE F4,0(R7) u(n-1)
|
|
LE F2,=E'1130' 1130
|
|
DER F2,F4 1130/u(n-1)
|
|
LE F0,=E'111' 111
|
|
SER F0,F2 111-1130/u(n-1)
|
|
LE F2,0(R7) u(n-1)
|
|
LE F4,0(R8) u(n-2)
|
|
MER F2,F4 u(n-1)*u(n-2)
|
|
LE F6,=E'3000' 3000
|
|
DER F6,F2 3000/(u(n-1)*u(n-2))
|
|
AER F0,F6 111-1130/u(n-1)+3000/(u(n-1)*u(n-2))
|
|
STE F0,0(R9) store into u(n)
|
|
XDECO R6,PG+0 n
|
|
LE F0,0(R9) u(n)
|
|
LA R0,3 number of decimals
|
|
BAL R14,FORMATF format(u(n),'F13.3')
|
|
MVC PG+12(13),0(R1) put into buffer
|
|
XPRNT PG,80 print buffer
|
|
LA R6,1(R6) n=n+1
|
|
LA R7,4(R7) @u(n-1)
|
|
LA R8,4(R8) @u(n-2)
|
|
LA R9,4(R9) @u(n)
|
|
B LOOPN
|
|
ELOOPN L R13,4(0,R13)
|
|
LM R14,R12,12(R13)
|
|
XR R15,R15
|
|
BR R14
|
|
COPY FORMATF
|
|
LTORG
|
|
PG DC CL80' ' buffer
|
|
U DS 100E
|
|
YREGS
|
|
YFPREGS
|
|
END PATHOFP
|