pub trait Scalar:
Clone
+ Copy
+ Zero
+ One
+ Add<Output = Self>
+ Sub<Output = Self>
+ Mul<Output = Self>
+ Div<Output = Self>
+ Neg<Output = Self>
+ Default
+ Send
+ Sync
+ BlasMul
+ 'static {
// Required methods
fn conj(self) -> Self;
fn abs_sq(self) -> f64;
fn abs(self) -> Self;
fn from_f64(val: f64) -> Self;
fn is_nan(self) -> bool;
// Provided methods
fn abs_val(self) -> f64 { ... }
fn epsilon() -> f64 { ... }
}Expand description
Common scalar trait for matrix and tensor operations.
Defines the minimal requirements for scalar types used in matrix cross
interpolation and tensor train operations. Implemented for f64, f32,
Complex64, and Complex32.
§Examples
use tensor4all_tcicore::Scalar;
// f64
let x = 3.0_f64;
assert_eq!(x.abs_sq(), 9.0);
assert_eq!(x.conj(), 3.0);
// Complex64
use num_complex::Complex64;
let z = Complex64::new(3.0, 4.0);
assert!((z.abs_sq() - 25.0).abs() < 1e-10);
assert_eq!(z.conj(), Complex64::new(3.0, -4.0));
// Construction from f64
let val = f64::from_f64(2.5);
assert_eq!(val, 2.5);Required Methods§
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.