MathLib Docs MathLib Docs
MathLib Docs MathLib Docs

Search Results for

    Edit this page

    Class Q

    Represents the set of rational numbers, denoted by ℚ in mathematics.

    Inheritance
    object
    Q
    Qb
    Qp
    Implements
    IEquatable<Q>
    IComparable<Q>
    Inherited Members
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: MathLib
    Assembly: MathLib.dll
    Syntax
    public class Q : IEquatable<Q>, IComparable<Q>
    Remarks

    The set of rational numbers is defined as the set of all numbers that can be expressed as the quotient of two integers, where the denominator is non-zero. Formally:

    ℚ = {a / b | a ∈ ℤ, b ∈ ℤ, b ≠ 0}

    Rational numbers include integers, fractions, and terminating or repeating decimal expansions. Many operations, such as addition, subtraction, multiplication, and division (excluding division by zero) are closed within ℚ.

    Rational numbers can be embedded within the set of real numbers ℝ, and the set of p-adic numbers ℚₚ. They serve as the foundation for more complex number systems.

    In this library, the class Q represents the mathematical structure of rational numbers, and serves as a base for more advanced number fields like Qp and Cp.

    The class methods must never throw exceptions from arithmetic operations. Instead, they return NaN for undefined results (such as from divide by zero).

    Constructors

    | Edit this page View Source

    Q()

    Initializes a rational number for the default value zero.

    Declaration
    public Q()
    | Edit this page View Source

    Q(Q)

    Protected constructor that creates a copy of a Q object.

    Declaration
    protected Q(Q q)
    Parameters
    Type Name Description
    Q q
    | Edit this page View Source

    Q(BigInteger)

    Initializes a rational number with the specified integer value.

    Declaration
    public Q(BigInteger numerator)
    Parameters
    Type Name Description
    BigInteger numerator

    The integer value.

    | Edit this page View Source

    Q(BigInteger, BigInteger)

    Initializes a rational number with the specified numerator and denominator. The rational number is automatically normalized, meaning:

    Q will be simplified so the numerator and denominator is coprime.

    The sign of the number will always be carried by the numerator (denominator will be strictly positive).

    Declaration
    public Q(BigInteger numerator, BigInteger denominator)
    Parameters
    Type Name Description
    BigInteger numerator

    The numerator of the rational number.

    BigInteger denominator

    The denominator of the rational number.

    | Edit this page View Source

    Q(BigInteger, BigInteger, bool)

    Protected constructor for a rational number with the specified numerator and denominator.

    Declaration
    public Q(BigInteger numerator, BigInteger denominator, bool normalize)
    Parameters
    Type Name Description
    BigInteger numerator

    The numerator of the rational number.

    BigInteger denominator

    The denominator of the rational number.

    bool normalize

    Iff true, the rational number will be normalized to its simplest form.

    Remarks

    Caution: Setting normalize to false will result in a faulty object if any of the following conditions are not met:

    • The numerator and denominator are coprime (i.e., their greatest common divisor is 1).
    • The denominator is greater than 0.

    If unsure if above conditions hold, use the public constructor Q(BigInteger, BigInteger) instead.

    If you are sure above conditions hold, you can safely set normalize to false for significantly faster execution.

    Properties

    | Edit this page View Source

    Abs

    Gets the absolute value of the current rational number.

    Declaration
    public Q Abs { get; }
    Property Value
    Type Description
    Q

    A Q representing the absolute value of the current rational number. If the rational number is negative, a new Q instance is returned with the absolute value. If the rational number is non-negative, the current instance is returned.

    | Edit this page View Source

    Denominator

    The denominator of the rational number, guaranteed to be positive in normalized form.

    Declaration
    public BigInteger Denominator { get; }
    Property Value
    Type Description
    BigInteger
    | Edit this page View Source

    FractionalPart

    Declaration
    public Q FractionalPart { get; }
    Property Value
    Type Description
    Q

    The fractional part of the rational number, obtained by subtracting the integer part.

    | Edit this page View Source

    IntegralPart

    The integral (integer) part of a rational number

    Declaration
    public BigInteger IntegralPart { get; }
    Property Value
    Type Description
    BigInteger
    Remarks

    In general mathematics, the concept of "integral part" is not objectively defined, since it has two possible interpretations (or modes). These interpretations are defined by whether we regard the set of all pure fractions to include the number 1 or not. We denote these interpretations (modes) as FEO (Fractions Exclude One) and FIO (Fractions Include One), respectively.

    For instance, in decimal, the number 1 could have the following two interpretations:

    1 = 1.000000... (FEO)
                                                                                               1 = 0.999999... (FIO)

    In FEO the number 1 is a purely integral number, with integral part=1 and fractional part=0.

    In FIO the number 1 is a purely fractional number, with integral part=0 and fractional part=1.

    Irrespective of the mode, any number is always the sum of its integral and fractional parts.

    In FIO, all numbers will have a non-zero-terminating expansion.

    In FEO, any number that can terminate (with an ultimately infinite expansion of zeros) will do so.

    Only numbers with a period of 0, can have different representations in FIO and FEO.

    To make IntegralPart and FractionalPart well defined, yet allow access to both FIO and FEO, we assign FEO to all positive numbers, and FIO to all negative numbers and zero. This will make all members of Q have only one correct expansion.

    This whole logic is completely governed by the implementation of IntegralPart. Hence, we do not need to manage modes anywhere in the code base.

    To instead swap behavior (positive numbers = FIO and negative numbers = FEO) we can change IntegralPart to the following:

    public BigInteger IntegralPart =>
            IsPositiveInteger
                ? (Numerator / Denominator) - 1
                : (Numerator / Denominator);
    Examples
    Q ExpansionMode
    0.0000000000000000FEO=FIO, in any base
    1₂1.000000000000000FEO
    -1₂.1111111111111111FIO
    103/16₂110.0111000000000FEO
    -103/16₂110.0110111111111FIO
    5/24₂.0011010101010101FEO=FIO
    -5/24₂.0011010101010101FEO=FIO
    3/45₅.3333333333333333FEO=FIO
    -3/45₅.3333333333333333FEO=FIO
    537/11₃1210.211002110021FEO=FIO
    -537/11₃1210.211002110021FEO=FIO
    See Also
    ToStringExpanded(int)
    | Edit this page View Source

    IntegralPartAlwaysFEO

    This version always sets FEO mode.

    Declaration
    protected BigInteger IntegralPartAlwaysFEO { get; }
    Property Value
    Type Description
    BigInteger
    | Edit this page View Source

    IsInteger

    Indicates whether the rational number is an integer.

    Declaration
    public bool IsInteger { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsNaN

    Indicates whether the rational number is NaN (not a number), indicated by a zero denominator.

    Declaration
    public bool IsNaN { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsNegative

    Indicates whether the rational number is negative.

    Declaration
    public bool IsNegative { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsNegativeInteger

    Indicates whether the rational number is a negative integer.

    Declaration
    public bool IsNegativeInteger { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsNonZeroInteger

    Indicates whether the rational number is a non-zero integer.

    Declaration
    public bool IsNonZeroInteger { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsOne

    Indicates whether the rational number is equal to one.

    Declaration
    public bool IsOne { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsPositive

    Indicates whether the rational number is positive.

    Declaration
    public bool IsPositive { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsPositiveInteger

    Indicates whether the rational number is a positive integer.

    Declaration
    public bool IsPositiveInteger { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    IsUnitFraction

    Indicates whether the rational number is a unit fraction.

    Declaration
    public bool IsUnitFraction { get; }
    Property Value
    Type Description
    bool
    Remarks

    Unit fractions are strictly positive, meaning -1/10 is not a unit fraction.

    | Edit this page View Source

    IsZero

    Indicates whether the rational number is zero.

    Declaration
    public bool IsZero { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    NaN

    Declaration
    public static Q NaN { get; }
    Property Value
    Type Description
    Q

    Represents a NaN (not a number) denoting an invalid number. NaN is return value of operations that are not defined (e.g. when dividing by zero)

    | Edit this page View Source

    Numerator

    The numerator of the rational number.

    Declaration
    public BigInteger Numerator { get; }
    Property Value
    Type Description
    BigInteger
    | Edit this page View Source

    One

    Declaration
    public static Q One { get; }
    Property Value
    Type Description
    Q

    Represents the rational number one.

    | Edit this page View Source

    Reciprocal

    Reciprocal of this rational number.

    Declaration
    public Q Reciprocal { get; }
    Property Value
    Type Description
    Q
    Remarks

    The reciprocal of a rational number a/b is b/a. Returns NaN if the numerator is 0.

    | Edit this page View Source

    Sign

    Sign of the current rational number.

    Declaration
    public int Sign { get; }
    Property Value
    Type Description
    int

    An integer that indicates the sign of the current rational number. Returns -1 if the number is negative, 0 if the number is zero, and 1 if the number is positive.

    | Edit this page View Source

    Zero

    Declaration
    public static Q Zero { get; }
    Property Value
    Type Description
    Q

    Represents the rational number zero.

    Methods

    | Edit this page View Source

    Backward(int)

    Obsolete: This method is obsolete and will be removed.

    Declaration
    [Obsolete("This method is obsolete and will be removed")]
    public Q Backward(int base_)
    Parameters
    Type Name Description
    int base_
    Returns
    Type Description
    Q
    | Edit this page View Source

    Coeff(int)

    The value of the rational number in the specified base.

    Declaration
    public BigInteger Coeff(int base_)
    Parameters
    Type Name Description
    int base_

    The base to convert to.

    Returns
    Type Description
    BigInteger

    The coefficient of the rational number in the specified base.

    | Edit this page View Source

    Coefficients(int)

    Light version of Coefficients() that takes a rational number and a base.

    Declaration
    public IEnumerable<int> Coefficients(int base_)
    Parameters
    Type Name Description
    int base_

    The base to convert to.

    Returns
    Type Description
    IEnumerable<int>

    An enumerable sequence of integers representing the coefficients of the rational number in the specified base.

    Remarks

    This method does not require the costly creation of a Qb.

    See Also
    Coefficients()
    ShiftedFractions()
    | Edit this page View Source

    CompareTo(Q?)

    Compares the current rational number to another rational number.

    Declaration
    public int CompareTo(Q? other)
    Parameters
    Type Name Description
    Q other

    The rational number to compare with.

    Returns
    Type Description
    int

    An integer that indicates the relative order of the current rational number and the specified rational number.

    | Edit this page View Source

    CompareTo(int)

    Compares the current rational number to an int.

    Declaration
    public int CompareTo(int integer)
    Parameters
    Type Name Description
    int integer

    The int to compare with.

    Returns
    Type Description
    int

    An integer that indicates the relative order of the current rational number and integer.

    | Edit this page View Source

    CompareTo(BigInteger)

    Compares the current rational number to a BigInteger.

    Declaration
    public int CompareTo(BigInteger integer)
    Parameters
    Type Name Description
    BigInteger integer

    The BigInteger to compare with.

    Returns
    Type Description
    int

    An integer that indicates the relative order of the current rational number and the specified BigInteger.

    | Edit this page View Source

    Equals(Q?)

    Indicates whether the current rational number is equal to another rational number.

    Declaration
    public bool Equals(Q? other)
    Parameters
    Type Name Description
    Q other

    The rational number to compare with.

    Returns
    Type Description
    bool

    true iff the current rational number is equal to the specified rational number.

    | Edit this page View Source

    Equals(object?)

    Indicates whether the current instance is equal to a specified object.

    Declaration
    public override bool Equals(object? obj)
    Parameters
    Type Name Description
    object obj

    The object to compare with the current instance.

    Returns
    Type Description
    bool

    true iff the current instance is equal to the specified object obj.

    Overrides
    object.Equals(object)
    | Edit this page View Source

    Forward(int)

    Obsolete: This method is obsolete and will be removed.

    Declaration
    [Obsolete("This method is obsolete and will be removed")]
    public Q Forward(int base_)
    Parameters
    Type Name Description
    int base_
    Returns
    Type Description
    Q
    | Edit this page View Source

    GetHashCode()

    Returns the hash code for the current instance.

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    int

    A hash code for the current instance.

    Overrides
    object.GetHashCode()
    | Edit this page View Source

    GetPAdicPreperiodic(Q, BaseInt, int)

    Declaration
    public static BaseInt GetPAdicPreperiodic(Q pAdicPreperiodicQ, BaseInt pAryPreperiodic, int firstExponent)
    Parameters
    Type Name Description
    Q pAdicPreperiodicQ
    BaseInt pAryPreperiodic
    int firstExponent
    Returns
    Type Description
    BaseInt
    | Edit this page View Source

    InBase(int)

    Extends the current rational number to a Qb with the specified base.

    Declaration
    public Qb InBase(int base_)
    Parameters
    Type Name Description
    int base_

    The base to convert to.

    Returns
    Type Description
    Qb

    A new Qb representing the current rational number in the specified base.

    | Edit this page View Source

    IntegralPartSelective(bool)

    This version selects between FIO and FEO mode.

    Declaration
    protected BigInteger IntegralPartSelective(bool fio)
    Parameters
    Type Name Description
    bool fio

    If true FIO mode, otherwise FEO mode

    Returns
    Type Description
    BigInteger
    Remarks

    This property needs to replace the existing version to come in to effect. Current implementation is provided only to give an understanding.

    | Edit this page View Source

    Negation(bool)

    Conditionally negates the current rational number.

    Declaration
    public Q Negation(bool negate)
    Parameters
    Type Name Description
    bool negate

    A boolean value indicating whether to negate the rational number.

    Returns
    Type Description
    Q

    A new Q representing the negative value if negate is true; otherwise, returns the current instance.

    | Edit this page View Source

    PAdicInterpretation(BaseInt, BaseInt, int)

    Declaration
    public static Q PAdicInterpretation(BaseInt pAdicPreperiodic, BaseInt pAdicPeriodic, int firstExponent = 0)
    Parameters
    Type Name Description
    BaseInt pAdicPreperiodic
    BaseInt pAdicPeriodic
    int firstExponent
    Returns
    Type Description
    Q
    | Edit this page View Source

    PAdicPeriodic(BaseInt, int)

    Declaration
    public static Q PAdicPeriodic(BaseInt pAdicPeriodic, int firstPeriodicExponent)
    Parameters
    Type Name Description
    BaseInt pAdicPeriodic
    int firstPeriodicExponent
    Returns
    Type Description
    Q
    | Edit this page View Source

    PAdicPreperiodic(BaseInt, int)

    Declaration
    public static Q PAdicPreperiodic(BaseInt pAdicPreperiodic, int firstExponent = 0)
    Parameters
    Type Name Description
    BaseInt pAdicPreperiodic
    int firstExponent
    Returns
    Type Description
    Q
    | Edit this page View Source

    PAryInterpretation(bool, BaseInt, BaseInt, int)

    Returns a Q from the given parts of a base-specific expansion.

    Declaration
    public static Q PAryInterpretation(bool negative, BaseInt pAryPreperiodic, BaseInt pAryPeriodic, int firstExponent = -1)
    Parameters
    Type Name Description
    bool negative

    A boolean indicating if the number is negative.

    BaseInt pAryPreperiodic

    The preperiodic part as an integer.

    BaseInt pAryPeriodic

    The periodic part as an integer.

    int firstExponent

    The exponent index of the first coefficient of the number.

    Returns
    Type Description
    Q

    A new Q representing the rational number derived from the given parts.

    Remarks

    This method derives the Numerator and Denominator from the given parameters.

    | Edit this page View Source

    PAryPeriodic(bool, BaseInt, int)

    Declaration
    public static Q PAryPeriodic(bool negative, BaseInt pAryPeriodic, int firstPeriodicExponent)
    Parameters
    Type Name Description
    bool negative
    BaseInt pAryPeriodic
    int firstPeriodicExponent
    Returns
    Type Description
    Q
    | Edit this page View Source

    PAryPreperiodic(bool, BaseInt, int)

    Declaration
    public static Q PAryPreperiodic(bool negative, BaseInt pAryPreperiodic, int firstExponent = -1)
    Parameters
    Type Name Description
    bool negative
    BaseInt pAryPreperiodic
    int firstExponent
    Returns
    Type Description
    Q
    | Edit this page View Source

    Pow(Q)

    Raises the current rational number to the power of the given exponent.

    Declaration
    public Q Pow(Q exponent)
    Parameters
    Type Name Description
    Q exponent

    The exponent to which to raise the current rational number.

    Returns
    Type Description
    Q

    A new rational number representing the result of the exponentiation.

    | Edit this page View Source

    Pow(int)

    Raises the current rational number to the power of the given integer exponent.

    Declaration
    public Q Pow(int exponent)
    Parameters
    Type Name Description
    int exponent

    The integer exponent to which to raise the current rational number.

    Returns
    Type Description
    Q

    A new rational number representing the result of the exponentiation.

    | Edit this page View Source

    ShiftedFractions(int)

    Light version of ShiftedFractions() that takes a rational number and a base.

    Declaration
    public IEnumerable<(BigInteger Integer, Q Fraction)> ShiftedFractions(int base_)
    Parameters
    Type Name Description
    int base_

    The base to convert to.

    Returns
    Type Description
    IEnumerable<(BigInteger Integer, Q Fraction)>

    An enumerable sequence of tuples, where each tuple contains the integer part and the fractional part of the rational number in the specified base.

    Remarks

    This method does not require the costly creation of a Qb.

    See Also
    ShiftedFractions()
    | Edit this page View Source

    Square()

    Returns the square of the current rational number.

    Declaration
    public Q Square()
    Returns
    Type Description
    Q

    A new rational number representing the square of the current rational number.

    | Edit this page View Source

    ToString()

    Returns the default string representation of the rational number

    Declaration
    public override string ToString()
    Returns
    Type Description
    string
    Overrides
    object.ToString()
    | Edit this page View Source

    ToStringCanonical()

    Returns the rational number as a simple canonical representation in base 10.

    Declaration
    public string ToStringCanonical()
    Returns
    Type Description
    string

    A string representing the rational number (in base 10) in the format "numerator/denominator" or just "numerator" if the denominator is 1.

    Remarks

    An NaN rational number will yield the string NaN

    Examples
    Console.WriteLine(new Q(-4,5).ToStringCanonical()); 
    //outputs "-4/5"
    | Edit this page View Source

    ToStringFactorization()

    Converts the factorization of the rational number to a string representation.

    Declaration
    public string ToStringFactorization()
    Returns
    Type Description
    string

    A string representing the factorization of the rational number.

    | Edit this page View Source

    ToStringFinite(int)

    Declaration
    public string ToStringFinite(int base_)
    Parameters
    Type Name Description
    int base_
    Returns
    Type Description
    string
    | Edit this page View Source

    TryCastToInt32(out int)

    Attempts to cast the rational number to a 32-bit integer, if possible.

    Declaration
    public bool TryCastToInt32(out int result)
    Parameters
    Type Name Description
    int result

    The resulting 32-bit integer if the cast is successful.

    Returns
    Type Description
    bool

    true iff the cast is successful.

    Operators

    | Edit this page View Source

    operator +(Q, Q)

    Sum of two rational numbers.

    Declaration
    public static Q operator +(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first term.

    Q b

    The second term.

    Returns
    Type Description
    Q

    A new rational number representing the sum of a and b.

    | Edit this page View Source

    operator +(Q, BigInteger)

    Sum of a rational number and an integer.

    Declaration
    public static Q operator +(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    A rational number denoting the first term.

    BigInteger integer

    A BigInteger denoting the second term.

    Returns
    Type Description
    Q

    A new rational number representing the sum of q and integer.

    | Edit this page View Source

    operator +(BigInteger, Q)

    Sum of an integer and a rational number.

    Declaration
    public static Q operator +(BigInteger integer, Q q)
    Parameters
    Type Name Description
    BigInteger integer

    A BigInteger denoting the first term.

    Q q

    A rational number denoting the second term.

    Returns
    Type Description
    Q

    A new rational number representing the sum of integer and q.

    | Edit this page View Source

    operator --(Q)

    Decrements this rational number by one.

    Declaration
    public static Q operator --(Q a)
    Parameters
    Type Name Description
    Q a

    The rational number to decrement.

    Returns
    Type Description
    Q

    A new rational number representing the result of the decrement.

    | Edit this page View Source

    operator /(Q, Q)

    Quotient of two rational numbers.

    Declaration
    public static Q operator /(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The dividend.

    Q b

    The divisor.

    Returns
    Type Description
    Q

    A new rational number representing the quotient of a and b.

    | Edit this page View Source

    operator /(Q, BigInteger)

    Quotient of a rational number and an integer.

    Declaration
    public static Q operator /(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    A rational number denoting the dividend.

    BigInteger integer

    A BigInteger denoting the divisor.

    Returns
    Type Description
    Q

    A new rational number representing the quotient of q and integer.

    | Edit this page View Source

    operator /(BigInteger, Q)

    Quotient of am integer and rational number.

    Declaration
    public static Q operator /(BigInteger integer, Q q)
    Parameters
    Type Name Description
    BigInteger integer

    A BigInteger denoting the dividend.

    Q q

    A rational number denoting the divisor.

    Returns
    Type Description
    Q

    A new rational number representing the quotient of integer and q.

    | Edit this page View Source

    operator ==(Q, Q)

    Indicates whether two rational numbers are equal.

    Declaration
    public static bool operator ==(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first rational number.

    Q b

    The second rational number.

    Returns
    Type Description
    bool

    true iff the two rational numbers are equal.

    | Edit this page View Source

    operator ==(Q, int)

    Indicates whether the current rational number is equal to a specified int.

    Declaration
    public static bool operator ==(Q q, int integer)
    Parameters
    Type Name Description
    Q q

    The rational number to compare.

    int integer

    The int to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is equal to the specified integer.

    | Edit this page View Source

    operator ==(Q, BigInteger)

    Indicates whether the current rational number is equal to a specified BigInteger.

    Declaration
    public static bool operator ==(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    The rational number to compare.

    BigInteger integer

    The BigInteger to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is equal to integer.

    | Edit this page View Source

    operator >(Q, Q)

    Indicates whether the current rational number is greater than another rational number.

    Declaration
    public static bool operator >(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first rational number.

    Q b

    The second rational number.

    Returns
    Type Description
    bool

    true iff the current rational number is greater than the specified rational number.

    | Edit this page View Source

    operator >(Q, int)

    Indicates whether the current rational number is greater than a specified int.

    Declaration
    public static bool operator >(Q q, int integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    int integer

    The int to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is greater than the specified integer.

    | Edit this page View Source

    operator >(Q, BigInteger)

    Indicates whether the current rational number is greater than a BigInteger.

    Declaration
    public static bool operator >(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    BigInteger integer

    The BigInteger to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is greater than the specified integer.

    | Edit this page View Source

    operator >=(Q, Q)

    Indicates whether the current rational number is greater than or equal to another rational number.

    Declaration
    public static bool operator >=(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first rational number.

    Q b

    The second rational number.

    Returns
    Type Description
    bool

    true iff the current rational number is greater than or equal to the specified rational number.

    | Edit this page View Source

    operator >=(Q, int)

    Indicates whether the current rational number is greater than or equal to a specified int.

    Declaration
    public static bool operator >=(Q q, int integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    int integer

    The int to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is greater than or equal to integer.

    | Edit this page View Source

    operator >=(Q, BigInteger)

    Indicates whether the current rational number is greater than or equal to a BigInteger.

    Declaration
    public static bool operator >=(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    BigInteger integer

    The BigInteger to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is greater than or equal to the specified integer.

    | Edit this page View Source

    operator ++(Q)

    Increments this rational number by one.

    Declaration
    public static Q operator ++(Q a)
    Parameters
    Type Name Description
    Q a

    The rational number to increment.

    Returns
    Type Description
    Q

    A new rational number representing the result of the increment.

    | Edit this page View Source

    operator !=(Q, Q)

    Indicates whether two rational numbers are not equal.

    Declaration
    public static bool operator !=(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first rational number.

    Q b

    The second rational number.

    Returns
    Type Description
    bool

    true iff the two rational numbers are not equal.

    | Edit this page View Source

    operator !=(Q, int)

    Indicates whether the current rational number is not equal to a specified int.

    Declaration
    public static bool operator !=(Q q, int integer)
    Parameters
    Type Name Description
    Q q

    The rational number to compare.

    int integer

    The int to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is not equal to integer.

    | Edit this page View Source

    operator !=(Q, BigInteger)

    Indicates whether the current rational number is not equal to a specified BigInteger.

    Declaration
    public static bool operator !=(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    The rational number to compare.

    BigInteger integer

    The BigInteger to compare.

    Returns
    Type Description
    bool

    true if the current rational number is not equal to the specified integer.

    | Edit this page View Source

    operator <<(Q, int)

    Performs a left bitwise shift on the current rational number.

    Declaration
    public static Q operator <<(Q a, int shift)
    Parameters
    Type Name Description
    Q a

    The rational number to shift.

    int shift

    The number of bits to shift. A positive value shifts left, a negative value shifts right.

    Returns
    Type Description
    Q

    A new rational number representing the result of the shift operation.

    Remarks

    If shift is negative, the shift direction will be reversed, making this operation equivalent to a right shift. This behavior mirrors the standard behavior of the C# operators << and >> for integral types, where negative values reverse the shift direction.

    | Edit this page View Source

    operator <(Q, Q)

    Indicates whether the current rational number is less than another rational number.

    Declaration
    public static bool operator <(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first rational number.

    Q b

    The second rational number.

    Returns
    Type Description
    bool

    true iff the current rational number is less than the specified rational number.

    | Edit this page View Source

    operator <(Q, int)

    Indicates whether the current rational number is less than an int.

    Declaration
    public static bool operator <(Q q, int integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    int integer

    The int to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is less than integer.

    | Edit this page View Source

    operator <(Q, BigInteger)

    Indicates whether the current rational number is less than a BigInteger.

    Declaration
    public static bool operator <(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    BigInteger integer

    The BigInteger to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is less than the specified integer.

    | Edit this page View Source

    operator <=(Q, Q)

    Indicates whether the current rational number is less than or equal to another rational number.

    Declaration
    public static bool operator <=(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first rational number.

    Q b

    The second rational number.

    Returns
    Type Description
    bool

    true iff the current rational number is less than or equal to the specified rational number

    | Edit this page View Source

    operator <=(Q, int)

    Indicates whether the current rational number is less than or equal to an int.

    Declaration
    public static bool operator <=(Q q, int integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    int integer

    The int to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is less than or equal to the specified integer.

    | Edit this page View Source

    operator <=(Q, BigInteger)

    Indicates whether the current rational number is less than or equal to a BigInteger.

    Declaration
    public static bool operator <=(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    The current rational number.

    BigInteger integer

    The BigInteger to compare.

    Returns
    Type Description
    bool

    true iff the current rational number is less than or equal to the specified integer.

    | Edit this page View Source

    operator %(Q, Q)

    Performs the modulus operation on two rational numbers.

    Declaration
    public static Q operator %(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The left operand.

    Q b

    The right operand.

    Returns
    Type Description
    Q

    The modulus of a and b as a Q.

    Remarks

    The formula for the modulus operation is:

    (a_n / a_d) % (b_n / b_d) = ((a_n * b_d) % (a_d * b_n)) / (a_d * b_d)

    where a_n and a_d are the numerator and denominator of a respectively, and b_n and b_d are the numerator and denominator of b respectively.

    | Edit this page View Source

    operator *(Q, Q)

    Product of two rational numbers.

    Declaration
    public static Q operator *(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The first factor.

    Q b

    The second factor.

    Returns
    Type Description
    Q

    A new rational number representing the product of a and b.

    | Edit this page View Source

    operator *(Q, BigInteger)

    Product of a rational number and an integer.

    Declaration
    public static Q operator *(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    A rational number denoting the first factor.

    BigInteger integer

    A BigInteger denoting the second factor.

    Returns
    Type Description
    Q

    A new rational number representing the product of q and integer.

    | Edit this page View Source

    operator *(BigInteger, Q)

    Product of an integer and a rational number.

    Declaration
    public static Q operator *(BigInteger integer, Q q)
    Parameters
    Type Name Description
    BigInteger integer

    A BigInteger denoting the first factor.

    Q q

    A rational number denoting the second factor.

    Returns
    Type Description
    Q

    A new rational number representing the product of integer and q .

    | Edit this page View Source

    operator >>(Q, int)

    Performs a right bitwise shift on the current rational number.

    Declaration
    public static Q operator >>(Q a, int shift)
    Parameters
    Type Name Description
    Q a

    The rational number to shift.

    int shift

    The number of bits to shift. A positive value shifts right, a negative value shifts left.

    Returns
    Type Description
    Q

    A new rational number representing the result of the shift operation.

    Remarks

    If shift is negative, the shift direction will be reversed, making this operation equivalent to a left shift. This behavior mirrors the standard behavior of the C# operators << and >> for integral types, where negative values reverse the shift direction.

    | Edit this page View Source

    operator -(Q, Q)

    Difference of two rational numbers.

    Declaration
    public static Q operator -(Q a, Q b)
    Parameters
    Type Name Description
    Q a

    The minuend.

    Q b

    The subtrahend.

    Returns
    Type Description
    Q

    A new rational number representing the difference between a and b.

    | Edit this page View Source

    operator -(Q, BigInteger)

    Difference of a rational number and an integer.

    Declaration
    public static Q operator -(Q q, BigInteger integer)
    Parameters
    Type Name Description
    Q q

    A rational number denoting the minuend.

    BigInteger integer

    A BigInteger denoting the subtrahend.

    Returns
    Type Description
    Q

    A new rational number representing the difference of q and integer.

    | Edit this page View Source

    operator -(BigInteger, Q)

    Difference of an integer and a rational number.

    Declaration
    public static Q operator -(BigInteger integer, Q q)
    Parameters
    Type Name Description
    BigInteger integer

    A BigInteger denoting the minuend.

    Q q

    A rational number denoting the subtrahend.

    Returns
    Type Description
    Q

    A new rational number representing the difference of integer and q.

    | Edit this page View Source

    operator -(Q)

    Negation of this rational number.

    Declaration
    public static Q operator -(Q a)
    Parameters
    Type Name Description
    Q a

    The rational number to negate.

    Returns
    Type Description
    Q

    A new rational number representing the negated value.

    Implements

    IEquatable<T>
    IComparable<T>