pub fn for_size(n: usize, scalar: ScalarType) -> MultiType {
        let d = num::integer::gcd(n, 4);
        match d {
            1 => MultiType::Scalar(scalar),
            2 | 4 => MultiType::Vec(scalar, d),
            /* 3 can't occur here because it is not a divisor of 4. Even so, we wouldn't be able to use vec3, because
            its stride is 16 instead of the expected 12, which would require padding to work properly. */
            _ => unreachable!(),
        }
    }
/// Determine the appropriate data type given the data size
Determine the appropriate data type given the data size
Determine the appropriate data type given the data size
pub fn for_size(n: usize, scalar: ScalarType) -> MultiType {
        let d = num::integer::gcd(n, 4);
        match d {
            1 => MultiType::Scalar(scalar),
            2 | 4 => MultiType::Vec(scalar, d),
            /* 3 can't occur here because it is not a divisor of 4. Even so, we wouldn't be able to use vec3, because
            its stride is 16 instead of the expected 12, which would require padding to work properly. */
            _ => unreachable!(),
        }
    }
pub fn for_size ( n : usize , scalar : ScalarType ) -> MultiType { let d = num :: integer :: gcd ( n , 4 ) ; match d { 1 => MultiType :: Scalar ( scalar ) , 2 | 4 => MultiType :: Vec ( scalar , d ) , /* 3 can't occur here because it is not a divisor of 4. Even so, we wouldn't be able to use vec3, because
            its stride is 16 instead of the expected 12, which would require padding to work properly. */ _ => unreachable ! ( ) , } }
Determine the appropriate data type given the data size
Determine the appropriate data type given the data size
n
usize
scalar
ScalarType
n
usize
scalar
ScalarType