lumix.utils.rational.LXRationalConverter¶
- class lumix.utils.rational.LXRationalConverter(max_denominator=10000, method='farey', float_tolerance=1e-09)[source]¶
Converts floating-point coefficients to rational numbers for integer-only solvers.
Supports three approximation methods: - “farey”: Farey sequence with floor/ceil optimization (fastest, recommended) - “continued_fraction”: Continued fraction algorithm - “stern_brocot”: Stern-Brocot tree (equivalent to Farey, alternative framing)
- Parameters:
- __init__(max_denominator=10000, method='farey', float_tolerance=1e-09)[source]¶
Initialize rational converter.
- Parameters:
max_denominator (
int) – Maximum denominator for rational approximationmethod (
Literal['farey','continued_fraction','stern_brocot']) – Approximation algorithm (“farey”, “continued_fraction”, “stern_brocot”)float_tolerance (
float) – Tolerance for float comparisons to handle precision errors (default: 1e-9)
Methods
__init__([max_denominator, method, ...])Initialize rational converter.
compare_methods(value)Compare all three approximation methods for a given value.
convert_coefficients(coefficients)Convert dictionary of float coefficients to integers.
to_rational(value[, return_error])Convert float to rational number using configured method.
- __init__(max_denominator=10000, method='farey', float_tolerance=1e-09)[source]¶
Initialize rational converter.
- Parameters:
max_denominator (
int) – Maximum denominator for rational approximationmethod (
Literal['farey','continued_fraction','stern_brocot']) – Approximation algorithm (“farey”, “continued_fraction”, “stern_brocot”)float_tolerance (
float) – Tolerance for float comparisons to handle precision errors (default: 1e-9)
- to_rational(value, return_error=False)[source]¶
Convert float to rational number using configured method.