/// Take a linear combination of the lattice vectors to produce
/// an identical structure with a different choice of primitive cell.
///
/// Each row of the input are integer coefficients of a lattice vector
/// to be used in the output.  The absolute value of the matrix
/// determinant must be 1.
///
/// Cartesian coordinates are preserved.
///
/// # Panics
///
/// Panics if `abs(det(m)) != 1`.
Take a linear combination of the lattice vectors to produce
an identical structure with a different choice of primitive cell.

Each row of the input are integer coefficients of a lattice vector
to be used in the output.  The absolute value of the matrix
determinant must be 1.

Cartesian coordinates are preserved.
Take a linear combination of the lattice vectors to produce an identical structure with a different choice of primitive cell . Each row of the input are integer coefficients of a lattice vector to be used in the output . The absolute value of the matrix determinant must be 1 . Cartesian coordinates are preserved .
pub fn apply_unimodular(&mut self, m: &M33<i32>)
    {
        warn!("Untested code path: 1e58907e-ae0b-4af8-8653-f003d88c262d");
        // Cartesian - not fractional - coords are preserved under unimodular transforms.
        self.ensure_only_carts();
        assert_eq!(m.det().abs(), 1, "Matrix is not unimodular: {:?}", m);
        self.lattice = self.lattice.linear_combination(&m);
    }
pub fn apply_unimodular ( & mut self , m : & M33 < i32 > ) { warn ! ( " " ) ; // Cartesian - not fractional - coords are preserved under unimodular transforms. self . ensure_only_carts ( ) ; assert_eq ! ( m det ( ) abs ( ) 1 " " m ) ; self . lattice = self . lattice . linear_combination ( & m ) ; }
Take a linear combination of the lattice vectors to produce
an identical structure with a different choice of primitive cell.
Take a linear combination of the lattice vectors to produce an identical structure with a different choice of primitive cell .
&mut self
m
&M33<i32>
panics
None