svod-dtype 0.1.0-alpha.3

Type system for the Svod ML compiler
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use proptest::prelude::*;

proptest! {
    #[test]
    fn least_upper_dtype(
        lhs in super::generators::scalar_generator().prop_map(crate::DType::Scalar),
        rhs in super::generators::scalar_generator().prop_map(crate::DType::Scalar)
    ) {
        // Void and Index are excluded from type promotion
        prop_assume!(lhs != crate::DType::Void && rhs != crate::DType::Void);
        prop_assume!(lhs != crate::DType::Index && rhs != crate::DType::Index);

        match crate::DType::least_upper_dtype(&[lhs.clone(), rhs.clone()]) {
            Some(_) => (),
            None => prop_assert!([lhs, rhs].contains(&crate::DType::Float64)),
        }
    }
}