// deriv(). // General includes. #include "cl_sysdep.h" // Specification. #include "cln/univpoly.h" // Implementation. #include "cln/integer.h" namespace cln { const cl_UP deriv (const cl_UP& x) { // Method: // Write x = a0 T^0 + ... + an T^n. // Then deriv(x) = 1*a1 T^0 + ... + n*an T^(n-1) (= 0 if n <= 0). var cl_univpoly_ring UPR = x.ring(); var sintL n = degree(x); if (n <= 0) return UPR->zero(); else { var cl_UP y = UPR->create(n-1); for ( ; n > 0; n--) y.set_coeff(n-1, n * coeff(x,n)); y.finalize(); return y; } } } // namespace cln