Numerical Representations¶
-
cdd.
get_number_type_from_value
(value)¶ Determine number type from a value.
Returns: 'fraction'
if the value isRational
orstr
, otherwise'float'
.Return type: str
-
cdd.
get_number_type_from_sequences
(*data)¶ Determine number type from sequences.
Returns: 'fraction'
if all elements areRational
orstr
, otherwise'float'
.Return type: str
-
class
cdd.
NumberTypeable
(number_type='float')¶ Base class for any class which admits different numerical representations.
Parameters: number_type ( str
) – The number type ('float'
or'fraction'
).
-
NumberTypeable.
make_number
(value)¶ Convert value into a number.
Parameters: value ( int
,float
, orstr
) – The value to convert.Returns: The converted value. Return type: NumberType
>>> nt = cdd.NumberTypeable('float') >>> print(repr(nt.make_number('2/3'))) # doctest: +ELLIPSIS 0.666666666... >>> nt = cdd.NumberTypeable('fraction') >>> print(repr(nt.make_number('2/3'))) # doctest: +ELLIPSIS Fraction(2, 3)
-
NumberTypeable.
number_str
(value)¶ Convert value into a string.
Parameters: value ( NumberType
) – The value.Returns: A string for the value. Return type: str
>>> numbers = ['4', '2/3', '1.6', '-9/6', 1.12] >>> nt = cdd.NumberTypeable('float') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_str(x)) # doctest: +ELLIPSIS 4.0 0.666666666... 1.6 -1.5 1.12 >>> nt = cdd.NumberTypeable('fraction') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_str(x)) 4 2/3 8/5 -3/2 1261007895663739/1125899906842624
-
NumberTypeable.
number_repr
(value)¶ Return representation string for value.
Parameters: value ( NumberType
) – The value.Returns: A string for the value. Return type: str
>>> numbers = ['4', '2/3', '1.6', '-9/6', 1.12] >>> nt = cdd.NumberTypeable('float') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_repr(x)) 4.0 0.666666666... 1.6... -1.5 1.12... >>> nt = cdd.NumberTypeable('fraction') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_repr(x)) 4 '2/3' '8/5' '-3/2' '1261007895663739/1125899906842624'
-
NumberTypeable.
number_cmp
(num1, num2=None)¶ Compare values. Type checking may not be performed, for speed. If num2 is not specified, then num1 is compared against zero.
Parameters: - num1 (
NumberType
) – First value. - num2 (
NumberType
) – Second value.
>>> a = cdd.NumberTypeable('float') >>> a.number_cmp(0.0, 5.0) -1 >>> a.number_cmp(5.0, 0.0) 1 >>> a.number_cmp(5.0, 5.0) 0 >>> a.number_cmp(1e-30) 0 >>> a = cdd.NumberTypeable('fraction') >>> a.number_cmp(0, 1) -1 >>> a.number_cmp(1, 0) 1 >>> a.number_cmp(0, 0) 0 >>> a.number_cmp(a.make_number(1e-30)) 1
- num1 (
-
NumberTypeable.
number_type
¶ The number type as string (
'float'
or'fraction'
).