pub fn involute(&self) -> Self {
        Self::new(
            self.data[0], 
            -self.data[1], -self.data[2], -self.data[3],
            self.data[4], self.data[5], self.data[6],
            -self.data[7]
        )
    }
/// Compute the grade involution of a multivector.
/// 
/// The grade involution of a multivector `mv` is defined by
/// ```text
/// When mv is a scalar, invol(mv) := mv
/// When mv is a vector, invol(mv) := -mv
/// When mv is a bivector, invol(mv) := mv
/// When mv is a trivector, invol(mv) := -mv
/// ```
/// The grade involution of a three-dimensional multivector `mv = a + v + B + T`,
/// where `a` is a scalar, `v` is a vector, `B` is a bivector, and `T` is a 
/// trivector, is given by linearity
/// ```text
/// invol(mv) = invol(a + v + B + T)
///           = invol(a) + invol(v) + invol(B) + invol(T)
///           = a - v + B - T
/// ```
/// 
/// # Involution In Euclidean Space
/// 
/// The grade involution of each basis blade in the basis 
/// `{1, e1, e2, e3, e12, e23, e31, e123}` are given by
/// ```text
/// invol(1)    = 1
/// invol(e1)   = -e1
/// invol(e2)   = -e2
/// invol(e3)   = -e3
/// invol(e12)  = e12
/// invol(e23)  = e23
/// invol(e31)  = e31
/// invol(e123) = -e123
/// ```
/// Let `mv = a0 + a1 * e1 + a2 * e2 + a3 * e3 + a12 * e12 + a23 * e23 + a31 * e31 + a123 * e1213` 
/// be a general multivector. The grade involution of `mv` is given by
/// ```text
/// invol(mv) = invol(a0 + a1 * e1 + a2 * e2 + a12 * e12)
///           = invol(a0) + invol(a1 * e1) + invol(a2 * e2) + invol(a3 * e3) 
///                       + invol(a12 * e12) + invol(a23 * e23) + invol(a31 * e31) 
///                       + invol(a123 * e123)
///           = invol(a0) + a1 * (invol(e1)) + a2 * (invol(e2)) + a3 * (invol(e3)) 
///                       + a12 * (invol(e12)) + a23 * (invol(e23)) + a31 * (invol(e31)) 
///                       + a123 * (invol(e123))
///           = a0 + a1 * (-e1) + a2 * (-e2) + a3 * (-e3) 
///                + a12 * e12 + a23 * e23 + a31 * e31 
///                + a123 * (-e123)
///           = a0 - a1 * e1 - a2 * e2 - a3 * e3 
///                + a12 * e12 + a23 * e23 + a31 * e31 
///                - a123 * e123
/// ```
/// We illustrate this with an example.
/// 
/// # Example
/// 
/// ```
/// # use cggeomalg::e3ga::{
/// #     EuclideanMultivector3,
/// # };
/// #
/// let mv = EuclideanMultivector3::new(
///     1_i32, 2_i32, 3_i32, 4_i32, 5_i32, 6_i32, 7_i32, 8_i32
/// );
/// let expected = EuclideanMultivector3::new(
///     1_i32, -2_i32, -3_i32, -4_i32, 5_i32, 6_i32, 7_i32, -8_i32
/// );
/// let result = mv.involute();
/// 
/// assert_eq!(result, expected);
/// ```
Compute the grade involution of a multivector.
Compute the grade involution of a multivector .
pub fn involute(&self) -> Self {
        Self::new(
            self.data[0], 
            -self.data[1], -self.data[2], -self.data[3],
            self.data[4], self.data[5], self.data[6],
            -self.data[7]
        )
    }
pub fn involute ( & self ) -> Self { Self :: new ( self . data [ 0 ] , - self . data [ 1 ] , - self . data [ 2 ] , - self . data [ 3 ] , self . data [ 4 ] , self . data [ 5 ] , self . data [ 6 ] , - self . data [ 7 ] ) }
Compute the grade involution of a multivector.
Compute the grade involution of a multivector .
&self
involution in euclidean space
None
example
None
use cggeomalg::e3ga::{
None
euclideanmultivector3,
None
};


assert_eq!(result, expected);
```
assert_eq! ( result expected ) ; ` ` `