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:
  • max_denominator (int)

  • method (Literal['farey', 'continued_fraction', 'stern_brocot'])

  • float_tolerance (float)

__init__(max_denominator=10000, method='farey', float_tolerance=1e-09)[source]

Initialize rational converter.

Parameters:
  • max_denominator (int) – Maximum denominator for rational approximation

  • method (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 approximation

  • method (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.

Parameters:
  • value (float) – Float value to convert

  • return_error (bool) – If True, return (fraction, error) tuple

Return type:

Union[Fraction, Tuple[Fraction, float]]

Returns:

Fraction approximation (or tuple with error if return_error=True)

convert_coefficients(coefficients)[source]

Convert dictionary of float coefficients to integers.

Parameters:

coefficients (dict[str, float]) – Dictionary mapping variable names to float coefficients

Return type:

tuple[dict[str, int], int]

Returns:

Tuple of (integer_coefficients, common_denominator)

compare_methods(value)[source]

Compare all three approximation methods for a given value.

Parameters:

value (float) – Float value to approximate

Return type:

dict[str, Tuple[Fraction, float, float]]

Returns:

Dictionary mapping method name to (fraction, error, computation_time)