|
|
1.1 ! root 1: # ! 2: # double frexp (value, eptr) ! 3: # double value; ! 4: # int *eptr; ! 5: # ! 6: # Frexp breaks "value" up into a fraction and an exponent. ! 7: # It stores the exponent indirectly through eptr, and ! 8: # returns the fraction. More specifically, after ! 9: # ! 10: # double d, frexp(); ! 11: # int e; ! 12: # d = frexp (x, &e); ! 13: # ! 14: # then |d| will be less than 1, and x will be equal to d*(2**e). ! 15: # Further, if x is not zero, d will be no less than 1/2, and if ! 16: # x is zero, both d and e will be zero too. ! 17: # ! 18: # ! 19: # Entry point ! 20: # ! 21: .text ! 22: .globl _frexp ! 23: _frexp: .word 0x0000 ! 24: ! 25: movd 4(ap),r0 # (r0,r1) := value ! 26: extzv $7,$8,r0,*12(ap) # Fetch exponent ! 27: jeql fr1 # If exponent zero, we're done ! 28: subl2 $128,*12(ap) # Bias the exponent appropriately ! 29: insv $128,$7,$8,r0 # Force the result exponent to biased 0 ! 30: fr1: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.