ferrum-interfaces 0.6.0

Core trait contracts for the Ferrum LLM inference engine
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use ferrum_interfaces::tensor::utils::*;

#[test]
fn matmul_output_shape_valid_and_invalid() {
    let out = matmul_output_shape(&[2, 3], &[3, 4]).unwrap();
    assert_eq!(out, vec![2, 4]);
    let err = matmul_output_shape(&[2, 3], &[2, 4]).err().unwrap();
    let msg = format!("{}", err);
    assert!(msg.to_lowercase().contains("mismatch"));
}

#[test]
fn broadcast_helpers() {
    assert!(are_broadcastable(&[2, 3], &[1, 3]));
    assert!(!are_broadcastable(&[2, 3], &[2, 2]));
    let out = broadcast_shapes(&[2, 1, 3], &[1, 4, 3]).unwrap();
    assert_eq!(out, vec![2, 4, 3]);
}