MyNixOS website logo
Description

Solving Ax = b Nimbly in C++.

Routines for solving large systems of linear equations and eigenproblems in R. Direct and iterative solvers from the Eigen C++ library are made available. Solvers include Cholesky, LU, QR, and Krylov subspace methods (Conjugate Gradient, BiCGSTAB). Dense and sparse problems are supported.

sanic: Solving Ax = b Nimbly in C++

CRAN month total

Routines for solving large systems of linear equations in R. Direct and iterative solvers from the EigenC++ library are made available. Solvers include Cholesky, LU, QR, and Krylov subspace methods (Conjugate Gradient, BiCGSTAB). Both dense and sparse problems are supported.

Installation

sanic is available on CRAN. The development version can be installed from GitHub.

install.packages("sanic")
devtools::install_github("nk027/sanic")

Usage

To solve a linear system of equations, use the solve2() function for automatic dispatch to a specific solver or access the LU, QR, Cholesky or Conjugate Gradient solvers directly.

To solve an eigenproblem, use the eigen2() or svd2() functions, or the arnoldi() function.

Solvers

SolverFunctionNotesSparseReference
LU decompositionsolve_lu()Partial pivoting, full pivotingYes1, 2, 3
Householder QR decompositionsolve_qr()Column pivoting, full pivoting, no pivotingYes1, 2, 3, 4
Cholesky decompositionsolve_chol()LDLT for semidefinite problems, LLT for positive definite problemsYes1, 23, 4
Conjugate Gradient (CG)solve_cg()Biconjugate gradient stabilised (BiCGTAB) for square problems, least squares (LSCG) for rectangular problems, classic CG for symmetric positive definite problems, preconditionersAlways1, 2, 3

Eigenproblems

SolverFunctionNotesSparseReference
Spectral decompositioneigen2()Square and symmetric problemsNo1, 2
Singular value decompositionsvd2()Bidiagonal Divide and Conquer SVD for large and Jacobi SVD for small problemsNo1, 2
Arnoldi iterationarnoldi()Square problems using an iteratively constructed Hessenberg matrixAlways1
Lanczos algorithmlanczos()Symmetric problems using an iteratively constructed tridiagonal matrixAlways1
Metadata

Version

0.0.2

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows