useDynLib(Rmpfr, .registration=TRUE)

exportClasses("mpfr1", "mpfr"
              , "mpfrArray"
              , "mpfrMatrix"

              , "atomicVector"
              , "array_or_vector"
              , "Mnumber"
)

export(
       ## ".Arith.codes"
       ## , ".Arith.mpfr.num"
       ## , ".Arith.num.mpfr"
       ## , ".Compare.codes"
       ## , ".Compare.codesRev"
       ## , ".Compare.mpfr.num"
       ## , ".Compare.num.mpfr"
       ## , ".Math.codes"
       ## , ".Math.gen"
       ## , ".Summary.codes"
       ## , ".abs.mpfr"
       ## , ".dimCheck"
       ## , ".getPrec"
       ".getSign"
       ## , ".mA.subAssign"
       ## , ".matmult.R"
       ## , ".mpfr.debug"
       ## , ".mpfr.negative"
       ## , ".mpfr.negative.R"
       ## , ".mpfr.repl"
       ## , ".mpfr.sign"
       ## , ".mpfr.subset"
       , ".mpfr2str"
       ## , ".mpfrA.subset"
       ## , ".mpfrVersion"
       ## , ".packageName"
       ## , ".print.mpfr"
       ## , ".requireCachedGenerics"
       ## .Call "Arith_d_mpfr"
       ## .Call "Arith_i_mpfr"
       ## .Call "Arith_mpfr"
       ## .Call "Arith_mpfr_d"
       ## .Call "Arith_mpfr_i"
       ## .Call "Compare_mpfr"
       ## .Call "Compare_mpfr_d"
       ## .Call "Compare_mpfr_i"
       , "Ai"
       , "Bernoulli"
       , "Const"
       , "Ei"
       , "Li2"
       ## .Call "Math_mpfr"
       ## .Call "R_mpfr_atan2"
       ## .Call "R_mpfr_beta"
       ## .Call "R_mpfr_choose"
       ## .Call "R_mpfr_fac"
       ## .Call "R_mpfr_get_default_prec"
       ## .Call "R_mpfr_get_version"
       ## .Call "R_mpfr_hypot"
       ## .Call "R_mpfr_is_finite"
       ## .Call "R_mpfr_is_infinite"
       ## .Call "R_mpfr_is_integer"
       ## .Call "R_mpfr_is_na"
       ## .Call "R_mpfr_is_zero"
       ## .Call "R_mpfr_jn"
       ## .Call "R_mpfr_lbeta"
       ## .Call "R_mpfr_poch"
       ## .Call "R_mpfr_round"
       ## .Call "R_mpfr_set_debug"
       ## .Call "R_mpfr_set_default_prec"
       ## .Call "R_mpfr_yn"
       ## .Call "Rmpfr_abs"
       ## .Call "Rmpfr_minus"
       ## .Call "Summary_mpfr"
       , "all.equal"
       , "aperm"
       , "apply" ## <- we make it S4 generic
       , "as.vector"
       , "atan2"
       , "beta" , "lbeta"
       ## S3 "c.mpfr"
       , "cbind"
       , "chooseMpfr", "chooseMpfr.all"
       ## .Call "const_asMpfr"
       , "crossprod"
       ## .Call "d2mpfr1"
       ## .Call "d2mpfr1_list"
       , "erf" , "erfc"
       , "factorial"
       , "factorialMpfr"
       , "format"
       , "formatMpfr"
       , "getD"
       , "getPrec"
       , "hypot"
       , "integrateR"
       , "is.whole"
       , "j0" , "j1" , "jn"
       , "mean"
       , "mpfr"
       , "mpfr.is.0"
       , "mpfr.is.integer"
       , "mpfr2array"
       ## .Call "mpfr2d"
       ## .Call "mpfr2i"
       ## .Call "mpfr2str"
       , "mpfrArray"
       , "mpfrVersion"
       , "mpfr_default_prec"
       , "pmax", "pmin"
       , "pnorm"
       , "pochMpfr"
       , "print.integrate"
       ## S3 "print.mpfr"
       ## S3 "print.mpfr1"
       ## S3 "print.mpfrArray"
       ## .Call "print_mpfr"
       ## .Call "print_mpfr1"
       , "rbind"
       , "roundMpfr"
       , "seqMpfr"
       ## .Call "str2mpfr1_list"
       , "t"
       , "tcrossprod"
       , "toNum"
       , "unique"
       , "unirootR"
       , "y0", "y1", "yn"
       , "zeta"
       )

exportMethods(
              ## "own generics":
              "apply",

              ## "other generics"
              "abs", "log", "sign"
              , "all.equal", "aperm"
              , "as.vector", "as.integer", "as.numeric"
              , "coerce", "coerce<-"
              , "cbind", "rbind"
              , "dim", "dim<-", "dimnames", "dimnames<-"
              , "atan2", "beta", "lbeta"
              , "factorial"
              , "is.finite", "is.infinite", "is.na", "is.nan"
              , "%*%", "crossprod", "tcrossprod", "t"
              , "format"
              , "mean", "pmax", "pmin"
              , "show", "unique"
              , "colSums", "colMeans"
              , "rowSums", "rowMeans"
)

S3method(c, mpfr)

S3method(as.array, mpfr)
S3method(as.matrix, mpfr)

S3method(print, mpfr)
S3method(print, mpfr1)
S3method(print, mpfrArray)
