EXTERNAL SYMBOL DICTIONARY PAGE 1 SYMBOL TYPE ID ADDR LENGTH LD ID AP101S 3.0 09.37 07/22/05 ACOS SD 0001 000000 000074 ASIN LD 000008 0001 #QSQRT ER 0002 #LACOS SD 0003 000074 000002 ACOS -- SINGLE PRECISION INVERSE SINE-COSINE FUNCTION PAGE 2 LOC OBJECT CODE ADR1 ADR2 SOURCE STATEMENT AP101S 3.0 09.37 07/22/05 2 * 3 * WHEN DATA_REMOTE IS IN EFFECT, THE LDM INSTRUCTIONS ARE NEEDED 4 * AROUND THE CALL TO THIS RTL ROUTINE BECAUSE R1/R3 IS USED AS 5 * A BASE REGISTER. (CR12620) 6 * 7 * ACOS: INVERSE SINE-COSINE(SINGLE) 00000200 8 * 00000300 9 * 1. INPUT AND OUTPUT VIA F0. 00000400 10 * 2. FOR 0<=X<=1/2, COMPUTE ASIN(X) BY A RATIONAL FUNCTION. 00000500 11 * 3. FOR 1/21. 00000900 15 * 00001000 16 *IBM CR #SS8244- RETURN PI FOR ARCCOS ARGUMENT < -1; 8/14/81 A.CLOSE 00001010 17 * REGISTER R4 IS USED AS A SWITCH- 00001100 18 * BIT 0 IS USED TO SIGNAL WHETHER THIS PROCEDUER IS 00001200 19 * CALLED AS ACOS(ON) OR ASIN(OFF). BIT 1 IS USED TO SIGNAL 00001300 20 * IF ARG. IS POS.(OFF) OR NEG.(ON).BIT 2 IS USED TO SIGNAL 00001400 21 * ABS. VALUE OF ARG.,IF GREATER THAN 1/2(ON) ELSE (OFF) 00001500 22 * 00001600 23 MACRO 00001700 24 WORKAREA 00001800 25 SAVE6 DS D TO SAVE REGISTERS F6,F7 00001900 26 SWITCH DS F TO SAVE R4 ACROSS INTRINSIC CALL 00002000 27 MEND 00002100 28 ACOS AMAIN ACALL=YES 00002200 29+*********************************************************************** 30+* 31+* PRIMARY ENTRY POINT 32+* 33+*********************************************************************** 00000 34+ACOS CSECT 01-AMAIN 00000 35+STACK DSECT 01-AMAIN 36+* DS 18H STANDARD STACK AREA DEFINITION 00000 37+ DS F PSW (LEFT HALF) 01-AMAIN 00002 38+ DS 2F R0,R1 01-AMAIN 00006 39+ARG2 DS F R2 01-AMAIN 00008 40+ DS F R3 01-AMAIN 0000A 41+ARG4 DS F R4 01-AMAIN 0000C 42+ARG5 DS F R5 01-AMAIN 0000E 43+ARG6 DS F R6 01-AMAIN 00010 44+ARG7 DS F R7 01-AMAIN 45+* END OF STANDARD STACK AREA 00012 46+SAVE6 DS D TO SAVE REGISTERS F6,F7 02-00025 00016 47+SWITCH DS F TO SAVE R4 ACROSS INTRINSIC CALL 02-00026 00018 48+STACKEND DS 0F END OF COMBINED STACK AREA 01-AMAIN 00000 49+ACOS CSECT 01-AMAIN 0000000 50+ USING STACK,0 ADDRESS STACK AREA 01-AMAIN 00000 E0FB 0018 0018 51+ IAL 0,STACKEND-STACK SET STACK SIZE 01-AMAIN 00002 B624 0000 0009 0000 52+ NIST 9(0),0 CLEAR ON ERROR INFO (LCL DATA PTR) 01-AMAIN 54 *COMPUTES ARC-COSINE(X) OF SINGLE PRECISION SCALAR 00002300 55 INPUT F0 SCALAR SP 00002400 0000000 56+F0 EQU 0 01-INPUT 58 OUTPUT F0 SCALAR SP RADIANS 00002500 60 WORK R1,R2,R3,R4,R5,R6,R7,F1,F2,F3,F4,F6 00002600 0000001 61+R1 EQU 1 01-WORK 0000002 62+R2 EQU 2 01-WORK 0000003 63+R3 EQU 3 01-WORK 0000004 64+R4 EQU 4 01-WORK 0000005 65+R5 EQU 5 01-WORK 0000006 66+R6 EQU 6 01-WORK 0000007 67+R7 EQU 7 01-WORK 0000001 68+F1 EQU 1 01-WORK 0000002 69+F2 EQU 2 01-WORK 0000003 70+F3 EQU 3 01-WORK 0000004 71+F4 EQU 4 01-WORK 72+***** WARNING: F6 MUST BE PRESERVED ACROSS CALLS 01-WORK 0000006 73+F6 EQU 6 01-WORK 00004 0CE4 75 SR R4,R4 SIGNAL ACOS ENTRY 00002700 00005 B2E4 8000 8000 76 OHI R4,X'8000' 00002800 00007 DF14 000D 0005 77 B MERGE 00002900 78 ASIN AENTRY 00003000 79+*********************************************************************** 80+* 81+* SECONDARY ENTRY POINT ACOS -- SINGLE PRECISION INVERSE SINE-COSINE FUNCTION PAGE 3 LOC OBJECT CODE ADR1 ADR2 SOURCE STATEMENT AP101S 3.0 09.37 07/22/05 82+* 83+*********************************************************************** 00008 84+ASIN DS 0H 01-AENTR 85+ ENTRY ASIN 01-AENTR 00008 E0FB 0018 0018 86+ IAL 0,STACKEND-STACK SET STACK SIZE 01-AENTR 0000A B624 0000 0009 0000 87+ NIST 9(0),0 CLEAR ERROR VECTOR POINTER 01-AENTR 89 * COMPUTES ARC-SINE(X) OF SINGLE PRECISION SCALAR 00003100 90 INPUT F0 SCALAR SP 00003200 92 OUTPUT F0 SCALAR SP RADIANS 00003300 94 WORK R2,R3,R4,F2,F3,F4,F6 00003400 95+***** WARNING: F6 MUST BE PRESERVED ACROSS CALLS 01-WORK 0000C 0CE4 97 SR R4,R4 SIGNAL ASIN ENTRY 00003500 98 * 00003600 0000D 3EF8 0012 0012 99 MERGE STED F6,SAVE6 SAVE REGISTERS F6,F7 00003700 0000F 7EE0 100 LER F6,F0 GET ARGUMENT IN F6 00003800 00010 DD0C 0014 0003 101 BNM POS AND TEST SIGN 00003900 00011 B2E4 4000 4000 102 OHI R4,X'4000' SIGNAL NEG. ARG. 00004000 00013 78E8 103 LECR F0,F0 GET |X| 00004100 104 * 00004200 00014 48FF 0054 006A 0054 105 POS CE F0,HALF SKIP TO 'SMALL' IF 00004300 00016 DE3C 0026 000F 106 BNH SMALL |X|<=1/2 00004400 107 * 00004500 108 * Z=SQRT((1-|X|)/2) IF |X|^>|1/2 00004600 109 * 00004700 00017 B2E4 2000 2000 110 OHI R4,X'2000' SIGNAL |X|>1/2 00004800 00019 78E8 111 LECR F0,F0 00004900 0001A 50F7 004C 0068 004C 112 AE F0,ONE 1-|X| IN F0 00005000 0001C DEC8 004F 0032 113 BNP EXPRESS BRANCH IF |X|>=1 00005100 114 * 00005200 0001D 7EE0 115 LER F6,F0 00005300 0001E 66F7 004A 006A 004A 116 ME F6,HALF Z**2 IN F6 00005400 00020 50E0 117 AER F0,F0 4*Z**2 IN F0 00005500 118 * 00005600 00021 342C 0016 119 ST R4,SWITCH SAVE R4 ACROSS INTRINSIC CALL 00005700 120 ABAL SQRT GET 2Z IN F0 BY CALL TO 00005800 121+ EXTRN #QSQRT 01-ABAL 00022 E4F7 122+ DC X'E4F7' CALL INTRINSIC INDIRECTLY 01-ABAL 00023 3800 123+ DC Y(#QSQRT+X'3800') X01-ABAL + THROUGH QCON 00024 1C2C 0016 124 L R4,SWITCH RESTORE R4 00005900 00025 DF10 002A 0004 125 B POLY SQRT, AND RETURN TO POLY 00006000 126 * 00006100 00026 48FF 003E 0066 003E 127 SMALL CE F0,UNFLO 00006200 00028 DE48 003B 0012 128 BNH TESTS 00006300 00029 66E6 129 MER F6,F6 X**2 IN F6 00006400 130 * 00006500 131 * COMPUTE ASIN(Z) HERE BY RATIONAL FUNCTION 00006600 132 * 00006700 0002A 7CF7 0046 0072 0046 133 POLY LE F4,C2 00006800 0002C 54E6 134 AER F4,F6 00006900 0002D 7AF7 0041 0070 0041 135 LE F2,D2 00007000 0002F 6AE4 136 DER F2,F4 (C2+Z**2)/D2 00007100 00030 52F7 003C 006E 003C 137 AE F2,C1 00007200 00032 52E6 138 AER F2,F6 C1+Z**2+(C2+Z**2)/D2 00007300 00033 66F7 0037 006C 0037 139 ME F6,D1 00007400 00035 6EE2 140 DER F6,F2 00007500 00036 7BF7 002C 0064 002C 141 LE F3,ROUND ROUNDING NUMBER IN F3, 00007600 00038 7AE0 142 LER F2,F0 AS LOW HALF OF 2Z. 00007700 00039 60E6 143 MER F0,F6 00007800 0003A 50EA 144 AEDR F0,F2 ROUNDING OCCURS HERE 00007900 145 * 00008000 146 * REVERSE REDUCTIONS TO GIVE ACTUAL ANSWER 00008100 147 * 00008200 0003B B3E4 A000 A000 148 TESTS TRB R4,X'A000' IF ACOS ENTRY 00008300 0003D DD0C 0041 0003 149 BNM TSTNEG OR |X|>1/2 BUT NOT BOTH, 00008400 0003E 78E8 150 LECR F0,F0 SUBTRACT RESULT 00008500 0003F 50FF 0021 0062 0021 151 AED F0,PIOV2 FROM PI/2 00008600 152 * 00008700 00041 B3E4 4000 4000 153 TSTNEG TRB R4,X'4000' COMPLEMENT 00008800 00043 DE20 004C 0008 154 BNO EXIT IF ARGUMENT WAS NEGATIVE. 00008900 00044 78E0 155 LER F0,F0 CHECK FOR ARG=0(HARDWARE BUG) 00009000 00045 DC04 0047 0001 156 BZ NOLECR 00009100 00046 78E8 157 LECR F0,F0 00009200 00047 B3E4 C000 C000 158 NOLECR TRB R4,X'C000' AND ADD PI TO 00009300 00049 DE08 004C 0002 159 BNO EXIT RESULT IF ACOS ENTRY 00009400 0004A 50F7 0014 0060 0014 160 AE F0,PI AND ARGUMENT<0. 00009500 ACOS -- SINGLE PRECISION INVERSE SINE-COSINE FUNCTION PAGE 4 LOC OBJECT CODE ADR1 ADR2 SOURCE STATEMENT AP101S 3.0 09.37 07/22/05 161 * 00009600 0004C 7EF8 0012 0012 162 EXIT LED F6,SAVE6 RESTORE F6,F7 00009700 163 AEXIT AND EXIT 00009800 164+*********RETURN TO CALLER********************************************** 0004E 165+ DS 0H 01-AEXIT 0004E 97E8 166+$RET1 SRET 7,0 RETURN TO CALLER 01-AEXIT 167+*********************************************************************** 169 * 00009900 0004F DC56 003B 0015 170 EXPRESS BZ TESTS SKIP POLYNOMIAL IF |X|=1 00010000 171 AERROR 10 |ARG|>1 00010100 172+*********ISSUE SEND ERROR SVC****************************************** 00050 C9FB 0074 0074 173+ SVC AERROR1 ISSUE SEND ERROR SVC 01-AERRO 174+*********SEND ERROR SVC RETURNS CONTROL FOR STANDARD FIXUP************* 00052 78F7 000E 0062 000E 175 LE F0,PIOV2 00010200 00054 B3E4 8000 8000 176 TRB R4,X'8000' ASIN CALL? 00010300 00056 DC5A 0041 0016 177 BZ TSTNEG YES, CHECK SIGN 00010400 00057 B3E4 4000 4000 178 TRB R4,X'4000' X=-1? 00010500 00059 DC0C 005D 0003 179 BZ RET0 NO,RETURN 0 00010501 0005A 78F7 0004 0060 0004 180 LE F0,PI YES, RETURN PI 00010502 0005C DF46 004C 0011 181 B EXIT 00010503 0005D 58E0 182 RET0 SER F0,F0 00010504 0005E DF4E 004C 0013 183 B EXIT 00010600 184 * 00010700 0005F C9FB 00060 185 DS 0F 00010800 00060 413243F7 186 PI DC X'413243F7' PI 00010900 00062 411921FB 187 PIOV2 DC X'411921FB' PI/2 00011000 00064 5FFFFFFF 188 ROUND DC X'5FFFFFFF' 00011100 00066 3E100000 189 UNFLO DC X'3E100000' 16**(-3) 00011200 00068 41100000 190 ONE DC X'41100000' 1.0 00011300 0006A 40800000 191 HALF DC X'40800000' 0.5 00011400 0006C C08143C7 192 D1 DC X'C08143C7' -0.5049404 00011500 0006E C13B446A 193 C1 DC X'C13B446A' -3.7042025 00011600 00070 C11406BF 194 D2 DC X'C11406BF' -1.2516474 00011700 00072 C11DB034 195 C2 DC X'C11DB034' -1.8555182 00011800 196 ACLOSE 00011900 00074 197+ LTORG 02-ERRPA 198+****************ERROR PARAMETER AREA*********************************** 00074 199+#LACOS CSECT 02-ERRPA 200+*** ACOS SENDS THE FOLLOWING ERROR 02-ERRPA 202+*** ERROR NUMBER 10 IN GROUP 4 02-ERRPA 00074 0014 204+AERROR1 DC H'20' SVC CODE FOR SEND ERROR 02-ERRPA 00075 040A 205+ DC Y(4*256+10) 8 BIT GROUP AND NUMBER 02-ERRPA 206+****************END OF ERROR PARAMETER AREA**************************** 207+ END 01-ACLOS RELOCATION DICTIONARY PAGE 5 POS.ID REL.ID FLAGS ADDRESS AP101S 3.0 09.37 07/22/05 0001 0002 00 000023 0001 0003 00 000051 CROSS REFERENCE PAGE 6 SYMBOL LEN VALUE DEFN REFERENCES AP101S 3.0 09.37 07/22/05 ACOS 1 00000000 34 49 AERROR1 1 000074 204 173 ARG2 2 000006 39 ARG4 2 00000A 41 ARG5 2 00000C 42 ARG6 2 00000E 43 ARG7 2 000010 44 ASIN 1 000008 84 85 C1 2 00006E 193 137 C2 2 000072 195 133 D1 2 00006C 192 139 D2 2 000070 194 135 EXIT 2 00004C 162 154 159 181 183 EXPRESS 2 00004F 170 113 F0 1 00000000 56 100 103 103 105 111 111 112 115 117 117 127 142 143 144 150 150 151 155 155 157 157 160 175 180 182 182 F1 1 00000001 68 F2 1 00000002 69 135 136 137 138 140 142 144 F3 1 00000003 70 141 F4 1 00000004 71 133 134 136 F6 1 00000006 73 99 100 115 116 129 129 134 138 139 140 143 162 HALF 2 00006A 191 105 116 MERGE 2 00000D 99 77 NOLECR 2 000047 158 156 ONE 2 000068 190 112 PI 2 000060 186 160 180 PIOV2 2 000062 187 151 175 POLY 2 00002A 133 125 POS 2 000014 105 101 R1 1 00000001 61 R2 1 00000002 62 R3 1 00000003 63 R4 1 00000004 64 75 75 76 97 97 102 110 119 124 148 153 158 176 178 R5 1 00000005 65 R6 1 00000006 66 R7 1 00000007 67 RET0 1 00005D 182 179 ROUND 2 000064 188 141 SAVE6 4 000012 46 99 162 SMALL 2 000026 127 106 STACK 1 00000000 35 50 51 86 STACKEND 2 000018 48 51 86 SWITCH 2 000016 47 119 124 TESTS 2 00003B 148 128 170 TSTNEG 2 000041 153 149 177 UNFLO 2 000066 189 127 $RET1 1 00004E 166 #LACOS 1 00000074 199 #QSQRT 1 00000000 121 123 DIAGNOSTIC CROSS REFERENCE AND ASSEMBLER SUMMARY PAGE 7 AP101S 3.0 09.37 07/22/05 NO STATEMENTS FLAGGED IN THIS ASSEMBLY OVERRIDING PARAMETERS- ESD,RLD,SYSPARM=PASS OPTIONS FOR THIS ASSEMBLY NODECK,LOAD,LIST,XREF,NORENT,TEST,NOMULT,ALGN,ESD ,RLD ,NOSREF,LINECT= 80,MSGLEVEL= 0,SYSPARM= PASS NO OVERRIDING DD NAMES 129 CARDS FROM SYSIN 484 CARDS FROM SYSLIB 278 LINES OUTPUT 19 CARDS OUTPUT