File size: 560 Bytes
63f41a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
pub fn tensor_len_ok(dims: &[usize], bits_per_item: usize, data_size_bytes: usize) -> bool {
    let mut len = 1usize;
    let mut overflow = false;
    let mut i = 0usize;
    while i < dims.len() {
        let d = dims[i];
        if d != 0 && len > usize::MAX / d {
            overflow = true;
        } else {
            len = len * d;
        }
        i += 1;
    }
    if overflow {
        return false;
    }
    let per = bits_per_item / 8;
    if per != 0 && len > usize::MAX / per {
        return false;
    }
    len * per == data_size_bytes
}