Skip to main content

01_create_tensor/
01_create_tensor.rs

1//! Creating tensors: `new`, `zeros`, `ones`, `full`, `scalar`, `from_vec`,
2//! `arange`, and nested rows.
3//!
4//! Run: cargo run --example 01_create_tensor
5
6use matten::Tensor;
7
8fn main() {
9    // From data + shape
10    let t = Tensor::new(vec![1.0, 2.0, 3.0, 4.0], &[2, 2]);
11    println!("new:         {t:?}");
12
13    // Fill constructors
14    println!("zeros [3]:   {:?}", Tensor::zeros(&[3]));
15    println!("ones  [2,2]: {:?}", Tensor::ones(&[2, 2]));
16    println!("full  [3]:   {:?}", Tensor::full(&[3], -1.0));
17    println!("scalar:      {:?}", Tensor::scalar(42.0));
18
19    // From flat vec
20    println!(
21        "from_vec:    {:?}",
22        Tensor::from_vec(vec![10.0, 20.0, 30.0])
23    );
24
25    // Range
26    println!("arange:      {:?}", Tensor::arange(0.0, 5.0, 1.0));
27
28    // From nested rows (convenient for trusted literals)
29    let rows: Tensor = vec![vec![1.0, 2.0], vec![3.0, 4.0]].into();
30    println!("from rows:   {rows:?}");
31
32    // Boundary-safe construction
33    let result = Tensor::try_new(vec![1.0, 2.0], &[3]);
34    println!("try_new err: {}", result.unwrap_err());
35}