COMPILATION LISTING OF SEGMENT generic_math_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 02/05/85 1113.7 mst Tue Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 generic_math_: proc; 7 /* This is a set of utilities that allow the basic functions: 8* add, subtract, multiply, divide and negation to be performed 9* on the generic number types. */ 10 11 /* Written by Rick Gray 02/02/84 to help provide Fortran Hex support */ 12 /* Modified by R. Gray 01/01/84 to work on unnormalized decimal data */ 13 14 /* Note for possible future expansion: 15* log(x) == log(manitissa) + log(exponent base) * exponent 16* exp(x) -- exponent = floor(x / log(exponent base)) 17* -- mantissa = exp(x - exponent * log(exponent base)) */ 18 19 dcl zerodivide condition; 20 21 dcl dbl_max_decimal_precision fixed bin int static options(constant) init(118); 22 dcl max_binary_precision fixed bin int static options(constant) init(63); 23 dcl 01 gen_decimal_struc based aligned, 24 02 exponent fixed bin(35), 25 02 mantissa fixed decimal(59); 26 27 dcl 01 cplx_gen_decimal_struc based aligned, 28 02 (real, imaginary) aligned like gen_decimal_struc; 29 30 dcl 01 float_decimal_struc based aligned, 31 02 mantissa fixed decimal(59), 32 02 pad bit(1) unaligned, 33 02 exponent fixed bin(7) unaligned; 34 35 dcl fldt float decimal(59) based aligned; 36 37 dcl 01 gen_binary_struc based aligned, 38 02 pad bit(8) unaligned, 39 02 mantissa fixed bin(63) unaligned, 40 02 exponent fixed bin(35) aligned; 41 42 dcl 01 cplx_gen_binary_struc based aligned, 43 02 real like gen_binary_struc aligned, 44 02 pad fixed bin(35), 45 02 imaginary like gen_binary_struc aligned; 46 47 dcl 01 float_binary_struc based aligned, 48 02 exponent fixed bin(7) unaligned, 49 02 mantissa fixed bin(63) unaligned; 50 51 dcl flbt float binary(63) based aligned; 52 53 dcl 01 (xd, yd, zd) parameter like gen_decimal_struc aligned; 54 dcl 01 (xdc, ydc, zdc) parameter like cplx_gen_decimal_struc aligned; 55 dcl 01 (ad, bd, cd) like float_decimal_struc aligned; 56 57 dcl 01 (xb, yb, zb) parameter like gen_binary_struc aligned; 58 dcl 01 (xbc, ybc, zbc) parameter like cplx_gen_binary_struc aligned; 59 dcl 01 (ab, bb, cb) like float_binary_struc aligned; 60 61 /* ******************** generic decimal routines ******************** */ 62 63 negate_decimal: entry(yd, xd); 64 xd.exponent = yd.exponent; 65 xd.mantissa = - yd.mantissa; 66 return; 67 68 negate_decimal_complex: entry(ydc, xdc); 69 xdc.real.exponent = ydc.real.exponent; 70 xdc.real.mantissa = - ydc.real.mantissa; 71 xdc.imaginary.exponent = ydc.imaginary.exponent; 72 xdc.imaginary.mantissa = - ydc.imaginary.mantissa; 73 return; 74 75 add_decimal: entry(yd, zd, xd); 76 if yd.mantissa = 0 then xd = zd; 77 else if zd.mantissa = 0 then xd = yd; 78 else if yd.exponent > zd.exponent then 79 if yd.exponent-zd.exponent > dbl_max_decimal_precision then xd = yd; 80 else do; 81 ad.exponent = 0; 82 ad.mantissa = yd.mantissa; 83 bd.exponent = zd.exponent - yd.exponent; 84 bd.mantissa = zd.mantissa; 85 addr(cd) -> fldt = addr(ad) -> fldt + addr(bd) -> fldt; 86 xd.mantissa = cd.mantissa; 87 xd.exponent = yd.exponent + cd.exponent; 88 end; 89 else if zd.exponent-yd.exponent > dbl_max_decimal_precision then xd = zd; 90 else do; 91 ad.exponent = 0; 92 ad.mantissa = zd.mantissa; 93 bd.exponent = yd.exponent - zd.exponent; 94 bd.mantissa = yd.mantissa; 95 addr(cd) -> fldt = addr(ad) -> fldt + addr(bd) -> fldt; 96 xd.mantissa = cd.mantissa; 97 xd.exponent = zd.exponent + cd.exponent; 98 end; 99 return; 100 101 add_decimal_complex: entry(ydc, zdc, xdc); 102 call add_decimal(ydc.real, zdc.real, xdc.real); 103 call add_decimal(ydc.imaginary, zdc.imaginary, xdc.imaginary); 104 return; 105 106 subtract_decimal: entry(yd, zd, xd); 107 if zd.mantissa = 0 then xd = yd; 108 else if yd.mantissa = 0 then call negate_decimal(zd, xd); 109 else if yd.exponent > zd.exponent then 110 if yd.exponent-zd.exponent > dbl_max_decimal_precision then xd = yd; 111 else do; 112 ad.exponent = 0; 113 ad.mantissa = yd.mantissa; 114 bd.exponent = zd.exponent - yd.exponent; 115 bd.mantissa = zd.mantissa; 116 addr(cd) -> fldt = addr(ad) -> fldt - addr(bd) -> fldt; 117 xd.mantissa = cd.mantissa; 118 xd.exponent = yd.exponent + cd.exponent; 119 end; 120 else if zd.exponent-yd.exponent > dbl_max_decimal_precision then do; 121 xd.mantissa = -zd.mantissa; 122 xd.exponent = zd.exponent; 123 end; 124 else do; 125 ad.exponent = 0; 126 ad.mantissa = zd.mantissa; 127 bd.exponent = yd.exponent - zd.exponent; 128 bd.mantissa = yd.mantissa; 129 addr(cd) -> fldt = addr(bd) -> fldt - addr(ad) -> fldt; 130 xd.mantissa = cd.mantissa; 131 xd.exponent = zd.exponent + cd.exponent; 132 end; 133 return; 134 135 subtract_decimal_complex: entry(ydc, zdc, xdc); 136 call subtract_decimal(ydc.real, zdc.real, xdc.real); 137 call subtract_decimal(ydc.imaginary, zdc.imaginary, xdc.imaginary); 138 return; 139 140 multiply_decimal: entry(yd, zd, xd); 141 if yd.mantissa = 0 | zd.mantissa = 0 then do; 142 xd.mantissa = 0; 143 xd.exponent = 127; 144 return; 145 end; 146 ad.exponent, bd.exponent = 0; 147 ad.mantissa = yd.mantissa; 148 bd.mantissa = zd.mantissa; 149 addr(cd) -> fldt = addr(ad) -> fldt * addr(bd) -> fldt; 150 xd.mantissa = cd.mantissa; 151 xd.exponent = yd.exponent + zd.exponent + cd.exponent; 152 return; 153 154 multiply_decimal_complex: entry(ydc, zdc, xdc); 155 begin; 156 dcl 01 (product1, product2, temp) like gen_decimal_struc aligned; 157 158 call multiply_decimal(ydc.real, zdc.real, product1); 159 call multiply_decimal(ydc.imaginary, zdc.imaginary, product2); 160 call subtract_decimal(product1, product2, temp); 161 162 call multiply_decimal(ydc.real, zdc.imaginary, product1); 163 call multiply_decimal(ydc.imaginary, zdc.real, product2); 164 call add_decimal(product1, product2, xdc.imaginary); 165 xdc.real = temp; /* temp is used to allow operand & result to be same variable */ 166 end; 167 return; 168 169 divide_decimal: entry(yd, zd, xd); 170 if zd.mantissa = 0 then signal zerodivide; 171 if yd.mantissa = 0 then do; 172 xd = yd; 173 return; 174 end; 175 ad.exponent, bd.exponent = 0; 176 ad.mantissa = yd.mantissa; 177 bd.mantissa = zd.mantissa; 178 addr(cd) -> fldt = addr(ad) -> fldt / addr(bd) -> fldt; 179 xd.mantissa = cd.mantissa; 180 xd.exponent = yd.exponent + cd.exponent - zd.exponent; 181 return; 182 183 divide_decimal_complex: entry(ydc, zdc, xdc); 184 begin; 185 dcl 01 (product1, product2, divisor, temp) like gen_decimal_struc aligned; 186 187 call multiply_decimal(zdc.real, zdc.real, product1); 188 call multiply_decimal(zdc.imaginary, zdc.imaginary, product2); 189 call add_decimal(product1, product2, divisor); 190 191 call multiply_decimal(ydc.real, zdc.real, product1); 192 call multiply_decimal(ydc.imaginary, zdc.imaginary, product2); 193 call add_decimal(product1, product2, xdc.real); 194 call divide_decimal(xdc.real, divisor, temp); 195 196 call multiply_decimal(ydc.imaginary, zdc.real, product1); 197 call multiply_decimal(ydc.real, zdc.imaginary, product2); 198 call subtract_decimal(product1, product2, xdc.imaginary); 199 call divide_decimal(xdc.imaginary, divisor, xdc.imaginary); 200 xdc.real = temp; /* temp is used to allow operand & result to be same variable */ 201 end; 202 return; 203 204 /* ******************** generic binary routines ******************** */ 205 206 negate_binary: entry(yb, xb); 207 ab.exponent = 0; 208 ab.mantissa = yb.mantissa; 209 addr(ab) -> flbt = - addr(ab) -> flbt; 210 xb.exponent = yb.exponent + ab.exponent; 211 xb.mantissa = ab.mantissa; 212 return; 213 214 negate_binary_complex: entry(ybc, xbc); 215 call negate_binary(ybc.real, xbc.real); 216 call negate_binary(ybc.imaginary, xbc.imaginary); 217 return; 218 219 add_binary: entry(yb, zb, xb); 220 if yb.mantissa = 0 then xb = zb; 221 else if zb.mantissa = 0 then xb = yb; 222 else if yb.exponent > zb.exponent then 223 if yb.exponent-zb.exponent > max_binary_precision then xb = yb; 224 else do; 225 ab.exponent = 0; 226 ab.mantissa = yb.mantissa; 227 bb.exponent = zb.exponent - yb.exponent; 228 bb.mantissa = zb.mantissa; 229 addr(cb) -> flbt = addr(ab) -> flbt + addr(bb) -> flbt; 230 xb.mantissa = cb.mantissa; 231 xb.exponent = yb.exponent + cb.exponent; 232 end; 233 else if zb.exponent-yb.exponent > max_binary_precision then xb = zb; 234 else do; 235 ab.exponent = 0; 236 ab.mantissa = zb.mantissa; 237 bb.exponent = yb.exponent - zb.exponent; 238 bb.mantissa = yb.mantissa; 239 addr(cb) -> flbt = addr(ab) -> flbt + addr(bb) -> flbt; 240 xb.mantissa = cb.mantissa; 241 xb.exponent = zb.exponent + cb.exponent; 242 end; 243 return; 244 245 add_binary_complex: entry(ybc, zbc, xbc); 246 call add_binary(ybc.real, zbc.real, xbc.real); 247 call add_binary(ybc.imaginary, zbc.imaginary, xbc.imaginary); 248 return; 249 250 subtract_binary: entry(yb, zb, xb); 251 if yb.mantissa = 0 then call negate_binary(zb, xb); 252 else if zb.mantissa = 0 then xb = yb; 253 else if yb.exponent > zb.exponent then 254 if yb.exponent-zb.exponent > max_binary_precision then xb = yb; 255 else do; 256 ab.exponent = 0; 257 ab.mantissa = yb.mantissa; 258 bb.exponent = zb.exponent - yb.exponent; 259 bb.mantissa = zb.mantissa; 260 addr(cb) -> flbt = addr(ab) -> flbt - addr(bb) -> flbt; 261 xb.mantissa = cb.mantissa; 262 xb.exponent = yb.exponent + cb.exponent; 263 end; 264 else if zb.exponent-yb.exponent > max_binary_precision then do; 265 xb.mantissa = -zb.mantissa; 266 xb.exponent = zb.exponent; 267 end; 268 else do; 269 ab.exponent = 0; 270 ab.mantissa = zb.mantissa; 271 bb.exponent = yb.exponent - zb.exponent; 272 bb.mantissa = yb.mantissa; 273 addr(cb) -> flbt = addr(bb) -> flbt - addr(ab) -> flbt; 274 xb.mantissa = cb.mantissa; 275 xb.exponent = zb.exponent + cb.exponent; 276 end; 277 return; 278 279 subtract_binary_complex: entry(ybc, zbc, xbc); 280 call subtract_binary(ybc.real, zbc.real, xbc.real); 281 call subtract_binary(ybc.imaginary, zbc.imaginary, xbc.imaginary); 282 return; 283 284 multiply_binary: entry(yb, zb, xb); 285 if yb.mantissa = 0 | xb.mantissa = 0 then do; 286 xb.mantissa = 0; 287 xb.exponent = 127; 288 return; 289 end; 290 ab.exponent, bb.exponent = 0; 291 ab.mantissa = yb.mantissa; 292 bb.mantissa = zb.mantissa; 293 addr(cb) -> flbt = addr(ab) -> flbt * addr(bb) -> flbt; 294 xb.mantissa = cb.mantissa; 295 xb.exponent = yb.exponent + zb.exponent + cb.exponent; 296 return; 297 298 multiply_binary_complex: entry(ybc, zbc, xbc); 299 begin; 300 dcl 01 (product1, product2) like gen_binary_struc aligned; 301 302 call multiply_binary(ybc.real, zbc.real, product1); 303 call multiply_binary(ybc.imaginary, zbc.imaginary, product2); 304 call subtract_binary(product1, product2, xbc.real); 305 306 call multiply_binary(ybc.real, zbc.imaginary, product1); 307 call multiply_binary(ybc.imaginary, zbc.real, product2); 308 call add_binary(product1, product2, xbc.imaginary); 309 end; 310 return; 311 312 divide_binary: entry(yb, zb, xb); 313 if zb.mantissa = 0 then signal zerodivide; 314 if yb.mantissa = 0 then do; 315 xb = yb; 316 return; 317 end; 318 ab.exponent, bb.exponent = 0; 319 ab.mantissa = yb.mantissa; 320 bb.mantissa = zb.mantissa; 321 addr(cb) -> flbt = addr(ab) -> flbt / addr(bb) -> flbt; 322 xb.mantissa = cb.mantissa; 323 xb.exponent = yb.exponent + cb.exponent - zb.exponent; 324 return; 325 326 divide_binary_complex: entry(ybc, zbc, xbc); 327 begin; 328 dcl 01 (product1, product2, divisor) like gen_binary_struc aligned; 329 330 call multiply_binary(zbc.real, zbc.real, product1); 331 call multiply_binary(zbc.imaginary, zbc.imaginary, product2); 332 call add_binary(product1, product2, divisor); 333 334 call multiply_binary(ybc.real, zbc.real, product1); 335 call multiply_binary(ybc.imaginary, zbc.imaginary, product2); 336 call add_binary(product1, product2, xbc.real); 337 call divide_binary((xbc.real), divisor, xbc.real); 338 339 call multiply_binary(ybc.imaginary, zbc.real, product1); 340 call multiply_binary(ybc.real, zbc.imaginary, product2); 341 call subtract_binary(product1, product2, xbc.imaginary); 342 call divide_binary((xbc.imaginary), divisor, xbc.imaginary); 343 end; 344 return; 345 end generic_math_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/05/85 1108.7 generic_math_.pl1 >spec>on>7064.pbf>generic_math_.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ab 000166 automatic structure level 1 dcl 59 set ref 209 209 229 239 260 273 293 321 ad 000106 automatic structure level 1 dcl 55 set ref 85 95 116 129 149 178 bb 000170 automatic structure level 1 dcl 59 set ref 229 239 260 273 293 321 bd 000126 automatic structure level 1 dcl 55 set ref 85 95 116 129 149 178 cb 000172 automatic structure level 1 dcl 59 set ref 229 239 260 273 293 321 cd 000146 automatic structure level 1 dcl 55 set ref 85 95 116 129 149 178 cplx_gen_binary_struc based structure level 1 dcl 42 cplx_gen_decimal_struc based structure level 1 dcl 27 dbl_max_decimal_precision constant fixed bin(17,0) initial dcl 21 ref 78 89 109 120 divisor 000400 automatic structure level 1 dcl 328 in begin block on line 327 set ref 332* 337* 342* divisor 000324 automatic structure level 1 dcl 185 in begin block on line 184 set ref 189* 194* 199* exponent 2 parameter fixed bin(35,0) level 2 in structure "zb" dcl 57 in procedure "generic_math_" set ref 222 222 227 233 237 241 253 253 258 264 266 271 275 295 323 exponent parameter fixed bin(35,0) level 3 in structure "ydc" dcl 54 in procedure "generic_math_" set ref 69 exponent 000172 automatic fixed bin(7,0) level 2 in structure "cb" packed unaligned dcl 59 in procedure "generic_math_" set ref 231 241 262 275 295 323 exponent 17(01) 000146 automatic fixed bin(7,0) level 2 in structure "cd" packed unaligned dcl 55 in procedure "generic_math_" set ref 87 97 118 131 151 180 exponent 20 parameter fixed bin(35,0) level 3 in structure "xdc" dcl 54 in procedure "generic_math_" set ref 71* exponent parameter fixed bin(35,0) level 3 in structure "xdc" dcl 54 in procedure "generic_math_" set ref 69* exponent 17(01) 000106 automatic fixed bin(7,0) level 2 in structure "ad" packed unaligned dcl 55 in procedure "generic_math_" set ref 81* 91* 112* 125* 146* 175* exponent 17(01) 000126 automatic fixed bin(7,0) level 2 in structure "bd" packed unaligned dcl 55 in procedure "generic_math_" set ref 83* 93* 114* 127* 146* 175* exponent 20 parameter fixed bin(35,0) level 3 in structure "ydc" dcl 54 in procedure "generic_math_" set ref 71 exponent 000166 automatic fixed bin(7,0) level 2 in structure "ab" packed unaligned dcl 59 in procedure "generic_math_" set ref 207* 210 225* 235* 256* 269* 290* 318* exponent 2 parameter fixed bin(35,0) level 2 in structure "xb" dcl 57 in procedure "generic_math_" set ref 210* 231* 241* 262* 266* 275* 287* 295* 323* exponent 000170 automatic fixed bin(7,0) level 2 in structure "bb" packed unaligned dcl 59 in procedure "generic_math_" set ref 227* 237* 258* 271* 290* 318* exponent 2 parameter fixed bin(35,0) level 2 in structure "yb" dcl 57 in procedure "generic_math_" ref 210 222 222 227 231 233 237 253 253 258 262 264 271 295 323 exponent parameter fixed bin(35,0) level 2 in structure "zd" dcl 53 in procedure "generic_math_" set ref 78 78 83 89 93 97 109 109 114 120 122 127 131 151 180 exponent parameter fixed bin(35,0) level 2 in structure "xd" dcl 53 in procedure "generic_math_" set ref 64* 87* 97* 118* 122* 131* 143* 151* 180* exponent parameter fixed bin(35,0) level 2 in structure "yd" dcl 53 in procedure "generic_math_" ref 64 78 78 83 87 89 93 109 109 114 118 120 127 151 180 flbt based float bin(63) dcl 51 set ref 209* 209 229* 229 229 239* 239 239 260* 260 260 273* 273 273 293* 293 293 321* 321 321 fldt based float dec(59) dcl 35 set ref 85* 85 85 95* 95 95 116* 116 116 129* 129 129 149* 149 149 178* 178 178 float_binary_struc based structure level 1 dcl 47 float_decimal_struc based structure level 1 dcl 30 gen_binary_struc based structure level 1 dcl 37 gen_decimal_struc based structure level 1 dcl 23 imaginary 20 parameter structure level 2 in structure "xdc" dcl 54 in procedure "generic_math_" set ref 103* 137* 164* 198* 199* 199* imaginary 20 parameter structure level 2 in structure "ydc" dcl 54 in procedure "generic_math_" set ref 103* 137* 159* 163* 192* 196* imaginary 4 parameter structure level 2 in structure "xbc" dcl 58 in procedure "generic_math_" set ref 216* 247* 281* 308* 341* 342 342* imaginary 4 parameter structure level 2 in structure "zbc" dcl 58 in procedure "generic_math_" set ref 247* 281* 303* 306* 331* 331* 335* 340* imaginary 4 parameter structure level 2 in structure "ybc" dcl 58 in procedure "generic_math_" set ref 216* 247* 281* 303* 307* 335* 339* imaginary 20 parameter structure level 2 in structure "zdc" dcl 54 in procedure "generic_math_" set ref 103* 137* 159* 162* 188* 188* 192* 197* mantissa 000106 automatic fixed dec(59,0) level 2 in structure "ad" dcl 55 in procedure "generic_math_" set ref 82* 92* 113* 126* 147* 176* mantissa 1 parameter fixed dec(59,0) level 2 in structure "zd" dcl 53 in procedure "generic_math_" set ref 77 84 92 107 115 121 126 141 148 170 177 mantissa 0(08) 000172 automatic fixed bin(63,0) level 2 in structure "cb" packed unaligned dcl 59 in procedure "generic_math_" set ref 230 240 261 274 294 322 mantissa 0(08) parameter fixed bin(63,0) level 2 in structure "zb" packed unaligned dcl 57 in procedure "generic_math_" set ref 221 228 236 252 259 265 270 292 313 320 mantissa 1 parameter fixed dec(59,0) level 3 in structure "xdc" dcl 54 in procedure "generic_math_" set ref 70* mantissa 0(08) parameter fixed bin(63,0) level 2 in structure "xb" packed unaligned dcl 57 in procedure "generic_math_" set ref 211* 230* 240* 261* 265* 274* 285 286* 294* 322* mantissa 0(08) 000166 automatic fixed bin(63,0) level 2 in structure "ab" packed unaligned dcl 59 in procedure "generic_math_" set ref 208* 211 226* 236* 257* 270* 291* 319* mantissa 0(08) parameter fixed bin(63,0) level 2 in structure "yb" packed unaligned dcl 57 in procedure "generic_math_" ref 208 220 226 238 251 257 272 285 291 314 319 mantissa 0(08) 000170 automatic fixed bin(63,0) level 2 in structure "bb" packed unaligned dcl 59 in procedure "generic_math_" set ref 228* 238* 259* 272* 292* 320* mantissa 21 parameter fixed dec(59,0) level 3 in structure "ydc" dcl 54 in procedure "generic_math_" set ref 72 mantissa 1 parameter fixed dec(59,0) level 2 in structure "xd" dcl 53 in procedure "generic_math_" set ref 65* 86* 96* 117* 121* 130* 142* 150* 179* mantissa 000126 automatic fixed dec(59,0) level 2 in structure "bd" dcl 55 in procedure "generic_math_" set ref 84* 94* 115* 128* 148* 177* mantissa 21 parameter fixed dec(59,0) level 3 in structure "xdc" dcl 54 in procedure "generic_math_" set ref 72* mantissa 1 parameter fixed dec(59,0) level 3 in structure "ydc" dcl 54 in procedure "generic_math_" set ref 70 mantissa 1 parameter fixed dec(59,0) level 2 in structure "yd" dcl 53 in procedure "generic_math_" ref 65 76 82 94 108 113 128 141 147 171 176 mantissa 000146 automatic fixed dec(59,0) level 2 in structure "cd" dcl 55 in procedure "generic_math_" set ref 86 96 117 130 150 179 max_binary_precision constant fixed bin(17,0) initial dcl 22 ref 222 233 253 264 product1 000204 automatic structure level 1 dcl 156 in begin block on line 155 set ref 158* 160* 162* 164* product1 000372 automatic structure level 1 dcl 328 in begin block on line 327 set ref 330* 332* 334* 336* 339* 341* product1 000264 automatic structure level 1 dcl 185 in begin block on line 184 set ref 187* 189* 191* 193* 196* 198* product1 000364 automatic structure level 1 dcl 300 in begin block on line 299 set ref 302* 304* 306* 308* product2 000304 automatic structure level 1 dcl 185 in begin block on line 184 set ref 188* 189* 192* 193* 197* 198* product2 000224 automatic structure level 1 dcl 156 in begin block on line 155 set ref 159* 160* 163* 164* product2 000375 automatic structure level 1 dcl 328 in begin block on line 327 set ref 331* 332* 335* 336* 340* 341* product2 000367 automatic structure level 1 dcl 300 in begin block on line 299 set ref 303* 304* 307* 308* real parameter structure level 2 in structure "zbc" dcl 58 in procedure "generic_math_" set ref 246* 280* 302* 307* 330* 330* 334* 339* real parameter structure level 2 in structure "ydc" dcl 54 in procedure "generic_math_" set ref 102* 136* 158* 162* 191* 197* real parameter structure level 2 in structure "xbc" dcl 58 in procedure "generic_math_" set ref 215* 246* 280* 304* 336* 337 337* real parameter structure level 2 in structure "ybc" dcl 58 in procedure "generic_math_" set ref 215* 246* 280* 302* 306* 334* 340* real parameter structure level 2 in structure "xdc" dcl 54 in procedure "generic_math_" set ref 102* 136* 165* 193* 194* 200* real parameter structure level 2 in structure "zdc" dcl 54 in procedure "generic_math_" set ref 102* 136* 158* 163* 187* 187* 191* 196* temp 000244 automatic structure level 1 dcl 156 in begin block on line 155 set ref 160* 165 temp 000344 automatic structure level 1 dcl 185 in begin block on line 184 set ref 194* 200 xb parameter structure level 1 dcl 57 set ref 206 219 220* 221* 222* 233* 250 251* 252* 253* 284 312 315* xbc parameter structure level 1 dcl 58 set ref 214 245 279 298 326 xd parameter structure level 1 dcl 53 set ref 63 75 76* 77* 78* 89* 106 107* 108* 109* 140 169 172* xdc parameter structure level 1 dcl 54 set ref 68 101 135 154 183 yb parameter structure level 1 dcl 57 ref 206 219 221 222 250 252 253 284 312 315 ybc parameter structure level 1 dcl 58 set ref 214 245 279 298 326 yd parameter structure level 1 dcl 53 ref 63 75 77 78 106 107 109 140 169 172 ydc parameter structure level 1 dcl 54 set ref 68 101 135 154 183 zb parameter structure level 1 dcl 57 set ref 219 220 233 250 251* 284 312 zbc parameter structure level 1 dcl 58 set ref 245 279 298 326 zd parameter structure level 1 dcl 53 set ref 75 76 89 106 108* 140 169 zdc parameter structure level 1 dcl 54 set ref 101 135 154 183 zerodivide 000100 stack reference condition dcl 19 ref 170 313 NAMES DECLARED BY EXPLICIT CONTEXT. add_binary 001546 constant entry external dcl 219 ref 246 247 308 332 336 add_binary_complex 002023 constant entry external dcl 245 add_decimal 000132 constant entry external dcl 75 ref 102 103 164 189 193 add_decimal_complex 000343 constant entry external dcl 101 divide_binary 002645 constant entry external dcl 312 ref 337 342 divide_binary_complex 002765 constant entry external dcl 326 divide_decimal 001111 constant entry external dcl 169 ref 194 199 divide_decimal_complex 001214 constant entry external dcl 183 generic_math_ 000036 constant entry external dcl 6 multiply_binary 002410 constant entry external dcl 284 ref 302 303 306 307 330 331 334 335 339 340 multiply_binary_complex 002525 constant entry external dcl 298 multiply_decimal 000671 constant entry external dcl 140 ref 158 159 162 163 187 188 191 192 196 197 multiply_decimal_complex 000765 constant entry external dcl 154 negate_binary 001430 constant entry external dcl 206 ref 215 216 251 negate_binary_complex 001505 constant entry external dcl 214 negate_decimal 000050 constant entry external dcl 63 ref 108 negate_decimal_complex 000076 constant entry external dcl 68 subtract_binary 002067 constant entry external dcl 250 ref 280 281 304 341 subtract_binary_complex 002344 constant entry external dcl 279 subtract_decimal 000407 constant entry external dcl 106 ref 136 137 160 198 subtract_decimal_complex 000625 constant entry external dcl 135 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 85 85 85 95 95 95 116 116 116 129 129 129 149 149 149 178 178 178 209 209 229 229 229 239 239 239 260 260 260 273 273 273 293 293 293 321 321 321 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3474 3504 3206 3504 Length 3714 3206 10 173 265 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME generic_math_ 330 external procedure is an external procedure. begin block on line 155 begin block shares stack frame of external procedure generic_math_. begin block on line 184 begin block shares stack frame of external procedure generic_math_. begin block on line 299 begin block shares stack frame of external procedure generic_math_. begin block on line 327 begin block shares stack frame of external procedure generic_math_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME generic_math_ 000106 ad generic_math_ 000126 bd generic_math_ 000146 cd generic_math_ 000166 ab generic_math_ 000170 bb generic_math_ 000172 cb generic_math_ 000204 product1 begin block on line 155 000224 product2 begin block on line 155 000244 temp begin block on line 155 000264 product1 begin block on line 184 000304 product2 begin block on line 184 000324 divisor begin block on line 184 000344 temp begin block on line 184 000364 product1 begin block on line 299 000367 product2 begin block on line 299 000372 product1 begin block on line 327 000375 product2 begin block on line 327 000400 divisor begin block on line 327 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_in return signal ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. CONSTANTS 003204 aa 053 060 000 000 +0 003205 aa 053060000000 000000 aa 000000000000 000001 aa 000000000000 000002 aa 172 145 162 157 zero 000003 aa 144 151 166 151 divi 000004 aa 144 145 000 000 de 000005 aa 504000000002 000006 aa 404000000043 000007 aa 444000000073 000010 aa 504000000003 000011 aa 516000000010 000012 aa 412000000077 000013 aa 404000000043 000014 aa 504000000002 000015 aa 504000000002 000016 aa 404000000043 000017 aa 444000000073 000020 aa 504000000002 000021 aa 404000000043 000022 aa 444000000073 000023 aa 504000000003 000024 aa 504000000003 000025 aa 516000000010 000026 aa 412000000077 000027 aa 404000000043 000030 aa 404000000043 000031 aa 504000000003 000032 aa 516000000010 000033 aa 412000000077 000034 aa 404000000043 BEGIN PROCEDURE generic_math_ ENTRY TO generic_math_ STATEMENT 1 ON LINE 6 generic_math_: proc; 000035 da 000021200000 000036 aa 000520 6270 00 eax7 336 000037 aa 7 00034 3521 20 epp2 pr7|28,* 000040 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000041 aa 000000000000 000042 aa 000000000000 STATEMENT 1 ON LINE 63 negate_decimal: entry(yd, xd); 000043 aa 000015 7100 04 tra 13,ic 000060 ENTRY TO negate_decimal STATEMENT 1 ON LINE 63 negate_decimal: entry(yd, xd); 000044 at 000002000005 000045 ta 000005000000 000046 ta 000044000000 000047 da 000030300000 000050 aa 000520 6270 00 eax7 336 000051 aa 7 00034 3521 20 epp2 pr7|28,* 000052 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000053 aa 000004000000 000054 aa 000000000000 000055 aa 6 00032 3735 20 epp7 pr6|26,* 000056 aa 7 00004 3715 20 epp5 pr7|4,* 000057 aa 6 00174 6515 00 spri5 pr6|124 STATEMENT 1 ON LINE 64 xd.exponent = yd.exponent; 000060 aa 6 00032 3735 20 epp7 pr6|26,* 000061 aa 7 00002 2361 20 ldq pr7|2,* yd.exponent 000062 aa 6 00174 7561 20 stq pr6|124,* xd.exponent STATEMENT 1 ON LINE 65 xd.mantissa = - yd.mantissa; 000063 aa 6 00174 3715 20 epp5 pr6|124,* 000064 aa 7 00002 3535 20 epp3 pr7|2,* 000065 aa 100 004 223 500 sb3d (pr),(ic),(pr) 000066 aa 3 00001 01 0074 desc9ls pr3|1,60,0 yd.mantissa 000067 aa 003117 01 0002 desc9ls 1615,2,0 003204 = 053060000000 000070 aa 5 00001 01 0074 desc9ls pr5|1,60,0 xd.mantissa STATEMENT 1 ON LINE 66 return; 000071 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO negate_decimal_complex STATEMENT 1 ON LINE 68 negate_decimal_complex: entry(ydc, xdc); 000072 at 000002000014 000073 ta 000014000000 000074 ta 000072000000 000075 da 000041300000 000076 aa 000520 6270 00 eax7 336 000077 aa 7 00034 3521 20 epp2 pr7|28,* 000100 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000101 aa 000004000000 000102 aa 000000000000 000103 aa 6 00032 3735 20 epp7 pr6|26,* 000104 aa 7 00004 3715 20 epp5 pr7|4,* 000105 aa 6 00176 6515 00 spri5 pr6|126 STATEMENT 1 ON LINE 69 xdc.real.exponent = ydc.real.exponent; 000106 aa 6 00032 3735 20 epp7 pr6|26,* 000107 aa 7 00002 2361 20 ldq pr7|2,* ydc.exponent 000110 aa 6 00176 7561 20 stq pr6|126,* xdc.exponent STATEMENT 1 ON LINE 70 xdc.real.mantissa = - ydc.real.mantissa; 000111 aa 6 00176 3715 20 epp5 pr6|126,* 000112 aa 7 00002 3535 20 epp3 pr7|2,* 000113 aa 100 004 223 500 sb3d (pr),(ic),(pr) 000114 aa 3 00001 01 0074 desc9ls pr3|1,60,0 ydc.mantissa 000115 aa 003071 01 0002 desc9ls 1593,2,0 003204 = 053060000000 000116 aa 5 00001 01 0074 desc9ls pr5|1,60,0 xdc.mantissa STATEMENT 1 ON LINE 71 xdc.imaginary.exponent = ydc.imaginary.exponent; 000117 aa 3 00020 2361 00 ldq pr3|16 ydc.exponent 000120 aa 5 00020 7561 00 stq pr5|16 xdc.exponent STATEMENT 1 ON LINE 72 xdc.imaginary.mantissa = - ydc.imaginary.mantissa; 000121 aa 100 004 223 500 sb3d (pr),(ic),(pr) 000122 aa 3 00021 01 0074 desc9ls pr3|17,60,0 ydc.mantissa 000123 aa 003063 01 0002 desc9ls 1587,2,0 003204 = 053060000000 000124 aa 5 00021 01 0074 desc9ls pr5|17,60,0 xdc.mantissa STATEMENT 1 ON LINE 73 return; 000125 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO add_decimal STATEMENT 1 ON LINE 75 add_decimal: entry(yd, zd, xd); 000126 at 000003000005 000127 tt 000005000005 000130 ta 000126000000 000131 da 000047300000 000132 aa 000520 6270 00 eax7 336 000133 aa 7 00034 3521 20 epp2 pr7|28,* 000134 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000135 aa 000006000000 000136 aa 000000000000 000137 aa 6 00032 3735 20 epp7 pr6|26,* 000140 aa 7 00006 3715 20 epp5 pr7|6,* 000141 aa 6 00174 6515 00 spri5 pr6|124 STATEMENT 1 ON LINE 76 if yd.mantissa = 0 then xd = zd; 000142 aa 6 00032 3735 20 epp7 pr6|26,* 000143 aa 7 00002 3715 20 epp5 pr7|2,* 000144 aa 000 100 303 404 cmpn (ic),(pr) 000145 aa 003041 01 0002 desc9ls 1569,2,0 003205 = 053060000000 000146 aa 5 00001 01 0074 desc9ls pr5|1,60,0 yd.mantissa 000147 aa 000007 6010 04 tnz 7,ic 000156 000150 aa 6 00174 3535 20 epp3 pr6|124,* 000151 aa 7 00004 3515 20 epp1 pr7|4,* 000152 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000153 aa 1 00000 00 0100 desc9a pr1|0,64 zd 000154 aa 3 00000 00 0100 desc9a pr3|0,64 xd 000155 aa 000161 7100 04 tra 113,ic 000336 STATEMENT 1 ON LINE 77 else if zd.mantissa = 0 then xd = yd; 000156 aa 7 00004 3535 20 epp3 pr7|4,* 000157 aa 000 100 303 404 cmpn (ic),(pr) 000160 aa 003026 01 0002 desc9ls 1558,2,0 003205 = 053060000000 000161 aa 3 00001 01 0074 desc9ls pr3|1,60,0 zd.mantissa 000162 aa 000006 6010 04 tnz 6,ic 000170 000163 aa 6 00174 3515 20 epp1 pr6|124,* 000164 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000165 aa 5 00000 00 0100 desc9a pr5|0,64 yd 000166 aa 1 00000 00 0100 desc9a pr1|0,64 xd 000167 aa 000147 7100 04 tra 103,ic 000336 STATEMENT 1 ON LINE 78 else if yd.exponent > zd.exponent then if yd.exponent-zd.exponent > dbl_max_decimal_precision then xd = yd; 000170 aa 7 00002 2361 20 ldq pr7|2,* yd.exponent 000171 aa 7 00004 1161 20 cmpq pr7|4,* zd.exponent 000172 aa 000063 6044 04 tmoz 51,ic 000255 000173 aa 7 00002 3361 20 lcq pr7|2,* yd.exponent 000174 aa 000044 7770 00 llr 36 000175 aa 000044 7330 00 lrs 36 000176 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 000177 aa 000000 5330 00 negl 0 000200 aa 6 00404 7571 00 staq pr6|260 000201 aa 000166 2350 07 lda 118,dl 000202 aa 000044 7330 00 lrs 36 000203 aa 6 00404 1171 00 cmpaq pr6|260 000204 aa 000006 6050 04 tpl 6,ic 000212 000205 aa 6 00174 3515 20 epp1 pr6|124,* 000206 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000207 aa 5 00000 00 0100 desc9a pr5|0,64 yd 000210 aa 1 00000 00 0100 desc9a pr1|0,64 xd 000211 aa 000125 7100 04 tra 85,ic 000336 STATEMENT 1 ON LINE 80 else do; STATEMENT 1 ON LINE 81 ad.exponent = 0; 000212 aa 000000 2350 03 lda 0,du 000213 aa 6 00125 6751 00 era pr6|85 ad.exponent 000214 aa 377000 3750 03 ana 130560,du 000215 aa 6 00125 6551 00 ersa pr6|85 ad.exponent STATEMENT 1 ON LINE 82 ad.mantissa = yd.mantissa; 000216 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000217 aa 5 00001 00 0074 desc9a pr5|1,60 yd.mantissa 000220 aa 6 00106 00 0074 desc9a pr6|70,60 ad.mantissa STATEMENT 1 ON LINE 83 bd.exponent = zd.exponent - yd.exponent; 000221 aa 7 00004 3361 20 lcq pr7|4,* zd.exponent 000222 aa 000044 7770 00 llr 36 000223 aa 000044 7330 00 lrs 36 000224 aa 7 00002 0331 20 adl pr7|2,* yd.exponent 000225 aa 000000 5330 00 negl 0 000226 aa 000077 7370 00 lls 63 000227 aa 6 00145 6751 00 era pr6|101 bd.exponent 000230 aa 377000 3750 03 ana 130560,du 000231 aa 6 00145 6551 00 ersa pr6|101 bd.exponent STATEMENT 1 ON LINE 84 bd.mantissa = zd.mantissa; 000232 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000233 aa 3 00001 00 0074 desc9a pr3|1,60 zd.mantissa 000234 aa 6 00126 00 0074 desc9a pr6|86,60 bd.mantissa STATEMENT 1 ON LINE 85 addr(cd) -> fldt = addr(ad) -> fldt + addr(bd) -> fldt; 000235 aa 100 300 222 500 ad3d (pr),(pr),(pr),round 000236 aa 6 00106 00 0075 desc9fl pr6|70,61 fldt 000237 aa 6 00126 00 0075 desc9fl pr6|86,61 fldt 000240 aa 6 00146 00 0075 desc9fl pr6|102,61 fldt STATEMENT 1 ON LINE 86 xd.mantissa = cd.mantissa; 000241 aa 6 00174 3515 20 epp1 pr6|124,* 000242 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000243 aa 6 00146 00 0074 desc9a pr6|102,60 cd.mantissa 000244 aa 1 00001 00 0074 desc9a pr1|1,60 xd.mantissa STATEMENT 1 ON LINE 87 xd.exponent = yd.exponent + cd.exponent; 000245 aa 6 00165 2351 00 lda pr6|117 cd.exponent 000246 aa 000001 7350 00 als 1 000247 aa 000100 7330 00 lrs 64 000250 aa 000044 7770 00 llr 36 000251 aa 000044 7330 00 lrs 36 000252 aa 7 00002 0331 20 adl pr7|2,* yd.exponent 000253 aa 1 00000 7561 00 stq pr1|0 xd.exponent STATEMENT 1 ON LINE 88 end; 000254 aa 000062 7100 04 tra 50,ic 000336 STATEMENT 1 ON LINE 89 else if zd.exponent-yd.exponent > dbl_max_decimal_precision then xd = zd; 000255 aa 7 00004 3361 20 lcq pr7|4,* zd.exponent 000256 aa 000044 7770 00 llr 36 000257 aa 000044 7330 00 lrs 36 000260 aa 7 00002 0331 20 adl pr7|2,* yd.exponent 000261 aa 000000 5330 00 negl 0 000262 aa 6 00404 7571 00 staq pr6|260 000263 aa 000166 2350 07 lda 118,dl 000264 aa 000044 7330 00 lrs 36 000265 aa 6 00404 1171 00 cmpaq pr6|260 000266 aa 000006 6050 04 tpl 6,ic 000274 000267 aa 6 00174 3515 20 epp1 pr6|124,* 000270 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000271 aa 3 00000 00 0100 desc9a pr3|0,64 zd 000272 aa 1 00000 00 0100 desc9a pr1|0,64 xd 000273 aa 000043 7100 04 tra 35,ic 000336 STATEMENT 1 ON LINE 90 else do; STATEMENT 1 ON LINE 91 ad.exponent = 0; 000274 aa 000000 2350 03 lda 0,du 000275 aa 6 00125 6751 00 era pr6|85 ad.exponent 000276 aa 377000 3750 03 ana 130560,du 000277 aa 6 00125 6551 00 ersa pr6|85 ad.exponent STATEMENT 1 ON LINE 92 ad.mantissa = zd.mantissa; 000300 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000301 aa 3 00001 00 0074 desc9a pr3|1,60 zd.mantissa 000302 aa 6 00106 00 0074 desc9a pr6|70,60 ad.mantissa STATEMENT 1 ON LINE 93 bd.exponent = yd.exponent - zd.exponent; 000303 aa 7 00002 3361 20 lcq pr7|2,* yd.exponent 000304 aa 000044 7770 00 llr 36 000305 aa 000044 7330 00 lrs 36 000306 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 000307 aa 000000 5330 00 negl 0 000310 aa 000077 7370 00 lls 63 000311 aa 6 00145 6751 00 era pr6|101 bd.exponent 000312 aa 377000 3750 03 ana 130560,du 000313 aa 6 00145 6551 00 ersa pr6|101 bd.exponent STATEMENT 1 ON LINE 94 bd.mantissa = yd.mantissa; 000314 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000315 aa 5 00001 00 0074 desc9a pr5|1,60 yd.mantissa 000316 aa 6 00126 00 0074 desc9a pr6|86,60 bd.mantissa STATEMENT 1 ON LINE 95 addr(cd) -> fldt = addr(ad) -> fldt + addr(bd) -> fldt; 000317 aa 100 300 222 500 ad3d (pr),(pr),(pr),round 000320 aa 6 00106 00 0075 desc9fl pr6|70,61 fldt 000321 aa 6 00126 00 0075 desc9fl pr6|86,61 fldt 000322 aa 6 00146 00 0075 desc9fl pr6|102,61 fldt STATEMENT 1 ON LINE 96 xd.mantissa = cd.mantissa; 000323 aa 6 00174 3515 20 epp1 pr6|124,* 000324 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000325 aa 6 00146 00 0074 desc9a pr6|102,60 cd.mantissa 000326 aa 1 00001 00 0074 desc9a pr1|1,60 xd.mantissa STATEMENT 1 ON LINE 97 xd.exponent = zd.exponent + cd.exponent; 000327 aa 6 00165 2351 00 lda pr6|117 cd.exponent 000330 aa 000001 7350 00 als 1 000331 aa 000100 7330 00 lrs 64 000332 aa 000044 7770 00 llr 36 000333 aa 000044 7330 00 lrs 36 000334 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 000335 aa 1 00000 7561 00 stq pr1|0 xd.exponent STATEMENT 1 ON LINE 98 end; STATEMENT 1 ON LINE 99 return; 000336 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO add_decimal_complex STATEMENT 1 ON LINE 101 add_decimal_complex: entry(ydc, zdc, xdc); 000337 at 000003000014 000340 tt 000014000014 000341 ta 000337000000 000342 da 000057300000 000343 aa 000520 6270 00 eax7 336 000344 aa 7 00034 3521 20 epp2 pr7|28,* 000345 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000346 aa 000006000000 000347 aa 000000000000 000350 aa 6 00032 3735 20 epp7 pr6|26,* 000351 aa 7 00006 3715 20 epp5 pr7|6,* 000352 aa 6 00176 6515 00 spri5 pr6|126 STATEMENT 1 ON LINE 102 call add_decimal(ydc.real, zdc.real, xdc.real); 000353 aa 6 00032 3735 20 epp7 pr6|26,* 000354 aa 7 00002 3521 20 epp2 pr7|2,* ydc.real 000355 aa 6 00410 2521 00 spri2 pr6|264 000356 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 000357 aa 6 00412 2521 00 spri2 pr6|266 000360 aa 6 00176 3521 20 epp2 pr6|126,* xdc.real 000361 aa 6 00414 2521 00 spri2 pr6|268 000362 aa 6 00406 6211 00 eax1 pr6|262 000363 aa 014000 4310 07 fld 6144,dl 000364 aa 777546 3520 04 epp2 -154,ic 000132 = 000520627000 000365 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 103 call add_decimal(ydc.imaginary, zdc.imaginary, xdc.imaginary); 000366 aa 6 00032 3735 20 epp7 pr6|26,* 000367 aa 7 00002 3715 20 epp5 pr7|2,* 000370 aa 5 00020 3521 00 epp2 pr5|16 ydc.imaginary 000371 aa 6 00410 2521 00 spri2 pr6|264 000372 aa 7 00004 3535 20 epp3 pr7|4,* 000373 aa 3 00020 3521 00 epp2 pr3|16 zdc.imaginary 000374 aa 6 00412 2521 00 spri2 pr6|266 000375 aa 6 00176 3515 20 epp1 pr6|126,* 000376 aa 1 00020 3521 00 epp2 pr1|16 xdc.imaginary 000377 aa 6 00414 2521 00 spri2 pr6|268 000400 aa 6 00406 6211 00 eax1 pr6|262 000401 aa 014000 4310 07 fld 6144,dl 000402 aa 777530 3520 04 epp2 -168,ic 000132 = 000520627000 000403 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 104 return; 000404 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO subtract_decimal STATEMENT 1 ON LINE 106 subtract_decimal: entry(yd, zd, xd); 000405 ta 000126000000 000406 da 000067300000 000407 aa 000520 6270 00 eax7 336 000410 aa 7 00034 3521 20 epp2 pr7|28,* 000411 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000412 aa 000006000000 000413 aa 000000000000 000414 aa 6 00032 3735 20 epp7 pr6|26,* 000415 aa 7 00006 3715 20 epp5 pr7|6,* 000416 aa 6 00174 6515 00 spri5 pr6|124 STATEMENT 1 ON LINE 107 if zd.mantissa = 0 then xd = yd; 000417 aa 6 00032 3735 20 epp7 pr6|26,* 000420 aa 7 00004 3715 20 epp5 pr7|4,* 000421 aa 000 100 303 404 cmpn (ic),(pr) 000422 aa 002564 01 0002 desc9ls 1396,2,0 003205 = 053060000000 000423 aa 5 00001 01 0074 desc9ls pr5|1,60,0 zd.mantissa 000424 aa 000007 6010 04 tnz 7,ic 000433 000425 aa 6 00174 3535 20 epp3 pr6|124,* 000426 aa 7 00002 3515 20 epp1 pr7|2,* 000427 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000430 aa 1 00000 00 0100 desc9a pr1|0,64 yd 000431 aa 3 00000 00 0100 desc9a pr3|0,64 xd 000432 aa 000170 7100 04 tra 120,ic 000622 STATEMENT 1 ON LINE 108 else if yd.mantissa = 0 then call negate_decimal(zd, xd); 000433 aa 7 00002 3535 20 epp3 pr7|2,* 000434 aa 000 100 303 404 cmpn (ic),(pr) 000435 aa 002551 01 0002 desc9ls 1385,2,0 003205 = 053060000000 000436 aa 3 00001 01 0074 desc9ls pr3|1,60,0 yd.mantissa 000437 aa 000012 6010 04 tnz 10,ic 000451 000440 aa 7 00004 3521 20 epp2 pr7|4,* zd 000441 aa 6 00410 2521 00 spri2 pr6|264 000442 aa 6 00174 3521 20 epp2 pr6|124,* xd 000443 aa 6 00412 2521 00 spri2 pr6|266 000444 aa 6 00406 6211 00 eax1 pr6|262 000445 aa 010000 4310 07 fld 4096,dl 000446 aa 777402 3520 04 epp2 -254,ic 000050 = 000520627000 000447 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in 000450 aa 000152 7100 04 tra 106,ic 000622 STATEMENT 1 ON LINE 109 else if yd.exponent > zd.exponent then if yd.exponent-zd.exponent > dbl_max_decimal_precision then xd = yd; 000451 aa 7 00002 2361 20 ldq pr7|2,* yd.exponent 000452 aa 7 00004 1161 20 cmpq pr7|4,* zd.exponent 000453 aa 000063 6044 04 tmoz 51,ic 000536 000454 aa 7 00002 3361 20 lcq pr7|2,* yd.exponent 000455 aa 000044 7770 00 llr 36 000456 aa 000044 7330 00 lrs 36 000457 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 000460 aa 000000 5330 00 negl 0 000461 aa 6 00404 7571 00 staq pr6|260 000462 aa 000166 2350 07 lda 118,dl 000463 aa 000044 7330 00 lrs 36 000464 aa 6 00404 1171 00 cmpaq pr6|260 000465 aa 000006 6050 04 tpl 6,ic 000473 000466 aa 6 00174 3515 20 epp1 pr6|124,* 000467 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000470 aa 3 00000 00 0100 desc9a pr3|0,64 yd 000471 aa 1 00000 00 0100 desc9a pr1|0,64 xd 000472 aa 000130 7100 04 tra 88,ic 000622 STATEMENT 1 ON LINE 111 else do; STATEMENT 1 ON LINE 112 ad.exponent = 0; 000473 aa 000000 2350 03 lda 0,du 000474 aa 6 00125 6751 00 era pr6|85 ad.exponent 000475 aa 377000 3750 03 ana 130560,du 000476 aa 6 00125 6551 00 ersa pr6|85 ad.exponent STATEMENT 1 ON LINE 113 ad.mantissa = yd.mantissa; 000477 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000500 aa 3 00001 00 0074 desc9a pr3|1,60 yd.mantissa 000501 aa 6 00106 00 0074 desc9a pr6|70,60 ad.mantissa STATEMENT 1 ON LINE 114 bd.exponent = zd.exponent - yd.exponent; 000502 aa 7 00004 3361 20 lcq pr7|4,* zd.exponent 000503 aa 000044 7770 00 llr 36 000504 aa 000044 7330 00 lrs 36 000505 aa 7 00002 0331 20 adl pr7|2,* yd.exponent 000506 aa 000000 5330 00 negl 0 000507 aa 000077 7370 00 lls 63 000510 aa 6 00145 6751 00 era pr6|101 bd.exponent 000511 aa 377000 3750 03 ana 130560,du 000512 aa 6 00145 6551 00 ersa pr6|101 bd.exponent STATEMENT 1 ON LINE 115 bd.mantissa = zd.mantissa; 000513 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000514 aa 5 00001 00 0074 desc9a pr5|1,60 zd.mantissa 000515 aa 6 00126 00 0074 desc9a pr6|86,60 bd.mantissa STATEMENT 1 ON LINE 116 addr(cd) -> fldt = addr(ad) -> fldt - addr(bd) -> fldt; 000516 aa 100 300 223 500 sb3d (pr),(pr),(pr),round 000517 aa 6 00126 00 0075 desc9fl pr6|86,61 fldt 000520 aa 6 00106 00 0075 desc9fl pr6|70,61 fldt 000521 aa 6 00146 00 0075 desc9fl pr6|102,61 fldt STATEMENT 1 ON LINE 117 xd.mantissa = cd.mantissa; 000522 aa 6 00174 3515 20 epp1 pr6|124,* 000523 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000524 aa 6 00146 00 0074 desc9a pr6|102,60 cd.mantissa 000525 aa 1 00001 00 0074 desc9a pr1|1,60 xd.mantissa STATEMENT 1 ON LINE 118 xd.exponent = yd.exponent + cd.exponent; 000526 aa 6 00165 2351 00 lda pr6|117 cd.exponent 000527 aa 000001 7350 00 als 1 000530 aa 000100 7330 00 lrs 64 000531 aa 000044 7770 00 llr 36 000532 aa 000044 7330 00 lrs 36 000533 aa 7 00002 0331 20 adl pr7|2,* yd.exponent 000534 aa 1 00000 7561 00 stq pr1|0 xd.exponent STATEMENT 1 ON LINE 119 end; 000535 aa 000065 7100 04 tra 53,ic 000622 STATEMENT 1 ON LINE 120 else if zd.exponent-yd.exponent > dbl_max_decimal_precision then do; 000536 aa 7 00004 3361 20 lcq pr7|4,* zd.exponent 000537 aa 000044 7770 00 llr 36 000540 aa 000044 7330 00 lrs 36 000541 aa 7 00002 0331 20 adl pr7|2,* yd.exponent 000542 aa 000000 5330 00 negl 0 000543 aa 6 00404 7571 00 staq pr6|260 000544 aa 000166 2350 07 lda 118,dl 000545 aa 000044 7330 00 lrs 36 000546 aa 6 00404 1171 00 cmpaq pr6|260 000547 aa 000011 6050 04 tpl 9,ic 000560 STATEMENT 1 ON LINE 121 xd.mantissa = -zd.mantissa; 000550 aa 6 00174 3515 20 epp1 pr6|124,* 000551 aa 100 004 223 500 sb3d (pr),(ic),(pr) 000552 aa 5 00001 01 0074 desc9ls pr5|1,60,0 zd.mantissa 000553 aa 002433 01 0002 desc9ls 1307,2,0 003204 = 053060000000 000554 aa 1 00001 01 0074 desc9ls pr1|1,60,0 xd.mantissa STATEMENT 1 ON LINE 122 xd.exponent = zd.exponent; 000555 aa 7 00004 2361 20 ldq pr7|4,* zd.exponent 000556 aa 1 00000 7561 00 stq pr1|0 xd.exponent STATEMENT 1 ON LINE 123 end; 000557 aa 000043 7100 04 tra 35,ic 000622 STATEMENT 1 ON LINE 124 else do; STATEMENT 1 ON LINE 125 ad.exponent = 0; 000560 aa 000000 2350 03 lda 0,du 000561 aa 6 00125 6751 00 era pr6|85 ad.exponent 000562 aa 377000 3750 03 ana 130560,du 000563 aa 6 00125 6551 00 ersa pr6|85 ad.exponent STATEMENT 1 ON LINE 126 ad.mantissa = zd.mantissa; 000564 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000565 aa 5 00001 00 0074 desc9a pr5|1,60 zd.mantissa 000566 aa 6 00106 00 0074 desc9a pr6|70,60 ad.mantissa STATEMENT 1 ON LINE 127 bd.exponent = yd.exponent - zd.exponent; 000567 aa 7 00002 3361 20 lcq pr7|2,* yd.exponent 000570 aa 000044 7770 00 llr 36 000571 aa 000044 7330 00 lrs 36 000572 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 000573 aa 000000 5330 00 negl 0 000574 aa 000077 7370 00 lls 63 000575 aa 6 00145 6751 00 era pr6|101 bd.exponent 000576 aa 377000 3750 03 ana 130560,du 000577 aa 6 00145 6551 00 ersa pr6|101 bd.exponent STATEMENT 1 ON LINE 128 bd.mantissa = yd.mantissa; 000600 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000601 aa 3 00001 00 0074 desc9a pr3|1,60 yd.mantissa 000602 aa 6 00126 00 0074 desc9a pr6|86,60 bd.mantissa STATEMENT 1 ON LINE 129 addr(cd) -> fldt = addr(bd) -> fldt - addr(ad) -> fldt; 000603 aa 100 300 223 500 sb3d (pr),(pr),(pr),round 000604 aa 6 00106 00 0075 desc9fl pr6|70,61 fldt 000605 aa 6 00126 00 0075 desc9fl pr6|86,61 fldt 000606 aa 6 00146 00 0075 desc9fl pr6|102,61 fldt STATEMENT 1 ON LINE 130 xd.mantissa = cd.mantissa; 000607 aa 6 00174 3515 20 epp1 pr6|124,* 000610 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000611 aa 6 00146 00 0074 desc9a pr6|102,60 cd.mantissa 000612 aa 1 00001 00 0074 desc9a pr1|1,60 xd.mantissa STATEMENT 1 ON LINE 131 xd.exponent = zd.exponent + cd.exponent; 000613 aa 6 00165 2351 00 lda pr6|117 cd.exponent 000614 aa 000001 7350 00 als 1 000615 aa 000100 7330 00 lrs 64 000616 aa 000044 7770 00 llr 36 000617 aa 000044 7330 00 lrs 36 000620 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 000621 aa 1 00000 7561 00 stq pr1|0 xd.exponent STATEMENT 1 ON LINE 132 end; STATEMENT 1 ON LINE 133 return; 000622 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO subtract_decimal_complex STATEMENT 1 ON LINE 135 subtract_decimal_complex: entry(ydc, zdc, xdc); 000623 ta 000337000000 000624 da 000101300000 000625 aa 000520 6270 00 eax7 336 000626 aa 7 00034 3521 20 epp2 pr7|28,* 000627 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000630 aa 000006000000 000631 aa 000000000000 000632 aa 6 00032 3735 20 epp7 pr6|26,* 000633 aa 7 00006 3715 20 epp5 pr7|6,* 000634 aa 6 00176 6515 00 spri5 pr6|126 STATEMENT 1 ON LINE 136 call subtract_decimal(ydc.real, zdc.real, xdc.real); 000635 aa 6 00032 3735 20 epp7 pr6|26,* 000636 aa 7 00002 3521 20 epp2 pr7|2,* ydc.real 000637 aa 6 00410 2521 00 spri2 pr6|264 000640 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 000641 aa 6 00412 2521 00 spri2 pr6|266 000642 aa 6 00176 3521 20 epp2 pr6|126,* xdc.real 000643 aa 6 00414 2521 00 spri2 pr6|268 000644 aa 6 00406 6211 00 eax1 pr6|262 000645 aa 014000 4310 07 fld 6144,dl 000646 aa 777541 3520 04 epp2 -159,ic 000407 = 000520627000 000647 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 137 call subtract_decimal(ydc.imaginary, zdc.imaginary, xdc.imaginary); 000650 aa 6 00032 3735 20 epp7 pr6|26,* 000651 aa 7 00002 3715 20 epp5 pr7|2,* 000652 aa 5 00020 3521 00 epp2 pr5|16 ydc.imaginary 000653 aa 6 00410 2521 00 spri2 pr6|264 000654 aa 7 00004 3535 20 epp3 pr7|4,* 000655 aa 3 00020 3521 00 epp2 pr3|16 zdc.imaginary 000656 aa 6 00412 2521 00 spri2 pr6|266 000657 aa 6 00176 3515 20 epp1 pr6|126,* 000660 aa 1 00020 3521 00 epp2 pr1|16 xdc.imaginary 000661 aa 6 00414 2521 00 spri2 pr6|268 000662 aa 6 00406 6211 00 eax1 pr6|262 000663 aa 014000 4310 07 fld 6144,dl 000664 aa 777523 3520 04 epp2 -173,ic 000407 = 000520627000 000665 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 138 return; 000666 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO multiply_decimal STATEMENT 1 ON LINE 140 multiply_decimal: entry(yd, zd, xd); 000667 ta 000126000000 000670 da 000111300000 000671 aa 000520 6270 00 eax7 336 000672 aa 7 00034 3521 20 epp2 pr7|28,* 000673 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000674 aa 000006000000 000675 aa 000000000000 000676 aa 6 00032 3735 20 epp7 pr6|26,* 000677 aa 7 00006 3715 20 epp5 pr7|6,* 000700 aa 6 00174 6515 00 spri5 pr6|124 STATEMENT 1 ON LINE 141 if yd.mantissa = 0 | zd.mantissa = 0 then do; 000701 aa 6 00032 3735 20 epp7 pr6|26,* 000702 aa 7 00002 3715 20 epp5 pr7|2,* 000703 aa 000 100 303 404 cmpn (ic),(pr) 000704 aa 002302 01 0002 desc9ls 1218,2,0 003205 = 053060000000 000705 aa 5 00001 01 0074 desc9ls pr5|1,60,0 yd.mantissa 000706 aa 000006 6000 04 tze 6,ic 000714 000707 aa 7 00004 3535 20 epp3 pr7|4,* 000710 aa 000 100 303 404 cmpn (ic),(pr) 000711 aa 002275 01 0002 desc9ls 1213,2,0 003205 = 053060000000 000712 aa 3 00001 01 0074 desc9ls pr3|1,60,0 zd.mantissa 000713 aa 000010 6010 04 tnz 8,ic 000723 STATEMENT 1 ON LINE 142 xd.mantissa = 0; 000714 aa 6 00174 3535 20 epp3 pr6|124,* 000715 aa 000 100 300 404 mvn (ic),(pr) 000716 aa 002270 01 0002 desc9ls 1208,2,0 003205 = 053060000000 000717 aa 3 00001 01 0074 desc9ls pr3|1,60,0 xd.mantissa STATEMENT 1 ON LINE 143 xd.exponent = 127; 000720 aa 000177 2360 07 ldq 127,dl 000721 aa 3 00000 7561 00 stq pr3|0 xd.exponent STATEMENT 1 ON LINE 144 return; 000722 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 145 end; STATEMENT 1 ON LINE 146 ad.exponent, bd.exponent = 0; 000723 aa 000000 2350 03 lda 0,du 000724 aa 6 00125 6751 00 era pr6|85 ad.exponent 000725 aa 377000 3750 03 ana 130560,du 000726 aa 6 00125 6551 00 ersa pr6|85 ad.exponent 000727 aa 000000 2350 03 lda 0,du 000730 aa 6 00145 6751 00 era pr6|101 bd.exponent 000731 aa 377000 3750 03 ana 130560,du 000732 aa 6 00145 6551 00 ersa pr6|101 bd.exponent STATEMENT 1 ON LINE 147 ad.mantissa = yd.mantissa; 000733 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000734 aa 5 00001 00 0074 desc9a pr5|1,60 yd.mantissa 000735 aa 6 00106 00 0074 desc9a pr6|70,60 ad.mantissa STATEMENT 1 ON LINE 148 bd.mantissa = zd.mantissa; 000736 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000737 aa 3 00001 00 0074 desc9a pr3|1,60 zd.mantissa 000740 aa 6 00126 00 0074 desc9a pr6|86,60 bd.mantissa STATEMENT 1 ON LINE 149 addr(cd) -> fldt = addr(ad) -> fldt * addr(bd) -> fldt; 000741 aa 100 300 226 500 mp3d (pr),(pr),(pr),round 000742 aa 6 00106 00 0075 desc9fl pr6|70,61 fldt 000743 aa 6 00126 00 0075 desc9fl pr6|86,61 fldt 000744 aa 6 00146 00 0075 desc9fl pr6|102,61 fldt STATEMENT 1 ON LINE 150 xd.mantissa = cd.mantissa; 000745 aa 6 00174 3515 20 epp1 pr6|124,* 000746 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000747 aa 6 00146 00 0074 desc9a pr6|102,60 cd.mantissa 000750 aa 1 00001 00 0074 desc9a pr1|1,60 xd.mantissa STATEMENT 1 ON LINE 151 xd.exponent = yd.exponent + zd.exponent + cd.exponent; 000751 aa 6 00165 2351 00 lda pr6|117 cd.exponent 000752 aa 000001 7350 00 als 1 000753 aa 000100 7330 00 lrs 64 000754 aa 6 00403 7561 00 stq pr6|259 cd.exponent 000755 aa 7 00002 2351 20 lda pr7|2,* yd.exponent 000756 aa 000044 7330 00 lrs 36 000757 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 000760 aa 6 00403 0331 00 adl pr6|259 cd.exponent 000761 aa 1 00000 7561 00 stq pr1|0 xd.exponent STATEMENT 1 ON LINE 152 return; 000762 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO multiply_decimal_complex STATEMENT 1 ON LINE 154 multiply_decimal_complex: entry(ydc, zdc, xdc); 000763 ta 000337000000 000764 da 000123300000 000765 aa 000520 6270 00 eax7 336 000766 aa 7 00034 3521 20 epp2 pr7|28,* 000767 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000770 aa 000006000000 000771 aa 000000000000 000772 aa 6 00032 3735 20 epp7 pr6|26,* 000773 aa 7 00006 3715 20 epp5 pr7|6,* 000774 aa 6 00176 6515 00 spri5 pr6|126 STATEMENT 1 ON LINE 155 begin; BEGIN BLOCK 1 STATEMENT 1 ON LINE 158 call multiply_decimal(ydc.real, zdc.real, product1); 000775 aa 6 00032 3735 20 epp7 pr6|26,* 000776 aa 7 00002 3521 20 epp2 pr7|2,* ydc.real 000777 aa 6 00420 2521 00 spri2 pr6|272 001000 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 001001 aa 6 00422 2521 00 spri2 pr6|274 001002 aa 6 00204 3521 00 epp2 pr6|132 product1 001003 aa 6 00424 2521 00 spri2 pr6|276 001004 aa 6 00416 6211 00 eax1 pr6|270 001005 aa 014000 4310 07 fld 6144,dl 001006 aa 777663 3520 04 epp2 -77,ic 000671 = 000520627000 001007 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 159 call multiply_decimal(ydc.imaginary, zdc.imaginary, product2); 001010 aa 6 00032 3735 20 epp7 pr6|26,* 001011 aa 7 00002 3715 20 epp5 pr7|2,* 001012 aa 5 00020 3521 00 epp2 pr5|16 ydc.imaginary 001013 aa 6 00420 2521 00 spri2 pr6|272 001014 aa 7 00004 3535 20 epp3 pr7|4,* 001015 aa 3 00020 3521 00 epp2 pr3|16 zdc.imaginary 001016 aa 6 00422 2521 00 spri2 pr6|274 001017 aa 6 00224 3521 00 epp2 pr6|148 product2 001020 aa 6 00424 2521 00 spri2 pr6|276 001021 aa 6 00416 6211 00 eax1 pr6|270 001022 aa 014000 4310 07 fld 6144,dl 001023 aa 777646 3520 04 epp2 -90,ic 000671 = 000520627000 001024 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 160 call subtract_decimal(product1, product2, temp); 001025 aa 6 00204 3521 00 epp2 pr6|132 product1 001026 aa 6 00420 2521 00 spri2 pr6|272 001027 aa 6 00224 3521 00 epp2 pr6|148 product2 001030 aa 6 00422 2521 00 spri2 pr6|274 001031 aa 6 00244 3521 00 epp2 pr6|164 temp 001032 aa 6 00424 2521 00 spri2 pr6|276 001033 aa 6 00416 6211 00 eax1 pr6|270 001034 aa 014000 4310 07 fld 6144,dl 001035 aa 777352 3520 04 epp2 -278,ic 000407 = 000520627000 001036 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 162 call multiply_decimal(ydc.real, zdc.imaginary, product1); 001037 aa 6 00032 3735 20 epp7 pr6|26,* 001040 aa 7 00002 3521 20 epp2 pr7|2,* ydc.real 001041 aa 6 00420 2521 00 spri2 pr6|272 001042 aa 7 00004 3715 20 epp5 pr7|4,* 001043 aa 5 00020 3521 00 epp2 pr5|16 zdc.imaginary 001044 aa 6 00422 2521 00 spri2 pr6|274 001045 aa 6 00204 3521 00 epp2 pr6|132 product1 001046 aa 6 00424 2521 00 spri2 pr6|276 001047 aa 6 00416 6211 00 eax1 pr6|270 001050 aa 014000 4310 07 fld 6144,dl 001051 aa 777620 3520 04 epp2 -112,ic 000671 = 000520627000 001052 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 163 call multiply_decimal(ydc.imaginary, zdc.real, product2); 001053 aa 6 00032 3735 20 epp7 pr6|26,* 001054 aa 7 00002 3715 20 epp5 pr7|2,* 001055 aa 5 00020 3521 00 epp2 pr5|16 ydc.imaginary 001056 aa 6 00420 2521 00 spri2 pr6|272 001057 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 001060 aa 6 00422 2521 00 spri2 pr6|274 001061 aa 6 00224 3521 00 epp2 pr6|148 product2 001062 aa 6 00424 2521 00 spri2 pr6|276 001063 aa 6 00416 6211 00 eax1 pr6|270 001064 aa 014000 4310 07 fld 6144,dl 001065 aa 777604 3520 04 epp2 -124,ic 000671 = 000520627000 001066 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 164 call add_decimal(product1, product2, xdc.imaginary); 001067 aa 6 00204 3521 00 epp2 pr6|132 product1 001070 aa 6 00420 2521 00 spri2 pr6|272 001071 aa 6 00224 3521 00 epp2 pr6|148 product2 001072 aa 6 00422 2521 00 spri2 pr6|274 001073 aa 6 00176 3735 20 epp7 pr6|126,* 001074 aa 7 00020 3521 00 epp2 pr7|16 xdc.imaginary 001075 aa 6 00424 2521 00 spri2 pr6|276 001076 aa 6 00416 6211 00 eax1 pr6|270 001077 aa 014000 4310 07 fld 6144,dl 001100 aa 777032 3520 04 epp2 -486,ic 000132 = 000520627000 001101 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 165 xdc.real = temp; 001102 aa 6 00176 3735 20 epp7 pr6|126,* 001103 aa 000 100 100 500 mlr (pr),(pr),fill(000) 001104 aa 6 00244 00 0100 desc9a pr6|164,64 temp 001105 aa 7 00000 00 0100 desc9a pr7|0,64 xdc.real STATEMENT 1 ON LINE 166 end; END BLOCK 1 STATEMENT 1 ON LINE 167 return; 001106 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO divide_decimal STATEMENT 1 ON LINE 169 divide_decimal: entry(yd, zd, xd); 001107 ta 000126000000 001110 da 000132300000 001111 aa 000520 6270 00 eax7 336 001112 aa 7 00034 3521 20 epp2 pr7|28,* 001113 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001114 aa 000006000000 001115 aa 000000000000 001116 aa 6 00032 3735 20 epp7 pr6|26,* 001117 aa 7 00006 3715 20 epp5 pr7|6,* 001120 aa 6 00174 6515 00 spri5 pr6|124 STATEMENT 1 ON LINE 170 if zd.mantissa = 0 then signal zerodivide; 001121 aa 6 00032 3735 20 epp7 pr6|26,* 001122 aa 7 00004 3715 20 epp5 pr7|4,* 001123 aa 000 100 303 404 cmpn (ic),(pr) 001124 aa 002062 01 0002 desc9ls 1074,2,0 003205 = 053060000000 001125 aa 5 00001 01 0074 desc9ls pr5|1,60,0 zd.mantissa 001126 aa 000004 6010 04 tnz 4,ic 001132 001127 aa 000012 7260 07 lxl6 10,dl 001130 aa 776652 3520 04 epp2 -598,ic 000002 = 172145162157 001131 aa 0 00716 7001 00 tsx0 pr0|462 signal STATEMENT 1 ON LINE 171 if yd.mantissa = 0 then do; 001132 aa 6 00032 3735 20 epp7 pr6|26,* 001133 aa 7 00002 3715 20 epp5 pr7|2,* 001134 aa 000 100 303 404 cmpn (ic),(pr) 001135 aa 002051 01 0002 desc9ls 1065,2,0 003205 = 053060000000 001136 aa 5 00001 01 0074 desc9ls pr5|1,60,0 yd.mantissa 001137 aa 000006 6010 04 tnz 6,ic 001145 STATEMENT 1 ON LINE 172 xd = yd; 001140 aa 6 00174 3535 20 epp3 pr6|124,* 001141 aa 000 100 100 500 mlr (pr),(pr),fill(000) 001142 aa 5 00000 00 0100 desc9a pr5|0,64 yd 001143 aa 3 00000 00 0100 desc9a pr3|0,64 xd STATEMENT 1 ON LINE 173 return; 001144 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 174 end; STATEMENT 1 ON LINE 175 ad.exponent, bd.exponent = 0; 001145 aa 000000 2350 03 lda 0,du 001146 aa 6 00125 6751 00 era pr6|85 ad.exponent 001147 aa 377000 3750 03 ana 130560,du 001150 aa 6 00125 6551 00 ersa pr6|85 ad.exponent 001151 aa 000000 2350 03 lda 0,du 001152 aa 6 00145 6751 00 era pr6|101 bd.exponent 001153 aa 377000 3750 03 ana 130560,du 001154 aa 6 00145 6551 00 ersa pr6|101 bd.exponent STATEMENT 1 ON LINE 176 ad.mantissa = yd.mantissa; 001155 aa 000 100 100 500 mlr (pr),(pr),fill(000) 001156 aa 5 00001 00 0074 desc9a pr5|1,60 yd.mantissa 001157 aa 6 00106 00 0074 desc9a pr6|70,60 ad.mantissa STATEMENT 1 ON LINE 177 bd.mantissa = zd.mantissa; 001160 aa 7 00004 3535 20 epp3 pr7|4,* 001161 aa 000 100 100 500 mlr (pr),(pr),fill(000) 001162 aa 3 00001 00 0074 desc9a pr3|1,60 zd.mantissa 001163 aa 6 00126 00 0074 desc9a pr6|86,60 bd.mantissa STATEMENT 1 ON LINE 178 addr(cd) -> fldt = addr(ad) -> fldt / addr(bd) -> fldt; 001164 aa 100 100 227 500 dv3d (pr),(pr),(pr) 001165 aa 6 00126 00 0075 desc9fl pr6|86,61 fldt 001166 aa 6 00106 00 0075 desc9fl pr6|70,61 fldt 001167 aa 6 00426 00 0077 desc9fl pr6|278,63 001170 aa 000 300 300 500 mvn (pr),(pr),round 001171 aa 6 00426 00 0077 desc9fl pr6|278,63 001172 aa 6 00146 00 0075 desc9fl pr6|102,61 fldt STATEMENT 1 ON LINE 179 xd.mantissa = cd.mantissa; 001173 aa 6 00174 3515 20 epp1 pr6|124,* 001174 aa 000 100 100 500 mlr (pr),(pr),fill(000) 001175 aa 6 00146 00 0074 desc9a pr6|102,60 cd.mantissa 001176 aa 1 00001 00 0074 desc9a pr1|1,60 xd.mantissa STATEMENT 1 ON LINE 180 xd.exponent = yd.exponent + cd.exponent - zd.exponent; 001177 aa 6 00165 2351 00 lda pr6|117 cd.exponent 001200 aa 000001 7350 00 als 1 001201 aa 000100 7330 00 lrs 64 001202 aa 000044 7770 00 llr 36 001203 aa 000044 7330 00 lrs 36 001204 aa 7 00002 0331 20 adl pr7|2,* yd.exponent 001205 aa 000000 5330 00 negl 0 001206 aa 7 00004 0331 20 adl pr7|4,* zd.exponent 001207 aa 000000 5330 00 negl 0 001210 aa 1 00000 7561 00 stq pr1|0 xd.exponent STATEMENT 1 ON LINE 181 return; 001211 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO divide_decimal_complex STATEMENT 1 ON LINE 183 divide_decimal_complex: entry(ydc, zdc, xdc); 001212 ta 000337000000 001213 da 000143300000 001214 aa 000520 6270 00 eax7 336 001215 aa 7 00034 3521 20 epp2 pr7|28,* 001216 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001217 aa 000006000000 001220 aa 000000000000 001221 aa 6 00032 3735 20 epp7 pr6|26,* 001222 aa 7 00006 3715 20 epp5 pr7|6,* 001223 aa 6 00176 6515 00 spri5 pr6|126 STATEMENT 1 ON LINE 184 begin; BEGIN BLOCK 2 STATEMENT 1 ON LINE 187 call multiply_decimal(zdc.real, zdc.real, product1); 001224 aa 6 00032 3735 20 epp7 pr6|26,* 001225 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 001226 aa 6 00450 2521 00 spri2 pr6|296 001227 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 001230 aa 6 00452 2521 00 spri2 pr6|298 001231 aa 6 00264 3521 00 epp2 pr6|180 product1 001232 aa 6 00454 2521 00 spri2 pr6|300 001233 aa 6 00446 6211 00 eax1 pr6|294 001234 aa 014000 4310 07 fld 6144,dl 001235 aa 777434 3520 04 epp2 -228,ic 000671 = 000520627000 001236 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 188 call multiply_decimal(zdc.imaginary, zdc.imaginary, product2); 001237 aa 6 00032 3735 20 epp7 pr6|26,* 001240 aa 7 00004 3715 20 epp5 pr7|4,* 001241 aa 5 00020 3521 00 epp2 pr5|16 zdc.imaginary 001242 aa 6 00450 2521 00 spri2 pr6|296 001243 aa 5 00020 3521 00 epp2 pr5|16 zdc.imaginary 001244 aa 6 00452 2521 00 spri2 pr6|298 001245 aa 6 00304 3521 00 epp2 pr6|196 product2 001246 aa 6 00454 2521 00 spri2 pr6|300 001247 aa 6 00446 6211 00 eax1 pr6|294 001250 aa 014000 4310 07 fld 6144,dl 001251 aa 777420 3520 04 epp2 -240,ic 000671 = 000520627000 001252 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 189 call add_decimal(product1, product2, divisor); 001253 aa 6 00264 3521 00 epp2 pr6|180 product1 001254 aa 6 00450 2521 00 spri2 pr6|296 001255 aa 6 00304 3521 00 epp2 pr6|196 product2 001256 aa 6 00452 2521 00 spri2 pr6|298 001257 aa 6 00324 3521 00 epp2 pr6|212 divisor 001260 aa 6 00454 2521 00 spri2 pr6|300 001261 aa 6 00446 6211 00 eax1 pr6|294 001262 aa 014000 4310 07 fld 6144,dl 001263 aa 776647 3520 04 epp2 -601,ic 000132 = 000520627000 001264 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 191 call multiply_decimal(ydc.real, zdc.real, product1); 001265 aa 6 00032 3735 20 epp7 pr6|26,* 001266 aa 7 00002 3521 20 epp2 pr7|2,* ydc.real 001267 aa 6 00450 2521 00 spri2 pr6|296 001270 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 001271 aa 6 00452 2521 00 spri2 pr6|298 001272 aa 6 00264 3521 00 epp2 pr6|180 product1 001273 aa 6 00454 2521 00 spri2 pr6|300 001274 aa 6 00446 6211 00 eax1 pr6|294 001275 aa 014000 4310 07 fld 6144,dl 001276 aa 777373 3520 04 epp2 -261,ic 000671 = 000520627000 001277 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 192 call multiply_decimal(ydc.imaginary, zdc.imaginary, product2); 001300 aa 6 00032 3735 20 epp7 pr6|26,* 001301 aa 7 00002 3715 20 epp5 pr7|2,* 001302 aa 5 00020 3521 00 epp2 pr5|16 ydc.imaginary 001303 aa 6 00450 2521 00 spri2 pr6|296 001304 aa 7 00004 3535 20 epp3 pr7|4,* 001305 aa 3 00020 3521 00 epp2 pr3|16 zdc.imaginary 001306 aa 6 00452 2521 00 spri2 pr6|298 001307 aa 6 00304 3521 00 epp2 pr6|196 product2 001310 aa 6 00454 2521 00 spri2 pr6|300 001311 aa 6 00446 6211 00 eax1 pr6|294 001312 aa 014000 4310 07 fld 6144,dl 001313 aa 777356 3520 04 epp2 -274,ic 000671 = 000520627000 001314 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 193 call add_decimal(product1, product2, xdc.real); 001315 aa 6 00264 3521 00 epp2 pr6|180 product1 001316 aa 6 00450 2521 00 spri2 pr6|296 001317 aa 6 00304 3521 00 epp2 pr6|196 product2 001320 aa 6 00452 2521 00 spri2 pr6|298 001321 aa 6 00176 3521 20 epp2 pr6|126,* xdc.real 001322 aa 6 00454 2521 00 spri2 pr6|300 001323 aa 6 00446 6211 00 eax1 pr6|294 001324 aa 014000 4310 07 fld 6144,dl 001325 aa 776605 3520 04 epp2 -635,ic 000132 = 000520627000 001326 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 194 call divide_decimal(xdc.real, divisor, temp); 001327 aa 6 00176 3521 20 epp2 pr6|126,* xdc.real 001330 aa 6 00450 2521 00 spri2 pr6|296 001331 aa 6 00324 3521 00 epp2 pr6|212 divisor 001332 aa 6 00452 2521 00 spri2 pr6|298 001333 aa 6 00344 3521 00 epp2 pr6|228 temp 001334 aa 6 00454 2521 00 spri2 pr6|300 001335 aa 6 00446 6211 00 eax1 pr6|294 001336 aa 014000 4310 07 fld 6144,dl 001337 aa 777552 3520 04 epp2 -150,ic 001111 = 000520627000 001340 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 196 call multiply_decimal(ydc.imaginary, zdc.real, product1); 001341 aa 6 00032 3735 20 epp7 pr6|26,* 001342 aa 7 00002 3715 20 epp5 pr7|2,* 001343 aa 5 00020 3521 00 epp2 pr5|16 ydc.imaginary 001344 aa 6 00450 2521 00 spri2 pr6|296 001345 aa 7 00004 3521 20 epp2 pr7|4,* zdc.real 001346 aa 6 00452 2521 00 spri2 pr6|298 001347 aa 6 00264 3521 00 epp2 pr6|180 product1 001350 aa 6 00454 2521 00 spri2 pr6|300 001351 aa 6 00446 6211 00 eax1 pr6|294 001352 aa 014000 4310 07 fld 6144,dl 001353 aa 777316 3520 04 epp2 -306,ic 000671 = 000520627000 001354 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 197 call multiply_decimal(ydc.real, zdc.imaginary, product2); 001355 aa 6 00032 3735 20 epp7 pr6|26,* 001356 aa 7 00002 3521 20 epp2 pr7|2,* ydc.real 001357 aa 6 00450 2521 00 spri2 pr6|296 001360 aa 7 00004 3715 20 epp5 pr7|4,* 001361 aa 5 00020 3521 00 epp2 pr5|16 zdc.imaginary 001362 aa 6 00452 2521 00 spri2 pr6|298 001363 aa 6 00304 3521 00 epp2 pr6|196 product2 001364 aa 6 00454 2521 00 spri2 pr6|300 001365 aa 6 00446 6211 00 eax1 pr6|294 001366 aa 014000 4310 07 fld 6144,dl 001367 aa 777302 3520 04 epp2 -318,ic 000671 = 000520627000 001370 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 198 call subtract_decimal(product1, product2, xdc.imaginary); 001371 aa 6 00264 3521 00 epp2 pr6|180 product1 001372 aa 6 00450 2521 00 spri2 pr6|296 001373 aa 6 00304 3521 00 epp2 pr6|196 product2 001374 aa 6 00452 2521 00 spri2 pr6|298 001375 aa 6 00176 3735 20 epp7 pr6|126,* 001376 aa 7 00020 3521 00 epp2 pr7|16 xdc.imaginary 001377 aa 6 00454 2521 00 spri2 pr6|300 001400 aa 6 00446 6211 00 eax1 pr6|294 001401 aa 014000 4310 07 fld 6144,dl 001402 aa 777005 3520 04 epp2 -507,ic 000407 = 000520627000 001403 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 199 call divide_decimal(xdc.imaginary, divisor, xdc.imaginary); 001404 aa 6 00176 3735 20 epp7 pr6|126,* 001405 aa 7 00020 3521 00 epp2 pr7|16 xdc.imaginary 001406 aa 6 00450 2521 00 spri2 pr6|296 001407 aa 6 00324 3521 00 epp2 pr6|212 divisor 001410 aa 6 00452 2521 00 spri2 pr6|298 001411 aa 7 00020 3521 00 epp2 pr7|16 xdc.imaginary 001412 aa 6 00454 2521 00 spri2 pr6|300 001413 aa 6 00446 6211 00 eax1 pr6|294 001414 aa 014000 4310 07 fld 6144,dl 001415 aa 777474 3520 04 epp2 -196,ic 001111 = 000520627000 001416 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 200 xdc.real = temp; 001417 aa 6 00176 3735 20 epp7 pr6|126,* 001420 aa 000 100 100 500 mlr (pr),(pr),fill(000) 001421 aa 6 00344 00 0100 desc9a pr6|228,64 temp 001422 aa 7 00000 00 0100 desc9a pr7|0,64 xdc.real STATEMENT 1 ON LINE 201 end; END BLOCK 2 STATEMENT 1 ON LINE 202 return; 001423 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO negate_binary STATEMENT 1 ON LINE 206 negate_binary: entry(yb, xb); 001424 at 000002000010 001425 ta 000010000000 001426 ta 001424000000 001427 da 000152300000 001430 aa 000520 6270 00 eax7 336 001431 aa 7 00034 3521 20 epp2 pr7|28,* 001432 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001433 aa 000004000000 001434 aa 000000000000 001435 aa 6 00032 3735 20 epp7 pr6|26,* 001436 aa 7 00004 3715 20 epp5 pr7|4,* 001437 aa 6 00200 6515 00 spri5 pr6|128 STATEMENT 1 ON LINE 207 ab.exponent = 0; 001440 aa 000000 2350 07 lda 0,dl 001441 aa 6 00166 6751 00 era pr6|118 ab.exponent 001442 aa 0 00020 3751 00 ana pr0|16 = 776000000000 001443 aa 6 00166 6551 00 ersa pr6|118 ab.exponent STATEMENT 1 ON LINE 208 ab.mantissa = yb.mantissa; 001444 aa 6 00032 3735 20 epp7 pr6|26,* 001445 aa 7 00002 3715 20 epp5 pr7|2,* 001446 aa 5 00000 2351 00 lda pr5|0 yb.mantissa 001447 aa 5 00001 2361 00 ldq pr5|1 yb.mantissa 001450 aa 000010 7370 00 lls 8 001451 aa 000010 7330 00 lrs 8 001452 aa 6 00166 6771 00 eraq pr6|118 ab.mantissa 001453 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 001454 aa 6 00166 6551 00 ersa pr6|118 ab.mantissa 001455 aa 6 00167 6561 00 ersq pr6|119 ab.mantissa STATEMENT 1 ON LINE 209 addr(ab) -> flbt = - addr(ab) -> flbt; 001456 aa 6 00166 4331 00 dfld pr6|118 flbt 001457 aa 000000 5130 00 fneg 0 001460 aa 6 00166 4571 00 dfst pr6|118 flbt STATEMENT 1 ON LINE 210 xb.exponent = yb.exponent + ab.exponent; 001461 aa 6 00166 2351 00 lda pr6|118 ab.exponent 001462 aa 000100 7330 00 lrs 64 001463 aa 000044 7770 00 llr 36 001464 aa 000044 7330 00 lrs 36 001465 aa 5 00002 0331 00 adl pr5|2 yb.exponent 001466 aa 6 00200 3535 20 epp3 pr6|128,* 001467 aa 3 00002 7561 00 stq pr3|2 xb.exponent STATEMENT 1 ON LINE 211 xb.mantissa = ab.mantissa; 001470 aa 6 00166 2371 00 ldaq pr6|118 ab.mantissa 001471 aa 000010 7370 00 lls 8 001472 aa 000010 7330 00 lrs 8 001473 aa 3 00000 6751 00 era pr3|0 xb.mantissa 001474 aa 3 00001 6761 00 erq pr3|1 xb.mantissa 001475 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 001476 aa 3 00000 6551 00 ersa pr3|0 xb.mantissa 001477 aa 3 00001 6561 00 ersq pr3|1 xb.mantissa STATEMENT 1 ON LINE 212 return; 001500 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO negate_binary_complex STATEMENT 1 ON LINE 214 negate_binary_complex: entry(ybc, xbc); 001501 at 000002000023 001502 ta 000023000000 001503 ta 001501000000 001504 da 000163300000 001505 aa 000520 6270 00 eax7 336 001506 aa 7 00034 3521 20 epp2 pr7|28,* 001507 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001510 aa 000004000000 001511 aa 000000000000 001512 aa 6 00032 3735 20 epp7 pr6|26,* 001513 aa 7 00004 3715 20 epp5 pr7|4,* 001514 aa 6 00202 6515 00 spri5 pr6|130 STATEMENT 1 ON LINE 215 call negate_binary(ybc.real, xbc.real); 001515 aa 6 00032 3735 20 epp7 pr6|26,* 001516 aa 7 00002 3521 20 epp2 pr7|2,* ybc.real 001517 aa 6 00410 2521 00 spri2 pr6|264 001520 aa 6 00202 3521 20 epp2 pr6|130,* xbc.real 001521 aa 6 00412 2521 00 spri2 pr6|266 001522 aa 6 00406 6211 00 eax1 pr6|262 001523 aa 010000 4310 07 fld 4096,dl 001524 aa 777704 3520 04 epp2 -60,ic 001430 = 000520627000 001525 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 216 call negate_binary(ybc.imaginary, xbc.imaginary); 001526 aa 6 00032 3735 20 epp7 pr6|26,* 001527 aa 7 00002 3715 20 epp5 pr7|2,* 001530 aa 5 00004 3521 00 epp2 pr5|4 ybc.imaginary 001531 aa 6 00410 2521 00 spri2 pr6|264 001532 aa 6 00202 3535 20 epp3 pr6|130,* 001533 aa 3 00004 3521 00 epp2 pr3|4 xbc.imaginary 001534 aa 6 00412 2521 00 spri2 pr6|266 001535 aa 6 00406 6211 00 eax1 pr6|262 001536 aa 010000 4310 07 fld 4096,dl 001537 aa 777671 3520 04 epp2 -71,ic 001430 = 000520627000 001540 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 217 return; 001541 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO add_binary STATEMENT 1 ON LINE 219 add_binary: entry(yb, zb, xb); 001542 at 000003000010 001543 tt 000010000010 001544 ta 001542000000 001545 da 000171300000 001546 aa 000520 6270 00 eax7 336 001547 aa 7 00034 3521 20 epp2 pr7|28,* 001550 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001551 aa 000006000000 001552 aa 000000000000 001553 aa 6 00032 3735 20 epp7 pr6|26,* 001554 aa 7 00006 3715 20 epp5 pr7|6,* 001555 aa 6 00200 6515 00 spri5 pr6|128 STATEMENT 1 ON LINE 220 if yb.mantissa = 0 then xb = zb; 001556 aa 6 00032 3735 20 epp7 pr6|26,* 001557 aa 7 00002 3715 20 epp5 pr7|2,* 001560 aa 5 00000 2351 00 lda pr5|0 yb.mantissa 001561 aa 5 00001 2361 00 ldq pr5|1 yb.mantissa 001562 aa 000010 7370 00 lls 8 001563 aa 000010 7330 00 lrs 8 001564 aa 6 00404 7571 00 staq pr6|260 yb.mantissa 001565 aa 000012 6010 04 tnz 10,ic 001577 001566 aa 6 00200 3535 20 epp3 pr6|128,* 001567 aa 7 00004 3515 20 epp1 pr7|4,* 001570 aa 1 00000 2351 00 lda pr1|0 zb 001571 aa 3 00000 7551 00 sta pr3|0 xb 001572 aa 1 00001 2351 00 lda pr1|1 zb 001573 aa 3 00001 7551 00 sta pr3|1 xb 001574 aa 1 00002 2351 00 lda pr1|2 zb 001575 aa 3 00002 7551 00 sta pr3|2 xb 001576 aa 000220 7100 04 tra 144,ic 002016 STATEMENT 1 ON LINE 221 else if zb.mantissa = 0 then xb = yb; 001577 aa 7 00004 3535 20 epp3 pr7|4,* 001600 aa 3 00000 2351 00 lda pr3|0 zb.mantissa 001601 aa 3 00001 2361 00 ldq pr3|1 zb.mantissa 001602 aa 000010 7370 00 lls 8 001603 aa 000010 7330 00 lrs 8 001604 aa 6 00456 7571 00 staq pr6|302 zb.mantissa 001605 aa 000011 6010 04 tnz 9,ic 001616 001606 aa 6 00200 3515 20 epp1 pr6|128,* 001607 aa 5 00000 2351 00 lda pr5|0 yb 001610 aa 1 00000 7551 00 sta pr1|0 xb 001611 aa 5 00001 2351 00 lda pr5|1 yb 001612 aa 1 00001 7551 00 sta pr1|1 xb 001613 aa 5 00002 2351 00 lda pr5|2 yb 001614 aa 1 00002 7551 00 sta pr1|2 xb 001615 aa 000201 7100 04 tra 129,ic 002016 STATEMENT 1 ON LINE 222 else if yb.exponent > zb.exponent then if yb.exponent-zb.exponent > max_binary_precision then xb = yb; 001616 aa 5 00002 2361 00 ldq pr5|2 yb.exponent 001617 aa 3 00002 1161 00 cmpq pr3|2 zb.exponent 001620 aa 000100 6044 04 tmoz 64,ic 001720 001621 aa 5 00002 3361 00 lcq pr5|2 yb.exponent 001622 aa 000044 7770 00 llr 36 001623 aa 000044 7330 00 lrs 36 001624 aa 3 00002 0331 00 adl pr3|2 zb.exponent 001625 aa 000000 5330 00 negl 0 001626 aa 6 00460 7571 00 staq pr6|304 001627 aa 000077 2350 07 lda 63,dl 001630 aa 000044 7330 00 lrs 36 001631 aa 6 00460 1171 00 cmpaq pr6|304 001632 aa 000011 6050 04 tpl 9,ic 001643 001633 aa 6 00200 3515 20 epp1 pr6|128,* 001634 aa 5 00000 2351 00 lda pr5|0 yb 001635 aa 1 00000 7551 00 sta pr1|0 xb 001636 aa 5 00001 2351 00 lda pr5|1 yb 001637 aa 1 00001 7551 00 sta pr1|1 xb 001640 aa 5 00002 2351 00 lda pr5|2 yb 001641 aa 1 00002 7551 00 sta pr1|2 xb 001642 aa 000154 7100 04 tra 108,ic 002016 STATEMENT 1 ON LINE 224 else do; STATEMENT 1 ON LINE 225 ab.exponent = 0; 001643 aa 000000 2350 07 lda 0,dl 001644 aa 6 00166 6751 00 era pr6|118 ab.exponent 001645 aa 0 00020 3751 00 ana pr0|16 = 776000000000 001646 aa 6 00166 6551 00 ersa pr6|118 ab.exponent STATEMENT 1 ON LINE 226 ab.mantissa = yb.mantissa; 001647 aa 6 00404 2371 00 ldaq pr6|260 yb.mantissa 001650 aa 6 00166 6771 00 eraq pr6|118 ab.mantissa 001651 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 001652 aa 6 00166 6551 00 ersa pr6|118 ab.mantissa 001653 aa 6 00167 6561 00 ersq pr6|119 ab.mantissa STATEMENT 1 ON LINE 227 bb.exponent = zb.exponent - yb.exponent; 001654 aa 3 00002 3361 00 lcq pr3|2 zb.exponent 001655 aa 000044 7770 00 llr 36 001656 aa 000044 7330 00 lrs 36 001657 aa 5 00002 0331 00 adl pr5|2 yb.exponent 001660 aa 000000 5330 00 negl 0 001661 aa 000100 7370 00 lls 64 001662 aa 6 00170 6751 00 era pr6|120 bb.exponent 001663 aa 0 00020 3751 00 ana pr0|16 = 776000000000 001664 aa 6 00170 6551 00 ersa pr6|120 bb.exponent STATEMENT 1 ON LINE 228 bb.mantissa = zb.mantissa; 001665 aa 3 00000 2351 00 lda pr3|0 zb.mantissa 001666 aa 3 00001 2361 00 ldq pr3|1 zb.mantissa 001667 aa 000010 7370 00 lls 8 001670 aa 000010 7330 00 lrs 8 001671 aa 6 00170 6771 00 eraq pr6|120 bb.mantissa 001672 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 001673 aa 6 00170 6551 00 ersa pr6|120 bb.mantissa 001674 aa 6 00171 6561 00 ersq pr6|121 bb.mantissa STATEMENT 1 ON LINE 229 addr(cb) -> flbt = addr(ab) -> flbt + addr(bb) -> flbt; 001675 aa 6 00166 4331 00 dfld pr6|118 flbt 001676 aa 6 00170 4771 00 dfad pr6|120 flbt 001677 aa 6 00172 4571 00 dfst pr6|122 flbt STATEMENT 1 ON LINE 230 xb.mantissa = cb.mantissa; 001700 aa 6 00172 2371 00 ldaq pr6|122 cb.mantissa 001701 aa 000010 7370 00 lls 8 001702 aa 000010 7330 00 lrs 8 001703 aa 6 00200 3515 20 epp1 pr6|128,* 001704 aa 1 00000 6751 00 era pr1|0 xb.mantissa 001705 aa 1 00001 6761 00 erq pr1|1 xb.mantissa 001706 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 001707 aa 1 00000 6551 00 ersa pr1|0 xb.mantissa 001710 aa 1 00001 6561 00 ersq pr1|1 xb.mantissa STATEMENT 1 ON LINE 231 xb.exponent = yb.exponent + cb.exponent; 001711 aa 6 00172 2351 00 lda pr6|122 cb.exponent 001712 aa 000100 7330 00 lrs 64 001713 aa 000044 7770 00 llr 36 001714 aa 000044 7330 00 lrs 36 001715 aa 5 00002 0331 00 adl pr5|2 yb.exponent 001716 aa 1 00002 7561 00 stq pr1|2 xb.exponent STATEMENT 1 ON LINE 232 end; 001717 aa 000077 7100 04 tra 63,ic 002016 STATEMENT 1 ON LINE 233 else if zb.exponent-yb.exponent > max_binary_precision then xb = zb; 001720 aa 3 00002 3361 00 lcq pr3|2 zb.exponent 001721 aa 000044 7770 00 llr 36 001722 aa 000044 7330 00 lrs 36 001723 aa 5 00002 0331 00 adl pr5|2 yb.exponent 001724 aa 000000 5330 00 negl 0 001725 aa 6 00404 7571 00 staq pr6|260 001726 aa 000077 2350 07 lda 63,dl 001727 aa 000044 7330 00 lrs 36 001730 aa 6 00404 1171 00 cmpaq pr6|260 001731 aa 000011 6050 04 tpl 9,ic 001742 001732 aa 6 00200 3515 20 epp1 pr6|128,* 001733 aa 3 00000 2351 00 lda pr3|0 zb 001734 aa 1 00000 7551 00 sta pr1|0 xb 001735 aa 3 00001 2351 00 lda pr3|1 zb 001736 aa 1 00001 7551 00 sta pr1|1 xb 001737 aa 3 00002 2351 00 lda pr3|2 zb 001740 aa 1 00002 7551 00 sta pr1|2 xb 001741 aa 000055 7100 04 tra 45,ic 002016 STATEMENT 1 ON LINE 234 else do; STATEMENT 1 ON LINE 235 ab.exponent = 0; 001742 aa 000000 2350 07 lda 0,dl 001743 aa 6 00166 6751 00 era pr6|118 ab.exponent 001744 aa 0 00020 3751 00 ana pr0|16 = 776000000000 001745 aa 6 00166 6551 00 ersa pr6|118 ab.exponent STATEMENT 1 ON LINE 236 ab.mantissa = zb.mantissa; 001746 aa 6 00456 2371 00 ldaq pr6|302 zb.mantissa 001747 aa 6 00166 6771 00 eraq pr6|118 ab.mantissa 001750 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 001751 aa 6 00166 6551 00 ersa pr6|118 ab.mantissa 001752 aa 6 00167 6561 00 ersq pr6|119 ab.mantissa STATEMENT 1 ON LINE 237 bb.exponent = yb.exponent - zb.exponent; 001753 aa 5 00002 3361 00 lcq pr5|2 yb.exponent 001754 aa 000044 7770 00 llr 36 001755 aa 000044 7330 00 lrs 36 001756 aa 3 00002 0331 00 adl pr3|2 zb.exponent 001757 aa 000000 5330 00 negl 0 001760 aa 000100 7370 00 lls 64 001761 aa 6 00170 6751 00 era pr6|120 bb.exponent 001762 aa 0 00020 3751 00 ana pr0|16 = 776000000000 001763 aa 6 00170 6551 00 ersa pr6|120 bb.exponent STATEMENT 1 ON LINE 238 bb.mantissa = yb.mantissa; 001764 aa 5 00000 2351 00 lda pr5|0 yb.mantissa 001765 aa 5 00001 2361 00 ldq pr5|1 yb.mantissa 001766 aa 000010 7370 00 lls 8 001767 aa 000010 7330 00 lrs 8 001770 aa 6 00170 6771 00 eraq pr6|120 bb.mantissa 001771 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 001772 aa 6 00170 6551 00 ersa pr6|120 bb.mantissa 001773 aa 6 00171 6561 00 ersq pr6|121 bb.mantissa STATEMENT 1 ON LINE 239 addr(cb) -> flbt = addr(ab) -> flbt + addr(bb) -> flbt; 001774 aa 6 00166 4331 00 dfld pr6|118 flbt 001775 aa 6 00170 4771 00 dfad pr6|120 flbt 001776 aa 6 00172 4571 00 dfst pr6|122 flbt STATEMENT 1 ON LINE 240 xb.mantissa = cb.mantissa; 001777 aa 6 00172 2371 00 ldaq pr6|122 cb.mantissa 002000 aa 000010 7370 00 lls 8 002001 aa 000010 7330 00 lrs 8 002002 aa 6 00200 3515 20 epp1 pr6|128,* 002003 aa 1 00000 6751 00 era pr1|0 xb.mantissa 002004 aa 1 00001 6761 00 erq pr1|1 xb.mantissa 002005 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002006 aa 1 00000 6551 00 ersa pr1|0 xb.mantissa 002007 aa 1 00001 6561 00 ersq pr1|1 xb.mantissa STATEMENT 1 ON LINE 241 xb.exponent = zb.exponent + cb.exponent; 002010 aa 6 00172 2351 00 lda pr6|122 cb.exponent 002011 aa 000100 7330 00 lrs 64 002012 aa 000044 7770 00 llr 36 002013 aa 000044 7330 00 lrs 36 002014 aa 3 00002 0331 00 adl pr3|2 zb.exponent 002015 aa 1 00002 7561 00 stq pr1|2 xb.exponent STATEMENT 1 ON LINE 242 end; STATEMENT 1 ON LINE 243 return; 002016 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO add_binary_complex STATEMENT 1 ON LINE 245 add_binary_complex: entry(ybc, zbc, xbc); 002017 at 000003000023 002020 tt 000023000023 002021 ta 002017000000 002022 da 000201300000 002023 aa 000520 6270 00 eax7 336 002024 aa 7 00034 3521 20 epp2 pr7|28,* 002025 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002026 aa 000006000000 002027 aa 000000000000 002030 aa 6 00032 3735 20 epp7 pr6|26,* 002031 aa 7 00006 3715 20 epp5 pr7|6,* 002032 aa 6 00202 6515 00 spri5 pr6|130 STATEMENT 1 ON LINE 246 call add_binary(ybc.real, zbc.real, xbc.real); 002033 aa 6 00032 3735 20 epp7 pr6|26,* 002034 aa 7 00002 3521 20 epp2 pr7|2,* ybc.real 002035 aa 6 00410 2521 00 spri2 pr6|264 002036 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 002037 aa 6 00412 2521 00 spri2 pr6|266 002040 aa 6 00202 3521 20 epp2 pr6|130,* xbc.real 002041 aa 6 00414 2521 00 spri2 pr6|268 002042 aa 6 00406 6211 00 eax1 pr6|262 002043 aa 014000 4310 07 fld 6144,dl 002044 aa 777502 3520 04 epp2 -190,ic 001546 = 000520627000 002045 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 247 call add_binary(ybc.imaginary, zbc.imaginary, xbc.imaginary); 002046 aa 6 00032 3735 20 epp7 pr6|26,* 002047 aa 7 00002 3715 20 epp5 pr7|2,* 002050 aa 5 00004 3521 00 epp2 pr5|4 ybc.imaginary 002051 aa 6 00410 2521 00 spri2 pr6|264 002052 aa 7 00004 3535 20 epp3 pr7|4,* 002053 aa 3 00004 3521 00 epp2 pr3|4 zbc.imaginary 002054 aa 6 00412 2521 00 spri2 pr6|266 002055 aa 6 00202 3515 20 epp1 pr6|130,* 002056 aa 1 00004 3521 00 epp2 pr1|4 xbc.imaginary 002057 aa 6 00414 2521 00 spri2 pr6|268 002060 aa 6 00406 6211 00 eax1 pr6|262 002061 aa 014000 4310 07 fld 6144,dl 002062 aa 777464 3520 04 epp2 -204,ic 001546 = 000520627000 002063 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 248 return; 002064 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO subtract_binary STATEMENT 1 ON LINE 250 subtract_binary: entry(yb, zb, xb); 002065 ta 001542000000 002066 da 000210300000 002067 aa 000520 6270 00 eax7 336 002070 aa 7 00034 3521 20 epp2 pr7|28,* 002071 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002072 aa 000006000000 002073 aa 000000000000 002074 aa 6 00032 3735 20 epp7 pr6|26,* 002075 aa 7 00006 3715 20 epp5 pr7|6,* 002076 aa 6 00200 6515 00 spri5 pr6|128 STATEMENT 1 ON LINE 251 if yb.mantissa = 0 then call negate_binary(zb, xb); 002077 aa 6 00032 3735 20 epp7 pr6|26,* 002100 aa 7 00002 3715 20 epp5 pr7|2,* 002101 aa 5 00000 2351 00 lda pr5|0 yb.mantissa 002102 aa 5 00001 2361 00 ldq pr5|1 yb.mantissa 002103 aa 000010 7370 00 lls 8 002104 aa 000010 7330 00 lrs 8 002105 aa 6 00456 7571 00 staq pr6|302 yb.mantissa 002106 aa 000012 6010 04 tnz 10,ic 002120 002107 aa 7 00004 3521 20 epp2 pr7|4,* zb 002110 aa 6 00410 2521 00 spri2 pr6|264 002111 aa 6 00200 3521 20 epp2 pr6|128,* xb 002112 aa 6 00412 2521 00 spri2 pr6|266 002113 aa 6 00406 6211 00 eax1 pr6|262 002114 aa 010000 4310 07 fld 4096,dl 002115 aa 777313 3520 04 epp2 -309,ic 001430 = 000520627000 002116 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in 002117 aa 000222 7100 04 tra 146,ic 002341 STATEMENT 1 ON LINE 252 else if zb.mantissa = 0 then xb = yb; 002120 aa 7 00004 3535 20 epp3 pr7|4,* 002121 aa 3 00000 2351 00 lda pr3|0 zb.mantissa 002122 aa 3 00001 2361 00 ldq pr3|1 zb.mantissa 002123 aa 000010 7370 00 lls 8 002124 aa 000010 7330 00 lrs 8 002125 aa 6 00404 7571 00 staq pr6|260 zb.mantissa 002126 aa 000011 6010 04 tnz 9,ic 002137 002127 aa 6 00200 3515 20 epp1 pr6|128,* 002130 aa 5 00000 2351 00 lda pr5|0 yb 002131 aa 1 00000 7551 00 sta pr1|0 xb 002132 aa 5 00001 2351 00 lda pr5|1 yb 002133 aa 1 00001 7551 00 sta pr1|1 xb 002134 aa 5 00002 2351 00 lda pr5|2 yb 002135 aa 1 00002 7551 00 sta pr1|2 xb 002136 aa 000203 7100 04 tra 131,ic 002341 STATEMENT 1 ON LINE 253 else if yb.exponent > zb.exponent then if yb.exponent-zb.exponent > max_binary_precision then xb = yb; 002137 aa 5 00002 2361 00 ldq pr5|2 yb.exponent 002140 aa 3 00002 1161 00 cmpq pr3|2 zb.exponent 002141 aa 000100 6044 04 tmoz 64,ic 002241 002142 aa 5 00002 3361 00 lcq pr5|2 yb.exponent 002143 aa 000044 7770 00 llr 36 002144 aa 000044 7330 00 lrs 36 002145 aa 3 00002 0331 00 adl pr3|2 zb.exponent 002146 aa 000000 5330 00 negl 0 002147 aa 6 00460 7571 00 staq pr6|304 002150 aa 000077 2350 07 lda 63,dl 002151 aa 000044 7330 00 lrs 36 002152 aa 6 00460 1171 00 cmpaq pr6|304 002153 aa 000011 6050 04 tpl 9,ic 002164 002154 aa 6 00200 3515 20 epp1 pr6|128,* 002155 aa 5 00000 2351 00 lda pr5|0 yb 002156 aa 1 00000 7551 00 sta pr1|0 xb 002157 aa 5 00001 2351 00 lda pr5|1 yb 002160 aa 1 00001 7551 00 sta pr1|1 xb 002161 aa 5 00002 2351 00 lda pr5|2 yb 002162 aa 1 00002 7551 00 sta pr1|2 xb 002163 aa 000156 7100 04 tra 110,ic 002341 STATEMENT 1 ON LINE 255 else do; STATEMENT 1 ON LINE 256 ab.exponent = 0; 002164 aa 000000 2350 07 lda 0,dl 002165 aa 6 00166 6751 00 era pr6|118 ab.exponent 002166 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002167 aa 6 00166 6551 00 ersa pr6|118 ab.exponent STATEMENT 1 ON LINE 257 ab.mantissa = yb.mantissa; 002170 aa 6 00456 2371 00 ldaq pr6|302 yb.mantissa 002171 aa 6 00166 6771 00 eraq pr6|118 ab.mantissa 002172 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002173 aa 6 00166 6551 00 ersa pr6|118 ab.mantissa 002174 aa 6 00167 6561 00 ersq pr6|119 ab.mantissa STATEMENT 1 ON LINE 258 bb.exponent = zb.exponent - yb.exponent; 002175 aa 3 00002 3361 00 lcq pr3|2 zb.exponent 002176 aa 000044 7770 00 llr 36 002177 aa 000044 7330 00 lrs 36 002200 aa 5 00002 0331 00 adl pr5|2 yb.exponent 002201 aa 000000 5330 00 negl 0 002202 aa 000100 7370 00 lls 64 002203 aa 6 00170 6751 00 era pr6|120 bb.exponent 002204 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002205 aa 6 00170 6551 00 ersa pr6|120 bb.exponent STATEMENT 1 ON LINE 259 bb.mantissa = zb.mantissa; 002206 aa 3 00000 2351 00 lda pr3|0 zb.mantissa 002207 aa 3 00001 2361 00 ldq pr3|1 zb.mantissa 002210 aa 000010 7370 00 lls 8 002211 aa 000010 7330 00 lrs 8 002212 aa 6 00170 6771 00 eraq pr6|120 bb.mantissa 002213 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002214 aa 6 00170 6551 00 ersa pr6|120 bb.mantissa 002215 aa 6 00171 6561 00 ersq pr6|121 bb.mantissa STATEMENT 1 ON LINE 260 addr(cb) -> flbt = addr(ab) -> flbt - addr(bb) -> flbt; 002216 aa 6 00166 4331 00 dfld pr6|118 flbt 002217 aa 6 00170 5771 00 dfsb pr6|120 flbt 002220 aa 6 00172 4571 00 dfst pr6|122 flbt STATEMENT 1 ON LINE 261 xb.mantissa = cb.mantissa; 002221 aa 6 00172 2371 00 ldaq pr6|122 cb.mantissa 002222 aa 000010 7370 00 lls 8 002223 aa 000010 7330 00 lrs 8 002224 aa 6 00200 3515 20 epp1 pr6|128,* 002225 aa 1 00000 6751 00 era pr1|0 xb.mantissa 002226 aa 1 00001 6761 00 erq pr1|1 xb.mantissa 002227 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002230 aa 1 00000 6551 00 ersa pr1|0 xb.mantissa 002231 aa 1 00001 6561 00 ersq pr1|1 xb.mantissa STATEMENT 1 ON LINE 262 xb.exponent = yb.exponent + cb.exponent; 002232 aa 6 00172 2351 00 lda pr6|122 cb.exponent 002233 aa 000100 7330 00 lrs 64 002234 aa 000044 7770 00 llr 36 002235 aa 000044 7330 00 lrs 36 002236 aa 5 00002 0331 00 adl pr5|2 yb.exponent 002237 aa 1 00002 7561 00 stq pr1|2 xb.exponent STATEMENT 1 ON LINE 263 end; 002240 aa 000101 7100 04 tra 65,ic 002341 STATEMENT 1 ON LINE 264 else if zb.exponent-yb.exponent > max_binary_precision then do; 002241 aa 3 00002 3361 00 lcq pr3|2 zb.exponent 002242 aa 000044 7770 00 llr 36 002243 aa 000044 7330 00 lrs 36 002244 aa 5 00002 0331 00 adl pr5|2 yb.exponent 002245 aa 000000 5330 00 negl 0 002246 aa 6 00456 7571 00 staq pr6|302 002247 aa 000077 2350 07 lda 63,dl 002250 aa 000044 7330 00 lrs 36 002251 aa 6 00456 1171 00 cmpaq pr6|302 002252 aa 000013 6050 04 tpl 11,ic 002265 STATEMENT 1 ON LINE 265 xb.mantissa = -zb.mantissa; 002253 aa 6 00404 3371 00 lcaq pr6|260 zb.mantissa 002254 aa 6 00200 3515 20 epp1 pr6|128,* 002255 aa 1 00000 6751 00 era pr1|0 xb.mantissa 002256 aa 1 00001 6761 00 erq pr1|1 xb.mantissa 002257 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002260 aa 1 00000 6551 00 ersa pr1|0 xb.mantissa 002261 aa 1 00001 6561 00 ersq pr1|1 xb.mantissa STATEMENT 1 ON LINE 266 xb.exponent = zb.exponent; 002262 aa 3 00002 2361 00 ldq pr3|2 zb.exponent 002263 aa 1 00002 7561 00 stq pr1|2 xb.exponent STATEMENT 1 ON LINE 267 end; 002264 aa 000055 7100 04 tra 45,ic 002341 STATEMENT 1 ON LINE 268 else do; STATEMENT 1 ON LINE 269 ab.exponent = 0; 002265 aa 000000 2350 07 lda 0,dl 002266 aa 6 00166 6751 00 era pr6|118 ab.exponent 002267 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002270 aa 6 00166 6551 00 ersa pr6|118 ab.exponent STATEMENT 1 ON LINE 270 ab.mantissa = zb.mantissa; 002271 aa 6 00404 2371 00 ldaq pr6|260 zb.mantissa 002272 aa 6 00166 6771 00 eraq pr6|118 ab.mantissa 002273 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002274 aa 6 00166 6551 00 ersa pr6|118 ab.mantissa 002275 aa 6 00167 6561 00 ersq pr6|119 ab.mantissa STATEMENT 1 ON LINE 271 bb.exponent = yb.exponent - zb.exponent; 002276 aa 5 00002 3361 00 lcq pr5|2 yb.exponent 002277 aa 000044 7770 00 llr 36 002300 aa 000044 7330 00 lrs 36 002301 aa 3 00002 0331 00 adl pr3|2 zb.exponent 002302 aa 000000 5330 00 negl 0 002303 aa 000100 7370 00 lls 64 002304 aa 6 00170 6751 00 era pr6|120 bb.exponent 002305 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002306 aa 6 00170 6551 00 ersa pr6|120 bb.exponent STATEMENT 1 ON LINE 272 bb.mantissa = yb.mantissa; 002307 aa 5 00000 2351 00 lda pr5|0 yb.mantissa 002310 aa 5 00001 2361 00 ldq pr5|1 yb.mantissa 002311 aa 000010 7370 00 lls 8 002312 aa 000010 7330 00 lrs 8 002313 aa 6 00170 6771 00 eraq pr6|120 bb.mantissa 002314 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002315 aa 6 00170 6551 00 ersa pr6|120 bb.mantissa 002316 aa 6 00171 6561 00 ersq pr6|121 bb.mantissa STATEMENT 1 ON LINE 273 addr(cb) -> flbt = addr(bb) -> flbt - addr(ab) -> flbt; 002317 aa 6 00170 4331 00 dfld pr6|120 flbt 002320 aa 6 00166 5771 00 dfsb pr6|118 flbt 002321 aa 6 00172 4571 00 dfst pr6|122 flbt STATEMENT 1 ON LINE 274 xb.mantissa = cb.mantissa; 002322 aa 6 00172 2371 00 ldaq pr6|122 cb.mantissa 002323 aa 000010 7370 00 lls 8 002324 aa 000010 7330 00 lrs 8 002325 aa 6 00200 3515 20 epp1 pr6|128,* 002326 aa 1 00000 6751 00 era pr1|0 xb.mantissa 002327 aa 1 00001 6761 00 erq pr1|1 xb.mantissa 002330 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002331 aa 1 00000 6551 00 ersa pr1|0 xb.mantissa 002332 aa 1 00001 6561 00 ersq pr1|1 xb.mantissa STATEMENT 1 ON LINE 275 xb.exponent = zb.exponent + cb.exponent; 002333 aa 6 00172 2351 00 lda pr6|122 cb.exponent 002334 aa 000100 7330 00 lrs 64 002335 aa 000044 7770 00 llr 36 002336 aa 000044 7330 00 lrs 36 002337 aa 3 00002 0331 00 adl pr3|2 zb.exponent 002340 aa 1 00002 7561 00 stq pr1|2 xb.exponent STATEMENT 1 ON LINE 276 end; STATEMENT 1 ON LINE 277 return; 002341 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO subtract_binary_complex STATEMENT 1 ON LINE 279 subtract_binary_complex: entry(ybc, zbc, xbc); 002342 ta 002017000000 002343 da 000221300000 002344 aa 000520 6270 00 eax7 336 002345 aa 7 00034 3521 20 epp2 pr7|28,* 002346 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002347 aa 000006000000 002350 aa 000000000000 002351 aa 6 00032 3735 20 epp7 pr6|26,* 002352 aa 7 00006 3715 20 epp5 pr7|6,* 002353 aa 6 00202 6515 00 spri5 pr6|130 STATEMENT 1 ON LINE 280 call subtract_binary(ybc.real, zbc.real, xbc.real); 002354 aa 6 00032 3735 20 epp7 pr6|26,* 002355 aa 7 00002 3521 20 epp2 pr7|2,* ybc.real 002356 aa 6 00410 2521 00 spri2 pr6|264 002357 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 002360 aa 6 00412 2521 00 spri2 pr6|266 002361 aa 6 00202 3521 20 epp2 pr6|130,* xbc.real 002362 aa 6 00414 2521 00 spri2 pr6|268 002363 aa 6 00406 6211 00 eax1 pr6|262 002364 aa 014000 4310 07 fld 6144,dl 002365 aa 777502 3520 04 epp2 -190,ic 002067 = 000520627000 002366 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 281 call subtract_binary(ybc.imaginary, zbc.imaginary, xbc.imaginary); 002367 aa 6 00032 3735 20 epp7 pr6|26,* 002370 aa 7 00002 3715 20 epp5 pr7|2,* 002371 aa 5 00004 3521 00 epp2 pr5|4 ybc.imaginary 002372 aa 6 00410 2521 00 spri2 pr6|264 002373 aa 7 00004 3535 20 epp3 pr7|4,* 002374 aa 3 00004 3521 00 epp2 pr3|4 zbc.imaginary 002375 aa 6 00412 2521 00 spri2 pr6|266 002376 aa 6 00202 3515 20 epp1 pr6|130,* 002377 aa 1 00004 3521 00 epp2 pr1|4 xbc.imaginary 002400 aa 6 00414 2521 00 spri2 pr6|268 002401 aa 6 00406 6211 00 eax1 pr6|262 002402 aa 014000 4310 07 fld 6144,dl 002403 aa 777464 3520 04 epp2 -204,ic 002067 = 000520627000 002404 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 282 return; 002405 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO multiply_binary STATEMENT 1 ON LINE 284 multiply_binary: entry(yb, zb, xb); 002406 ta 001542000000 002407 da 000230300000 002410 aa 000520 6270 00 eax7 336 002411 aa 7 00034 3521 20 epp2 pr7|28,* 002412 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002413 aa 000006000000 002414 aa 000000000000 002415 aa 6 00032 3735 20 epp7 pr6|26,* 002416 aa 7 00006 3715 20 epp5 pr7|6,* 002417 aa 6 00200 6515 00 spri5 pr6|128 STATEMENT 1 ON LINE 285 if yb.mantissa = 0 | xb.mantissa = 0 then do; 002420 aa 6 00032 3735 20 epp7 pr6|26,* 002421 aa 7 00002 3715 20 epp5 pr7|2,* 002422 aa 5 00000 2351 00 lda pr5|0 yb.mantissa 002423 aa 5 00001 2361 00 ldq pr5|1 yb.mantissa 002424 aa 000010 7370 00 lls 8 002425 aa 000010 7330 00 lrs 8 002426 aa 6 00404 7571 00 staq pr6|260 yb.mantissa 002427 aa 000007 6000 04 tze 7,ic 002436 002430 aa 6 00200 3535 20 epp3 pr6|128,* 002431 aa 3 00000 2351 00 lda pr3|0 xb.mantissa 002432 aa 3 00001 2361 00 ldq pr3|1 xb.mantissa 002433 aa 000010 7370 00 lls 8 002434 aa 000010 7330 00 lrs 8 002435 aa 000014 6010 04 tnz 12,ic 002451 STATEMENT 1 ON LINE 286 xb.mantissa = 0; 002436 aa 775342 2370 04 ldaq -1310,ic 000000 = 000000000000 000000000000 002437 aa 000010 7330 00 lrs 8 002440 aa 6 00200 3535 20 epp3 pr6|128,* 002441 aa 3 00000 6751 00 era pr3|0 xb.mantissa 002442 aa 3 00001 6761 00 erq pr3|1 xb.mantissa 002443 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002444 aa 3 00000 6551 00 ersa pr3|0 xb.mantissa 002445 aa 3 00001 6561 00 ersq pr3|1 xb.mantissa STATEMENT 1 ON LINE 287 xb.exponent = 127; 002446 aa 000177 2360 07 ldq 127,dl 002447 aa 3 00002 7561 00 stq pr3|2 xb.exponent STATEMENT 1 ON LINE 288 return; 002450 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 289 end; STATEMENT 1 ON LINE 290 ab.exponent, bb.exponent = 0; 002451 aa 000000 2350 07 lda 0,dl 002452 aa 6 00166 6751 00 era pr6|118 ab.exponent 002453 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002454 aa 6 00166 6551 00 ersa pr6|118 ab.exponent 002455 aa 000000 2350 07 lda 0,dl 002456 aa 6 00170 6751 00 era pr6|120 bb.exponent 002457 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002460 aa 6 00170 6551 00 ersa pr6|120 bb.exponent STATEMENT 1 ON LINE 291 ab.mantissa = yb.mantissa; 002461 aa 6 00404 2371 00 ldaq pr6|260 yb.mantissa 002462 aa 6 00166 6771 00 eraq pr6|118 ab.mantissa 002463 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002464 aa 6 00166 6551 00 ersa pr6|118 ab.mantissa 002465 aa 6 00167 6561 00 ersq pr6|119 ab.mantissa STATEMENT 1 ON LINE 292 bb.mantissa = zb.mantissa; 002466 aa 7 00004 3515 20 epp1 pr7|4,* 002467 aa 1 00000 2351 00 lda pr1|0 zb.mantissa 002470 aa 1 00001 2361 00 ldq pr1|1 zb.mantissa 002471 aa 000010 7370 00 lls 8 002472 aa 000010 7330 00 lrs 8 002473 aa 6 00170 6771 00 eraq pr6|120 bb.mantissa 002474 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002475 aa 6 00170 6551 00 ersa pr6|120 bb.mantissa 002476 aa 6 00171 6561 00 ersq pr6|121 bb.mantissa STATEMENT 1 ON LINE 293 addr(cb) -> flbt = addr(ab) -> flbt * addr(bb) -> flbt; 002477 aa 6 00166 4331 00 dfld pr6|118 flbt 002500 aa 6 00170 4631 00 dfmp pr6|120 flbt 002501 aa 6 00172 4571 00 dfst pr6|122 flbt STATEMENT 1 ON LINE 294 xb.mantissa = cb.mantissa; 002502 aa 6 00172 2371 00 ldaq pr6|122 cb.mantissa 002503 aa 000010 7370 00 lls 8 002504 aa 000010 7330 00 lrs 8 002505 aa 3 00000 6751 00 era pr3|0 xb.mantissa 002506 aa 3 00001 6761 00 erq pr3|1 xb.mantissa 002507 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002510 aa 3 00000 6551 00 ersa pr3|0 xb.mantissa 002511 aa 3 00001 6561 00 ersq pr3|1 xb.mantissa STATEMENT 1 ON LINE 295 xb.exponent = yb.exponent + zb.exponent + cb.exponent; 002512 aa 6 00172 2351 00 lda pr6|122 cb.exponent 002513 aa 000100 7330 00 lrs 64 002514 aa 6 00403 7561 00 stq pr6|259 cb.exponent 002515 aa 5 00002 2351 00 lda pr5|2 yb.exponent 002516 aa 000044 7330 00 lrs 36 002517 aa 1 00002 0331 00 adl pr1|2 zb.exponent 002520 aa 6 00403 0331 00 adl pr6|259 cb.exponent 002521 aa 3 00002 7561 00 stq pr3|2 xb.exponent STATEMENT 1 ON LINE 296 return; 002522 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO multiply_binary_complex STATEMENT 1 ON LINE 298 multiply_binary_complex: entry(ybc, zbc, xbc); 002523 ta 002017000000 002524 da 000241300000 002525 aa 000520 6270 00 eax7 336 002526 aa 7 00034 3521 20 epp2 pr7|28,* 002527 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002530 aa 000006000000 002531 aa 000000000000 002532 aa 6 00032 3735 20 epp7 pr6|26,* 002533 aa 7 00006 3715 20 epp5 pr7|6,* 002534 aa 6 00202 6515 00 spri5 pr6|130 STATEMENT 1 ON LINE 299 begin; BEGIN BLOCK 3 STATEMENT 1 ON LINE 302 call multiply_binary(ybc.real, zbc.real, product1); 002535 aa 6 00032 3735 20 epp7 pr6|26,* 002536 aa 7 00002 3521 20 epp2 pr7|2,* ybc.real 002537 aa 6 00464 2521 00 spri2 pr6|308 002540 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 002541 aa 6 00466 2521 00 spri2 pr6|310 002542 aa 6 00364 3521 00 epp2 pr6|244 product1 002543 aa 6 00470 2521 00 spri2 pr6|312 002544 aa 6 00462 6211 00 eax1 pr6|306 002545 aa 014000 4310 07 fld 6144,dl 002546 aa 777642 3520 04 epp2 -94,ic 002410 = 000520627000 002547 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 303 call multiply_binary(ybc.imaginary, zbc.imaginary, product2); 002550 aa 6 00032 3735 20 epp7 pr6|26,* 002551 aa 7 00002 3715 20 epp5 pr7|2,* 002552 aa 5 00004 3521 00 epp2 pr5|4 ybc.imaginary 002553 aa 6 00464 2521 00 spri2 pr6|308 002554 aa 7 00004 3535 20 epp3 pr7|4,* 002555 aa 3 00004 3521 00 epp2 pr3|4 zbc.imaginary 002556 aa 6 00466 2521 00 spri2 pr6|310 002557 aa 6 00367 3521 00 epp2 pr6|247 product2 002560 aa 6 00470 2521 00 spri2 pr6|312 002561 aa 6 00462 6211 00 eax1 pr6|306 002562 aa 014000 4310 07 fld 6144,dl 002563 aa 777625 3520 04 epp2 -107,ic 002410 = 000520627000 002564 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 304 call subtract_binary(product1, product2, xbc.real); 002565 aa 6 00364 3521 00 epp2 pr6|244 product1 002566 aa 6 00464 2521 00 spri2 pr6|308 002567 aa 6 00367 3521 00 epp2 pr6|247 product2 002570 aa 6 00466 2521 00 spri2 pr6|310 002571 aa 6 00202 3521 20 epp2 pr6|130,* xbc.real 002572 aa 6 00470 2521 00 spri2 pr6|312 002573 aa 6 00462 6211 00 eax1 pr6|306 002574 aa 014000 4310 07 fld 6144,dl 002575 aa 777272 3520 04 epp2 -326,ic 002067 = 000520627000 002576 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 306 call multiply_binary(ybc.real, zbc.imaginary, product1); 002577 aa 6 00032 3735 20 epp7 pr6|26,* 002600 aa 7 00002 3521 20 epp2 pr7|2,* ybc.real 002601 aa 6 00464 2521 00 spri2 pr6|308 002602 aa 7 00004 3715 20 epp5 pr7|4,* 002603 aa 5 00004 3521 00 epp2 pr5|4 zbc.imaginary 002604 aa 6 00466 2521 00 spri2 pr6|310 002605 aa 6 00364 3521 00 epp2 pr6|244 product1 002606 aa 6 00470 2521 00 spri2 pr6|312 002607 aa 6 00462 6211 00 eax1 pr6|306 002610 aa 014000 4310 07 fld 6144,dl 002611 aa 777577 3520 04 epp2 -129,ic 002410 = 000520627000 002612 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 307 call multiply_binary(ybc.imaginary, zbc.real, product2); 002613 aa 6 00032 3735 20 epp7 pr6|26,* 002614 aa 7 00002 3715 20 epp5 pr7|2,* 002615 aa 5 00004 3521 00 epp2 pr5|4 ybc.imaginary 002616 aa 6 00464 2521 00 spri2 pr6|308 002617 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 002620 aa 6 00466 2521 00 spri2 pr6|310 002621 aa 6 00367 3521 00 epp2 pr6|247 product2 002622 aa 6 00470 2521 00 spri2 pr6|312 002623 aa 6 00462 6211 00 eax1 pr6|306 002624 aa 014000 4310 07 fld 6144,dl 002625 aa 777563 3520 04 epp2 -141,ic 002410 = 000520627000 002626 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 308 call add_binary(product1, product2, xbc.imaginary); 002627 aa 6 00364 3521 00 epp2 pr6|244 product1 002630 aa 6 00464 2521 00 spri2 pr6|308 002631 aa 6 00367 3521 00 epp2 pr6|247 product2 002632 aa 6 00466 2521 00 spri2 pr6|310 002633 aa 6 00202 3735 20 epp7 pr6|130,* 002634 aa 7 00004 3521 00 epp2 pr7|4 xbc.imaginary 002635 aa 6 00470 2521 00 spri2 pr6|312 002636 aa 6 00462 6211 00 eax1 pr6|306 002637 aa 014000 4310 07 fld 6144,dl 002640 aa 776706 3520 04 epp2 -570,ic 001546 = 000520627000 002641 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 309 end; END BLOCK 3 STATEMENT 1 ON LINE 310 return; 002642 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO divide_binary STATEMENT 1 ON LINE 312 divide_binary: entry(yb, zb, xb); 002643 ta 001542000000 002644 da 000250300000 002645 aa 000520 6270 00 eax7 336 002646 aa 7 00034 3521 20 epp2 pr7|28,* 002647 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002650 aa 000006000000 002651 aa 000000000000 002652 aa 6 00032 3735 20 epp7 pr6|26,* 002653 aa 7 00006 3715 20 epp5 pr7|6,* 002654 aa 6 00200 6515 00 spri5 pr6|128 STATEMENT 1 ON LINE 313 if zb.mantissa = 0 then signal zerodivide; 002655 aa 6 00032 3735 20 epp7 pr6|26,* 002656 aa 7 00004 3715 20 epp5 pr7|4,* 002657 aa 5 00000 2351 00 lda pr5|0 zb.mantissa 002660 aa 5 00001 2361 00 ldq pr5|1 zb.mantissa 002661 aa 000010 7370 00 lls 8 002662 aa 000010 7330 00 lrs 8 002663 aa 000004 6010 04 tnz 4,ic 002667 002664 aa 000012 7260 07 lxl6 10,dl 002665 aa 775115 3520 04 epp2 -1459,ic 000002 = 172145162157 002666 aa 0 00716 7001 00 tsx0 pr0|462 signal STATEMENT 1 ON LINE 314 if yb.mantissa = 0 then do; 002667 aa 6 00032 3735 20 epp7 pr6|26,* 002670 aa 7 00002 3715 20 epp5 pr7|2,* 002671 aa 5 00000 2351 00 lda pr5|0 yb.mantissa 002672 aa 5 00001 2361 00 ldq pr5|1 yb.mantissa 002673 aa 000010 7370 00 lls 8 002674 aa 000010 7330 00 lrs 8 002675 aa 6 00404 7571 00 staq pr6|260 yb.mantissa 002676 aa 000011 6010 04 tnz 9,ic 002707 STATEMENT 1 ON LINE 315 xb = yb; 002677 aa 6 00200 3535 20 epp3 pr6|128,* 002700 aa 5 00000 2351 00 lda pr5|0 yb 002701 aa 3 00000 7551 00 sta pr3|0 xb 002702 aa 5 00001 2351 00 lda pr5|1 yb 002703 aa 3 00001 7551 00 sta pr3|1 xb 002704 aa 5 00002 2351 00 lda pr5|2 yb 002705 aa 3 00002 7551 00 sta pr3|2 xb STATEMENT 1 ON LINE 316 return; 002706 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 317 end; STATEMENT 1 ON LINE 318 ab.exponent, bb.exponent = 0; 002707 aa 000000 2350 07 lda 0,dl 002710 aa 6 00166 6751 00 era pr6|118 ab.exponent 002711 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002712 aa 6 00166 6551 00 ersa pr6|118 ab.exponent 002713 aa 000000 2350 07 lda 0,dl 002714 aa 6 00170 6751 00 era pr6|120 bb.exponent 002715 aa 0 00020 3751 00 ana pr0|16 = 776000000000 002716 aa 6 00170 6551 00 ersa pr6|120 bb.exponent STATEMENT 1 ON LINE 319 ab.mantissa = yb.mantissa; 002717 aa 6 00404 2371 00 ldaq pr6|260 yb.mantissa 002720 aa 6 00166 6771 00 eraq pr6|118 ab.mantissa 002721 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002722 aa 6 00166 6551 00 ersa pr6|118 ab.mantissa 002723 aa 6 00167 6561 00 ersq pr6|119 ab.mantissa STATEMENT 1 ON LINE 320 bb.mantissa = zb.mantissa; 002724 aa 7 00004 3535 20 epp3 pr7|4,* 002725 aa 3 00000 2351 00 lda pr3|0 zb.mantissa 002726 aa 3 00001 2361 00 ldq pr3|1 zb.mantissa 002727 aa 000010 7370 00 lls 8 002730 aa 000010 7330 00 lrs 8 002731 aa 6 00170 6771 00 eraq pr6|120 bb.mantissa 002732 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002733 aa 6 00170 6551 00 ersa pr6|120 bb.mantissa 002734 aa 6 00171 6561 00 ersq pr6|121 bb.mantissa STATEMENT 1 ON LINE 321 addr(cb) -> flbt = addr(ab) -> flbt / addr(bb) -> flbt; 002735 aa 6 00166 4331 00 dfld pr6|118 flbt 002736 aa 6 00170 5671 00 dfdv pr6|120 flbt 002737 aa 6 00172 4571 00 dfst pr6|122 flbt STATEMENT 1 ON LINE 322 xb.mantissa = cb.mantissa; 002740 aa 6 00172 2371 00 ldaq pr6|122 cb.mantissa 002741 aa 000010 7370 00 lls 8 002742 aa 000010 7330 00 lrs 8 002743 aa 6 00200 3515 20 epp1 pr6|128,* 002744 aa 1 00000 6751 00 era pr1|0 xb.mantissa 002745 aa 1 00001 6761 00 erq pr1|1 xb.mantissa 002746 aa 0 00240 3771 00 anaq pr0|160 = 001777777777 777777777777 002747 aa 1 00000 6551 00 ersa pr1|0 xb.mantissa 002750 aa 1 00001 6561 00 ersq pr1|1 xb.mantissa STATEMENT 1 ON LINE 323 xb.exponent = yb.exponent + cb.exponent - zb.exponent; 002751 aa 6 00172 2351 00 lda pr6|122 cb.exponent 002752 aa 000100 7330 00 lrs 64 002753 aa 000044 7770 00 llr 36 002754 aa 000044 7330 00 lrs 36 002755 aa 5 00002 0331 00 adl pr5|2 yb.exponent 002756 aa 000000 5330 00 negl 0 002757 aa 3 00002 0331 00 adl pr3|2 zb.exponent 002760 aa 000000 5330 00 negl 0 002761 aa 1 00002 7561 00 stq pr1|2 xb.exponent STATEMENT 1 ON LINE 324 return; 002762 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO divide_binary_complex STATEMENT 1 ON LINE 326 divide_binary_complex: entry(ybc, zbc, xbc); 002763 ta 002017000000 002764 da 000261300000 002765 aa 000520 6270 00 eax7 336 002766 aa 7 00034 3521 20 epp2 pr7|28,* 002767 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002770 aa 000006000000 002771 aa 000000000000 002772 aa 6 00032 3735 20 epp7 pr6|26,* 002773 aa 7 00006 3715 20 epp5 pr7|6,* 002774 aa 6 00202 6515 00 spri5 pr6|130 STATEMENT 1 ON LINE 327 begin; BEGIN BLOCK 4 STATEMENT 1 ON LINE 330 call multiply_binary(zbc.real, zbc.real, product1); 002775 aa 6 00032 3735 20 epp7 pr6|26,* 002776 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 002777 aa 6 00474 2521 00 spri2 pr6|316 003000 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 003001 aa 6 00476 2521 00 spri2 pr6|318 003002 aa 6 00372 3521 00 epp2 pr6|250 product1 003003 aa 6 00500 2521 00 spri2 pr6|320 003004 aa 6 00472 6211 00 eax1 pr6|314 003005 aa 014000 4310 07 fld 6144,dl 003006 aa 777402 3520 04 epp2 -254,ic 002410 = 000520627000 003007 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 331 call multiply_binary(zbc.imaginary, zbc.imaginary, product2); 003010 aa 6 00032 3735 20 epp7 pr6|26,* 003011 aa 7 00004 3715 20 epp5 pr7|4,* 003012 aa 5 00004 3521 00 epp2 pr5|4 zbc.imaginary 003013 aa 6 00474 2521 00 spri2 pr6|316 003014 aa 5 00004 3521 00 epp2 pr5|4 zbc.imaginary 003015 aa 6 00476 2521 00 spri2 pr6|318 003016 aa 6 00375 3521 00 epp2 pr6|253 product2 003017 aa 6 00500 2521 00 spri2 pr6|320 003020 aa 6 00472 6211 00 eax1 pr6|314 003021 aa 014000 4310 07 fld 6144,dl 003022 aa 777366 3520 04 epp2 -266,ic 002410 = 000520627000 003023 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 332 call add_binary(product1, product2, divisor); 003024 aa 6 00372 3521 00 epp2 pr6|250 product1 003025 aa 6 00474 2521 00 spri2 pr6|316 003026 aa 6 00375 3521 00 epp2 pr6|253 product2 003027 aa 6 00476 2521 00 spri2 pr6|318 003030 aa 6 00400 3521 00 epp2 pr6|256 divisor 003031 aa 6 00500 2521 00 spri2 pr6|320 003032 aa 6 00472 6211 00 eax1 pr6|314 003033 aa 014000 4310 07 fld 6144,dl 003034 aa 776512 3520 04 epp2 -694,ic 001546 = 000520627000 003035 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 334 call multiply_binary(ybc.real, zbc.real, product1); 003036 aa 6 00032 3735 20 epp7 pr6|26,* 003037 aa 7 00002 3521 20 epp2 pr7|2,* ybc.real 003040 aa 6 00474 2521 00 spri2 pr6|316 003041 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 003042 aa 6 00476 2521 00 spri2 pr6|318 003043 aa 6 00372 3521 00 epp2 pr6|250 product1 003044 aa 6 00500 2521 00 spri2 pr6|320 003045 aa 6 00472 6211 00 eax1 pr6|314 003046 aa 014000 4310 07 fld 6144,dl 003047 aa 777341 3520 04 epp2 -287,ic 002410 = 000520627000 003050 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 335 call multiply_binary(ybc.imaginary, zbc.imaginary, product2); 003051 aa 6 00032 3735 20 epp7 pr6|26,* 003052 aa 7 00002 3715 20 epp5 pr7|2,* 003053 aa 5 00004 3521 00 epp2 pr5|4 ybc.imaginary 003054 aa 6 00474 2521 00 spri2 pr6|316 003055 aa 7 00004 3535 20 epp3 pr7|4,* 003056 aa 3 00004 3521 00 epp2 pr3|4 zbc.imaginary 003057 aa 6 00476 2521 00 spri2 pr6|318 003060 aa 6 00375 3521 00 epp2 pr6|253 product2 003061 aa 6 00500 2521 00 spri2 pr6|320 003062 aa 6 00472 6211 00 eax1 pr6|314 003063 aa 014000 4310 07 fld 6144,dl 003064 aa 777324 3520 04 epp2 -300,ic 002410 = 000520627000 003065 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 336 call add_binary(product1, product2, xbc.real); 003066 aa 6 00372 3521 00 epp2 pr6|250 product1 003067 aa 6 00474 2521 00 spri2 pr6|316 003070 aa 6 00375 3521 00 epp2 pr6|253 product2 003071 aa 6 00476 2521 00 spri2 pr6|318 003072 aa 6 00202 3521 20 epp2 pr6|130,* xbc.real 003073 aa 6 00500 2521 00 spri2 pr6|320 003074 aa 6 00472 6211 00 eax1 pr6|314 003075 aa 014000 4310 07 fld 6144,dl 003076 aa 776450 3520 04 epp2 -728,ic 001546 = 000520627000 003077 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 337 call divide_binary((xbc.real), divisor, xbc.real); 003100 aa 6 00202 3735 20 epp7 pr6|130,* 003101 aa 7 00000 2351 00 lda pr7|0 xbc.real 003102 aa 7 00001 2361 00 ldq pr7|1 xbc.real 003103 aa 6 00472 7571 00 staq pr6|314 003104 aa 7 00002 2351 00 lda pr7|2 xbc.real 003105 aa 6 00474 7551 00 sta pr6|316 003106 aa 6 00472 3521 00 epp2 pr6|314 003107 aa 6 00504 2521 00 spri2 pr6|324 003110 aa 6 00400 3521 00 epp2 pr6|256 divisor 003111 aa 6 00506 2521 00 spri2 pr6|326 003112 aa 7 00000 3521 00 epp2 pr7|0 xbc.real 003113 aa 6 00510 2521 00 spri2 pr6|328 003114 aa 6 00502 6211 00 eax1 pr6|322 003115 aa 014000 4310 07 fld 6144,dl 003116 aa 777527 3520 04 epp2 -169,ic 002645 = 000520627000 003117 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 339 call multiply_binary(ybc.imaginary, zbc.real, product1); 003120 aa 6 00032 3735 20 epp7 pr6|26,* 003121 aa 7 00002 3715 20 epp5 pr7|2,* 003122 aa 5 00004 3521 00 epp2 pr5|4 ybc.imaginary 003123 aa 6 00504 2521 00 spri2 pr6|324 003124 aa 7 00004 3521 20 epp2 pr7|4,* zbc.real 003125 aa 6 00506 2521 00 spri2 pr6|326 003126 aa 6 00372 3521 00 epp2 pr6|250 product1 003127 aa 6 00510 2521 00 spri2 pr6|328 003130 aa 6 00502 6211 00 eax1 pr6|322 003131 aa 014000 4310 07 fld 6144,dl 003132 aa 777256 3520 04 epp2 -338,ic 002410 = 000520627000 003133 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 340 call multiply_binary(ybc.real, zbc.imaginary, product2); 003134 aa 6 00032 3735 20 epp7 pr6|26,* 003135 aa 7 00002 3521 20 epp2 pr7|2,* ybc.real 003136 aa 6 00474 2521 00 spri2 pr6|316 003137 aa 7 00004 3715 20 epp5 pr7|4,* 003140 aa 5 00004 3521 00 epp2 pr5|4 zbc.imaginary 003141 aa 6 00476 2521 00 spri2 pr6|318 003142 aa 6 00375 3521 00 epp2 pr6|253 product2 003143 aa 6 00500 2521 00 spri2 pr6|320 003144 aa 6 00472 6211 00 eax1 pr6|314 003145 aa 014000 4310 07 fld 6144,dl 003146 aa 777242 3520 04 epp2 -350,ic 002410 = 000520627000 003147 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 341 call subtract_binary(product1, product2, xbc.imaginary); 003150 aa 6 00372 3521 00 epp2 pr6|250 product1 003151 aa 6 00504 2521 00 spri2 pr6|324 003152 aa 6 00375 3521 00 epp2 pr6|253 product2 003153 aa 6 00506 2521 00 spri2 pr6|326 003154 aa 6 00202 3735 20 epp7 pr6|130,* 003155 aa 7 00004 3521 00 epp2 pr7|4 xbc.imaginary 003156 aa 6 00510 2521 00 spri2 pr6|328 003157 aa 6 00502 6211 00 eax1 pr6|322 003160 aa 014000 4310 07 fld 6144,dl 003161 aa 776706 3520 04 epp2 -570,ic 002067 = 000520627000 003162 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 342 call divide_binary((xbc.imaginary), divisor, xbc.imaginary); 003163 aa 6 00202 3735 20 epp7 pr6|130,* 003164 aa 7 00004 2351 00 lda pr7|4 xbc.imaginary 003165 aa 7 00005 2361 00 ldq pr7|5 xbc.imaginary 003166 aa 6 00472 7571 00 staq pr6|314 003167 aa 7 00006 2351 00 lda pr7|6 xbc.imaginary 003170 aa 6 00474 7551 00 sta pr6|316 003171 aa 6 00472 3521 00 epp2 pr6|314 003172 aa 6 00504 2521 00 spri2 pr6|324 003173 aa 6 00400 3521 00 epp2 pr6|256 divisor 003174 aa 6 00506 2521 00 spri2 pr6|326 003175 aa 7 00004 3521 00 epp2 pr7|4 xbc.imaginary 003176 aa 6 00510 2521 00 spri2 pr6|328 003177 aa 6 00502 6211 00 eax1 pr6|322 003200 aa 014000 4310 07 fld 6144,dl 003201 aa 777444 3520 04 epp2 -220,ic 002645 = 000520627000 003202 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 343 end; END BLOCK 4 STATEMENT 1 ON LINE 344 return; 003203 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 345 end generic_math_; END PROCEDURE generic_math_ ----------------------------------------------------------- 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