Ejemplo n.º 1
0
def polymul(a1, a2, *, trim_leading_zeros=False):
    _check_arraylike("polymul", a1, a2)
    a1, a2 = _promote_dtypes_inexact(a1, a2)
    if trim_leading_zeros and (len(a1) > 1 or len(a2) > 1):
        a1, a2 = trim_zeros(a1, trim='f'), trim_zeros(a2, trim='f')
    if len(a1) == 0:
        a1 = asarray([0], dtype=a2.dtype)
    if len(a2) == 0:
        a2 = asarray([0], dtype=a1.dtype)
    return convolve(a1, a2, mode='full')
Ejemplo n.º 2
0
def poly(seq_of_zeros):
    _check_arraylike('poly', seq_of_zeros)
    seq_of_zeros, = _promote_dtypes_inexact(seq_of_zeros)
    seq_of_zeros = atleast_1d(seq_of_zeros)

    sh = seq_of_zeros.shape
    if len(sh) == 2 and sh[0] == sh[1] and sh[0] != 0:
        # import at runtime to avoid circular import
        from jax._src.numpy import linalg
        seq_of_zeros = linalg.eigvals(seq_of_zeros)

    if seq_of_zeros.ndim != 1:
        raise ValueError("input must be 1d or non-empty square 2d array.")

    dt = seq_of_zeros.dtype
    if len(seq_of_zeros) == 0:
        return ones((), dtype=dt)

    a = ones((1, ), dtype=dt)
    for k in range(len(seq_of_zeros)):
        a = convolve(a, array([1, -seq_of_zeros[k]], dtype=dt), mode='full')

    return a