useDynLib(polynomial, .registration = TRUE, .fixes = "C_")


importFrom(essentials, as.numbers, as.scalar.integer, as.scalar.logical,
    as.scalar.number, aslength1)
importClassesFrom(essentials, numbers)


exportClass(polynomial)
importFrom(methods, coerce)
exportMethods(coerce)


importFrom(graphics, par, lines, points)
importFrom(grDevices, dev.cur, extendrange)
importFrom(stats, coef, deriv, predict)


export(polynomial, as.polynomial, is.polynomial)
export(.polynomial)


S3method(is.numeric, polynomial)
S3method(is.complex, polynomial)


export(Abel, Bessel, rBessel, Hermite)
export(Chebyshev1, Chebyshev2, ChebyshevT, ChebyshevU)
export(gcd, pgcd, lcm, plcm, coprime, pcoprime)
export(Cyclotomic)


export(degree, exponents, "exponents<-")
export(as.body, integral, reduce)
export(plot.polynomial)
export("coef<-", "coefficients<-")


S3method("-"        , polynomial)
S3method("*"        , polynomial)
S3method("/"        , polynomial)
S3method("["        , polynomial)
S3method("[["       , polynomial)
S3method("^"        , polynomial)
S3method("+"        , polynomial)
S3method(as.function, polynomial)
S3method(as.list    , polynomial)
S3method(coef       , polynomial)
S3method(deriv      , polynomial)
S3method(plot       , polynomial)
S3method(points     , polynomial)
S3method(lines      , polynomial)
S3method(predict    , polynomial)
S3method(print      , polynomial)


S3method("coef<-"   , default)
