Beispiel #1
0
def lcim(numbers):
    """Returns the least common integral multiple of a list of numbers.

    The numbers can be rational or irrational or a mixture of both.
    `None` is returned for incommensurable numbers.

    Examples
    ========
    >>> from sympy import S, pi
    >>> from sympy.calculus.util import lcim
    >>> lcim([S(1)/2, S(3)/4, S(5)/6])
    15/2
    >>> lcim([2*pi, 3*pi, pi, pi/2])
    6*pi
    >>> lcim([S(1), 2*pi])
    """
    result = None
    if all(num.is_irrational for num in numbers):
        factorized_nums = list(map(lambda num: num.factor(), numbers))
        factors_num = list(
            map(lambda num: num.as_coeff_Mul(),
                factorized_nums))
        term = factors_num[0][1]
        if all(factor == term for coeff, factor in factors_num):
            common_term = term
            coeffs = [coeff for coeff, factor in factors_num]
            result = lcm_list(coeffs) * common_term

    elif all(num.is_rational for num in numbers):
        result = lcm_list(numbers)

    else:
        pass

    return result
Beispiel #2
0
def lcim(numbers):
    """Returns the least common integral multiple of a list of numbers.

    The numbers can be rational or irrational or a mixture of both.
    `None` is returned for incommensurable numbers.

    Examples
    ========
    >>> from sympy import S, pi
    >>> from sympy.calculus.util import lcim
    >>> lcim([S(1)/2, S(3)/4, S(5)/6])
    15/2
    >>> lcim([2*pi, 3*pi, pi, pi/2])
    6*pi
    >>> lcim([S(1), 2*pi])
    """
    result = None
    if all(num.is_irrational for num in numbers):
        factorized_nums = list(map(lambda num: num.factor(), numbers))
        factors_num = list(map(lambda num: num.as_coeff_Mul(), factorized_nums))
        term = factors_num[0][1]
        if all(factor == term for coeff, factor in factors_num):
            common_term = term
            coeffs = [coeff for coeff, factor in factors_num]
            result = lcm_list(coeffs)*common_term

    elif all(num.is_rational for num in numbers):
        result = lcm_list(numbers)

    else:
        pass

    return result
Beispiel #3
0
def d_from_primes_e(primes, e):
    # Classic school book implementation
    # d = modinv(e, (r1-1)*(r2-1)*(rn-1)...)
    p_minus_1 = [p - 1 for p in primes]
    d = long(modinv(e, sympy.lcm_list(p_minus_1)))
    return d
Beispiel #4
0
    test_values = {
            x: 6,
            y: 10,
            z: 14,
    }

    # test Lcm
    lhs = Lcm(x, y, z).subs(test_values)
    rhs = Lcm(*(v for k,v in test_values.items()))
    largs = list(lhs.args).sort()
    rargs = list(rhs.args).sort()
    assert largs == rargs
    assert \
            Lcm(x, y, z).subs(test_values).evalf() == \
            lcm_list(tuple(v for k,v in test_values.items())).evalf()
    assert \
            Lcm(x, y, z).evalf(subs=test_values) == \
            lcm_list(tuple(v for k,v in test_values.items())).evalf()

    # test Gcd
    lhs = Gcd(x, y, z).subs(test_values)
    rhs = Gcd(*(v for k,v in test_values.items()))
    largs = list(lhs.args).sort()
    rargs = list(rhs.args).sort()
    assert largs == rargs
    assert \
            Gcd(x, y, z).subs(test_values).evalf() == \
            gcd_list(tuple(v for k,v in test_values.items())).evalf()
    assert \
            Gcd(x, y, z).evalf(subs=test_values) == \