tenferro_linalg_prims/backend/faer_backend/
mod.rs1use faer::linalg::solvers::Solve;
4use num_complex::{Complex32, Complex64};
5use tenferro_device::{Error, Result};
6
7use super::LinalgBackend;
8
9mod complex;
10mod conversion;
11mod helpers;
12mod real;
13
14use conversion::{from_faer_c32_mat, from_faer_c64_mat, to_faer_c32, to_faer_c64};
15
16pub(crate) use helpers::{
17 check_len, complex_is_finite, non_finite_result_error, singular_matrix_error,
18 zero_diagonal_error,
19};
20
21#[derive(Debug, Clone)]
23pub struct FaerBackend;
24
25impl FaerBackend {
26 pub fn new() -> Self {
27 Self
28 }
29}
30
31impl Default for FaerBackend {
32 fn default() -> Self {
33 Self::new()
34 }
35}
36
37real::upstream::impl_linalg_backend!(f64);
38real::upstream::impl_linalg_backend!(f32);
39complex::upstream::impl_complex_linalg_backend!(Complex64, f64, to_faer_c64, from_faer_c64_mat);
40complex::upstream::impl_complex_linalg_backend!(Complex32, f32, to_faer_c32, from_faer_c32_mat);