pub use nalgebra::DMatrix;
use rand::Rng;
pub fn new_f32_from_vec(rows: usize, cols: usize, vec: Vec<f32>) -> DMatrix<f32> {
let m: DMatrix<f32> = DMatrix::from_row_slice(rows,cols, &vec);
m
}
pub fn new_f64_from_vec(rows: usize, cols: usize, vec: Vec<f64>) -> DMatrix<f64> {
let m: DMatrix<f64> = DMatrix::from_row_slice(rows,cols, &vec);
m
}
pub fn new_f64_zeros(rows: usize, cols: usize) -> DMatrix<f64> {
let ct_elements: usize = rows * cols;
let vec = vec![0f64; ct_elements];
let m: DMatrix<f64> = DMatrix::from_row_slice(rows, cols, &vec);
m
}
pub fn new_f32_zeros(rows: usize, cols: usize) -> DMatrix<f32> {
let ct_elements: usize = rows * cols;
let vec = vec![0f32; ct_elements];
let m: DMatrix<f32> = DMatrix::from_row_slice(rows, cols, &vec);
m
}
pub fn new_f64_identity(size: usize) -> DMatrix<f64> {
let m: DMatrix<f64> = DMatrix::identity(size, size);
m
}
pub fn new_f32_identity(size: usize) -> DMatrix<f32> {
let m: DMatrix<f32> = DMatrix::identity(size, size);
m
}
pub fn new_f64_random(rows: usize, cols: usize, min: f64, max: f64) -> DMatrix<f64> {
let ct_elements: usize = rows * cols;
let mut vec = vec![0f64; ct_elements];
let mut rng = rand::thread_rng();
for i in 0..vec.len() {
vec[i] = min+ (max-min)*rng.gen::<f64>();
}
let m: DMatrix<f64> = DMatrix::from_row_slice(rows, cols, &vec);
m
}
pub fn new_f32_random(rows: usize, cols: usize, min: f32, max: f32) -> DMatrix<f32> {
let ct_elements: usize = rows * cols;
let mut vec = vec![0f32; ct_elements];
let mut rng = rand::thread_rng();
for i in 0..vec.len() {
vec[i] = min+ (max-min)*rng.gen::<f32>();
}
let m: DMatrix<f32> = DMatrix::from_row_slice(rows, cols, &vec);
m
}