예제 #1
0
void fmpq_poly_derivative(fmpq_poly_t res, const fmpq_poly_t poly)
{
    slong len = poly->length;
    if (len < 2)
    {
        fmpq_poly_zero(res);
        return;
    }

    fmpq_poly_fit_length(res, len - 1);
    _fmpq_poly_derivative(res->coeffs, res->den, poly->coeffs, poly->den, len);
    _fmpq_poly_set_length(res, len - 1);
}
예제 #2
0
파일: log_series.c 프로젝트: goens/flint2
void _fmpq_poly_log_series(fmpz * g, fmpz_t gden, 
                           const fmpz * f, const fmpz_t fden, long n)
{
    fmpz * f_diff;
    fmpz * f_inv;
    fmpz_t f_diff_den;
    fmpz_t f_inv_den;

    f_diff = _fmpz_vec_init(n);
    f_inv = _fmpz_vec_init(n);
    fmpz_init(f_diff_den);
    fmpz_init(f_inv_den);

    _fmpq_poly_derivative(f_diff, f_diff_den, f, fden, n);
    _fmpq_poly_inv_series(f_inv, f_inv_den, f, fden, n);
    _fmpq_poly_mullow(g, gden, f_diff, f_diff_den, n - 1, f_inv, f_inv_den, n - 1, n - 1);
    _fmpq_poly_integral(g, gden, g, gden, n);

    _fmpz_vec_clear(f_diff, n);
    _fmpz_vec_clear(f_inv, n);
    fmpz_clear(f_diff_den);
    fmpz_clear(f_inv_den);
}