import(methods)
importFrom("bigmemory", "typeof")
importFrom("bigmemory", "filebacked.big.matrix")
importFrom("utils", "capture.output")

#S4 methods
exportMethods("%*%")
exportMethods("Arith")

#Functions
# Copy a matrix
# Y := X
export("dcopy")
# Vector addition
# Y := X + Y
export("dadd")
# Swap contents of two vectors
export("dswap")
# Multiply by a scalar
# Y := ALPHA * Y
export("dscal")
# Add two matrices.
# Y := ALPHA * X + Y
export("daxpy")
# Matrix Multiply
# C := ALPHA * op(A) * op(B) + BETA * C
export("dgemm")
# QR factorization
# return 0 if successful, -i if ith argument has illegal value
export("dgeqrf")
# Cholesky factorization
# return 0 if successful, <0 if -i-th argument is invalid, > 0 if leading minor
# is not positive definite
export("dpotrf")
# General eigenvalue
# return 0 if successful, <0 i-th argument has illegal value, >0 QR 
# algorithm failed.
# for now, VL and VR have to be matrices but they could be NULL
export("dgeev")
# Singular value decomposition (SVD)
# Returns: = 0 if successful
#          < 0 if INFO = -i had an illegal value
#          > 0 if DBDSDC did not converge
export("dgesdd")
export("dset")
export("dvcal")
export("dsub")
export("ddot")
export("dqddot")
export("dhprod")
export("dsqrt")
export("dxyz")
export("dsum")
export("dasum")
export("dnrm2")
export("dprdct")
export("idmin")
export("idmax")
export("idamin")
export("idamax")
export("dsymm")

# #' @useDynLib bigalgebra, .registration = TRUE
useDynLib(bigalgebra, .registration = TRUE)
