pub fn inverse(&self) -> Option<Self> {
        let magnitude_squared = self.magnitude_squared();
        if magnitude_squared.is_zero() {
            None
        } else {
            Some(self.inverse_unchecked())
        }
    }
/// Compute the multiplicative inverse of a multivector.
/// 
/// The inverse of a multivector `mv` is a multivector `mv_inv`
/// such that
/// ```text
/// mv * mv_inv = mv_inv * mv = 1
/// ```
/// Even though the geometric product is noncommutative, in
/// dimension three, the left and right inverses are both identical. For 
/// more information on the inversion of multivectors in general, see [1].
/// 
/// # Example
/// 
/// ```
/// # use cggeomalg::e3ga::{
/// #     EuclideanMultivector3,
/// # };
/// # use approx::{
/// #     assert_relative_eq,
/// # };
/// #
/// let mv = EuclideanMultivector3::new(
///     13_f64, -4_f64, 98_f64, 4_f64, 7_f64, -10_f64, 30_f64, 2_f64
/// );
/// let mv_inv = mv.inverse().unwrap();
/// let one: EuclideanMultivector3<f64> = EuclideanMultivector3::unit_scalar();
/// 
/// assert_relative_eq!(mv * mv_inv, one, epsilon = 1e-10);
/// assert_relative_eq!(mv_inv * mv, one, epsilon = 1e-10);
/// ```
/// 
/// # References
/// 
/// [1] _Eckhard Hitzer, Stephen Sangwine. Multivector and multivector matrix 
///     inverse in real Clifford algebras. Applied Mathematics and Computation 
///     (311) (2017) 375-389. Elsevier. DOI:10.1016/j.amc.2017.05.027._
Compute the multiplicative inverse of a multivector.
Compute the multiplicative inverse of a multivector .
pub fn inverse(&self) -> Option<Self> {
        let magnitude_squared = self.magnitude_squared();
        if magnitude_squared.is_zero() {
            None
        } else {
            Some(self.inverse_unchecked())
        }
    }
pub fn inverse ( & self ) -> Option < Self > { let magnitude_squared = self . magnitude_squared ( ) ; if magnitude_squared . is_zero ( ) { None } else { Some ( self . inverse_unchecked ( ) ) } }
Compute the multiplicative inverse of a multivector.
Compute the multiplicative inverse of a multivector .
&self
example
None
use cggeomalg::e3ga::{
None
euclideanmultivector3,
None
};
None
use approx::{
None
assert_relative_eq,
None
};


assert_relative_eq!(mv * mv_inv, one, epsilon = 1e-10);
assert_relative_eq!(mv_inv * mv, one, epsilon = 1e-10);
```
assert_relative_eq! ( mv * mv_inv one epsilon = 1e - 10 ) ; assert_relative_eq! ( mv_inv * mv one epsilon = 1e - 10 ) ; ` ` `
references
[1] _Eckhard Hitzer, Stephen Sangwine. Multivector and multivector matrix
inverse in real Clifford algebras.
[ 1 ] _Eckhard Hitzer Stephen Sangwine . Multivector and multivector matrix inverse in real Clifford algebras .