polymerist.maths.fractions.continued

Representations and computation methods for continued fractions and ration approximations to real numbers

Attributes

Real

I

DEFAULT_INT_TYPE

DEFAULT_EPS

DEFAULT_TOL

Functions

continuant_matrix(...)

Homographic matrix for a evaluating the next continuant from a continued fraction coefficient

continued_fraction_to_continuants(...)

Fold a sequence of continued fraction coefficients into successive continuants (rational approximations)

real_to_continued_fraction_coeffs(→ Generator[int, ...)

Euclidean algorithm on a real number to produce the integral continued fraction coefficients

extended_euclidean_algorithm(→ tuple[int, int, int])

Compute the Extended Euclidean Algorithm between two integers "a" and "b"

rational_approxes(→ Generator[tuple[int, int], None, None])

Unfold a real number into its continued fraction representation, then generate successive continuants of it

best_rational_approx(→ tuple[int, int])

Provide a rational approximation to a value with the smallest denominator that is within some tolerance

Module Contents

type polymerist.maths.fractions.continued.Real = float | int
polymerist.maths.fractions.continued.I
polymerist.maths.fractions.continued.DEFAULT_INT_TYPE: Type
polymerist.maths.fractions.continued.DEFAULT_EPS = 1e-08
polymerist.maths.fractions.continued.DEFAULT_TOL = 1e-06
polymerist.maths.fractions.continued.continuant_matrix(a: int, int_type: I = DEFAULT_INT_TYPE) numpy.ndarray[polymerist.genutils.typetools.numpytypes.Shape[2, 2], int][source]

Homographic matrix for a evaluating the next continuant from a continued fraction coefficient

polymerist.maths.fractions.continued.continued_fraction_to_continuants(coeffs: Iterable[int], int_type: I = DEFAULT_INT_TYPE) Generator[tuple[int, int], None, None][source]

Fold a sequence of continued fraction coefficients into successive continuants (rational approximations)

polymerist.maths.fractions.continued.real_to_continued_fraction_coeffs(x: Real, eps: float = DEFAULT_EPS, int_type: I = DEFAULT_INT_TYPE) Generator[int, None, None][source]

Euclidean algorithm on a real number to produce the integral continued fraction coefficients

polymerist.maths.fractions.continued.extended_euclidean_algorithm(a: int, b: int, int_type: I = DEFAULT_INT_TYPE) tuple[int, int, int][source]

Compute the Extended Euclidean Algorithm between two integers “a” and “b” Returns the greatest common divisor of a and b, along with a pair of Bezout coefficients”x” and “y” which satisfy a*x + b*y = gcd(a, b)

polymerist.maths.fractions.continued.rational_approxes(x: Real, tol: float = DEFAULT_TOL, eps: float = DEFAULT_EPS) Generator[tuple[int, int], None, None][source]

Unfold a real number into its continued fraction representation, then generate successive continuants of it

polymerist.maths.fractions.continued.best_rational_approx(x: Real, tol: float = DEFAULT_TOL, eps: float = DEFAULT_EPS) tuple[int, int][source]

Provide a rational approximation to a value with the smallest denominator that is within some tolerance