mod add;
#[cfg(feature = "ndarrayl")]
mod add_ndarray;
mod add_vec;
mod conj;
#[cfg(feature = "ndarrayl")]
mod conj_ndarray;
mod conj_vec;
mod div;
#[cfg(feature = "ndarrayl")]
mod div_ndarray;
mod div_vec;
mod dot;
#[cfg(feature = "ndarrayl")]
mod dot_ndarray;
mod dot_vec;
#[cfg(feature = "ndarrayl")]
mod eye_ndarray;
mod eye_vec;
#[cfg(feature = "ndarrayl")]
mod inv_ndarray;
mod mul;
#[cfg(feature = "ndarrayl")]
mod mul_ndarray;
mod mul_vec;
mod norm;
#[cfg(feature = "ndarrayl")]
mod norm_ndarray;
mod norm_vec;
mod scaledadd;
#[cfg(feature = "ndarrayl")]
mod scaledadd_ndarray;
mod scaledadd_vec;
mod scaledsub;
#[cfg(feature = "ndarrayl")]
mod scaledsub_ndarray;
mod scaledsub_vec;
mod sub;
#[cfg(feature = "ndarrayl")]
mod sub_ndarray;
mod sub_vec;
mod transpose;
#[cfg(feature = "ndarrayl")]
mod transpose_ndarray;
mod transpose_vec;
mod weighteddot;
mod zero;
#[cfg(feature = "ndarrayl")]
mod zero_ndarray;
mod zero_vec;
mod random_vec;
mod minmax_vec;
pub use crate::core::math::add::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::add_ndarray::*;
pub use crate::core::math::add_vec::*;
pub use crate::core::math::conj::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::conj_ndarray::*;
pub use crate::core::math::conj_vec::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::div_ndarray::*;
pub use crate::core::math::dot::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::dot_ndarray::*;
pub use crate::core::math::dot_vec::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::eye_ndarray::*;
pub use crate::core::math::eye_vec::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::inv_ndarray::*;
pub use crate::core::math::mul::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::mul_ndarray::*;
pub use crate::core::math::mul_vec::*;
pub use crate::core::math::norm::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::norm_ndarray::*;
pub use crate::core::math::norm_vec::*;
pub use crate::core::math::scaledadd::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::scaledadd_ndarray::*;
pub use crate::core::math::scaledadd_vec::*;
pub use crate::core::math::scaledsub::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::scaledsub_ndarray::*;
pub use crate::core::math::scaledsub_vec::*;
pub use crate::core::math::sub::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::sub_ndarray::*;
pub use crate::core::math::sub_vec::*;
pub use crate::core::math::transpose::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::transpose_ndarray::*;
pub use crate::core::math::transpose_vec::*;
pub use crate::core::math::weighteddot::*;
pub use crate::core::math::zero::*;
#[cfg(feature = "ndarrayl")]
pub use crate::core::math::zero_ndarray::*;
pub use crate::core::math::zero_vec::*;
pub use crate::core::math::random_vec::*;
pub use crate::core::math::minmax_vec::*;
use crate::core::Error;
pub trait ArgminDot<T, U> {
fn dot(&self, other: &T) -> U;
}
pub trait ArgminWeightedDot<T, U, V> {
fn weighted_dot(&self, w: &V, vec: &T) -> U;
}
pub trait ArgminZero {
fn zero() -> Self;
}
pub trait ArgminConj {
fn conj(&self) -> Self;
}
pub trait ArgminZeroLike {
fn zero_like(&self) -> Self;
}
pub trait ArgminEye {
fn eye(n: usize) -> Self;
fn eye_like(&self) -> Self;
}
pub trait ArgminAdd<T, U> {
fn add(&self, other: &T) -> U;
}
pub trait ArgminSub<T, U> {
fn sub(&self, other: &T) -> U;
}
pub trait ArgminMul<T, U> {
fn mul(&self, other: &T) -> U;
}
pub trait ArgminDiv<T, U> {
fn div(&self, other: &T) -> U;
}
pub trait ArgminScaledAdd<T, U, V> {
fn scaled_add(&self, factor: &U, vec: &T) -> V;
}
pub trait ArgminScaledSub<T, U, V> {
fn scaled_sub(&self, factor: &U, vec: &T) -> V;
}
pub trait ArgminNorm<U> {
fn norm(&self) -> U;
}
pub trait ArgminTranspose {
fn t(self) -> Self;
}
pub trait ArgminInv<T> {
fn inv(&self) -> Result<T, Error>;
}
pub trait ArgminRandom {
fn rand_from_range(min: &Self, max: &Self) -> Self;
}
pub trait ArgminMinMax {
fn min(x: &Self, y: &Self) -> Self;
fn max(x: &Self, y: &Self) -> Self;
}