useDynLib(npRmpi, .registration = TRUE)
import(stats, boot, cubature)
importFrom("grDevices", "boxplot.stats", "extendrange", "grey", "n2mfrow", "rgb", "trans3d")
importFrom("graphics", "axis", "legend", "lines", "mtext", "par", "persp", "plot", "plot.new", "plot.window", "points", "polygon", "arrows", "barplot", "bxp")
importFrom("utils", "combn", "flush.console", "object.size", "tail")
importFrom("methods", "is")
importFrom("parallel", "nextRNGStream", "detectCores")
importFrom("quantreg", "rq")
importFrom("quadprog", "solve.QP")
export(b.star
       ,dimBS
       ,.docall
       ,.force.type
       ,.mpi.undefined
       ,.simplify
       ,.splitIndices
       ,.typeindex
       ,lamhosts
       ,.mpi.worker.exec
       ,.mpi.worker.apply
       ,.mpi.worker.sim
       ,.mpi.worker.applyLB
       ,mpi.barrier
       ,mpi.bcast
       ,mpi.bcast.Robj
       ,mpi.bcast.Robj2slave
       ,mpi.bcast.cmd
       ,mpi.close.Rslaves
       ,mpi.comm.dup
       ,mpi.comm.free
       ,mpi.comm.rank
       ,mpi.comm.size
       ,mpi.get.version
       ,mpi.get.processor.name
       ,mpi.hostinfo
       ,mpi.quit
       ,slave.hostinfo
       ,string
       ,tailslave.log
       ,np.mpi.initialize
       ,npRmpi.init
       ,npRmpi.quit
       ,npRmpi.session.info
       ,npudensbw
       ,npudistbw
       ,npudens
       ,npudenshat
       ,npudisthat
	       ,npudist
	       ,npregbw
	       ,npreg
	       ,nplsqregbw
	       ,nplsqreg
	       ,npreghat
       ,npindexhat
       ,npplreghat
       ,npscoefhat
       ,npregiv
       ,npregivderiv       
       ,npplreg
       ,npplregbw
       ,npcdensbw
       ,npcdens
       ,npcdenshat
       ,npcdist
       ,npcdistbw
       ,npcdisthat
       ,npcopula
       ,npdeptest       
       ,npsdeptest
       ,npksum
       ,npqreg
       ,npquantile
       ,npcmstest
       ,npconmode
       ,npdeneqtest
       ,npindex
       ,npindexbw
       ,npqcmstest       
       ,npseed
       ,npuniden.boundary
       ,npuniden.reflect
       ,npuniden.sc
       ,np.pairs
       ,np.pairs.plot
       ,np_boot_control
       ,np_grid_control
       ,np_render_control
       ,npscoef
       ,npscoefbw
       ,npsigtest
       ,npsymtest
       ,npunitest       
       ,uocquantile
       ,se
       ,gradients
       ,nptgauss
       )

S3method(print,bandwidth)
S3method(print,dbandwidth)
S3method(print,npdensity)
S3method(print,npdistribution)
S3method(print,rbandwidth)
S3method(print,lsqregressionbandwidth)
S3method(print,npregression)
S3method(print,lsqregression)
S3method(print,npreghat)
S3method(print,plbandwidth)
S3method(print,plregression)
S3method(print,conbandwidth)
S3method(print,condbandwidth)
S3method(print,condensity)
S3method(print,condistribution)
S3method(print,npkernelsum)
S3method(print,qregression)
S3method(print,npregiv)
S3method(print,npregivderiv)
S3method(print,cmstest)
S3method(print,conmode)
S3method(print,npcopula)
S3method(print,deptest)
S3method(print,sdeptest)
S3method(print,sibandwidth)
S3method(print,singleindex)
S3method(print,sigtest)
S3method(print,scbandwidth)
S3method(print,smoothcoefficient)
S3method(print,symtest)
S3method(print,deneqtest)
S3method(print,unitest)
S3method(print,kbandwidth)
##


S3method(plot, bandwidth)
S3method(plot, dbandwidth)
S3method(plot, rbandwidth)
S3method(plot, conbandwidth)
S3method(plot, condbandwidth)
S3method(plot, plbandwidth)
S3method(plot, sibandwidth)
S3method(plot, scbandwidth)

S3method(plot, npdensity)
S3method(plot, npdistribution)
S3method(plot, npregression)
S3method(plot, lsqregression)
S3method(plot, npregiv)
S3method(plot, npregivderiv)
S3method(plot, plregression)
S3method(plot, condensity)
S3method(plot, condistribution)
S3method(plot, qregression)
S3method(plot, conmode)
S3method(plot,npcopula)
S3method(plot, singleindex)
S3method(plot, smoothcoefficient)

S3method(fitted, npdensity)
S3method(fitted, npdistribution)
S3method(fitted, npregression)
S3method(fitted, lsqregression)
S3method(fitted, plregression)
S3method(fitted, condensity)
S3method(fitted, condistribution)
S3method(fitted, conmode)
S3method(fitted, qregression)
S3method(fitted,npcopula)
S3method(fitted, singleindex)
S3method(fitted, smoothcoefficient)
S3method(as.data.frame,npcopula)

S3method(residuals, npregression)
S3method(residuals, lsqregression)
S3method(residuals, plregression)
S3method(residuals, singleindex)
S3method(residuals, smoothcoefficient)

S3method(coef, plregression)
S3method(coef, singleindex)
S3method(coef, sibandwidth)
S3method(coef, smoothcoefficient)

S3method(vcov, plregression)
S3method(vcov, singleindex)

S3method(predict, npregression)
S3method(predict, lsqregression)
S3method(predict, npreghat)
S3method(predict, bandwidth)
S3method(predict, dbandwidth)
S3method(predict, conbandwidth)
S3method(predict, condbandwidth)
S3method(predict, condensity)
S3method(predict, condistribution)
S3method(predict, conmode)
S3method(predict, npcopula)
S3method(predict, npdensity)
S3method(predict, npdistribution)
S3method(predict, plbandwidth)
S3method(predict, plregression)
S3method(predict, qregression)
S3method(predict, rbandwidth)
S3method(predict, scbandwidth)
S3method(predict, sibandwidth)
S3method(predict, singleindex)
S3method(predict, smoothcoefficient)

S3method(summary, bandwidth)
S3method(summary, dbandwidth)
S3method(summary, conbandwidth)
S3method(summary, condbandwidth)
S3method(summary, rbandwidth)
S3method(summary, lsqregressionbandwidth)
S3method(summary, plbandwidth)
S3method(summary, sibandwidth)
S3method(summary, scbandwidth)

S3method(summary, npdensity)
S3method(summary, npdistribution)
S3method(summary, condensity)
S3method(summary, condistribution)
S3method(summary, npregression)
S3method(summary, lsqregression)
S3method(summary, npregiv)
S3method(summary, npregivderiv)
S3method(summary, cmstest)
S3method(summary, conmode)
S3method(summary,npcopula)
S3method(summary, deptest)
S3method(summary, sdeptest)
S3method(summary, sigtest)
S3method(summary, plregression)
S3method(summary, qregression)
S3method(summary, singleindex)
S3method(summary, smoothcoefficient)
S3method(summary, symtest)
S3method(summary, deneqtest)
S3method(summary, unitest)

S3method(se, npdensity)
S3method(se, npdistribution)
S3method(se, condensity)
S3method(se, condistribution)
S3method(se, npregression)
S3method(se, lsqregression)
S3method(se, qregression)
S3method(se,npcopula)
S3method(se, singleindex)
S3method(se, smoothcoefficient)

S3method(gradients, condensity)
S3method(gradients, condistribution)
S3method(gradients, npregression)
S3method(gradients, lsqregression)
S3method(gradients, qregression)
S3method(gradients, conmode)
S3method(gradients, singleindex)

S3method(quantile, qregression)
S3method(quantile, lsqregression)

S3method(npudensbw, NULL)
S3method(npudensbw, formula)
S3method(npudensbw, default)
S3method(npudensbw, bandwidth)

S3method(as.double,bandwidth)
S3method(as.double,kbandwidth)

S3method(npudens, formula)
S3method(npudens, call)
S3method(npudens, default)
S3method(npudens, bandwidth)

S3method(npudistbw, NULL)
S3method(npudistbw, formula)
S3method(npudistbw, default)
S3method(npudistbw, dbandwidth)

S3method(as.double, dbandwidth)

S3method(npudist, formula)
S3method(npudist, call)
S3method(npudist, default)
S3method(npudist, dbandwidth)

S3method(npregbw, NULL)
S3method(npregbw, formula)
S3method(npregbw, default)
S3method(npregbw, rbandwidth)

S3method(npreg, formula)
S3method(npreg, call)
S3method(npreg, default)
S3method(npreg, rbandwidth)

S3method(nplsqregbw, NULL)
S3method(nplsqregbw, formula)
S3method(nplsqregbw, default)
S3method(nplsqregbw, lsqregressionbandwidth)

S3method(nplsqreg, NULL)
S3method(nplsqreg, formula)
S3method(nplsqreg, default)
S3method(nplsqreg, lsqregressionbandwidth)

S3method(npreghat, formula)
S3method(npreghat, call)
S3method(npreghat, default)
S3method(npreghat, rbandwidth)
S3method(npreghat, npregression)
S3method(npreghat, NULL)

S3method(npsigtest, formula)
S3method(npsigtest, call)
S3method(npsigtest, default)
S3method(npsigtest, npregression)
S3method(npsigtest, rbandwidth)

S3method(npplreg, formula)
S3method(npplreg, call)
S3method(npplreg, default)
S3method(npplreg, plbandwidth)

S3method(npplregbw, NULL)
S3method(npplregbw, formula)
S3method(npplregbw, default)
S3method(npplregbw, plbandwidth)

S3method(npcdensbw, NULL)
S3method(npcdensbw, formula)
S3method(npcdensbw, default)
S3method(npcdensbw, conbandwidth)

S3method(npcdens, formula)
S3method(npcdens, call)
S3method(npcdens, default)
S3method(npcdens, conbandwidth)

S3method(npcdist, formula)
S3method(npcdist, default)
S3method(npcdist, call)
S3method(npcdist, condbandwidth)

S3method(npcdistbw, NULL)
S3method(npcdistbw, formula)
S3method(npcdistbw, default)
S3method(npcdistbw, condbandwidth)

S3method(compute.bootstrap.errors, rbandwidth)
S3method(compute.bootstrap.errors, bandwidth)
S3method(compute.bootstrap.errors, dbandwidth)
S3method(compute.bootstrap.errors, conbandwidth)
S3method(compute.bootstrap.errors, condbandwidth)

S3method(npksum, integer)
S3method(npksum, numeric)
S3method(npksum, formula)
S3method(npksum, default)
S3method(kbandwidth, integer)
S3method(kbandwidth, numeric)
S3method(kbandwidth, default)

S3method(npqreg, formula)
S3method(npqreg, call)
S3method(npqreg, default)
S3method(npqreg, conbandwidth)
S3method(npqreg, condbandwidth)

S3method(npconmode, formula)
S3method(npconmode, call)
S3method(npconmode, default)
S3method(npconmode, conbandwidth)
S3method(npcopula, formula)
S3method(npcopula, default)

S3method(npindexbw, NULL)
S3method(npindexbw, formula)
S3method(npindexbw, default)
S3method(npindexbw, sibandwidth)

S3method(npscoefbw, NULL)
S3method(npscoefbw, formula)
S3method(npscoefbw, default)
S3method(npscoefbw, scbandwidth)

S3method(npindex, default)
S3method(npindex, call)
S3method(npindex, formula)
S3method(npindex, sibandwidth)

S3method(npscoef, default)
S3method(npscoef, call)
S3method(npscoef, formula)
S3method(npscoef, scbandwidth)

S3method(gsl.bs, default)
S3method(predict, npRmpi_gsl.bs)
