160 lines
4.5 KiB
Plaintext
160 lines
4.5 KiB
Plaintext
GAMMAT CSECT
|
|
USING GAMMAT,R13
|
|
SAVEAR B STM-SAVEAR(R15)
|
|
DC 17F'0'
|
|
DC CL8'GAMMAT'
|
|
STM STM R14,R12,12(R13)
|
|
ST R13,4(R15)
|
|
ST R15,8(R13)
|
|
LR R13,R15
|
|
* ---- CODE
|
|
LE F4,=E'0'
|
|
LH R2,NI
|
|
LOOPI EQU *
|
|
AE F4,=E'1' xi=xi+1
|
|
LER F0,F4
|
|
DE F0,=E'10' x=xi/10
|
|
STE F0,X
|
|
LE F6,X
|
|
SE F6,=E'1' xx=x-1.0
|
|
LH R4,NT
|
|
BCTR R4,0
|
|
SLA R4,2
|
|
LE F0,T(R4)
|
|
STE F0,SUM sum=t(nt)
|
|
LH R3,NT
|
|
BCTR R3,0
|
|
SH R4,=H'4'
|
|
LOOPJ CH R3,=H'1' for j=nt-1 downto 1
|
|
BL ENDLOOPJ
|
|
LE F0,SUM
|
|
MER F0,F6 sum*xx
|
|
LE F2,T(R4) t(j)
|
|
AER F0,F2
|
|
STE F0,SUM sum=sum*xx+t(j)
|
|
BCTR R3,0
|
|
SH R4,=H'4'
|
|
B LOOPJ
|
|
ENDLOOPJ EQU *
|
|
LE F0,=E'1'
|
|
DE F0,SUM
|
|
STE F0,GAMMA gamma=1/sum
|
|
LE F0,X
|
|
BAL R14,CONVERT
|
|
MVC BUF(8),CONVERTM
|
|
LE F0,GAMMA
|
|
BAL R14,CONVERT
|
|
MVC BUF+9(13),CONVERTM
|
|
WTO MF=(E,WTOMSG)
|
|
BCT R2,LOOPI
|
|
* ---- END CODE
|
|
CNOP 0,4
|
|
L R13,4(0,R13)
|
|
LM R14,R12,12(R13)
|
|
XR R15,R15
|
|
BR R14
|
|
* ---- DATA
|
|
NI DC H'30'
|
|
NT DC AL2((TEND-T)/4)
|
|
T DC E'1.00000000000000000000'
|
|
DC E'0.57721566490153286061'
|
|
DC E'-0.65587807152025388108'
|
|
DC E'-0.04200263503409523553'
|
|
DC E'0.16653861138229148950'
|
|
DC E'-0.04219773455554433675'
|
|
DC E'-0.00962197152787697356'
|
|
DC E'0.00721894324666309954'
|
|
DC E'-0.00116516759185906511'
|
|
DC E'-0.00021524167411495097'
|
|
DC E'0.00012805028238811619'
|
|
DC E'-0.00002013485478078824'
|
|
DC E'-0.00000125049348214267'
|
|
DC E'0.00000113302723198170'
|
|
DC E'-0.00000020563384169776'
|
|
DC E'0.00000000611609510448'
|
|
DC E'0.00000000500200764447'
|
|
DC E'-0.00000000118127457049'
|
|
DC E'0.00000000010434267117'
|
|
DC E'0.00000000000778226344'
|
|
DC E'-0.00000000000369680562'
|
|
DC E'0.00000000000051003703'
|
|
DC E'-0.00000000000002058326'
|
|
DC E'-0.00000000000000534812'
|
|
DC E'0.00000000000000122678'
|
|
DC E'-0.00000000000000011813'
|
|
DC E'0.00000000000000000119'
|
|
DC E'0.00000000000000000141'
|
|
DC E'-0.00000000000000000023'
|
|
DC E'0.00000000000000000002'
|
|
TEND DS 0E
|
|
X DS E
|
|
SUM DS E
|
|
GAMMA DS E
|
|
WTOMSG DS 0F
|
|
DC AL2(L'BUF),XL2'0000'
|
|
BUF DC CL80' '
|
|
* Subroutine Convertion Float->Display
|
|
CONVERT CNOP 0,4
|
|
ME F0,CONVERTC
|
|
STE F0,CONVERTF
|
|
MVI CONVERTS,X'00'
|
|
L R9,CONVERTF
|
|
CH R9,=H'0'
|
|
BZ CONVERT7
|
|
BNL CONVERT1 is negative?
|
|
MVI CONVERTS,X'80'
|
|
N R9,=X'7FFFFFFF' sign bit
|
|
CONVERT1 LR R8,R9
|
|
N R8,=X'00FFFFFF'
|
|
BNZ CONVERT2
|
|
SR R9,R9
|
|
B CONVERT7
|
|
CONVERT2 LR R8,R9
|
|
N R8,=X'FF000000' characteristic
|
|
SRL R8,24
|
|
CH R8,=H'64'
|
|
BH CONVERT3
|
|
SR R9,R9
|
|
B CONVERT7
|
|
CONVERT3 CH R8,=H'72' 2**32
|
|
BNH CONVERT4
|
|
L R9,=X'7FFFFFFF' biggest
|
|
B CONVERT6
|
|
CONVERT4 SR R8,R8
|
|
SLDL R8,8
|
|
CH R8,=H'72'
|
|
BL CONVERT5
|
|
CH R9,=H'0'
|
|
BP CONVERT5
|
|
L R9,=X'7FFFFFFF'
|
|
B CONVERT6
|
|
CONVERT5 SH R8,=H'72'
|
|
LCR R8,R8
|
|
SLL R8,2
|
|
SRL R9,0(R8)
|
|
CONVERT6 SR R8,R8
|
|
IC R8,CONVERTS
|
|
CH R8,=H'0' sign bit set?
|
|
BZ CONVERT7
|
|
LCR R9,R9
|
|
CONVERT7 ST R9,CONVERTB
|
|
CVD R9,CONVERTP
|
|
MVC CONVERTD,=X'402020202120202020202020'
|
|
ED CONVERTD,CONVERTP+2
|
|
MVC CONVERTM(6),CONVERTD
|
|
MVI CONVERTM+6,C'.'
|
|
MVC CONVERTM+7(6),CONVERTD+6
|
|
BR R14
|
|
*
|
|
CONVERTC DC E'1E6' X'45F42400'
|
|
CONVERTF DS F
|
|
CONVERTB DS F
|
|
CONVERTS DS X
|
|
CONVERTM DS CL13
|
|
CONVERTD DS CL12
|
|
CONVERTP DS PL8
|
|
*
|
|
EQUREGS
|
|
EQUREGS REGS=FPR
|
|
END GAMMAT
|