ASSEMBLY LISTING OF SEGMENT >spec>install>1110>sine_.alm ASSEMBLED ON: 11/11/89 0940.4 mst Sat OPTIONS USED: -target l68 list symbols ASSEMBLED BY: ALM Version 8.14 March 1989 ASSEMBLER CREATED: 06/09/89 1002.3 mst Fri 1 " ****************************************** 2 " * * 3 " * Copyright, (C) Honeywell Limited, 1985 * 4 " * * 5 " ****************************************** 000000 6 name sine_ 7 " Modification history: 8 " Written by H. Hoover, M. Mabey, and B. Wong, April 1985, 9 " based on GCOS routine '7nba'. 10 " 11 " Function: Approximate to single precision the sine or cosine of an 12 " angle given in degrees or radians. 13 " 14 " Entry: through the appropriately named entry point with: 15 " EAQ = the angle whose sine or cosine is desired. 16 " PR2 = the address of a 12 word, even-word aligned scratch area. 17 " 4 words are used in this program and 12 are used by the 18 " routine "principal_angle_". The storage for sine_ and 19 " principal_angle_ overlap. 20 " PR3 = the return address. 21 " 22 " Exit: EAQ = the desired sine or cosine. 23 " 24 " Uses: X0, X1, X2. 25 " X0 = saves a return address from principal_angle_ routines 26 " X1 = shift (returned by principal_angle_ routines) 27 " X2 = indicates BFP or HFP mode - all the floating point math 28 " routines use this register for the same purpose. 29 " The principal_angle_ routines use registers X1 and X2. 30 " 31 000000 32 segref math_constants_,half_pi,one_degree,pi 000000 33 segref principal_angle_,principal_radians_,principal_degrees_ 34 000000 35 equ BFP,0 000002 36 equ HFP,2 000000 37 equ x,0 000002 38 equ xx,2 39 000000 40 segdef cosine_degrees_,hfp_cosine_degrees_ 000010 41 segdef cosine_radians_,hfp_cosine_radians_ 000020 42 segdef sine_degrees_,hfp_sine_degrees_ 000030 43 segdef sine_radians_,hfp_sine_radians_ 44 45 000000 46 hfp_cosine_degrees_: 000000 aa 000002 6220 00 47 eax2 HFP " 2 word offset for HFP constants 000001 0a 000003 7100 00 48 tra cosine_degrees 49 000002 50 cosine_degrees_: 000002 aa 000000 6220 00 51 eax2 BFP " no offset for BFP constants 52 000003 53 cosine_degrees: 000003 aa 400000 4750 03 54 fad =0.0,du " normalize input 000004 0a 000164 4250 12 55 fcmg one_eighty,x2 " if abs_angle <= 180: 000005 0a 000070 6040 00 56 tmi case1_degrees " then no angle reduction is necessary 000006 4a 4 00010 7001 20 57 tsx0 principal_degrees_ 000007 0a 000064 7100 11 58 tra case_degrees+1,x1 " select appropriate case 59 60 000010 61 hfp_cosine_radians_: 000010 aa 000002 6220 00 62 eax2 HFP " 2 word offset for HFP constants 000011 0a 000013 7100 00 63 tra cosine_radians 64 000012 65 cosine_radians_: 000012 aa 000000 6220 00 66 eax2 BFP " no offset for BFP constants 67 000013 68 cosine_radians: 000013 aa 400000 4750 03 69 fad =0.0,du " normalize input and set indicators 000014 4a 4 00012 4251 20 70 fcmg pi,x2 " if abs (angle) <= pi 000015 0a 000045 6040 00 71 tmi case1_radians " then no angle reduction is necessary 000016 4a 4 00014 7001 20 72 tsx0 principal_radians_ 000017 0a 000041 7100 11 73 tra case_radians+1,x1 " select appropriate case 74 75 000020 76 hfp_sine_degrees_: 000020 aa 000002 6220 00 77 eax2 HFP " 2 word offset for HFP constants 000021 0a 000023 7100 00 78 tra sine_degrees 79 000022 80 sine_degrees_: 000022 aa 000000 6220 00 81 eax2 BFP " no offset for BFP constants 82 000023 83 sine_degrees: 000023 aa 400000 4750 03 84 fad =0.0,du " normalize input 000024 0a 000160 4250 12 85 fcmg ninety,x2 " if abs (angle) < pi/2 000025 0a 000103 6040 00 86 tmi case0_degrees " then no angle reduction is necessary 000026 4a 4 00010 7001 20 87 tsx0 principal_degrees_ 000027 0a 000063 7100 11 88 tra case_degrees,x1 " select appropriate case 89 90 000030 91 hfp_sine_radians_: 000030 aa 000002 6220 00 92 eax2 HFP " 2 word offset for HFP constants 000031 0a 000033 7100 00 93 tra sine_radians 94 000032 95 sine_radians_: 000032 aa 000000 6220 00 96 eax2 BFP " no offset for BFP constants 97 000033 98 sine_radians: 000033 aa 400000 4750 03 99 fad =0.0,du " normalize input 000034 4a 4 00016 4251 20 100 fcmg half_pi,x2 " if abs (angle) <= pi/2 000035 0a 000107 6044 00 101 tmoz case0_radians " then no angle reduction is necessary 000036 4a 4 00014 7001 20 102 tsx0 principal_radians_ 000037 0a 000040 7100 11 103 tra case_radians,x1 " Case select appropriate case_radians 104 000040 105 case_radians: 000040 0a 000107 7100 00 106 tra case0_radians 000041 0a 000045 7100 00 107 tra case1_radians 000042 0a 000053 7100 00 108 tra case2_radians 000043 0a 000055 7100 00 109 tra case3_radians 000044 0a 000107 7100 00 110 tra case0_radians 111 000045 112 case1_radians: 000045 aa 400000 4750 03 113 fad =0.0,du " set indicators 000046 aa 000002 6040 04 114 tmi 2,ic " EAQ = - abs (EAQ) 000047 aa 000000 5330 00 115 negl 0 " fneg underflows at o400400000000 116 000050 0a 000150 4770 12 117 dfad half_pi1,x2 000051 0a 000154 4770 12 118 dfad half_pi2,x2 000052 0a 000107 7100 00 119 tra part_sine_radians 120 000053 121 case2_radians: 000053 aa 000000 5130 00 122 fneg 0 000054 0a 000107 7100 00 123 tra part_sine_radians 124 000055 125 case3_radians: 000055 aa 400000 4750 03 126 fad =0.0,du " set indicators 000056 aa 000002 6050 04 127 tpl 2,ic " EAQ = abs (EAQ) 000057 aa 000000 5130 00 128 fneg 0 129 000060 0a 000150 5770 12 130 dfsb half_pi1,x2 000061 0a 000154 5770 12 131 dfsb half_pi2,x2 000062 0a 000107 7100 00 132 tra part_sine_radians 133 000063 134 case_degrees: 000063 0a 000103 7100 00 135 tra case0_degrees 000064 0a 000070 7100 00 136 tra case1_degrees 000065 0a 000075 7100 00 137 tra case2_degrees 000066 0a 000077 7100 00 138 tra case3_degrees 000067 0a 000103 7100 00 139 tra case0_degrees 140 000070 141 case1_degrees: 000070 aa 400000 4750 03 142 fad =0.0,du " set indicators 000071 aa 000002 6040 04 143 tmi 2,ic " EAQ = - abs (EAQ) 000072 aa 000000 5330 00 144 negl 0 " fneg underflows at o400400000000 145 000073 0a 000160 4750 12 146 fad ninety,x2 000074 0a 000103 7100 00 147 tra part_sine_degrees 148 000075 149 case2_degrees: 000075 aa 000000 5130 00 150 fneg 0 000076 0a 000103 7100 00 151 tra part_sine_degrees 152 000077 153 case3_degrees: 000077 aa 400000 4750 03 154 fad =0.0,du " set indicators 000100 aa 000002 6050 04 155 tpl 2,ic " EAQ = abs (EAQ) 000101 aa 000000 5130 00 156 fneg 157 000102 0a 000160 5750 12 158 fsb ninety,x2 159 " tra part_sine_degrees 160 000103 161 case0_degrees: " case0_degrees is just part_sine_degrees 162 000103 163 part_sine_degrees: 000103 0a 000140 4270 12 164 dfcmg eps2,x2 " if conversion to radians underflows 000104 aa 000002 6050 04 165 tpl 2,ic 000105 aa 400000 4310 03 166 fld =0.0,du " then use zero 000106 4a 4 00020 4631 20 167 dfmp one_degree,x2 " convert to radians. 168 " tra part_sine_radians 169 000107 170 case0_radians: " case0_radians is just part_sine_radians 171 172 173 " Procedure part_sine_radians (x) calculates 'sin(x)' for 'x' in the range 174 " [-pi/2, pi/2] given 'x' in the EAQ. 175 000107 176 part_sine_radians: 000107 0a 000144 4270 12 177 dfcmg eps3,x2 " if abs (x) < 5e-10: 000110 aa 000003 6050 04 178 tpl 3,ic 000111 aa 000000 4710 00 179 frd 0 000112 aa 3 00000 7101 00 180 tra pr3|0 " sine is x for small x 000113 aa 2 00000 4571 00 181 dfst pr2|x 000114 aa 2 00000 4631 00 182 dfmp pr2|x " calculate xx = x*x 000115 aa 2 00002 4571 00 183 dfst pr2|xx 000116 0a 000214 4610 12 184 fmp p5,x2 " calculate p(xx) 000117 0a 000210 4770 12 185 dfad p4,x2 000120 aa 2 00002 4611 00 186 fmp pr2|xx 000121 0a 000204 4770 12 187 dfad p3,x2 000122 aa 2 00002 4611 00 188 fmp pr2|xx 000123 0a 000200 4770 12 189 dfad p2,x2 000124 aa 2 00002 4611 00 190 fmp pr2|xx 000125 0a 000174 4770 12 191 dfad p1,x2 000126 aa 2 00002 4631 00 192 dfmp pr2|xx 000127 0a 000170 4770 12 193 dfad p0,x2 000130 aa 2 00000 4631 00 194 dfmp pr2|x " return x*p(xx) 000131 aa 000000 4710 00 195 frd 0 000132 aa 3 00000 7101 00 196 tra pr3|0 197 198 199 " Constants: 200 000133 aa 000000 0110 03 201 even 000134 aa 716504 072231 202 eps1: dec 1.886591d-8 000135 aa 175750 642262 000136 aa 764242 035115 203 oct 764242035115,000000000000 000137 aa 000000 000000 000140 aa 412712 273406 204 eps2: dec 8.418858142948452884d-38 000141 aa 461701 757347 000142 aa 402162 456701 205 oct 402162456701,514360373670 " 2.670821537926801391d-154 000143 aa 514360 373670 000144 aa 704422 701372 206 eps3: dec 5.0d-10 000145 aa 023326 451314 000146 aa 762104 560276 207 oct 762104560276,404665512263 000147 aa 404665 512263 000150 aa 002622 077325 208 half_pi1: oct 002622077325,042055060432 " 1.570796326794896619d0 000151 aa 042055 060432 000152 aa 002062 207732 209 oct 002062207732,504205506043 " 1.570796326794896619d0 000153 aa 504205 506043 000154 aa 602611 431424 210 half_pi2: oct 602611431424,270033407150 " 8.333742918520878328d-20 000155 aa 270033 407150 000156 aa 742461 143142 211 oct 742461143142,427003340714 " 5.170182981794105568d-19 000157 aa 427003 340714 000160 aa 016550 000000 212 ninety: dec 90.0d0 000161 aa 000000 000000 000162 aa 004264 000000 213 oct 004264000000,000000000000 000163 aa 000000 000000 000164 214 one_eighty: 000164 aa 020550 000000 215 dec 180.0d0 000165 aa 000000 000000 000166 aa 004550 000000 216 oct 004550000000,000000000000 000167 aa 000000 000000 000170 aa 000777 777777 217 p0: dec 9.999999999788d-1 000171 aa 776426 056601 000172 aa 000777 777777 218 oct 000777777777,776426056601 000173 aa 776426 056601 000174 aa 775252 525252 219 p1: dec -1.6666666608826d-1 000175 aa 764246 126070 000176 aa 001652 525252 220 oct 001652525252,575051425416 000177 aa 575051 425416 000200 aa 764421 042055 221 p2: dec 8.333330720556d-3 000201 aa 645325 433621 000202 aa 776104 210413 222 oct 776104210413,351265306744 000203 aa 351265 306744 000204 aa 751137 720534 223 p3: dec -1.98408328231d-4 000205 aa 017765 224715 000206 aa 773137 720534 224 oct 773137720534,017765224715 000207 aa 017765 224715 000210 aa 734561 327223 225 p4: dec 2.7523971068d-6 000211 aa 742173 067177 000212 aa 770134 265644 226 oct 770134265644,770436615640 000213 aa 770436 615640 000214 aa 717145 743634 227 p5: dec -2.386834641d-8 000215 aa 001005 375050 000216 aa 765462 761716 228 oct 765462761716,000402576424 000217 aa 000402 576424 229 230 end NO LITERALS NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 000220 5a 000003 000000 000221 5a 000113 600000 000222 aa 000000 000000 000223 55 000010 000002 000224 5a 000002 400003 000225 55 000006 000010 000226 aa 005 163 151 156 000227 aa 145 137 000 000 000230 55 000020 000003 000231 0a 000030 400000 000232 55 000013 000003 000233 aa 021 150 146 160 hfp_sine_radians_ 000234 aa 137 163 151 156 000235 aa 145 137 162 141 000236 aa 144 151 141 156 000237 aa 163 137 000 000 000240 55 000027 000010 000241 0a 000032 400000 000242 55 000023 000003 000243 aa 015 163 151 156 sine_radians_ 000244 aa 145 137 162 141 000245 aa 144 151 141 156 000246 aa 163 137 000 000 000247 55 000037 000020 000250 0a 000020 400000 000251 55 000032 000003 000252 aa 021 150 146 160 hfp_sine_degrees_ 000253 aa 137 163 151 156 000254 aa 145 137 144 145 000255 aa 147 162 145 145 000256 aa 163 137 000 000 000257 55 000046 000027 000260 0a 000022 400000 000261 55 000042 000003 000262 aa 015 163 151 156 sine_degrees_ 000263 aa 145 137 144 145 000264 aa 147 162 145 145 000265 aa 163 137 000 000 000266 55 000056 000037 000267 0a 000010 400000 000270 55 000051 000003 000271 aa 023 150 146 160 hfp_cosine_radians_ 000272 aa 137 143 157 163 000273 aa 151 156 145 137 000274 aa 162 141 144 151 000275 aa 141 156 163 137 000276 55 000065 000046 000277 0a 000012 400000 000300 55 000061 000003 000301 aa 017 143 157 163 cosine_radians_ 000302 aa 151 156 145 137 000303 aa 162 141 144 151 000304 aa 141 156 163 137 000305 55 000075 000056 000306 0a 000000 400000 000307 55 000070 000003 000310 aa 023 150 146 160 hfp_cosine_degrees_ 000311 aa 137 143 157 163 000312 aa 151 156 145 137 000313 aa 144 145 147 162 000314 aa 145 145 163 137 000315 55 000104 000065 000316 0a 000002 400000 000317 55 000100 000003 000320 aa 017 143 157 163 cosine_degrees_ 000321 aa 151 156 145 137 000322 aa 144 145 147 162 000323 aa 145 145 163 137 000324 55 000002 000075 000325 6a 000000 400002 000326 55 000107 000003 000327 aa 014 163 171 155 symbol_table 000330 aa 142 157 154 137 000331 aa 164 141 142 154 000332 aa 145 000 000 000 DEFINITIONS HASH TABLE 000333 aa 000000 000015 000334 5a 000020 000000 000335 5a 000037 000000 000336 5a 000056 000000 000337 5a 000075 000000 000340 5a 000010 000000 000341 5a 000027 000000 000342 5a 000104 000000 000343 5a 000046 000000 000344 5a 000065 000000 000345 aa 000000 000000 000346 aa 000000 000000 000347 aa 000000 000000 000350 aa 000000 000000 EXTERNAL NAMES 000351 aa 022 160 162 151 principal_degrees_ 000352 aa 156 143 151 160 000353 aa 141 154 137 144 000354 aa 145 147 162 145 000355 aa 145 163 137 000 000356 aa 022 160 162 151 principal_radians_ 000357 aa 156 143 151 160 000360 aa 141 154 137 162 000361 aa 141 144 151 141 000362 aa 156 163 137 000 000363 aa 020 160 162 151 principal_angle_ 000364 aa 156 143 151 160 000365 aa 141 154 137 141 000366 aa 156 147 154 145 000367 aa 137 000 000 000 000370 aa 002 160 151 000 pi 000371 aa 012 157 156 145 one_degree 000372 aa 137 144 145 147 000373 aa 162 145 145 000 000374 aa 007 150 141 154 half_pi 000375 aa 146 137 160 151 000376 aa 017 155 141 164 math_constants_ 000377 aa 150 137 143 157 000400 aa 156 163 164 141 000401 aa 156 164 163 137 NO TRAP POINTER WORDS TYPE PAIR BLOCKS 000402 aa 000004 000000 000403 55 000143 000131 000404 aa 000004 000000 000405 55 000143 000136 000406 aa 000004 000000 000407 55 000156 000150 000410 aa 000004 000000 000411 55 000156 000151 000412 aa 000004 000000 000413 55 000156 000154 000414 aa 000001 000000 000415 aa 000000 000000 INTERNAL EXPRESSION WORDS 000416 5a 000170 000000 000417 5a 000172 000000 000420 5a 000164 000000 000421 5a 000166 000000 000422 5a 000162 000000 000423 aa 000000 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 000220 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000022 000007 a2 000000 000000 000010 9a 777770 0000 46 principal_angle_|principal_degrees_ 000011 5a 000202 0000 00 000012 9a 777766 0000 46 math_constants_|pi 000013 5a 000201 0000 12 000014 9a 777764 0000 46 principal_angle_|principal_radians_ 000015 5a 000200 0000 00 000016 9a 777762 0000 46 math_constants_|half_pi 000017 5a 000177 0000 12 000020 9a 777760 0000 46 math_constants_|one_degree 000021 5a 000176 0000 12 SYMBOL INFORMATION SYMBOL TABLE HEADER 000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000010 000004 aa 000000 117244 000005 aa 361023 525721 000006 aa 000000 117547 000007 aa 251320 772033 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000002 000002 000016 aa 000064 000000 000017 aa 000000 000156 000020 aa 000000 000101 000021 aa 000126 000121 000022 aa 000150 000101 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 070056 061064 000030 aa 040115 141162 000031 aa 143150 040061 000032 aa 071070 071040 000033 aa 040040 040040 000034 aa 110151 162156 000035 aa 145151 163145 000036 aa 156056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 055164 141162 000045 aa 147145 164040 000046 aa 154066 070040 000047 aa 040040 040040 000050 aa 040040 040040 000051 aa 040040 040040 000052 aa 040040 040040 000053 aa 040040 040040 000054 aa 040040 040040 000055 aa 040040 040040 000056 aa 040154 151163 000057 aa 164040 163171 000060 aa 155142 157154 000061 aa 163040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000001 000066 aa 000072 000034 000067 aa 175453 020046 000070 aa 000000 117547 000071 aa 177033 000000 000072 aa 076163 160145 >spec>install>1110>sine_.alm 000073 aa 143076 151156 000074 aa 163164 141154 000075 aa 154076 061061 000076 aa 061060 076163 000077 aa 151156 145137 000100 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 0 BFP sine_: 35, 51, 66, 81, 96. 103 case0_degrees sine_: 86, 135, 139, 161. 107 case0_radians sine_: 101, 106, 110, 170. 70 case1_degrees sine_: 56, 136, 141. 45 case1_radians sine_: 71, 107, 112. 75 case2_degrees sine_: 137, 149. 53 case2_radians sine_: 108, 121. 77 case3_degrees sine_: 138, 153. 55 case3_radians sine_: 109, 125. 63 case_degrees sine_: 58, 88, 134. 40 case_radians sine_: 73, 103, 105. 3 cosine_degrees sine_: 48, 53. 2 cosine_degrees_ sine_: 40, 50. 13 cosine_radians sine_: 63, 68. 12 cosine_radians_ sine_: 41, 65. 134 eps1 sine_: 202. 140 eps2 sine_: 164, 204. 144 eps3 sine_: 177, 206. half_pi sine_: 32, 100. 150 half_pi1 sine_: 117, 130, 208. 154 half_pi2 sine_: 118, 131, 210. 2 HFP sine_: 36, 47, 62, 77, 92. 0 hfp_cosine_degrees_ sine_: 40, 46. 10 hfp_cosine_radians_ sine_: 41, 61. 20 hfp_sine_degrees_ sine_: 42, 76. 30 hfp_sine_radians_ sine_: 43, 91. math_constants_ sine_: 32. 160 ninety sine_: 85, 146, 158, 212. one_degree sine_: 32, 167. 164 one_eighty sine_: 55, 214. 170 p0 sine_: 193, 217. 174 p1 sine_: 191, 219. 200 p2 sine_: 189, 221. 204 p3 sine_: 187, 223. 210 p4 sine_: 185, 225. 214 p5 sine_: 184, 227. 103 part_sine_degrees sine_: 147, 151, 163. 107 part_sine_radians sine_: 119, 123, 132, 176. pi sine_: 32, 70. principal_angle_ sine_: 33. principal_degrees_ sine_: 33, 57, 87. principal_radians_ sine_: 33, 72, 102. 23 sine_degrees sine_: 78, 83. 22 sine_degrees_ sine_: 42, 80. 33 sine_radians sine_: 93, 98. 32 sine_radians_ sine_: 43, 95. 0 x sine_: 37, 181, 182, 194. 2 xx sine_: 38, 183, 186, 188, 190, 192. NO FATAL ERRORS ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved