Lines Matching refs:IS

13 # THE SOFTWARE is provided on an "AS IS" basis and without warranty.
5035 #--SAVE FPCR, FP1. CHECK IF |X| IS TOO SMALL OR LARGE
5054 #--THIS IS THE USUAL CASE, |X| <= 15 PI.
5055 #--THE ARGUMENT REDUCTION IS DONE BY TABLE LOOK UP.
5068 # A1 IS THE ADDRESS OF N*PIBY2
5069 # ...WHICH IS IN TWO PIECES Y1 & Y2
5076 #--GET N+ADJN AND SEE IF SIN(R) OR COS(R) IS NEEDED
5078 add.l ADJN(%a6),%d1 # SEE IF D0 IS ODD OR EVEN
5079 ror.l &1,%d1 # D0 WAS ODD IFF D0 IS NEGATIVE
5084 #--THEN WE RETURN SGN*SIN(R). SGN*SIN(R) IS COMPUTED BY
5094 fmov.x %fp0,X(%a6) # X IS R
5095 fmul.x %fp0,%fp0 # FP0 IS S
5101 fmul.x %fp1,%fp1 # FP1 IS T
5106 eor.l %d1,X(%a6) # X IS NOW R'= SGN*R
5137 #--THEN WE RETURN SGN*COS(R). SGN*COS(R) IS COMPUTED BY
5143 #--WHILE B2 AND B3 ARE IN DOUBLE-EXTENDED FORMAT, B1 IS -1/2
5144 #--AND IS THEREFORE STORED AS SINGLE PRECISION.
5148 fmul.x %fp0,%fp0 # FP0 IS S
5154 fmul.x %fp1,%fp1 # FP1 IS T
5156 fmov.x %fp0,X(%a6) # X IS S
5163 eor.l %d1,X(%a6) # X IS NOW S'= SGN*S
5168 or.l &0x3F800000,%d1 # D0 IS SGN IN SINGLE
5265 #--THIS IS THE USUAL CASE, |X| <= 15 PI.
5266 #--THE ARGUMENT REDUCTION IS DONE BY TABLE LOOK UP.
5281 fsub.s (%a1),%fp0 # FP0 IS R = (X-Y1)-Y2
5288 cmp.l %d1,&0 # D0 < 0 IFF N IS ODD
5296 fmul.x %fp0,%fp0 # FP0 IS S = R*R
5370 fmul.x %fp0,%fp0 # FP0 IS S = R*R
5471 #--WHEN REDUCEX IS USED, THE CODE WILL INEVITABLY BE SLOW.
5472 #--THIS REDUCTION METHOD, HOWEVER, IS MUCH FASTER THAN USING
5473 #--THE REMAINDER INSTRUCTION WHICH IS NOW IN SOFTWARE.
5508 #--ON ENTRY, FP0 IS X, ON RETURN, FP0 IS X REM PI/2, |X| <= PI/4.
5528 #--FIND THE REMAINDER OF (R,r) W.R.T. 2**L * (PI/2). L IS SO CHOSEN
5546 #--WILL BE TOO INEFFICIENT. THE WAY AROUND IT IS THAT
5554 fadd.s TWOTO63(%a6),%fp2 # THE FRACTIONAL PART OF FP1 IS ROUNDED
5691 #--TERM IN SGL. NOTE THAT PI IS 64-BIT LONG, THUS N*PI/2 IS AT
5784 #--THIS IS THE USUAL CASE, |X| <= 15 PI.
5785 #--THE ARGUMENT REDUCTION IS DONE BY TABLE LOOK UP.
5798 fsub.s (%a1),%fp0 # FP0 IS R = (X-Y1)-Y2
5902 #--WHEN REDUCEX IS USED, THE CODE WILL INEVITABLY BE SLOW.
5903 #--THIS REDUCTION METHOD, HOWEVER, IS MUCH FASTER THAN USING
5904 #--THE REMAINDER INSTRUCTION WHICH IS NOW IN SOFTWARE.
5939 #--ON ENTRY, FP0 IS X, ON RETURN, FP0 IS X REM PI/2, |X| <= PI/4.
5959 #--FIND THE REMAINDER OF (R,r) W.R.T. 2**L * (PI/2). L IS SO CHOSEN
5977 #--WILL BE TOO INEFFICIENT. THE WAY AROUND IT IS THAT
5985 fadd.s TWOTO63(%a6),%fp2 # THE FRACTIONAL PART OF FP1 IS ROUNDED
6249 #--ENTRY POINT FOR ATAN(X), HERE X IS FINITE, NON-ZERO, AND NOT NAN'S
6268 #--THE IDEA IS ATAN(X) = ATAN(F) + ATAN( [X-F] / [1+XF] ).
6269 #--SO IF F IS CHOSEN TO BE CLOSE TO X AND ATAN(F) IS STORED IN
6270 #--A TABLE, ALL WE NEED IS TO APPROXIMATE ATAN(U) WHERE
6271 #--U = (X-F)/(1+XF) IS SMALL (REMEMBER F IS CLOSE TO X). IT IS
6272 #--TRUE THAT A DIVIDE IS NOW NEEDED, BUT THE APPROXIMATION FOR
6273 #--ATAN(U) IS A VERY SHORT POLYNOMIAL AND THE INDEXING TO
6275 #--DIVIDE. IN THE END THIS METHOD IS MUCH FASTER THAN A TRADITIONAL
6283 #--THAT IS IT MATCHES THE EXPONENT AND FIRST 5 BITS OF X, THE
6284 #--SIXTH BITS IS SET TO BE 1. SINCE K = -4, -3, ..., 3, THERE
6285 #--ARE ONLY 8 TIMES 16 = 2^7 = 128 |F|'S. SINCE ATAN(-|F|) IS
6292 mov.l &0x00000000,XFRACLO(%a6) # LOCATION OF X IS NOW F
6294 fmov.x %fp0,%fp1 # FP1 IS X
6295 fmul.x X(%a6),%fp1 # FP1 IS X*F, NOTE THAT X*F > 0
6296 fsub.x X(%a6),%fp0 # FP0 IS X-F
6297 fadd.s &0x3F800000,%fp1 # FP1 IS 1 + X*F
6298 fdiv.x %fp1,%fp0 # FP0 IS U = (X-F)/(1+X*F)
6300 #--WHILE THE DIVISION IS TAKING ITS TIME, WE FETCH ATAN(|F|)
6316 mov.l (%a1)+,ATANFLO(%a6) # ATANF IS NOW ATAN(|F|)
6319 or.l %d1,ATANF(%a6) # ATANF IS NOW SIGN(F)*ATAN(|F|)
6323 #--BUT ALAS, THE DIVIDE IS STILL CRANKING!
6327 #--THE POLYNOMIAL MAY LOOK STRANGE, BUT IS NEVERTHELESS CORRECT.
6328 #--THE NATURAL FORM IS U + U*V*(A1 + V*(A2 + V*A3))
6329 #--WHAT WE HAVE HERE IS MERELY A1 = A3, A2 = A1/A3, A3 = A2/A3.
6330 #--THE REASON FOR THIS REARRANGEMENT IS TO MAKE THE INDEPENDENT
6353 #--|X| IS IN d0 IN COMPACT FORM. FP1, d0 SAVED.
6354 #--FP0 IS X AND |X| <= 1/16 OR |X| >= 16.
6362 #--WHICH IS X + X*Y*( [B1+Z*(B3+Z*B5)] + [Y*(B2+Z*(B4+Z*B6)] )
6371 fmul.x %fp0,%fp0 # FPO IS Y = X*X
6374 fmul.x %fp1,%fp1 # FP1 IS Z = Y*Y
6427 fdiv.x %fp0,%fp1 # FP1 IS -1/X
6429 #--DIVIDE IS STILL CRANKING
6431 fmov.x %fp1,%fp0 # FP0 IS X'
6432 fmul.x %fp0,%fp0 # FP0 IS Y = X'*X'
6433 fmov.x %fp1,X(%a6) # X IS REALLY X'
6436 fmul.x %fp1,%fp1 # FP1 IS Z = Y*Y
6549 #--THIS IS THE USUAL CASE, |X| < 1
6642 #--THIS IS THE USUAL CASE, |X| < 1
7166 fmul.x %fp1,%fp1 # fp1 IS S = R*R
7168 fmov.s &0x3AB60B70,%fp2 # fp2 IS A5
7170 fmul.x %fp1,%fp2 # fp2 IS S*A5
7172 fmul.s &0x3C088895,%fp3 # fp3 IS S*A4
7174 fadd.d EEXPA3(%pc),%fp2 # fp2 IS A3+S*A5
7175 fadd.d EEXPA2(%pc),%fp3 # fp3 IS A2+S*A4
7177 fmul.x %fp1,%fp2 # fp2 IS S*(A3+S*A5)
7182 fmul.x %fp1,%fp3 # fp3 IS S*(A2+S*A4)
7184 fadd.s &0x3F000000,%fp2 # fp2 IS A1+S*(A3+S*A5)
7185 fmul.x %fp0,%fp3 # fp3 IS R*S*(A2+S*A4)
7187 fmul.x %fp1,%fp2 # fp2 IS S*(A1+S*(A3+S*A5))
7188 fadd.x %fp3,%fp0 # fp0 IS R+R*S*(A2+S*A4),
7329 fmul.x %fp1,%fp1 # fp1 IS S = R*R
7331 fmov.s &0x3950097B,%fp2 # fp2 IS a6
7333 fmul.x %fp1,%fp2 # fp2 IS S*A6
7335 fmul.s &0x3AB60B6A,%fp3 # fp3 IS S*A5
7337 fadd.d EM1A4(%pc),%fp2 # fp2 IS A4+S*A6
7338 fadd.d EM1A3(%pc),%fp3 # fp3 IS A3+S*A5
7343 fmul.x %fp1,%fp2 # fp2 IS S*(A4+S*A6)
7346 fmul.x %fp1,%fp3 # fp3 IS S*(A3+S*A5)
7348 fadd.d EM1A2(%pc),%fp2 # fp2 IS A2+S*(A4+S*A6)
7349 fadd.s &0x3F000000,%fp3 # fp3 IS A1+S*(A3+S*A5)
7351 fmul.x %fp1,%fp2 # fp2 IS S*(A2+S*(A4+S*A6))
7356 fmul.x %fp3,%fp1 # fp1 IS S*(A1+S*(A3+S*A5))
7358 fmul.x %fp0,%fp2 # fp2 IS R*S*(A2+S*(A4+S*A6))
7359 fadd.x %fp1,%fp0 # fp0 IS R+S*(A1+S*(A3+S*A5))
7361 fadd.x %fp2,%fp0 # fp0 IS EXP(R)-1
7632 #--THIS IS THE USUAL CASE, |X| < 16380 LOG2
7641 bsr setox # FP0 IS EXP(|X|)
7745 #--THIS IS THE USUAL CASE, |X| < 16380 LOG2
7754 bsr setoxm1 # FP0 IS Z = EXPM1(Y)
7873 #--THIS IS THE USUAL CASE
7882 fmov.x X(%a6),%fp0 # FP0 IS Y = 2|X|
7888 bsr setoxm1 # FP0 IS Z = EXPM1(Y)
7926 bsr setox # FP0 IS EXP(Y)
8227 #--FPCR SAVED AND CLEARED, INPUT IS 2^(ADJK)*FP0, FP0 CONTAINS
8237 cmp.l %d1,&0 # CHECK IF X IS NEGATIVE
8238 blt.w LOGNEG # LOG OF NEGATIVE ARGUMENT IS INVALID
8239 # X IS POSITIVE, CHECK IF X IS NEAR 1
8240 cmp.l %d1,&0x3ffef07d # IS X < 15/16?
8242 cmp.l %d1,&0x3fff8841 # IS X > 17/16?
8250 #--THE IDEA IS THAT LOG(X) = K*LOG2 + LOG(Y)
8252 #--NOTE THAT U = (Y-F)/F IS VERY SMALL AND THUS APPROXIMATING
8254 #--ALSO NOTE THAT THE VALUE 1/F IS STORED IN A TABLE SO THAT NO
8255 #--DIVISION IS NEEDED TO CALCULATE (Y-F)/F.
8260 sub.l &0x3FFF,%d1 # THIS IS K
8265 #--WHILE THE CONVERSION IS GOING ON, WE GET F AND ADDRESS OF 1/F
8266 mov.l &0x3FFF0000,X(%a6) # X IS NOW Y, I.E. 2^(-K)*X
8274 asr.l &4,%d1 # SHIFTED 20, D0 IS THE DISPLACEMENT
8275 add.l %d1,%a0 # A0 IS THE ADDRESS FOR 1/F
8281 fmovm.x &0xc,-(%sp) # SAVE FP2-3 WHILE FP0 IS NOT READY
8282 #--SUMMARY: FP0 IS Y-F, A0 IS ADDRESS OF 1/F, FP1 IS K
8287 fmul.x (%a0),%fp0 # FP0 IS U = (Y-F)/F
8288 fmul.x LOGOF2(%pc),%fp1 # GET K*LOG2 WHILE FP0 IS NOT READY
8290 fmul.x %fp2,%fp2 # FP2 IS V=U*U
8293 #--LOG(1+U) IS APPROXIMATED BY
8294 #--U + V*(A1+U*(A2+U*(A3+U*(A4+U*(A5+U*A6))))) WHICH IS
8321 fadd.x %fp1,%fp0 # FP0 IS LOG(F) + LOG(1+U)
8338 fsub.s one(%pc),%fp1 # FP1 IS X-1
8339 fadd.s one(%pc),%fp0 # FP0 IS X+1
8340 fadd.x %fp1,%fp1 # FP1 IS 2(X-1)
8341 #--LOG(X) = LOG(1+U/2)-LOG(1-U/2) WHICH IS AN ODD POLYNOMIAL
8345 #--THIS IS AN RE-ENTRY POINT FOR LOGNP1
8346 fdiv.x %fp0,%fp1 # FP1 IS U
8353 fmul.x %fp0,%fp0 # FP0 IS V
8356 fmul.x %fp1,%fp1 # FP1 IS W
8372 fmul.x SAVEU(%a6),%fp0 # FP0 IS U*V
8383 #--REGISTERS SAVED FPCR. LOG(-VE) IS INVALID
8463 fmov.x %fp0,%fp1 # FP1 IS INPUT Z
8470 cmp.l %d1,&0x3ffe8000 # IS BOUNDS [1/2,3/2]?
8474 #--IF 1+Z > 3/2 OR 1+Z < 1/2, THEN X, WHICH IS ROUNDING 1+Z,
8488 fadd.x %fp1,%fp1 # FP1 IS 2Z
8489 fadd.s one(%pc),%fp0 # FP0 IS 1+X
8496 #--PRESERVE ALL THE INFORMATION. BECAUSE 1+Z IS IN [1/2,3/2],
8521 fadd.x %fp1,%fp0 # FP0 IS Y-F = (2-F)+2Z
8522 lea LOGTBL(%pc),%a0 # A0 IS ADDRESS OF 1/F
8524 fmov.s negone(%pc),%fp1 # FP1 IS K = -1
8537 fadd.x %fp1,%fp0 # FP0 IS Y-F
8540 add.l %d1,%a0 # A0 IS ADDRESS OF 1/F
8541 fmov.s zero(%pc),%fp1 # FP1 IS K = 0
8545 #--FPCR SAVED. D0 IS X IN COMPACT FORM.
8616 #--THIS IS THE USUAL CASE, |X| < 1
8993 #--ENTRY POINT FOR 2**(X), HERE X IS FINITE, NON-ZERO, AND NOT NAN'S
9022 and.l &0x3F,%d1 # D0 IS J
9025 asr.l &6,%d2 # d2 IS L, N = 64L + J
9027 asr.l &1,%d1 # D0 IS M
9028 sub.l %d1,%d2 # d2 IS M', N = 64(M+M') + J
9031 #--SUMMARY: a1 IS ADDRESS FOR THE LEADING PORTION OF 2^(J/64),
9032 #--D0 IS M WHERE N = 64(M+M') + J. NOTE THAT |M| <= 16140 BY DESIGN.
9050 fmul.x LOG2(%pc),%fp0 # FP0 IS R
9060 #--|X| IS SMALL, RETURN 1 + X
9067 #--|X| IS LARGE, GENERATE OVERFLOW IF X > 0; ELSE GENERATE UNDERFLOW
9090 #--ENTRY POINT FOR 10**(X), HERE X IS FINITE, NON-ZERO, AND NOT NAN'S
9119 and.l &0x3F,%d1 # D0 IS J
9122 asr.l &6,%d2 # d2 IS L, N = 64L + J
9124 asr.l &1,%d1 # D0 IS M
9125 sub.l %d1,%d2 # d2 IS M', N = 64(M+M') + J
9128 #--SUMMARY: a1 IS ADDRESS FOR THE LEADING PORTION OF 2^(J/64),
9129 #--D0 IS M WHERE N = 64(M+M') + J. NOTE THAT |M| <= 16140 BY DESIGN.
9152 fmul.x LOG10(%pc),%fp0 # FP0 IS R
9159 #--FP0 IS R. THE FOLLOWING CODE COMPUTES
9163 fmul.x %fp1,%fp1 # FP1 IS S = R*R
9165 fmov.d EXPA5(%pc),%fp2 # FP2 IS A5
9166 fmov.d EXPA4(%pc),%fp3 # FP3 IS A4
9168 fmul.x %fp1,%fp2 # FP2 IS S*A5
9169 fmul.x %fp1,%fp3 # FP3 IS S*A4
9171 fadd.d EXPA3(%pc),%fp2 # FP2 IS A3+S*A5
9172 fadd.d EXPA2(%pc),%fp3 # FP3 IS A2+S*A4
9174 fmul.x %fp1,%fp2 # FP2 IS S*(A3+S*A5)
9175 fmul.x %fp1,%fp3 # FP3 IS S*(A2+S*A4)
9177 fadd.d EXPA1(%pc),%fp2 # FP2 IS A1+S*(A3+S*A5)
9178 fmul.x %fp0,%fp3 # FP3 IS R*S*(A2+S*A4)
9180 fmul.x %fp1,%fp2 # FP2 IS S*(A1+S*(A3+S*A5))
9181 fadd.x %fp3,%fp0 # FP0 IS R+R*S*(A2+S*A4)
9182 fadd.x %fp2,%fp0 # FP0 IS EXP(R) - 1