mirror of
https://github.com/moshix/mvs.git
synced 2026-02-09 01:01:20 +00:00
439 lines
10 KiB
Plaintext
439 lines
10 KiB
Plaintext
TITLE 'TESTSSP - TEST SCIENTIFIC SUBROUTINE PACKAGE'
|
||
*
|
||
* PGM-ID. TESTSSP.ALC
|
||
* AUTHOR. DON HIGGINS
|
||
* DATE. 07/24/87
|
||
* REMARKS. SEE SSP.ALC AND FP87.DOC FOR MORE INFORMATION.
|
||
* MAINTENANCE.
|
||
*
|
||
* 07/24/87 COPY FROM TESTFP AND MODIFY
|
||
* 07/31/87 ADD RANGE TEST OF EXP TO DETECT FRACTION SIGN BUG
|
||
* 08/08/87 ADD MOD, SIN, COS, TAN USING LIBRARY FUNCTIONS 14-17
|
||
* 08/09/87 ALLOW FOR R15 RETURNING 80X87 EXCEPTION BITS INCLUDING PRECISION
|
||
* ADD SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
|
||
TESTSSP CSECT
|
||
LA R10,0(R15)
|
||
LA R11,2048(R10)
|
||
LA R11,2048(R11)
|
||
USING TESTSSP,R10
|
||
USING TESTSSP+4096,R11
|
||
LA DE,=C'TESTSSP START$'
|
||
SVC WTO
|
||
* ALOG
|
||
LA DE,=C'TESTSSP STARTING ALOG VALUE TESTS$'
|
||
SVC WTO
|
||
LA R1,FPLE2
|
||
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
|
||
LER FR2,FR0 FR2=FR0
|
||
LE FR0,=E'2'
|
||
L R15,=V(ALOG)
|
||
BALR R14,R15 FR0=LOGE(2) CALC'ED
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPLE2
|
||
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
|
||
LNER FR2,FR0
|
||
LE FR0,=E'.5'
|
||
L R15,=V(ALOG)
|
||
BALR R14,R15 FR0=LOGE(2) CALC'ED
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
* ALOG10
|
||
LA DE,=C'TESTSSP STARTING ALOG10 VALUE TESTS$'
|
||
SVC WTO
|
||
LA R1,FPLT2
|
||
SVC FPSVC FR0=LOG10(2) 80X87 CONSTANT
|
||
LER FR2,FR0 FR2=FR0
|
||
LE FR0,=E'2'
|
||
L R15,=V(ALOG10)
|
||
BALR R14,R15 FR0=LOG10(2) CALC'ED
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPLT2
|
||
SVC FPSVC FR0=LOG10(2) 80X87 CONSTANT
|
||
LNER FR2,FR0
|
||
LE FR0,=E'.5'
|
||
L R15,=V(ALOG10)
|
||
BALR R14,R15 FR0=LOG10(2) CALC'ED
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
* ATAN
|
||
LA DE,=C'TESTSSP STARTING ATAN VALUE TESTS$'
|
||
SVC WTO
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
DD FR0,=D'4' FR0=PI/4
|
||
LER FR2,FR0
|
||
LE FR0,=E'1'
|
||
L R15,=V(ATAN)
|
||
BALR R14,R15 FR0=ATAN(1.0)=PI/4
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
* COS
|
||
LA DE,=C'TESTSSP STARTING COS VALUE TESTS$'
|
||
SVC WTO
|
||
SER FR0,FR0
|
||
L R15,=V(COS)
|
||
BALR R14,R15 FR0=COS(0.0)=1.0
|
||
SE FR0,=E'1'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
DD FR0,=D'4' FR0=PI/4
|
||
L R15,=V(COS)
|
||
BALR R14,R15 FR0=COS(PI/4)=SQRT(2)/2.
|
||
LER FR2,FR0
|
||
LE FR0,=E'2'
|
||
L R15,=V(SQRT)
|
||
BALR R14,R15
|
||
DE FR0,=E'2'
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
DD FR0,=D'2' FR0=PI/2
|
||
L R15,=V(COS)
|
||
BALR R14,R15 FR0=COS(PI/2)=0.0
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
* EXP
|
||
LA DE,=C'TESTSSP STARTING EXP VALUE TESTS$'
|
||
SVC WTO
|
||
LA R1,FPLE2
|
||
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
|
||
L R15,=V(EXP)
|
||
BALR R14,R15 FR0=E**LOGE(2)=2 CALC'ED
|
||
SE FR0,=E'2'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LE FR0,=E'0'
|
||
L R15,=V(EXP)
|
||
BALR R14,R15 FR0=E**(0) CALC'ED
|
||
SE FR0,=E'1'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPLE2
|
||
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
|
||
LNER FR0,FR0 FR0=-LOGE(2)
|
||
L R15,=V(EXP)
|
||
BALR R14,R15 FR0=E**(-LOGE(2)) CALC'ED
|
||
SE FR0,=E'0.5'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LE FR0,=E'10'
|
||
L R15,=V(ALOG)
|
||
BALR R14,R15 FR0=LOGE(10) CALC'ED
|
||
L R15,=V(EXP)
|
||
BALR R14,R15 FR0=E**(LOGE(10)) CALC'ED
|
||
SE FR0,=E'10'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LE FR0,=E'0.1'
|
||
L R15,=V(ALOG)
|
||
BALR R14,R15 FR0=LOGE(0.1) CALC'ED
|
||
L R15,=V(EXP)
|
||
BALR R14,R15 FR0=E**(LOGE(0.1)) CALC'ED
|
||
SE FR0,=E'0.1'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
* INT
|
||
LA DE,=C'TESTSSP STARTING INT VALUE TESTS$'
|
||
SVC WTO
|
||
LE FR0,=E'123.456'
|
||
L R15,=V(INT)
|
||
BALR R14,R15
|
||
CL R0,=F'123'
|
||
BAL R14,CCE
|
||
LE FR0,=E'-123.456'
|
||
L R15,=V(INT)
|
||
BALR R14,R15
|
||
CL R0,=F'-123'
|
||
BAL R14,CCE
|
||
* MOD
|
||
LA DE,=C'TESTSSP STARTING MOD VALUE TESTS$'
|
||
SVC WTO
|
||
LD FR0,=D'123.456'
|
||
LD FR2,=D'1'
|
||
L R15,=V(MOD)
|
||
BALR R14,R15
|
||
SD FR0,=D'0.456'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR
|
||
BAL R14,CCL
|
||
LD FR0,=D'10'
|
||
LD FR2,=D'3'
|
||
L R15,=V(MOD)
|
||
BALR R14,R15
|
||
SD FR0,=D'1'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR
|
||
BAL R14,CCL
|
||
* REAL
|
||
LA DE,=C'TESTSSP STARTING REAL VALUE TESTS$'
|
||
SVC WTO
|
||
L R0,=F'123'
|
||
L R15,=V(REAL)
|
||
BALR R14,R15
|
||
CE FR0,=E'123'
|
||
BAL R14,CCE
|
||
L R0,=F'-123'
|
||
L R15,=V(REAL)
|
||
BALR R14,R15
|
||
CE FR0,=E'-123'
|
||
BAL R14,CCE
|
||
* SIN
|
||
LA DE,=C'TESTSSP STARTING SIN VALUE TESTS$'
|
||
SVC WTO
|
||
SER FR0,FR0
|
||
L R15,=V(SIN)
|
||
BALR R14,R15 FR0=SIN(0.0)=1.0
|
||
SE FR0,=E'0'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
DD FR0,=D'4' FR0=PI/4
|
||
L R15,=V(SIN)
|
||
BALR R14,R15 FR0=SIN(PI/4)=SQRT(2)/2.
|
||
LER FR2,FR0
|
||
LE FR0,=E'2'
|
||
L R15,=V(SQRT)
|
||
BALR R14,R15
|
||
DE FR0,=E'2'
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
DD FR0,=D'2' FR0=PI/2
|
||
L R15,=V(SIN)
|
||
BALR R14,R15 FR0=SIN(PI/2)=1.0
|
||
SE FR0,=E'1'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
* SQRT
|
||
LA DE,=C'TESTSSP STARTING SQRT VALUE TESTS$'
|
||
SVC WTO
|
||
LE FR0,=E'4'
|
||
L R15,=V(SQRT)
|
||
BALR R14,R15
|
||
CE FR0,=E'2'
|
||
BAL R14,CCE
|
||
LD FR0,=D'2.25'
|
||
L R15,=V(SQRT)
|
||
BALR R14,R15
|
||
CD FR0,=D'1.5'
|
||
BAL R14,CCE
|
||
LD FR0,=D'12345'
|
||
MDR FR0,FR0
|
||
L R15,=V(SQRT)
|
||
BALR R14,R15
|
||
SD FR0,=D'12345'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
* TAN
|
||
LA DE,=C'TESTSSP STARTING TAN VALUE TESTS$'
|
||
SVC WTO
|
||
SER FR0,FR0
|
||
L R15,=V(TAN)
|
||
BALR R14,R15 FR0=TAN(0.0)=0.0
|
||
SE FR0,=E'0'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
DD FR0,=D'4' FR0=PI/4
|
||
L R15,=V(TAN)
|
||
BALR R14,R15 FR0=TAN(PI/4)=1.0
|
||
SE FR0,=E'1'
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
DD FR0,=D'2' FR0=PI/2
|
||
L R15,=V(TAN)
|
||
BALR R14,R15 FR0=TAN(PI/2)=1.0*16**63 PLUS DIVIDE CHK ERR
|
||
LTR R15,R15
|
||
BAL R14,CCH VERIFY RC>0 DUE TO EXCEPTION
|
||
STE FR0,WE0
|
||
NI WE0,X'7F'
|
||
CLC WE0,=X'7F800000' ABS COMPARE WITH FP87 MAX CONSTANT
|
||
BAL R14,CCE
|
||
LA DE,=C'TESTSSP STARTING RANGE TESTS$'
|
||
SVC WTO
|
||
* SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
|
||
LA DE,=C'TESTSSP STARTING SIN/COS RANGE TESTS$'
|
||
SVC WTO
|
||
LA R1,FPPI
|
||
SVC FPSVC FR0=PI
|
||
LDR FR6,FR0
|
||
DD FR6,=D'6' FR6=PI/6 INCR ARG.
|
||
LDR FR4,FR0
|
||
ADR FR4,FR4 FR4=2*PI MAX. ARG.
|
||
LNDR FR2,FR4 FR2=-2*PI CURRENT ARG.
|
||
LA R2,1
|
||
SLOOP EQU *
|
||
LER FR0,FR2
|
||
L R15,=V(SIN)
|
||
BALR R14,R15 FR0=SIN(X)
|
||
STD FR0,SAVSIN
|
||
LDR FR0,FR2
|
||
SDR FR0,FR6
|
||
SDR FR0,FR6
|
||
SDR FR0,FR6
|
||
L R15,=V(COS)
|
||
BALR R14,R15 FR0=COS(X-PI/2)
|
||
SD FR0,SAVSIN
|
||
LPDR FR0,FR0
|
||
CD FR0,DERR VERFIFY SIN(X)=COS(X-PI/2) WITHIN DERR
|
||
BAL R14,CCL
|
||
SP PTAN,=P'1' DEC SKIP COUNTER
|
||
BNZ TSTTAN
|
||
ZAP PTAN,=P'6' RESET COUNTER TO SKIP AGAIN AT +PI
|
||
B SKPTAN
|
||
TSTTAN EQU *
|
||
LER FR0,FR2
|
||
L R15,=V(COS)
|
||
BALR R14,R15 FR0=COS(X)
|
||
STD FR0,SAVCOS
|
||
LD FR0,SAVSIN
|
||
DD FR0,SAVCOS
|
||
STD FR0,SAVTAN SIN(X)/COS(X)
|
||
LER FR0,FR2
|
||
L R15,=V(TAN)
|
||
BALR R14,R15 FR0=TAN(X)
|
||
SD FR0,SAVTAN
|
||
LPDR FR0,FR0
|
||
CD FR0,DERR VERFIFY TAN(X)=SIN(X)/COS(X) WITHIN DERR
|
||
BAL R14,CCL
|
||
SKPTAN EQU * SKIP TAN TEST FOR COS(X)=0
|
||
LA R2,1(R2)
|
||
ADR FR2,FR6
|
||
CDR FR2,FR4
|
||
BL SLOOP
|
||
* EXP AND ALOG RANGE TEST 0.1 TO 10 BY 0.1
|
||
LA DE,=C'TESTSSP STARTING EXP/ALOG 0.1,10,0.1 RANGE TESTS$'
|
||
SVC WTO
|
||
LE FR2,=E'0.1' X
|
||
LA R2,1
|
||
XLOOP EQU *
|
||
LER FR0,FR2
|
||
L R15,=V(ALOG)
|
||
BALR R14,R15 FR0=LOGE(X) CALC'ED
|
||
L R15,=V(EXP)
|
||
BALR R14,R15 FR0=E**(LOGE(X)) CALC'ED
|
||
SER FR0,FR2
|
||
LPER FR0,FR0
|
||
CD FR0,DERR VERFIFY RESULT WITHIN DERR
|
||
BAL R14,CCL
|
||
LA R2,1(R2)
|
||
AE FR2,=E'0.1'
|
||
CE FR2,=E'10'
|
||
BL XLOOP
|
||
TESTEOJ EQU *
|
||
LA DE,CMSG
|
||
SVC WTO
|
||
LA DE,=C'TESTSSP END$'
|
||
SVC WTO
|
||
SVC TRACE
|
||
DC C'ERX '
|
||
SVC EXIT
|
||
CCE BE CCOK
|
||
CCBAD SVC TRACE
|
||
DC C'BUG'
|
||
CCOK LA R12,1(R12)
|
||
ST R14,SAVELINK
|
||
L R13,SAVELINK
|
||
LA R4,DCOUNT+2
|
||
LA R3,0
|
||
CLOOP IC R3,0(R4)
|
||
O R3,=X'000000F0' CHANGE BLANK TO DIGIT
|
||
A R3,=F'1'
|
||
C R3,=X'000000FA'
|
||
BL CDONE
|
||
L R3,=X'000000F0'
|
||
STC R3,0(R4)
|
||
S R4,=F'1'
|
||
B CLOOP
|
||
CDONE STC R3,0(R4)
|
||
B 0(R14)
|
||
CCL BL CCOK
|
||
B CCBAD
|
||
CCH BH CCOK
|
||
B CCBAD
|
||
CCNE BNE CCOK
|
||
B CCBAD
|
||
CC3 BO CCOK
|
||
B CCBAD
|
||
SAVELINK DC A(0)
|
||
*
|
||
* DATA
|
||
*
|
||
FR0 EQU 0
|
||
FR2 EQU 2
|
||
FR4 EQU 4
|
||
FR6 EQU 6
|
||
R0 EQU 0
|
||
R1 EQU 1
|
||
R2 EQU 2
|
||
R3 EQU 3
|
||
R4 EQU 4
|
||
R10 EQU 10 BASE 1
|
||
R11 EQU 11 BASE 2
|
||
R12 EQU 12
|
||
R13 EQU 13
|
||
R14 EQU 14
|
||
R15 EQU 15
|
||
WE0 DC E'0'
|
||
WD0 DC D'0'
|
||
NAN DC X'E060000000000000'
|
||
CMSG DC C'TOTAL TESTS = '
|
||
DCOUNT DC C' '
|
||
DC C'$'
|
||
DC 0F'0',C'* FWORD*'
|
||
FWORD DC F'0'
|
||
HWORD DC H'0'
|
||
SPIE EQU 14 SET SPIE
|
||
TRACE EQU 9 TRACE SVC - MUST BE FOLLOWED BY 3 CHAR. ID
|
||
WTO EQU 209 CPM WRITE TO OPERATOR (CPM SVC 9)
|
||
EXIT EQU 0 EXIT EMULTOR SVC
|
||
DE EQU 2 REG. 2 MAPS TO DE FOR CP/M SVC'S
|
||
FPSVC EQU 35
|
||
FPLT2 EQU 1
|
||
FPLE2 EQU 2
|
||
FPL2E EQU 3
|
||
FPL2T EQU 4
|
||
FPPI EQU 5
|
||
DERR DC D'1E-12' ERROR THRESHOLD
|
||
SAVSIN DC D'0'
|
||
SAVCOS DC D'0'
|
||
SAVTAN DC D'0'
|
||
PTAN DC P'4' SET TO SKIP TAN TEST AT PI/2
|
||
END TESTSSP
|
||
|