root / pobysoPythonSage / src / sageSLZ / sageNumericalOperations.sage @ 266
Historique | Voir | Annoter | Télécharger (952 octet)
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 |
The built-in is_power_of_two, works with many kinds of numbers but |
7 |
returns false for negative ones. |
8 |
""" |
9 |
return is_power_of_two(abs(number)) |
10 |
# End sno_abs_is_power_of_two(number): |
11 |
# |
12 |
def sno_float_to_rat_pow_of_two_denom(number): |
13 |
""" |
14 |
Convert a floating-point number into a rational where the denominator |
15 |
is a power of two |
16 |
""" |
17 |
## Argument checking. |
18 |
if not number.is_real(): |
19 |
return None |
20 |
# |
21 |
(sign, mantissa, exponent) = number.sign_mantissa_exponent() |
22 |
#print sign, mantissa, exponent |
23 |
precision = number.prec() |
24 |
if sign == 1: |
25 |
return mantissa / 2^(-exponent) |
26 |
else: |
27 |
return -mantissa / 2^(-exponent) |
28 |
# End sno_float_to_rat_pow_of_two_denom. |
29 |
|
30 |
sys.stderr.write("\t...sageNumericalOperations loaded.\n") |