root / pobysoPythonSage / src / sageSLZ / sageNumericalOperations.sage @ 282
Historique | Voir | Annoter | Télécharger (1,03 ko)
1 |
sys.stderr.write("sageNumericalOperations: loading...\n") |
---|---|
2 |
# |
3 |
def sno_abs_is_power_of_two(number): |
4 |
""" |
5 |
Check if the absolute value of a number is power of 2. |
6 |
As of Sage 7.1, the built-in is_power_of_two, only works with integer and |
7 |
returns false for negative ones. |
8 |
""" |
9 |
#return is_power_of_two(abs(number)) |
10 |
log2number = log(abs(number))/log(2) |
11 |
return log2number.n() == long(log2number.n()) |
12 |
# End sno_abs_is_power_of_two(number): |
13 |
# |
14 |
def sno_float_to_rat_pow_of_two_denom(number): |
15 |
""" |
16 |
Convert a floating-point number into a rational where the denominator |
17 |
is a power of two |
18 |
""" |
19 |
## Argument checking. |
20 |
if not number.is_real(): |
21 |
return None |
22 |
# |
23 |
(sign, mantissa, exponent) = number.sign_mantissa_exponent() |
24 |
#print sign, mantissa, exponent |
25 |
precision = number.prec() |
26 |
if sign == 1: |
27 |
return mantissa / 2^(-exponent) |
28 |
else: |
29 |
return -mantissa / 2^(-exponent) |
30 |
# End sno_float_to_rat_pow_of_two_denom. |
31 |
|
32 |
sys.stderr.write("\t...sageNumericalOperations loaded.\n") |