2023-12-20 20:20:10 +00:00
|
|
|
//! Configuration of module. Here, we can choose to compile for 32-bits or 64-bit floating point values
|
|
|
|
//! as basic data storage and computation size. Default is f64.
|
|
|
|
//!
|
2023-11-22 13:40:16 +00:00
|
|
|
|
2023-12-20 20:20:10 +00:00
|
|
|
cfg_if::cfg_if! {
|
|
|
|
if #[cfg(feature="f64")] {
|
2023-12-28 22:49:25 +00:00
|
|
|
/// Floating-point value, compile time option to make it either f32, or f64
|
2023-12-20 20:20:10 +00:00
|
|
|
pub type Flt = f64;
|
2023-12-28 22:49:25 +00:00
|
|
|
/// Ratio between circumference and diameter of a circle
|
2023-12-20 20:20:10 +00:00
|
|
|
pub const pi: Flt = std::f64::consts::PI;
|
|
|
|
}
|
|
|
|
else if #[cfg(feature="f32")] {
|
2023-12-28 22:49:25 +00:00
|
|
|
/// Floating-point value, compile time option to make it either f32, or f64
|
2023-12-20 20:20:10 +00:00
|
|
|
pub type Flt = f32;
|
2023-12-28 22:49:25 +00:00
|
|
|
/// Ratio between circumference and diameter of a circle
|
2023-12-20 20:20:10 +00:00
|
|
|
pub const pi: Flt = std::f32::consts::PI;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
std::compile_error!("feature should be f32 or f64");
|
|
|
|
}
|
|
|
|
}
|
2023-12-13 10:02:06 +00:00
|
|
|
|
2023-11-22 13:40:16 +00:00
|
|
|
use num::complex::*;
|
2023-12-13 10:02:06 +00:00
|
|
|
/// Complex number floating point
|
2023-11-22 13:40:16 +00:00
|
|
|
pub type Cflt = Complex<Flt>;
|
|
|
|
|
2023-12-20 20:20:10 +00:00
|
|
|
use ndarray::{Array1, Array2};
|
2023-12-28 22:49:25 +00:00
|
|
|
/// Vector of floating point values
|
2023-11-22 13:40:16 +00:00
|
|
|
pub type Vd = Vec<Flt>;
|
2023-12-28 22:49:25 +00:00
|
|
|
/// Vector of complex floating point values
|
2023-11-22 13:40:16 +00:00
|
|
|
pub type Vc = Vec<Cflt>;
|
|
|
|
|
2023-12-28 22:49:25 +00:00
|
|
|
/// 1D array of floats
|
2023-11-29 06:20:13 +00:00
|
|
|
pub type Dcol = Array1<Flt>;
|
2023-12-28 22:49:25 +00:00
|
|
|
/// 1D array of complex floats
|
2023-11-29 06:20:13 +00:00
|
|
|
pub type Ccol = Array1<Cflt>;
|
|
|
|
|
2023-12-28 22:49:25 +00:00
|
|
|
/// 2D array of floats
|
2023-11-22 13:40:16 +00:00
|
|
|
pub type Dmat = Array2<Flt>;
|
2023-12-28 22:49:25 +00:00
|
|
|
/// 2D array of complex floats
|
2023-11-22 13:40:16 +00:00
|
|
|
pub type Cmat = Array2<Cflt>;
|