use super::super::MatrixNormOrder;
use super::super::decompositions::*;
use crate::error::{Error, Result};
use crate::runtime::Runtime;
use crate::tensor::Tensor;
pub trait LinearAlgebraAlgorithms<R: Runtime> {
fn lu_decompose(&self, a: &Tensor<R>) -> Result<LuDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::lu_decompose",
})
}
fn cholesky_decompose(&self, a: &Tensor<R>) -> Result<CholeskyDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::cholesky_decompose",
})
}
fn qr_decompose(&self, a: &Tensor<R>) -> Result<QrDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::qr_decompose",
})
}
fn qr_decompose_thin(&self, a: &Tensor<R>) -> Result<QrDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::qr_decompose_thin",
})
}
fn solve(&self, a: &Tensor<R>, b: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::solve",
})
}
fn solve_triangular_lower(
&self,
l: &Tensor<R>,
b: &Tensor<R>,
unit_diagonal: bool,
) -> Result<Tensor<R>> {
let _ = (l, b, unit_diagonal);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::solve_triangular_lower",
})
}
fn solve_triangular_upper(&self, u: &Tensor<R>, b: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (u, b);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::solve_triangular_upper",
})
}
fn lstsq(&self, a: &Tensor<R>, b: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::lstsq",
})
}
fn inverse(&self, a: &Tensor<R>) -> Result<Tensor<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::inverse",
})
}
fn det(&self, a: &Tensor<R>) -> Result<Tensor<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::det",
})
}
fn trace(&self, a: &Tensor<R>) -> Result<Tensor<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::trace",
})
}
fn diag(&self, a: &Tensor<R>) -> Result<Tensor<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::diag",
})
}
fn diagflat(&self, a: &Tensor<R>) -> Result<Tensor<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::diagflat",
})
}
fn kron(&self, a: &Tensor<R>, b: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::kron",
})
}
fn triu(&self, a: &Tensor<R>, diagonal: i64) -> Result<Tensor<R>> {
let _ = (a, diagonal);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::triu",
})
}
fn tril(&self, a: &Tensor<R>, diagonal: i64) -> Result<Tensor<R>> {
let _ = (a, diagonal);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::tril",
})
}
fn slogdet(&self, a: &Tensor<R>) -> Result<SlogdetResult<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::slogdet",
})
}
fn solve_banded(
&self,
ab: &Tensor<R>,
b: &Tensor<R>,
kl: usize,
ku: usize,
) -> Result<Tensor<R>> {
let _ = (ab, b, kl, ku);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::solve_banded",
})
}
fn khatri_rao(&self, a: &Tensor<R>, b: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::khatri_rao",
})
}
fn matrix_rank(&self, a: &Tensor<R>, tol: Option<f64>) -> Result<Tensor<R>> {
let _ = (a, tol);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::matrix_rank",
})
}
fn matrix_norm(&self, a: &Tensor<R>, ord: MatrixNormOrder) -> Result<Tensor<R>> {
let _ = (a, ord);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::matrix_norm",
})
}
fn svd_decompose(&self, a: &Tensor<R>) -> Result<SvdDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::svd_decompose",
})
}
fn eig_decompose_symmetric(&self, a: &Tensor<R>) -> Result<EigenDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::eig_decompose_symmetric",
})
}
fn eig_decompose(&self, a: &Tensor<R>) -> Result<GeneralEigenDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::eig_decompose",
})
}
fn schur_decompose(&self, a: &Tensor<R>) -> Result<SchurDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::schur_decompose",
})
}
fn pinverse(&self, a: &Tensor<R>, rcond: Option<f64>) -> Result<Tensor<R>> {
let _ = (a, rcond);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::pinverse",
})
}
fn cond(&self, a: &Tensor<R>) -> Result<Tensor<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::cond",
})
}
fn cov(&self, a: &Tensor<R>, ddof: Option<usize>) -> Result<Tensor<R>> {
let _ = (a, ddof);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::cov",
})
}
fn corrcoef(&self, a: &Tensor<R>) -> Result<Tensor<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::corrcoef",
})
}
fn rsf2csf(&self, schur: &SchurDecomposition<R>) -> Result<ComplexSchurDecomposition<R>> {
let _ = schur;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::rsf2csf",
})
}
fn qz_decompose(
&self,
a: &Tensor<R>,
b: &Tensor<R>,
) -> Result<GeneralizedSchurDecomposition<R>> {
let _ = (a, b);
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::qz_decompose",
})
}
fn polar_decompose(&self, a: &Tensor<R>) -> Result<PolarDecomposition<R>> {
let _ = a;
Err(Error::NotImplemented {
feature: "LinearAlgebraAlgorithms::polar_decompose",
})
}
}