scivex-core 0.1.1

Scivex — Tensors, linear algebra, FFT, and math primitives
Documentation

scivex-core

The foundation crate of the Scivex ecosystem. Provides N-dimensional tensors, linear algebra, FFT, and math primitives — all implemented from scratch with zero external dependencies for math.

Highlights

  • Tensor<T> — Dynamic N-dimensional array with row-major storage and broadcasting
  • BLAS Level 1-3dot, axpy, nrm2, gemv, gemm from scratch
  • Matrix decompositions — LU, QR, Cholesky, SVD, Eigendecomposition, Schur
  • Linear solverssolve(A, b), inv(A), det(A), lstsq(A, b)
  • Sparse matrices — COO, CSR, CSC formats with conversion and arithmetic
  • FFT — Real and complex transforms (Cooley-Tukey radix-2), IFFT
  • PRNG — xoshiro256** with normal/uniform/exponential sampling
  • Interpolation — Linear, polynomial, and cubic spline interpolation
  • Special functions — Gamma, beta, erf, bessel, and more
  • 35+ math functions — sin, cos, exp, ln, sqrt, abs, etc. (element-wise on tensors)
  • Generic — All operations generic over Scalar > Float > Real trait hierarchy

Usage

use scivex_core::prelude::*;

let a = Tensor::<f64>::from_vec(vec![1.0, 2.0, 3.0, 4.0], &[2, 2]);
let b = Tensor::<f64>::from_vec(vec![5.0, 6.0, 7.0, 8.0], &[2, 2]);

// Arithmetic with broadcasting
let c = &a + &b;

// Linear algebra
let lu = scivex_core::linalg::LuDecomposition::decompose(&a).unwrap();
let svd = scivex_core::linalg::SvdDecomposition::decompose(&a).unwrap();
let eig = scivex_core::linalg::EigenDecomposition::decompose(&a).unwrap();

// FFT
let spectrum = scivex_core::fft::rfft(&signal);

License

MIT