acme_tensor/actions/create/
mod.rs

1/*
2    Appellation: create <mod>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5pub use self::{arange::*, linspace::*, stack::*, utils::*};
6
7pub(crate) mod arange;
8pub(crate) mod linspace;
9pub(crate) mod stack;
10
11pub(crate) mod utils {
12    use core::ops::{Div, Sub};
13    use num::traits::{FromPrimitive, ToPrimitive};
14    /// Calculate the step size for a given range and number of steps.
15    pub fn step_size<T>(start: T, stop: T, steps: usize) -> T
16    where
17        T: FromPrimitive + Div<Output = T> + Sub<Output = T>,
18    {
19        (stop - start) / T::from_usize(steps).unwrap()
20    }
21
22    pub fn steps<T>(start: T, stop: T, step: T) -> usize
23    where
24        T: ToPrimitive + Div<Output = T> + Sub<Output = T>,
25    {
26        let steps = (stop - start) / step;
27        steps.to_usize().unwrap()
28    }
29}
30
31#[cfg(test)]
32mod tests {}