fn check_shapes()

in crates/ratchet-core/src/ops/reindex/broadcast.rs [31:55]


    fn check_shapes(&self) {
        let src_shape = self.src.shape();
        let to_shape = &self.to;

        let sr = src_shape.rank();
        let dr = to_shape.rank();
        if sr > dr {
            panic!(
                "Source shape cannot have more dimensions than target shape: {} > {}",
                sr, dr
            );
        }

        let src_iter = src_shape.iter().rev();
        let to_iter = to_shape.iter().rev();

        for (src_dim, to_dim) in src_iter.zip(to_iter) {
            if *src_dim != 1 && *src_dim != *to_dim {
                panic!(
                    "Invalid broadcast: source dimension {} cannot be broadcast to {}",
                    src_dim, to_dim
                );
            }
        }
    }