```python
import os
from galgebra_ipython_helpers import check as check_latex, run
os.chdir('../Old Format')
```

```python
run('bad_example')
```

    3*e_x + 4*e_y
    5
    25
    3*e_x/5 + 4*e_y/5
    3*e_x/25 + 4*e_y/25
    1
    3*e_x/25 + 4*e_y/25

    bad_example.py:4: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV

```python
run('eval_check')
```

    Frame            = (ex + ey, ex - ey)
    Reciprocal Frame = (ex/2 + ey/2, ex/2 - ey/2)
    eu.eu_r = 1
    eu.ev_r = 0
    ev.eu_r = 0
    ev.ev_r = 1
    Frame            = (ex + ey + ez, ex - ey)
    Reciprocal Frame = (ex/3 + ey/3 + ez/3, ex/2 - ey/2)
    eu.eu_r = 1
    eu.ev_r = 0
    ev.eu_r = 0
    ev.ev_r = 1
    eu = ex + ey + ez
    ev = ex - ey
    eu^ev|ex
    (eu^(ev|ex))
    ex + ey + ez
    eu^ev|ex*eu
    ((eu^(ev|ex))*eu)
    3

    eval_check.py:5: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV,ReciprocalFrame
    eval_check.py:19: DeprecationWarning: The `galgebra.deprecated.ReciprocalFrame` function is deprecated in favor of the `ReciprocalFrame` method of `Ga` objects.
      (eu_r,ev_r) = ReciprocalFrame([eu,ev])
    eval_check.py:31: DeprecationWarning: The `galgebra.deprecated.ReciprocalFrame` function is deprecated in favor of the `ReciprocalFrame` method of `Ga` objects.
      (eu_r,ev_r) = ReciprocalFrame([eu,ev])

```python
run('exp_check')
```

    u__x*e_x + u__y*e_y + u__z*e_z
    v__x*e_x + v__y*e_y + v__z*e_z
    (u__x*v__y - u__y*v__x)*e_x^e_y + (u__x*v__z - u__z*v__x)*e_x^e_z + (u__y*v__z - u__z*v__y)*e_y^e_z
    True

    exp_check.py:5: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    exp_check.py:12: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      u = MV('u','vector')
    exp_check.py:13: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v','vector')
    exp_check.py:14: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      w = MV('w','vector')

```python
check_latex('latex_check')
```

    latex_check.py:7: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    latex_check.py:32: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','mv')
    latex_check.py:41: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    latex_check.py:42: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      Y = MV('Y','vector')
    latex_check.py:60: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    latex_check.py:61: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','spinor')
    latex_check.py:77: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    latex_check.py:78: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','spinor')
    latex_check.py:115: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)
    latex_check.py:116: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)
    latex_check.py:117: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','grade2',fct=True)
    latex_check.py:118: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      C = MV('C','mv')
    latex_check.py:142: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)
    latex_check.py:143: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)
    latex_check.py:144: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','grade2',fct=True)
    latex_check.py:24: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      a = MV(sym_lst,'vector')

    \documentclass[10pt,fleqn]{report}
    \usepackage[vcentering]{geometry}
    \geometry{papersize={14in,11in},total={13in,10in}}

    \pagestyle{empty}
    \usepackage[latin1]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{amsbsy}
    \usepackage{tensor}
    \usepackage{listings}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{bm}
    \usepackage{breqn}
    \definecolor{gray}{rgb}{0.95,0.95,0.95}
    \setlength{\parindent}{0pt}
    \DeclareMathOperator{\Tr}{Tr}
    \DeclareMathOperator{\Adj}{Adj}
    \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}
    \newcommand{\lp}{\left (}
    \newcommand{\rp}{\right )}
    \newcommand{\paren}[1]{\lp {#1} \rp}
    \newcommand{\half}{\frac{1}{2}}
    \newcommand{\llt}{\left <}
    \newcommand{\rgt}{\right >}
    \newcommand{\abs}[1]{\left |{#1}\right | }
    \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}
    \newcommand{\lbrc}{\left \{}
    \newcommand{\rbrc}{\right \}}
    \newcommand{\W}{\wedge}
    \newcommand{\prm}[1]{{#1}'}
    \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}
    \newcommand{\R}{\dagger}
    \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}
    \newcommand{\grade}[1]{\left < {#1} \right >}
    \newcommand{\f}[2]{{#1}\lp{#2}\rp}
    \newcommand{\eval}[2]{\left . {#1} \right |_{#2}}
    \newcommand{\Nabla}{\boldsymbol{\nabla}}
    \newcommand{\eb}{\boldsymbol{e}}
    \usepackage{float}
    \floatstyle{plain} % optionally change the style of the new float
    \newfloat{Code}{H}{myc}
    \lstloadlanguages{Python}

    \begin{document}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def basic_multivector_operations_3D():
        Print_Function()
        (ex,ey,ez) = MV.setup('e*x|y|z')
        A = MV('A','mv')
        A.Fmt(1,'A')
        A.Fmt(2,'A')
        A.Fmt(3,'A')
        A.even().Fmt(1,'%A_{+}')
        A.odd().Fmt(1,'%A_{-}')
        X = MV('X','vector')
        Y = MV('Y','vector')
        print('g_{ij} = ',MV.metric)
        X.Fmt(1,'X')
        Y.Fmt(1,'Y')
        (X*Y).Fmt(2,'X*Y')
        (X^Y).Fmt(2,'X^Y')
        (X|Y).Fmt(2,'X|Y')
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} A = A  + A^{x} \boldsymbol{e}_{x} + A^{y} \boldsymbol{e}_{y} + A^{z} \boldsymbol{e}_{z} + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} A =  \begin{aligned}[t]  & A  \\  &  + A^{x} \boldsymbol{e}_{x} + A^{y} \boldsymbol{e}_{y} + A^{z} \boldsymbol{e}_{z} \\  &  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \\  &  + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{aligned} \end{equation*}
    \begin{equation*} A =  \begin{aligned}[t]  & A  \\  &  + A^{x} \boldsymbol{e}_{x} \\  &  + A^{y} \boldsymbol{e}_{y} \\  &  + A^{z} \boldsymbol{e}_{z} \\  &  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} \\  &  + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} \\  &  + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \\  &  + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{aligned} \end{equation*}
    \begin{equation*} g_{ij} =  \left[\begin{array}{ccc}\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{x}\right )  & \left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{z}\right ) \\\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{z}\right ) \\\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{z}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{z}\right )  & \left (\boldsymbol{e}_{z}\cdot \boldsymbol{e}_{z}\right ) \end{array}\right] \end{equation*}
    \begin{equation*} X = X^{x} \boldsymbol{e}_{x} + X^{y} \boldsymbol{e}_{y} + X^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} Y = Y^{x} \boldsymbol{e}_{x} + Y^{y} \boldsymbol{e}_{y} + Y^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def basic_multivector_operations_2D():
        Print_Function()
        (ex,ey) = MV.setup('e*x|y')
        print('g_{ij} =',MV.metric)
        X = MV('X','vector')
        A = MV('A','spinor')
        X.Fmt(1,'X')
        A.Fmt(1,'A')
        (X|A).Fmt(2,'X|A')
        (X<A).Fmt(2,'X<A')
        (A>X).Fmt(2,'A>X')
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} g_{ij} = \left[\begin{array}{cc}\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{x}\right )  & \left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right ) \\\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{y}\right ) \end{array}\right] \end{equation*}
    \begin{equation*} X = X^{x} \boldsymbol{e}_{x} + X^{y} \boldsymbol{e}_{y} \end{equation*}
    \begin{equation*} A = A  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def basic_multivector_operations_2D_orthogonal():
        Print_Function()
        (ex,ey) = MV.setup('e*x|y',metric='[1,1]')
        print('g_{ii} =',MV.metric)
        X = MV('X','vector')
        A = MV('A','spinor')
        X.Fmt(1,'X')
        A.Fmt(1,'A')
        (X*A).Fmt(2,'X*A')
        (X|A).Fmt(2,'X|A')
        (X<A).Fmt(2,'X<A')
        (X>A).Fmt(2,'X>A')
        (A*X).Fmt(2,'A*X')
        (A|X).Fmt(2,'A|X')
        (A<X).Fmt(2,'A<X')
        (A>X).Fmt(2,'A>X')
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} g_{ii} = \left[\begin{array}{cc}1 & 0\\0 & 1\end{array}\right] \end{equation*}
    \begin{equation*} X = X^{x} \boldsymbol{e}_{x} + X^{y} \boldsymbol{e}_{y} \end{equation*}
    \begin{equation*} A = A  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def check_generalized_BAC_CAB_formulas():
        Print_Function()
        (a,b,c,d) = MV.setup('a b c d')
        print('g_{ij} =',MV.metric)
        print('\\bm{a|(b*c)} =',a|(b*c))
        print('\\bm{a|(b^c)} =',a|(b^c))
        print('\\bm{a|(b^c^d)} =',a|(b^c^d))
        print('\\bm{a|(b^c)+c|(a^b)+b|(c^a)} =',(a|(b^c))+(c|(a^b))+(b|(c^a)))
        print('\\bm{a*(b^c)-b*(a^c)+c*(a^b)} =',a*(b^c)-b*(a^c)+c*(a^b))
        print('\\bm{a*(b^c^d)-b*(a^c^d)+c*(a^b^d)-d*(a^b^c)} =',a*(b^c^d)-b*(a^c^d)+c*(a^b^d)-d*(a^b^c))
        print('\\bm{(a^b)|(c^d)} =',(a^b)|(c^d))
        print('\\bm{((a^b)|c)|d} =',((a^b)|c)|d)
        print('\\bm{(a^b)\\times (c^d)} =',Ga.com(a^b,c^d))
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} g_{ij} = \left[\begin{array}{cccc}\left (\boldsymbol{a}\cdot \boldsymbol{a}\right )  & \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  & \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{a}\cdot \boldsymbol{d}\right ) \\\left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{b}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{d}\right ) \\\left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{c}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{c}\cdot \boldsymbol{d}\right ) \\\left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  & \left (\boldsymbol{c}\cdot \boldsymbol{d}\right )  & \left (\boldsymbol{d}\cdot \boldsymbol{d}\right ) \end{array}\right] \end{equation*}
    \begin{equation*} \bm{a\cdot (b c)} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b} + \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  \boldsymbol{c} \end{equation*}
    \begin{equation*} \bm{a\cdot (b\W c)} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b} + \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  \boldsymbol{c} \end{equation*}
    \begin{equation*} \bm{a\cdot (b\W c\W d)} = \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \boldsymbol{b}\wedge \boldsymbol{c} - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b}\wedge \boldsymbol{d} + \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  \boldsymbol{c}\wedge \boldsymbol{d} \end{equation*}
    \begin{equation*} \bm{a\cdot (b\W c)+c\cdot (a\W b)+b\cdot (c\W a)} =  0 \end{equation*}
    \begin{equation*} \bm{a (b\W c)-b (a\W c)+c (a\W b)} = 3 \boldsymbol{a}\wedge \boldsymbol{b}\wedge \boldsymbol{c} \end{equation*}
    \begin{equation*} \bm{a (b\W c\W d)-b (a\W c\W d)+c (a\W b\W d)-d (a\W b\W c)} = 4 \boldsymbol{a}\wedge \boldsymbol{b}\wedge \boldsymbol{c}\wedge \boldsymbol{d} \end{equation*}
    \begin{equation*} \bm{(a\W b)\cdot (c\W d)} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  + \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{c}\right ) \end{equation*}
    \begin{equation*} \bm{((a\W b)\cdot c)\cdot d} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  + \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{c}\right ) \end{equation*}
    \begin{equation*} \bm{(a\W b)\times (c\W d)} = - \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  \boldsymbol{a}\wedge \boldsymbol{c} + \left (\boldsymbol{b}\cdot \boldsymbol{c}\right )  \boldsymbol{a}\wedge \boldsymbol{d} + \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \boldsymbol{b}\wedge \boldsymbol{c} - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b}\wedge \boldsymbol{d} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def rounding_numerical_components():
        Print_Function()
        (ex,ey,ez) = MV.setup('e_x e_y e_z',metric='[1,1,1]')
        X = 1.2*ex+2.34*ey+0.555*ez
        Y = 0.333*ex+4*ey+5.3*ez
        print('X =',X)
        print('Nga(X,2) =',Nga(X,2))
        print('X*Y =',X*Y)
        print('Nga(X*Y,2) =',Nga(X*Y,2))
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} X = 1.2 \boldsymbol{e}_{x} + 2.34 \boldsymbol{e}_{y} + 0.555 \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} Nga(X,2) = 1.2 \boldsymbol{e}_{x} + 2.3 \boldsymbol{e}_{y} + 0.55 \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} X Y = 12.7011  + 4.02078 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + 6.175185 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + 10.182 \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} Nga(X Y,2) = 13.0  + 4.0 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + 6.2 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + 10.0 \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def derivatives_in_rectangular_coordinates():
        Print_Function()
        X = (x,y,z) = symbols('x y z')
        (ex,ey,ez,grad) = MV.setup('e_x e_y e_z',metric='[1,1,1]',coords=X)
        f = MV('f','scalar',fct=True)
        A = MV('A','vector',fct=True)
        B = MV('B','grade2',fct=True)
        C = MV('C','mv')
        print('f =',f)
        print('A =',A)
        print('B =',B)
        print('C =',C)
        print('grad*f =',grad*f)
        print('grad|A =',grad|A)
        print('grad*A =',grad*A)
        print(-MV.I)
        print('-I*(grad^A) =',-MV.I*(grad^A))
        print('grad*B =',grad*B)
        print('grad^B =',grad^B)
        print('grad|B =',grad|B)
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} f = f \end{equation*}
    \begin{equation*} A = A^{x}  \boldsymbol{e}_{x} + A^{y}  \boldsymbol{e}_{y} + A^{z}  \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} B = B^{xy}  \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + B^{xz}  \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + B^{yz}  \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} C = C  + C^{x} \boldsymbol{e}_{x} + C^{y} \boldsymbol{e}_{y} + C^{z} \boldsymbol{e}_{z} + C^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + C^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + C^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} + C^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  f = \partial_{x} f  \boldsymbol{e}_{x} + \partial_{y} f  \boldsymbol{e}_{y} + \partial_{z} f  \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \cdot A = \partial_{x} A^{x}  + \partial_{y} A^{y}  + \partial_{z} A^{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  A = \left ( \partial_{x} A^{x}  + \partial_{y} A^{y}  + \partial_{z} A^{z} \right )  + \left ( - \partial_{y} A^{x}  + \partial_{x} A^{y} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + \left ( - \partial_{z} A^{x}  + \partial_{x} A^{z} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + \left ( - \partial_{z} A^{y}  + \partial_{y} A^{z} \right ) \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} - \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} -I (\boldsymbol{\nabla} \W A) = \left ( - \partial_{z} A^{y}  + \partial_{y} A^{z} \right ) \boldsymbol{e}_{x} + \left ( \partial_{z} A^{x}  - \partial_{x} A^{z} \right ) \boldsymbol{e}_{y} + \left ( - \partial_{y} A^{x}  + \partial_{x} A^{y} \right ) \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  B = \left ( - \partial_{y} B^{xy}  - \partial_{z} B^{xz} \right ) \boldsymbol{e}_{x} + \left ( \partial_{x} B^{xy}  - \partial_{z} B^{yz} \right ) \boldsymbol{e}_{y} + \left ( \partial_{x} B^{xz}  + \partial_{y} B^{yz} \right ) \boldsymbol{e}_{z} + \left ( \partial_{z} B^{xy}  - \partial_{y} B^{xz}  + \partial_{x} B^{yz} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \W B = \left ( \partial_{z} B^{xy}  - \partial_{y} B^{xz}  + \partial_{x} B^{yz} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \cdot B = \left ( - \partial_{y} B^{xy}  - \partial_{z} B^{xz} \right ) \boldsymbol{e}_{x} + \left ( \partial_{x} B^{xy}  - \partial_{z} B^{yz} \right ) \boldsymbol{e}_{y} + \left ( \partial_{x} B^{xz}  + \partial_{y} B^{yz} \right ) \boldsymbol{e}_{z} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def derivatives_in_spherical_coordinates():
        Print_Function()
        X = (r,th,phi) = symbols('r theta phi')
        curv = [[r*cos(phi)*sin(th),r*sin(phi)*sin(th),r*cos(th)],[1,r,r*sin(th)]]
        (er,eth,ephi,grad) = MV.setup('e_r e_theta e_phi',metric='[1,1,1]',coords=X,curv=curv)
        f = MV('f','scalar',fct=True)
        A = MV('A','vector',fct=True)
        B = MV('B','grade2',fct=True)
        print('f =',f)
        print('A =',A)
        print('B =',B)
        print('grad*f =',grad*f)
        print('grad|A =',grad|A)
        print('-I*(grad^A) =',(-MV.I*(grad^A)).simplify())
        print('grad^B =',grad^B)
    \end{lstlisting}
    Code Output:
    \begin{equation*} f = f \end{equation*}
    \begin{equation*} A = A^{r}  \boldsymbol{e}_{r} + A^{\theta }  \boldsymbol{e}_{\theta } + A^{\phi }  \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} B = B^{r\theta }  \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\theta } + B^{r\phi }  \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\phi } + B^{\theta \phi }  \boldsymbol{e}_{\theta }\wedge \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  f = \partial_{r} f  \boldsymbol{e}_{r} + \frac{\partial_{\theta } f }{r^{2}} \boldsymbol{e}_{\theta } + \frac{\partial_{\phi } f }{r^{2} {\sin{\left (\theta  \right )}}^{2}} \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \cdot A = \frac{A^{\theta } }{\tan{\left (\theta  \right )}} + \partial_{\phi } A^{\phi }  + \partial_{r} A^{r}  + \partial_{\theta } A^{\theta }  + \frac{2 A^{r} }{r} \end{equation*}
    \begin{equation*} -I (\boldsymbol{\nabla} \W A) = \frac{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}} \left(\frac{2 A^{\phi } }{\tan{\left (\theta  \right )}} + \partial_{\theta } A^{\phi }  - \frac{\partial_{\phi } A^{\theta } }{{\sin{\left (\theta  \right )}}^{2}}\right)}{r^{2}} \boldsymbol{e}_{r} + \frac{- r^{2} {\sin{\left (\theta  \right )}}^{2} \partial_{r} A^{\phi }  - 2 r A^{\phi }  {\sin{\left (\theta  \right )}}^{2} + \partial_{\phi } A^{r} }{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}}} \boldsymbol{e}_{\theta } + \frac{r^{2} \partial_{r} A^{\theta }  + 2 r A^{\theta }  - \partial_{\theta } A^{r} }{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}}} \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \W B = \frac{r^{2} \partial_{r} B^{\theta \phi }  + 4 r B^{\theta \phi }  - \frac{2 B^{r\phi } }{\tan{\left (\theta  \right )}} - \partial_{\theta } B^{r\phi }  + \frac{\partial_{\phi } B^{r\theta } }{{\sin{\left (\theta  \right )}}^{2}}}{r^{2}} \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\theta }\wedge \boldsymbol{e}_{\phi } \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def conformal_representations_of_circles_lines_spheres_and_planes():
        Print_Function()
        global n,nbar
        metric = '1 0 0 0 0,0 1 0 0 0,0 0 1 0 0,0 0 0 0 2,0 0 0 2 0'
        (e1,e2,e3,n,nbar) = MV.setup('e_1 e_2 e_3 n \\bar{n}',metric)
        print('g_{ij} =',MV.metric)
        e = n+nbar
        #conformal representation of points
        A = make_vector(e1)    # point a = (1,0,0)  A = F(a)
        B = make_vector(e2)    # point b = (0,1,0)  B = F(b)
        C = make_vector(-e1)   # point c = (-1,0,0) C = F(c)
        D = make_vector(e3)    # point d = (0,0,1)  D = F(d)
        X = make_vector('x',3)
        print('F(a) =',A)
        print('F(b) =',B)
        print('F(c) =',C)
        print('F(d) =',D)
        print('F(x) =',X)
        print('#a = e1, b = e2, c = -e1, and d = e3')
        print('#A = F(a) = 1/2*(a*a*n+2*a-nbar), etc.')
        print('#Circle through a, b, and c')
        print('Circle: A^B^C^X = 0 =',(A^B^C^X))
        print('#Line through a and b')
        print('Line  : A^B^n^X = 0 =',(A^B^n^X))
        print('#Sphere through a, b, c, and d')
        print('Sphere: A^B^C^D^X = 0 =',(((A^B)^C)^D)^X)
        print('#Plane through a, b, and d')
        print('Plane : A^B^n^D^X = 0 =',(A^B^n^D^X))
        L = (A^B^e)^X
        L.Fmt(3,'Hyperbolic\\;\\; Circle: (A^B^e)^X = 0')
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} g_{ij} = \left[\begin{array}{ccccc}1 & 0 & 0 & 0 & 0\\0 & 1 & 0 & 0 & 0\\0 & 0 & 1 & 0 & 0\\0 & 0 & 0 & 0 & 2\\0 & 0 & 0 & 2 & 0\end{array}\right] \end{equation*}
    \begin{equation*} F(a) =  \boldsymbol{e}_{1} + \frac{1}{2} \boldsymbol{n} - \frac{1}{2} \boldsymbol{\bar{n}} \end{equation*}
    \begin{equation*} F(b) =  \boldsymbol{e}_{2} + \frac{1}{2} \boldsymbol{n} - \frac{1}{2} \boldsymbol{\bar{n}} \end{equation*}
    \begin{equation*} F(c) = - \boldsymbol{e}_{1} + \frac{1}{2} \boldsymbol{n} - \frac{1}{2} \boldsymbol{\bar{n}} \end{equation*}
    \begin{equation*} F(d) =  \boldsymbol{e}_{3} + \frac{1}{2} \boldsymbol{n} - \frac{1}{2} \boldsymbol{\bar{n}} \end{equation*}
    \begin{equation*} F(x) = x_{1} \boldsymbol{e}_{1} + x_{2} \boldsymbol{e}_{2} + x_{3} \boldsymbol{e}_{3} + \left ( \frac{{\left ( x_{1} \right )}^{2}}{2} + \frac{{\left ( x_{2} \right )}^{2}}{2} + \frac{{\left ( x_{3} \right )}^{2}}{2}\right ) \boldsymbol{n} - \frac{1}{2} \boldsymbol{\bar{n}} \end{equation*}
    a = e1, b = e2, c = -e1, and d = e3
    A = F(a) = 1/2*(a*a*n+2*a-nbar), etc.
    Circle through a, b, and c
    \begin{equation*} Circle: A\W B\W C\W X = 0 = - x_{3} \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3}\wedge \boldsymbol{n} + x_{3} \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3}\wedge \boldsymbol{\bar{n}} + \left ( \frac{{\left ( x_{1} \right )}^{2}}{2} + \frac{{\left ( x_{2} \right )}^{2}}{2} + \frac{{\left ( x_{3} \right )}^{2}}{2} - \frac{1}{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{n}\wedge \boldsymbol{\bar{n}} \end{equation*}
    Line through a and b
    \begin{equation*} Line  : A\W B\W n\W X = 0 = - x_{3} \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3}\wedge \boldsymbol{n} + \left ( \frac{x_{1}}{2} + \frac{x_{2}}{2} - \frac{1}{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{n}\wedge \boldsymbol{\bar{n}} + \frac{x_{3}}{2} \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{3}\wedge \boldsymbol{n}\wedge \boldsymbol{\bar{n}} - \frac{x_{3}}{2} \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3}\wedge \boldsymbol{n}\wedge \boldsymbol{\bar{n}} \end{equation*}
    Sphere through a, b, c, and d
    \begin{equation*} Sphere: A\W B\W C\W D\W X = 0 = \left ( - \frac{{\left ( x_{1} \right )}^{2}}{2} - \frac{{\left ( x_{2} \right )}^{2}}{2} - \frac{{\left ( x_{3} \right )}^{2}}{2} + \frac{1}{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3}\wedge \boldsymbol{n}\wedge \boldsymbol{\bar{n}} \end{equation*}
    Plane through a, b, and d
    \begin{equation*} Plane : A\W B\W n\W D\W X = 0 = \left ( - \frac{x_{1}}{2} - \frac{x_{2}}{2} - \frac{x_{3}}{2} + \frac{1}{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3}\wedge \boldsymbol{n}\wedge \boldsymbol{\bar{n}} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def properties_of_geometric_objects():
        global n,nbar
        Print_Function()
        metric = '# # # 0 0,'+ \
                 '# # # 0 0,'+ \
                 '# # # 0 0,'+ \
                 '0 0 0 0 2,'+ \
                 '0 0 0 2 0'
        (p1,p2,p3,n,nbar) = MV.setup('p1 p2 p3 n \\bar{n}',metric)
        print('g_{ij} =',MV.metric)
        P1 = F(p1)
        P2 = F(p2)
        P3 = F(p3)
        print('#%\\text{Extracting direction of line from }L = P1\\W P2\\W n')
        L = P1^P2^n
        delta = (L|n)|nbar
        print('(L|n)|\\bar{n} =',delta)
        print('#%\\text{Extracting plane of circle from }C = P1\\W P2\\W P3')
        C = P1^P2^P3
        delta = ((C^n)|n)|nbar
        print('((C^n)|n)|\\bar{n}=',delta)
        print('(p2-p1)^(p3-p1)=',(p2-p1)^(p3-p1))
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} g_{ij} = \left[\begin{array}{ccccc}\left (\boldsymbol{p}_{1}\cdot \boldsymbol{p}_{1}\right )  & \left (\boldsymbol{p}_{1}\cdot \boldsymbol{p}_{2}\right )  & \left (\boldsymbol{p}_{1}\cdot \boldsymbol{p}_{3}\right )  & 0 & 0\\\left (\boldsymbol{p}_{1}\cdot \boldsymbol{p}_{2}\right )  & \left (\boldsymbol{p}_{2}\cdot \boldsymbol{p}_{2}\right )  & \left (\boldsymbol{p}_{2}\cdot \boldsymbol{p}_{3}\right )  & 0 & 0\\\left (\boldsymbol{p}_{1}\cdot \boldsymbol{p}_{3}\right )  & \left (\boldsymbol{p}_{2}\cdot \boldsymbol{p}_{3}\right )  & \left (\boldsymbol{p}_{3}\cdot \boldsymbol{p}_{3}\right )  & 0 & 0\\0 & 0 & 0 & 0 & 2\\0 & 0 & 0 & 2 & 0\end{array}\right] \end{equation*}
    \begin{equation*} \text{Extracting direction of line from }L = P1\W P2\W n \end{equation*}
    \begin{equation*} (L\cdot n)\cdot \bar{n} = 2 \boldsymbol{p}_{1} -2 \boldsymbol{p}_{2} \end{equation*}
    \begin{equation*} \text{Extracting plane of circle from }C = P1\W P2\W P3 \end{equation*}
    \begin{equation*} ((C\W n)\cdot n)\cdot \bar{n}= 2 \boldsymbol{p}_{1}\wedge \boldsymbol{p}_{2} -2 \boldsymbol{p}_{1}\wedge \boldsymbol{p}_{3} + 2 \boldsymbol{p}_{2}\wedge \boldsymbol{p}_{3} \end{equation*}
    \begin{equation*} (p2-p1)\W (p3-p1)=  \boldsymbol{p}_{1}\wedge \boldsymbol{p}_{2} - \boldsymbol{p}_{1}\wedge \boldsymbol{p}_{3} + \boldsymbol{p}_{2}\wedge \boldsymbol{p}_{3} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def extracting_vectors_from_conformal_2_blade():
        Print_Function()
        print(r'B = P1\W P2')
        metric = '0 -1 #,'+ \
                 '-1 0 #,'+ \
                 '# # #'
        (P1,P2,a) = MV.setup('P1 P2 a',metric)
        print('g_{ij} =',MV.metric)
        B = P1^P2
        Bsq = B*B
        print('%B^{2} =',Bsq)
        ap = a-(a^B)*B
        print("a' = a-(a^B)*B =",ap)
        Ap = ap+ap*B
        Am = ap-ap*B
        print("A+ = a'+a'*B =",Ap)
        print("A- = a'-a'*B =",Am)
        print('%(A+)^{2} =',Ap*Ap)
        print('%(A-)^{2} =',Am*Am)
        aB = a|B
        print('a|B =',aB)
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} B = P1\W P2 \end{equation*}
    \begin{equation*} g_{ij} = \left[\begin{array}{ccc}0 & -1 & \left (\boldsymbol{P}_{1}\cdot \boldsymbol{a}\right ) \\-1 & 0 & \left (\boldsymbol{P}_{2}\cdot \boldsymbol{a}\right ) \\\left (\boldsymbol{P}_{1}\cdot \boldsymbol{a}\right )  & \left (\boldsymbol{P}_{2}\cdot \boldsymbol{a}\right )  & \left (\boldsymbol{a}\cdot \boldsymbol{a}\right ) \end{array}\right] \end{equation*}
    \begin{equation*} B^{2} = 1 \end{equation*}
    \begin{equation*} a' = a-(a\W B) B = - \left (\boldsymbol{P}_{2}\cdot \boldsymbol{a}\right )  \boldsymbol{P}_{1} - \left (\boldsymbol{P}_{1}\cdot \boldsymbol{a}\right )  \boldsymbol{P}_{2} \end{equation*}
    \begin{equation*} A+ = a'+a' B = - 2 \left (\boldsymbol{P}_{2}\cdot \boldsymbol{a}\right )  \boldsymbol{P}_{1} \end{equation*}
    \begin{equation*} A- = a'-a' B = - 2 \left (\boldsymbol{P}_{1}\cdot \boldsymbol{a}\right )  \boldsymbol{P}_{2} \end{equation*}
    \begin{equation*} (A+)^{2} =  0 \end{equation*}
    \begin{equation*} (A-)^{2} =  0 \end{equation*}
    \begin{equation*} a\cdot B = - \left (\boldsymbol{P}_{2}\cdot \boldsymbol{a}\right )  \boldsymbol{P}_{1} + \left (\boldsymbol{P}_{1}\cdot \boldsymbol{a}\right )  \boldsymbol{P}_{2} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def reciprocal_frame_test():
        Print_Function()
        metric = '1 # #,'+ \
                 '# 1 #,'+ \
                 '# # 1'
        (e1,e2,e3) = MV.setup('e1 e2 e3',metric)
        print('g_{ij} =',MV.metric)
        E = e1^e2^e3
        Esq = (E*E).scalar()
        print('E =',E)
        print('%E^{2} =',Esq)
        Esq_inv = 1/Esq
        E1 = (e2^e3)*E
        E2 = (-1)*(e1^e3)*E
        E3 = (e1^e2)*E
        print('E1 = (e2^e3)*E =',E1)
        print('E2 =-(e1^e3)*E =',E2)
        print('E3 = (e1^e2)*E =',E3)
        w = (E1|e2)
        w = w.expand()
        print('E1|e2 =',w)
        w = (E1|e3)
        w = w.expand()
        print('E1|e3 =',w)
        w = (E2|e1)
        w = w.expand()
        print('E2|e1 =',w)
        w = (E2|e3)
        w = w.expand()
        print('E2|e3 =',w)
        w = (E3|e1)
        w = w.expand()
        print('E3|e1 =',w)
        w = (E3|e2)
        w = w.expand()
        print('E3|e2 =',w)
        w = (E1|e1)
        w = (w.expand()).scalar()
        Esq = expand(Esq)
        print('%(E1\\cdot e1)/E^{2} =',simplify(w/Esq))
        w = (E2|e2)
        w = (w.expand()).scalar()
        print('%(E2\\cdot e2)/E^{2} =',simplify(w/Esq))
        w = (E3|e3)
        w = (w.expand()).scalar()
        print('%(E3\\cdot e3)/E^{2} =',simplify(w/Esq))
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} g_{ij} = \left[\begin{array}{ccc}1 & \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  & \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) \\\left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  & 1 & \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \\\left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  & \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right )  & 1\end{array}\right] \end{equation*}
    \begin{equation*} E =  \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E^{2} = \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right ) ^{2} - 2 \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) ^{2} + \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) ^{2} - 1 \end{equation*}
    \begin{equation*} E1 = (e2\W e3) E = \left ( \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{1} + \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{2} + \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E2 =-(e1\W e3) E = \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{1} + \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{2} + \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E3 = (e1\W e2) E = \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{1} + \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{2} + \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right ) ^{2} - 1\right ) \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E1\cdot e2 =  0 \end{equation*}
    \begin{equation*} E1\cdot e3 =  0 \end{equation*}
    \begin{equation*} E2\cdot e1 =  0 \end{equation*}
    \begin{equation*} E2\cdot e3 =  0 \end{equation*}
    \begin{equation*} E3\cdot e1 =  0 \end{equation*}
    \begin{equation*} E3\cdot e2 =  0 \end{equation*}
    \begin{equation*} (E1\cdot e1)/E^{2} = 1 \end{equation*}
    \begin{equation*} (E2\cdot e2)/E^{2} = 1 \end{equation*}
    \begin{equation*} (E3\cdot e3)/E^{2} = 1 \end{equation*}
    \end{document}

```python
check_latex('matrix_latex')
```

    \documentclass[10pt,fleqn]{report}
    \usepackage[vcentering]{geometry}
    \geometry{papersize={14in,11in},total={13in,10in}}

    \pagestyle{empty}
    \usepackage[latin1]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{amsbsy}
    \usepackage{tensor}
    \usepackage{listings}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{bm}
    \usepackage{breqn}
    \definecolor{gray}{rgb}{0.95,0.95,0.95}
    \setlength{\parindent}{0pt}
    \DeclareMathOperator{\Tr}{Tr}
    \DeclareMathOperator{\Adj}{Adj}
    \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}
    \newcommand{\lp}{\left (}
    \newcommand{\rp}{\right )}
    \newcommand{\paren}[1]{\lp {#1} \rp}
    \newcommand{\half}{\frac{1}{2}}
    \newcommand{\llt}{\left <}
    \newcommand{\rgt}{\right >}
    \newcommand{\abs}[1]{\left |{#1}\right | }
    \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}
    \newcommand{\lbrc}{\left \{}
    \newcommand{\rbrc}{\right \}}
    \newcommand{\W}{\wedge}
    \newcommand{\prm}[1]{{#1}'}
    \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}
    \newcommand{\R}{\dagger}
    \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}
    \newcommand{\grade}[1]{\left < {#1} \right >}
    \newcommand{\f}[2]{{#1}\lp{#2}\rp}
    \newcommand{\eval}[2]{\left . {#1} \right |_{#2}}
    \newcommand{\Nabla}{\boldsymbol{\nabla}}
    \newcommand{\eb}{\boldsymbol{e}}
    \usepackage{float}
    \floatstyle{plain} % optionally change the style of the new float
    \newfloat{Code}{H}{myc}
    \lstloadlanguages{Python}

    \begin{document}
    \begin{equation*} \left[\begin{array}{cc}1 & 2\\3 & 4\end{array}\right] \left[\begin{array}{c}5\\6\end{array}\right] = \left[\begin{array}{c}17\\39\end{array}\right] \end{equation*}
    \begin{equation*} \left[\begin{array}{cc}x^{3} & y^{3}\end{array}\right] \left[\begin{array}{cc}x^{2} & 2 x y\\2 x y & y^{2}\end{array}\right] = \left[\begin{array}{cc}x^{5} + 2 x y^{4} & 2 x^{4} y + y^{5}\end{array}\right] \end{equation*}
    \end{document}

```python
run('mv_setup_options')
```

    v__1*e_1 + v__2*e_2 + v__3*e_3
    v__1*e_1 + v__2*e_2 + v__3*e_3
    v__x*e_x + v__y*e_y + v__z*e_z
    v__x*e_x + v__y*e_y + v__z*e_z

    mv_setup_options.py:3: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    mv_setup_options.py:8: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v', 'vector')
    mv_setup_options.py:12: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v', 'vector')
    mv_setup_options.py:16: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v', 'vector')
    mv_setup_options.py:21: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v', 'vector')

```python
check_latex('physics_check_latex')
```

    physics_check_latex.py:6: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    physics_check_latex.py:14: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','vector',fct=True)
    physics_check_latex.py:15: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      E = MV('E','vector',fct=True)
    physics_check_latex.py:20: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      J = MV('J','vector',fct=True)
    physics_check_latex.py:48: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      psi = MV('psi','spinor',fct=True)
    physics_check_latex.py:49: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)

    \documentclass[10pt,fleqn]{report}
    \usepackage[vcentering]{geometry}
    \geometry{papersize={14in,11in},total={13in,10in}}

    \pagestyle{empty}
    \usepackage[latin1]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{amsbsy}
    \usepackage{tensor}
    \usepackage{listings}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{bm}
    \usepackage{breqn}
    \definecolor{gray}{rgb}{0.95,0.95,0.95}
    \setlength{\parindent}{0pt}
    \DeclareMathOperator{\Tr}{Tr}
    \DeclareMathOperator{\Adj}{Adj}
    \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}
    \newcommand{\lp}{\left (}
    \newcommand{\rp}{\right )}
    \newcommand{\paren}[1]{\lp {#1} \rp}
    \newcommand{\half}{\frac{1}{2}}
    \newcommand{\llt}{\left <}
    \newcommand{\rgt}{\right >}
    \newcommand{\abs}[1]{\left |{#1}\right | }
    \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}
    \newcommand{\lbrc}{\left \{}
    \newcommand{\rbrc}{\right \}}
    \newcommand{\W}{\wedge}
    \newcommand{\prm}[1]{{#1}'}
    \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}
    \newcommand{\R}{\dagger}
    \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}
    \newcommand{\grade}[1]{\left < {#1} \right >}
    \newcommand{\f}[2]{{#1}\lp{#2}\rp}
    \newcommand{\eval}[2]{\left . {#1} \right |_{#2}}
    \newcommand{\Nabla}{\boldsymbol{\nabla}}
    \newcommand{\eb}{\boldsymbol{e}}
    \usepackage{float}
    \floatstyle{plain} % optionally change the style of the new float
    \newfloat{Code}{H}{myc}
    \lstloadlanguages{Python}

    \begin{document}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def Maxwells_Equations_in_Geometric_Calculus():
        Print_Function()
        X = symbols('t x y z')
        (g0,g1,g2,g3,grad) = MV.setup('gamma*t|x|y|z',metric='[1,-1,-1,-1]',coords=X)
        I = MV.I
        B = MV('B','vector',fct=True)
        E = MV('E','vector',fct=True)
        B.set_coef(1,0,0)
        E.set_coef(1,0,0)
        B *= g0
        E *= g0
        J = MV('J','vector',fct=True)
        F = E+I*B
        print(r'\text{Pseudo Scalar\;\;}I =',I)
        print('\\text{Magnetic Field Bi-Vector\\;\\;} B = \\bm{B\\gamma_{t}} =',B)
        print('\\text{Electric Field Bi-Vector\\;\\;} E = \\bm{E\\gamma_{t}} =',E)
        print('\\text{Electromagnetic Field Bi-Vector\\;\\;} F = E+IB =',F)
        print('%\\text{Four Current Density\\;\\;} J =',J)
        gradF = grad*F
        print('#Geometric Derivative of Electomagnetic Field Bi-Vector')
        gradF.Fmt(3,'grad*F')
        print('#Maxwell Equations')
        print('grad*F = J')
        print('#Div $E$ and Curl $H$ Equations')
        (gradF.grade(1)-J).Fmt(3,'%\\grade{\\nabla F}_{1} -J = 0')
        print('#Curl $E$ and Div $B$ equations')
        (gradF.grade(3)).Fmt(3,'%\\grade{\\nabla F}_{3} = 0')
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} \text{Pseudo Scalar\;\;}I =  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{y}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} \text{Magnetic Field Bi-Vector\;\;} B = \bm{B\gamma_{t}} = - B^{x}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} - B^{y}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} - B^{z}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} \text{Electric Field Bi-Vector\;\;} E = \bm{E\gamma_{t}} = - E^{x}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} - E^{y}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} - E^{z}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} \text{Electromagnetic Field Bi-Vector\;\;} F = E+IB = - E^{x}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} - E^{y}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} - E^{z}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} - B^{z}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{y} + B^{y}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{z} - B^{x}  \boldsymbol{\gamma }_{y}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} \text{Four Current Density\;\;} J = J^{t}  \boldsymbol{\gamma }_{t} + J^{x}  \boldsymbol{\gamma }_{x} + J^{y}  \boldsymbol{\gamma }_{y} + J^{z}  \boldsymbol{\gamma }_{z} \end{equation*}
    Geometric Derivative of Electomagnetic Field Bi-Vector
    Maxwell Equations
    \begin{equation*} \boldsymbol{\nabla}  F = J \end{equation*}
    Div $E$ and Curl $H$ Equations
    Curl $E$ and Div $B$ equations
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def Dirac_Equation_in_Geometric_Calculus():
        Print_Function()
        vars = symbols('t x y z')
        (g0,g1,g2,g3,grad) = MV.setup('gamma*t|x|y|z',metric='[1,-1,-1,-1]',coords=vars)
        I = MV.I
        (m,e) = symbols('m e')
        psi = MV('psi','spinor',fct=True)
        A = MV('A','vector',fct=True)
        sig_z = g3*g0
        print('\\text{4-Vector Potential\\;\\;}\\bm{A} =',A)
        print('\\text{8-component real spinor\\;\\;}\\bm{\\psi} =',psi)
        dirac_eq = (grad*psi)*I*sig_z-e*A*psi-m*psi*g0
        dirac_eq.simplify()
        dirac_eq.Fmt(3,r'%\text{Dirac Equation\;\;}\nabla \bm{\psi} I \sigma_{z}-e\bm{A}\bm{\psi}-m\bm{\psi}\gamma_{t} = 0')
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} \text{4-Vector Potential\;\;}\bm{A} = A^{t}  \boldsymbol{\gamma }_{t} + A^{x}  \boldsymbol{\gamma }_{x} + A^{y}  \boldsymbol{\gamma }_{y} + A^{z}  \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} \text{8-component real spinor\;\;}\bm{\psi} = \psi    + \psi ^{tx}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} + \psi ^{ty}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} + \psi ^{tz}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} + \psi ^{xy}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{y} + \psi ^{xz}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{z} + \psi ^{yz}  \boldsymbol{\gamma }_{y}\wedge \boldsymbol{\gamma }_{z} + \psi ^{txyz}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{y}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def Lorentz_Tranformation_in_Geometric_Algebra():
        Print_Function()
        (alpha,beta,gamma) = symbols('alpha beta gamma')
        (x,t,xp,tp) = symbols("x t x' t'")
        (g0,g1) = MV.setup('gamma*t|x',metric='[1,-1]')
        from sympy import sinh,cosh
        R = cosh(alpha/2)+sinh(alpha/2)*(g0^g1)
        X = t*g0+x*g1
        Xp = tp*g0+xp*g1
        print('R =',R)
        print(r"#%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = t'\bm{\gamma'_{t}}+x'\bm{\gamma'_{x}} = R\lp t'\bm{\gamma_{t}}+x'\bm{\gamma_{x}}\rp R^{\dagger}")
        Xpp = R*Xp*R.rev()
        Xpp = Xpp.collect()
        Xpp = Xpp.subs({2*sinh(alpha/2)*cosh(alpha/2):sinh(alpha),sinh(alpha/2)**2+cosh(alpha/2)**2:cosh(alpha)})
        print(r"%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} =",Xpp)
        Xpp = Xpp.subs({sinh(alpha):gamma*beta,cosh(alpha):gamma})
        print(r'%\f{\sinh}{\alpha} = \gamma\beta')
        print(r'%\f{\cosh}{\alpha} = \gamma')
        print(r"%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} =",Xpp.collect())
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} R = \cosh{\left (\frac{\alpha }{2} \right )}  + \sinh{\left (\frac{\alpha }{2} \right )} \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} \end{equation*}
    \begin{equation*} t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = t'\bm{\gamma'_{t}}+x'\bm{\gamma'_{x}} = R\lp t'\bm{\gamma_{t}}+x'\bm{\gamma_{x}}\rp R^{\dagger} \end{equation*}
    \begin{equation*} t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = \left ( 2 t' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + t' - x' \sinh{\left (\alpha  \right )}\right ) \boldsymbol{\gamma }_{t} + \left ( - t' \sinh{\left (\alpha  \right )} + 2 x' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + x'\right ) \boldsymbol{\gamma }_{x} \end{equation*}
    \begin{equation*} \f{\sinh}{\alpha} = \gamma\beta \end{equation*}
    \begin{equation*} \f{\cosh}{\alpha} = \gamma \end{equation*}
    \begin{equation*} t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = \left ( - \beta  \gamma  x' + 2 t' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + t'\right ) \boldsymbol{\gamma }_{t} + \left ( - \beta  \gamma  t' + 2 x' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + x'\right ) \boldsymbol{\gamma }_{x} \end{equation*}
    \end{document}

```python
check_latex('print_check_latex')
```

    print_check_latex.py:5: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    print_check_latex.py:11: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','mv')
    print_check_latex.py:19: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)
    print_check_latex.py:20: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)
    print_check_latex.py:21: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','grade2',fct=True)
    print_check_latex.py:88: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)
    print_check_latex.py:89: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)
    print_check_latex.py:90: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','grade2',fct=True)
    print_check_latex.py:104: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','vector',fct=True)
    print_check_latex.py:105: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      E = MV('E','vector',fct=True)
    print_check_latex.py:110: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      J = MV('J','vector',fct=True)
    print_check_latex.py:152: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      psi = MV('psi','spinor',fct=True)
    print_check_latex.py:153: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)

    \documentclass[10pt,fleqn]{report}
    \usepackage[vcentering]{geometry}
    \geometry{papersize={14in,11in},total={13in,10in}}

    \pagestyle{empty}
    \usepackage[latin1]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{amsbsy}
    \usepackage{tensor}
    \usepackage{listings}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{bm}
    \usepackage{breqn}
    \definecolor{gray}{rgb}{0.95,0.95,0.95}
    \setlength{\parindent}{0pt}
    \DeclareMathOperator{\Tr}{Tr}
    \DeclareMathOperator{\Adj}{Adj}
    \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}
    \newcommand{\lp}{\left (}
    \newcommand{\rp}{\right )}
    \newcommand{\paren}[1]{\lp {#1} \rp}
    \newcommand{\half}{\frac{1}{2}}
    \newcommand{\llt}{\left <}
    \newcommand{\rgt}{\right >}
    \newcommand{\abs}[1]{\left |{#1}\right | }
    \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}
    \newcommand{\lbrc}{\left \{}
    \newcommand{\rbrc}{\right \}}
    \newcommand{\W}{\wedge}
    \newcommand{\prm}[1]{{#1}'}
    \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}
    \newcommand{\R}{\dagger}
    \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}
    \newcommand{\grade}[1]{\left < {#1} \right >}
    \newcommand{\f}[2]{{#1}\lp{#2}\rp}
    \newcommand{\eval}[2]{\left . {#1} \right |_{#2}}
    \newcommand{\Nabla}{\boldsymbol{\nabla}}
    \newcommand{\eb}{\boldsymbol{e}}
    \usepackage{float}
    \floatstyle{plain} % optionally change the style of the new float
    \newfloat{Code}{H}{myc}
    \lstloadlanguages{Python}

    \begin{document}
    \begin{equation*} \bm{A} = A  + A^{x} \boldsymbol{e}_{x} + A^{y} \boldsymbol{e}_{y} + A^{z} \boldsymbol{e}_{z} + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \bm{A} =  \begin{aligned}[t]  & A  \\  &  + A^{x} \boldsymbol{e}_{x} + A^{y} \boldsymbol{e}_{y} + A^{z} \boldsymbol{e}_{z} \\  &  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \\  &  + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{aligned} \end{equation*}
    \begin{equation*} \bm{A} =  \begin{aligned}[t]  & A  \\  &  + A^{x} \boldsymbol{e}_{x} \\  &  + A^{y} \boldsymbol{e}_{y} \\  &  + A^{z} \boldsymbol{e}_{z} \\  &  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} \\  &  + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} \\  &  + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \\  &  + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{aligned} \end{equation*}
    \begin{equation*} \bm{A} = A^{x}  \boldsymbol{e}_{x} + A^{y}  \boldsymbol{e}_{y} + A^{z}  \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \bm{B} = B^{xy}  \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + B^{xz}  \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + B^{yz}  \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  f = \partial_{x} f  \boldsymbol{e}_{x} + \partial_{y} f  \boldsymbol{e}_{y} + \partial_{z} f  \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \cdot \bm{A} = \partial_{x} A^{x}  + \partial_{y} A^{y}  + \partial_{z} A^{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  \bm{A} = \left ( \partial_{x} A^{x}  + \partial_{y} A^{y}  + \partial_{z} A^{z} \right )  + \left ( - \partial_{y} A^{x}  + \partial_{x} A^{y} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + \left ( - \partial_{z} A^{x}  + \partial_{x} A^{z} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + \left ( - \partial_{z} A^{y}  + \partial_{y} A^{z} \right ) \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} -I (\boldsymbol{\nabla} \W \bm{A}) = \left ( - \partial_{z} A^{y}  + \partial_{y} A^{z} \right ) \boldsymbol{e}_{x} + \left ( \partial_{z} A^{x}  - \partial_{x} A^{z} \right ) \boldsymbol{e}_{y} + \left ( - \partial_{y} A^{x}  + \partial_{x} A^{y} \right ) \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  \bm{B} = \left ( - \partial_{y} B^{xy}  - \partial_{z} B^{xz} \right ) \boldsymbol{e}_{x} + \left ( \partial_{x} B^{xy}  - \partial_{z} B^{yz} \right ) \boldsymbol{e}_{y} + \left ( \partial_{x} B^{xz}  + \partial_{y} B^{yz} \right ) \boldsymbol{e}_{z} + \left ( \partial_{z} B^{xy}  - \partial_{y} B^{xz}  + \partial_{x} B^{yz} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \W \bm{B} = \left ( \partial_{z} B^{xy}  - \partial_{y} B^{xz}  + \partial_{x} B^{yz} \right ) \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \cdot \bm{B} = \left ( - \partial_{y} B^{xy}  - \partial_{z} B^{xz} \right ) \boldsymbol{e}_{x} + \left ( \partial_{x} B^{xy}  - \partial_{z} B^{yz} \right ) \boldsymbol{e}_{y} + \left ( \partial_{x} B^{xz}  + \partial_{y} B^{yz} \right ) \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} g_{ij} = \left[\begin{array}{cccc}\left (\boldsymbol{a}\cdot \boldsymbol{a}\right )  & \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  & \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{a}\cdot \boldsymbol{d}\right ) \\\left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{b}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{d}\right ) \\\left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{c}\cdot \boldsymbol{c}\right )  & \left (\boldsymbol{c}\cdot \boldsymbol{d}\right ) \\\left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  & \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  & \left (\boldsymbol{c}\cdot \boldsymbol{d}\right )  & \left (\boldsymbol{d}\cdot \boldsymbol{d}\right ) \end{array}\right] \end{equation*}
    \begin{equation*} \bm{a\cdot (b c)} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b} + \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  \boldsymbol{c} \end{equation*}
    \begin{equation*} \bm{a\cdot (b\W c)} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b} + \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  \boldsymbol{c} \end{equation*}
    \begin{equation*} \bm{a\cdot (b\W c\W d)} = \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \boldsymbol{b}\wedge \boldsymbol{c} - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b}\wedge \boldsymbol{d} + \left (\boldsymbol{a}\cdot \boldsymbol{b}\right )  \boldsymbol{c}\wedge \boldsymbol{d} \end{equation*}
    \begin{equation*} \bm{a\cdot (b\W c)+c\cdot (a\W b)+b\cdot (c\W a)} =  0 \end{equation*}
    \begin{equation*} \bm{a (b\W c)-b (a\W c)+c (a\W b)} = 3 \boldsymbol{a}\wedge \boldsymbol{b}\wedge \boldsymbol{c} \end{equation*}
    \begin{equation*} \bm{a (b\W c\W d)-b (a\W c\W d)+c (a\W b\W d)-d (a\W b\W c)} = 4 \boldsymbol{a}\wedge \boldsymbol{b}\wedge \boldsymbol{c}\wedge \boldsymbol{d} \end{equation*}
    \begin{equation*} \bm{(a\W b)\cdot (c\W d)} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  + \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{c}\right ) \end{equation*}
    \begin{equation*} \bm{((a\W b)\cdot c)\cdot d} = - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  + \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \left (\boldsymbol{b}\cdot \boldsymbol{c}\right ) \end{equation*}
    \begin{equation*} \bm{(a\W b)\times (c\W d)} = - \left (\boldsymbol{b}\cdot \boldsymbol{d}\right )  \boldsymbol{a}\wedge \boldsymbol{c} + \left (\boldsymbol{b}\cdot \boldsymbol{c}\right )  \boldsymbol{a}\wedge \boldsymbol{d} + \left (\boldsymbol{a}\cdot \boldsymbol{d}\right )  \boldsymbol{b}\wedge \boldsymbol{c} - \left (\boldsymbol{a}\cdot \boldsymbol{c}\right )  \boldsymbol{b}\wedge \boldsymbol{d} \end{equation*}
    \begin{equation*} E =  \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E^{2} = \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right ) ^{2} - 2 \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) ^{2} + \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) ^{2} - 1 \end{equation*}
    \begin{equation*} E1 = (e2\W e3) E = \left ( \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{1} + \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{2} + \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E2 =-(e1\W e3) E = \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{1} + \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{2} + \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E3 = (e1\W e2) E = \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{1} + \left ( - \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right )  \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{3}\right )  + \left (\boldsymbol{e}_{2}\cdot \boldsymbol{e}_{3}\right ) \right ) \boldsymbol{e}_{2} + \left ( \left (\boldsymbol{e}_{1}\cdot \boldsymbol{e}_{2}\right ) ^{2} - 1\right ) \boldsymbol{e}_{3} \end{equation*}
    \begin{equation*} E1\cdot e2 =  0 \end{equation*}
    \begin{equation*} E1\cdot e3 =  0 \end{equation*}
    \begin{equation*} E2\cdot e1 =  0 \end{equation*}
    \begin{equation*} E2\cdot e3 =  0 \end{equation*}
    \begin{equation*} E3\cdot e1 =  0 \end{equation*}
    \begin{equation*} E3\cdot e2 =  0 \end{equation*}
    \begin{equation*} (E1\cdot e1)/E^{2} = 1 \end{equation*}
    \begin{equation*} (E2\cdot e2)/E^{2} = 1 \end{equation*}
    \begin{equation*} (E3\cdot e3)/E^{2} = 1 \end{equation*}
    \begin{equation*} A = A^{r}  \boldsymbol{e}_{r} + A^{\theta }  \boldsymbol{e}_{\theta } + A^{\phi }  \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} B = B^{r\theta }  \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\theta } + B^{r\phi }  \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\phi } + B^{\theta \phi }  \boldsymbol{e}_{\theta }\wedge \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  f = \partial_{r} f  \boldsymbol{e}_{r} + \frac{\partial_{\theta } f }{r^{2}} \boldsymbol{e}_{\theta } + \frac{\partial_{\phi } f }{r^{2} {\sin{\left (\theta  \right )}}^{2}} \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \cdot A = \frac{A^{\theta } }{\tan{\left (\theta  \right )}} + \partial_{\phi } A^{\phi }  + \partial_{r} A^{r}  + \partial_{\theta } A^{\theta }  + \frac{2 A^{r} }{r} \end{equation*}
    \begin{equation*} -I (\boldsymbol{\nabla} \W A) = \frac{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}} \left(\frac{2 A^{\phi } }{\tan{\left (\theta  \right )}} + \partial_{\theta } A^{\phi }  - \frac{\partial_{\phi } A^{\theta } }{{\sin{\left (\theta  \right )}}^{2}}\right)}{r^{2}} \boldsymbol{e}_{r} + \frac{- r^{2} {\sin{\left (\theta  \right )}}^{2} \partial_{r} A^{\phi }  - 2 r A^{\phi }  {\sin{\left (\theta  \right )}}^{2} + \partial_{\phi } A^{r} }{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}}} \boldsymbol{e}_{\theta } + \frac{r^{2} \partial_{r} A^{\theta }  + 2 r A^{\theta }  - \partial_{\theta } A^{r} }{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}}} \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \W B = \frac{r^{2} \partial_{r} B^{\theta \phi }  + 4 r B^{\theta \phi }  - \frac{2 B^{r\phi } }{\tan{\left (\theta  \right )}} - \partial_{\theta } B^{r\phi }  + \frac{\partial_{\phi } B^{r\theta } }{{\sin{\left (\theta  \right )}}^{2}}}{r^{2}} \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\theta }\wedge \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} B = \bm{B\gamma_{t}} = - B^{x}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} - B^{y}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} - B^{z}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} E = \bm{E\gamma_{t}} = - E^{x}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} - E^{y}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} - E^{z}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} F = E+IB = - E^{x}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} - E^{y}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} - E^{z}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} - B^{z}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{y} + B^{y}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{z} - B^{x}  \boldsymbol{\gamma }_{y}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} J = J^{t}  \boldsymbol{\gamma }_{t} + J^{x}  \boldsymbol{\gamma }_{x} + J^{y}  \boldsymbol{\gamma }_{y} + J^{z}  \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  F = J \end{equation*}
    \begin{equation*} R = \cosh{\left (\frac{\alpha }{2} \right )}  + \sinh{\left (\frac{\alpha }{2} \right )} \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} \end{equation*}
    \begin{equation*} t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = t'\bm{\gamma'_{t}}+x'\bm{\gamma'_{x}} = R\lp t'\bm{\gamma_{t}}+x'\bm{\gamma_{x}}\rp R^{\dagger} \end{equation*}
    \begin{equation*} t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = \left ( 2 t' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + t' - x' \sinh{\left (\alpha  \right )}\right ) \boldsymbol{\gamma }_{t} + \left ( - t' \sinh{\left (\alpha  \right )} + 2 x' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + x'\right ) \boldsymbol{\gamma }_{x} \end{equation*}
    \begin{equation*} \f{\sinh}{\alpha} = \gamma\beta \end{equation*}
    \begin{equation*} \f{\cosh}{\alpha} = \gamma \end{equation*}
    \begin{equation*} t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = \left ( - \beta  \gamma  x' + 2 t' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + t'\right ) \boldsymbol{\gamma }_{t} + \left ( - \beta  \gamma  t' + 2 x' {\sinh{\left (\frac{\alpha }{2} \right )}}^{2} + x'\right ) \boldsymbol{\gamma }_{x} \end{equation*}
    \begin{equation*} \bm{A} = A^{t}  \boldsymbol{\gamma }_{t} + A^{x}  \boldsymbol{\gamma }_{x} + A^{y}  \boldsymbol{\gamma }_{y} + A^{z}  \boldsymbol{\gamma }_{z} \end{equation*}
    \begin{equation*} \bm{\psi} = \psi    + \psi ^{tx}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x} + \psi ^{ty}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{y} + \psi ^{tz}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{z} + \psi ^{xy}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{y} + \psi ^{xz}  \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{z} + \psi ^{yz}  \boldsymbol{\gamma }_{y}\wedge \boldsymbol{\gamma }_{z} + \psi ^{txyz}  \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x}\wedge \boldsymbol{\gamma }_{y}\wedge \boldsymbol{\gamma }_{z} \end{equation*}
    \end{document}

```python
run('prob_not_solenoidal')
```

    A = z*e_x^e_y - y*e_x^e_z + x*e_y^e_z
    grad^A = 3*e_x^e_y^e_z

    f = (x**2 + y**2 + z**2)**(-1.5)
    grad*f = -3.0*x*(x**2 + y**2 + z**2)**(-2.5)*e_x - 3.0*y*(x**2 + y**2 + z**2)**(-2.5)*e_y - 3.0*z*(x**2 + y**2 + z**2)**(-2.5)*e_z

    B = z*(x**2 + y**2 + z**2)**(-1.5)*e_x^e_y - y*(x**2 + y**2 + z**2)**(-1.5)*e_x^e_z + x*(x**2 + y**2 + z**2)**(-1.5)*e_y^e_z

    grad^B = 0
    0

    prob_not_solenoidal.py:5: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    prob_not_solenoidal.py:18: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)

```python
run('products_latex')
```

    #3D Orthogonal Metric\newline
    #Multvectors:
    s = s
    v = v__x*e_x + v__y*e_y + v__z*e_z
    b = b__xy*e_x^e_y + b__xz*e_x^e_z + b__yz*e_y^e_z
    #Products:

    s*s = s**2
    s^s = s**2
    s<s = s**2
    s>s = s**2
    s*v = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    s^v = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    s<v = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    s>v = 0
    s*b = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    s^b = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    s<b = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    s>b = 0

    v*s = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    v^s = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    v<s = 0
    v>s = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    v*v = v__x**2 + v__y**2 + v__z**2
    v^v = 0
    v|v = v__x**2 + v__y**2 + v__z**2
    v<v = v__x**2 + v__y**2 + v__z**2
    v>v = v__x**2 + v__y**2 + v__z**2
    v*b = (-b__xy*v__y - b__xz*v__z)*e_x + (b__xy*v__x - b__yz*v__z)*e_y + (b__xz*v__x + b__yz*v__y)*e_z + (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    v^b = (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    v|b = (-b__xy*v__y - b__xz*v__z)*e_x + (b__xy*v__x - b__yz*v__z)*e_y + (b__xz*v__x + b__yz*v__y)*e_z
    v<b = (-b__xy*v__y - b__xz*v__z)*e_x + (b__xy*v__x - b__yz*v__z)*e_y + (b__xz*v__x + b__yz*v__y)*e_z
    v>b = 0

    b*s = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    b^s = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    b<s = 0
    b>s = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    b*v = (b__xy*v__y + b__xz*v__z)*e_x + (-b__xy*v__x + b__yz*v__z)*e_y + (-b__xz*v__x - b__yz*v__y)*e_z + (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    b^v = (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    b|v = (b__xy*v__y + b__xz*v__z)*e_x + (-b__xy*v__x + b__yz*v__z)*e_y + (-b__xz*v__x - b__yz*v__y)*e_z
    b<v = 0
    b>v = (b__xy*v__y + b__xz*v__z)*e_x + (-b__xy*v__x + b__yz*v__z)*e_y + (-b__xz*v__x - b__yz*v__y)*e_z
    b*b = -b__xy**2 - b__xz**2 - b__yz**2
    b^b = 0
    b|b = -b__xy**2 - b__xz**2 - b__yz**2
    b<b = -b__xy**2 - b__xz**2 - b__yz**2
    b>b = -b__xy**2 - b__xz**2 - b__yz**2
    #Multivector Functions:
    s(X) = s
    v(X) = v__x*e_x + v__y*e_y + v__z*e_z
    b(X) = b__xy*e_x^e_y + b__xz*e_x^e_z + b__yz*e_y^e_z
    #Products:

    grad*s = D{x}s*e_x + D{y}s*e_y + D{z}s*e_z
    grad^s = D{x}s*e_x + D{y}s*e_y + D{z}s*e_z
    grad<s = 0
    grad>s = D{x}s*e_x + D{y}s*e_y + D{z}s*e_z
    grad*v = D{x}v__x + D{y}v__y + D{z}v__z + (-D{y}v__x + D{x}v__y)*e_x^e_y + (-D{z}v__x + D{x}v__z)*e_x^e_z + (-D{z}v__y + D{y}v__z)*e_y^e_z
    grad^v = (-D{y}v__x + D{x}v__y)*e_x^e_y + (-D{z}v__x + D{x}v__z)*e_x^e_z + (-D{z}v__y + D{y}v__z)*e_y^e_z
    grad|v = D{x}v__x + D{y}v__y + D{z}v__z
    grad<v = D{x}v__x + D{y}v__y + D{z}v__z
    grad>v = D{x}v__x + D{y}v__y + D{z}v__z
    grad*b = (-D{y}b__xy - D{z}b__xz)*e_x + (D{x}b__xy - D{z}b__yz)*e_y + (D{x}b__xz + D{y}b__yz)*e_z + (D{z}b__xy - D{y}b__xz + D{x}b__yz)*e_x^e_y^e_z
    grad^b = (D{z}b__xy - D{y}b__xz + D{x}b__yz)*e_x^e_y^e_z
    grad|b = (-D{y}b__xy - D{z}b__xz)*e_x + (D{x}b__xy - D{z}b__yz)*e_y + (D{x}b__xz + D{y}b__yz)*e_z
    grad<b = (-D{y}b__xy - D{z}b__xz)*e_x + (D{x}b__xy - D{z}b__yz)*e_y + (D{x}b__xz + D{y}b__yz)*e_z
    grad>b = 0

    s*grad = e_x*s*D{x} + e_y*s*D{y} + e_z*s*D{z}
    s^grad = e_x*s*D{x} + e_y*s*D{y} + e_z*s*D{z}
    s<grad = e_x*s*D{x} + e_y*s*D{y} + e_z*s*D{z}
    s>grad =  0
    s*s = s**2
    s^s = s**2
    s<s = s**2
    s>s = s**2
    s*v = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    s^v = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    s<v = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    s>v = 0
    s*b = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    s^b = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    s<b = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    s>b = 0

    v*grad = v__x*D{x} + v__y*D{y} + v__z*D{z} + e_x^e_y*(-v__y*D{x} + v__x*D{y}) + e_x^e_z*(-v__z*D{x} + v__x*D{z}) + e_y^e_z*(-v__z*D{y} + v__y*D{z})
    v^grad = e_x^e_y*(-v__y*D{x} + v__x*D{y}) + e_x^e_z*(-v__z*D{x} + v__x*D{z}) + e_y^e_z*(-v__z*D{y} + v__y*D{z})
    v|grad = v__x*D{x} + v__y*D{y} + v__z*D{z}
    v<grad = v__x*D{x} + v__y*D{y} + v__z*D{z}
    v>grad = v__x*D{x} + v__y*D{y} + v__z*D{z}
    v*s = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    v^s = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    v<s = 0
    v>s = s*v__x*e_x + s*v__y*e_y + s*v__z*e_z
    v*v = v__x**2 + v__y**2 + v__z**2
    v^v = 0
    v|v = v__x**2 + v__y**2 + v__z**2
    v<v = v__x**2 + v__y**2 + v__z**2
    v>v = v__x**2 + v__y**2 + v__z**2
    v*b = (-b__xy*v__y - b__xz*v__z)*e_x + (b__xy*v__x - b__yz*v__z)*e_y + (b__xz*v__x + b__yz*v__y)*e_z + (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    v^b = (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    v|b = (-b__xy*v__y - b__xz*v__z)*e_x + (b__xy*v__x - b__yz*v__z)*e_y + (b__xz*v__x + b__yz*v__y)*e_z
    v<b = (-b__xy*v__y - b__xz*v__z)*e_x + (b__xy*v__x - b__yz*v__z)*e_y + (b__xz*v__x + b__yz*v__y)*e_z
    v>b = 0

    b*grad = e_x*(b__xy*D{y} + b__xz*D{z}) + e_y*(-b__xy*D{x} + b__yz*D{z}) + e_z*(-b__xz*D{x} - b__yz*D{y}) + e_x^e_y^e_z*(b__yz*D{x} - b__xz*D{y} + b__xy*D{z})
    b^grad = e_x^e_y^e_z*(b__yz*D{x} - b__xz*D{y} + b__xy*D{z})
    b|grad = e_x*(b__xy*D{y} + b__xz*D{z}) + e_y*(-b__xy*D{x} + b__yz*D{z}) + e_z*(-b__xz*D{x} - b__yz*D{y})
    b<grad =  0
    b>grad = e_x*(b__xy*D{y} + b__xz*D{z}) + e_y*(-b__xy*D{x} + b__yz*D{z}) + e_z*(-b__xz*D{x} - b__yz*D{y})
    b*s = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    b^s = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    b<s = 0
    b>s = b__xy*s*e_x^e_y + b__xz*s*e_x^e_z + b__yz*s*e_y^e_z
    b*v = (b__xy*v__y + b__xz*v__z)*e_x + (-b__xy*v__x + b__yz*v__z)*e_y + (-b__xz*v__x - b__yz*v__y)*e_z + (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    b^v = (b__xy*v__z - b__xz*v__y + b__yz*v__x)*e_x^e_y^e_z
    b|v = (b__xy*v__y + b__xz*v__z)*e_x + (-b__xy*v__x + b__yz*v__z)*e_y + (-b__xz*v__x - b__yz*v__y)*e_z
    b<v = 0
    b>v = (b__xy*v__y + b__xz*v__z)*e_x + (-b__xy*v__x + b__yz*v__z)*e_y + (-b__xz*v__x - b__yz*v__y)*e_z
    b*b = -b__xy**2 - b__xz**2 - b__yz**2
    b^b = 0
    b|b = -b__xy**2 - b__xz**2 - b__yz**2
    b<b = -b__xy**2 - b__xz**2 - b__yz**2
    b>b = -b__xy**2 - b__xz**2 - b__yz**2
    #General 2D Metric\newline
    #Multivector Functions:
    s(X) = s
    v(X) = v__x*e_x + v__y*e_y
    b(X) = v__xy*e_x^e_y
    #Products:

    grad*s = (-(e_x.e_y)*D{y}s + (e_y.e_y)*D{x}s)*e_x/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2) + ((e_x.e_x)*D{y}s - (e_x.e_y)*D{x}s)*e_y/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)
    grad^s = (-(e_x.e_y)*D{y}s + (e_y.e_y)*D{x}s)*e_x/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2) + ((e_x.e_x)*D{y}s - (e_x.e_y)*D{x}s)*e_y/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)
    grad<s = 0
    grad>s = (-(e_x.e_y)*D{y}s + (e_y.e_y)*D{x}s)*e_x/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2) + ((e_x.e_x)*D{y}s - (e_x.e_y)*D{x}s)*e_y/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)
    grad*v = D{x}v__x + D{y}v__y + (-(e_x.e_x)*D{y}v__x + (e_x.e_y)*D{x}v__x - (e_x.e_y)*D{y}v__y + (e_y.e_y)*D{x}v__y)*e_x^e_y/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)
    grad^v = (-(e_x.e_x)*D{y}v__x + (e_x.e_y)*D{x}v__x - (e_x.e_y)*D{y}v__y + (e_y.e_y)*D{x}v__y)*e_x^e_y/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)
    grad|v = D{x}v__x + D{y}v__y
    grad<v = D{x}v__x + D{y}v__y
    grad>v = D{x}v__x + D{y}v__y

    s*grad = e_x*((e_y.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} - (e_x.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y}) + e_y*(-(e_x.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} + (e_x.e_x)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y})
    s^grad = e_x*((e_y.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} - (e_x.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y}) + e_y*(-(e_x.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} + (e_x.e_x)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y})
    s<grad = e_x*((e_y.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} - (e_x.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y}) + e_y*(-(e_x.e_y)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} + (e_x.e_x)*s/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y})
    s>grad =  0
    s*s = s**2
    s^s = s**2
    s<s = s**2
    s>s = s**2
    s*v = s*v__x*e_x + s*v__y*e_y
    s^v = s*v__x*e_x + s*v__y*e_y
    s<v = s*v__x*e_x + s*v__y*e_y
    s>v = 0

    v*grad = v__x*D{x} + v__y*D{y} + e_x^e_y*(-((e_x.e_y)*v__x + (e_y.e_y)*v__y)/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} + ((e_x.e_x)*v__x + (e_x.e_y)*v__y)/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y})
    v^grad = e_x^e_y*(-((e_x.e_y)*v__x + (e_y.e_y)*v__y)/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{x} + ((e_x.e_x)*v__x + (e_x.e_y)*v__y)/((e_x.e_x)*(e_y.e_y) - (e_x.e_y)**2)*D{y})
    v|grad = v__x*D{x} + v__y*D{y}
    v<grad = v__x*D{x} + v__y*D{y}
    v>grad = v__x*D{x} + v__y*D{y}
    v*s = s*v__x*e_x + s*v__y*e_y
    v^s = s*v__x*e_x + s*v__y*e_y
    v<s = 0
    v>s = s*v__x*e_x + s*v__y*e_y
    v*v = (e_x.e_x)*v__x**2 + 2*(e_x.e_y)*v__x*v__y + (e_y.e_y)*v__y**2
    v^v = 0
    v|v = (e_x.e_x)*v__x**2 + 2*(e_x.e_y)*v__x*v__y + (e_y.e_y)*v__y**2
    v<v = (e_x.e_x)*v__x**2 + 2*(e_x.e_y)*v__x*v__y + (e_y.e_y)*v__y**2
    v>v = (e_x.e_x)*v__x**2 + 2*(e_x.e_y)*v__x*v__y + (e_y.e_y)*v__y**2

    products_latex.py:3: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    products_latex.py:13: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      s = MV('s','scalar')
    products_latex.py:14: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v','vector')
    products_latex.py:15: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      b = MV('b','bivector')
    products_latex.py:38: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      fs = MV('s','scalar',fct=True)
    products_latex.py:39: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      fv = MV('v','vector',fct=True)
    products_latex.py:40: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      fb = MV('b','bivector',fct=True)
    products_latex.py:71: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      s = MV('s','scalar',fct=True)
    products_latex.py:72: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v','vector',fct=True)
    products_latex.py:73: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      b = MV('v','bivector',fct=True)

```python
check_latex('reflect_test')
```

    reflect_test.py:4: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    reflect_test.py:10: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      a = MV('a','vector')
    reflect_test.py:13: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      c = MV('c','vector')

    \documentclass[10pt,fleqn]{report}
    \usepackage[vcentering]{geometry}
    \geometry{papersize={14in,11in},total={13in,10in}}

    \pagestyle{empty}
    \usepackage[latin1]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{amsbsy}
    \usepackage{tensor}
    \usepackage{listings}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{bm}
    \usepackage{breqn}
    \definecolor{gray}{rgb}{0.95,0.95,0.95}
    \setlength{\parindent}{0pt}
    \DeclareMathOperator{\Tr}{Tr}
    \DeclareMathOperator{\Adj}{Adj}
    \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}
    \newcommand{\lp}{\left (}
    \newcommand{\rp}{\right )}
    \newcommand{\paren}[1]{\lp {#1} \rp}
    \newcommand{\half}{\frac{1}{2}}
    \newcommand{\llt}{\left <}
    \newcommand{\rgt}{\right >}
    \newcommand{\abs}[1]{\left |{#1}\right | }
    \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}
    \newcommand{\lbrc}{\left \{}
    \newcommand{\rbrc}{\right \}}
    \newcommand{\W}{\wedge}
    \newcommand{\prm}[1]{{#1}'}
    \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}
    \newcommand{\R}{\dagger}
    \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}
    \newcommand{\grade}[1]{\left < {#1} \right >}
    \newcommand{\f}[2]{{#1}\lp{#2}\rp}
    \newcommand{\eval}[2]{\left . {#1} \right |_{#2}}
    \newcommand{\Nabla}{\boldsymbol{\nabla}}
    \newcommand{\eb}{\boldsymbol{e}}
    \usepackage{float}
    \floatstyle{plain} % optionally change the style of the new float
    \newfloat{Code}{H}{myc}
    \lstloadlanguages{Python}

    \begin{document}
    \begin{equation*} a = a^{x} \boldsymbol{e}_{x} + a^{y} \boldsymbol{e}_{y} + a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} b =  \boldsymbol{e}_{x} + \boldsymbol{e}_{y} + \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} c = c^{w} \boldsymbol{e}_{w} + c^{x} \boldsymbol{e}_{x} + c^{y} \boldsymbol{e}_{y} + c^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} a\mbox{ reflect in }xy = a^{x} \boldsymbol{e}_{x} + a^{y} \boldsymbol{e}_{y} - a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} a\mbox{ reflect in }yz = - a^{x} \boldsymbol{e}_{x} + a^{y} \boldsymbol{e}_{y} + a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} a\mbox{ reflect in }zx = a^{x} \boldsymbol{e}_{x} - a^{y} \boldsymbol{e}_{y} + a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} a\mbox{ reflect in plane }(x=y) = a^{y} \boldsymbol{e}_{x} + a^{x} \boldsymbol{e}_{y} + a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} b\mbox{ reflect in plane }(x+y+z=0) = - \boldsymbol{e}_{x} - \boldsymbol{e}_{y} - \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \mbox{Reflect in }\bm{e}_{x} = a^{x} \boldsymbol{e}_{x} - a^{y} \boldsymbol{e}_{y} - a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \mbox{Reflect in }\bm{e}_{y} = - a^{x} \boldsymbol{e}_{x} + a^{y} \boldsymbol{e}_{y} - a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} \mbox{Reflect in }\bm{e}_{z} = - a^{x} \boldsymbol{e}_{x} - a^{y} \boldsymbol{e}_{y} + a^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} c\mbox{ reflect in }xy = - c^{w} \boldsymbol{e}_{w} + c^{x} \boldsymbol{e}_{x} + c^{y} \boldsymbol{e}_{y} - c^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} c\mbox{ reflect in }xyz = - c^{w} \boldsymbol{e}_{w} + c^{x} \boldsymbol{e}_{x} + c^{y} \boldsymbol{e}_{y} + c^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} wx\mbox{ reflect in }yz =  \boldsymbol{e}_{w}\wedge \boldsymbol{e}_{x} \end{equation*}
    \begin{equation*} wx\mbox{ reflect in }xy = - \boldsymbol{e}_{w}\wedge \boldsymbol{e}_{x} \end{equation*}
    \end{document}

```python
check_latex('simple_check_latex')
```

    simple_check_latex.py:3: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    simple_check_latex.py:10: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','mv')
    simple_check_latex.py:19: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    simple_check_latex.py:20: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      Y = MV('Y','vector')
    simple_check_latex.py:35: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    simple_check_latex.py:36: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','spinor')

    \documentclass[10pt,fleqn]{report}
    \usepackage[vcentering]{geometry}
    \geometry{papersize={14in,11in},total={13in,10in}}

    \pagestyle{empty}
    \usepackage[latin1]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{amsbsy}
    \usepackage{tensor}
    \usepackage{listings}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{bm}
    \usepackage{breqn}
    \definecolor{gray}{rgb}{0.95,0.95,0.95}
    \setlength{\parindent}{0pt}
    \DeclareMathOperator{\Tr}{Tr}
    \DeclareMathOperator{\Adj}{Adj}
    \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}
    \newcommand{\lp}{\left (}
    \newcommand{\rp}{\right )}
    \newcommand{\paren}[1]{\lp {#1} \rp}
    \newcommand{\half}{\frac{1}{2}}
    \newcommand{\llt}{\left <}
    \newcommand{\rgt}{\right >}
    \newcommand{\abs}[1]{\left |{#1}\right | }
    \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}
    \newcommand{\lbrc}{\left \{}
    \newcommand{\rbrc}{\right \}}
    \newcommand{\W}{\wedge}
    \newcommand{\prm}[1]{{#1}'}
    \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}
    \newcommand{\R}{\dagger}
    \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}
    \newcommand{\grade}[1]{\left < {#1} \right >}
    \newcommand{\f}[2]{{#1}\lp{#2}\rp}
    \newcommand{\eval}[2]{\left . {#1} \right |_{#2}}
    \newcommand{\Nabla}{\boldsymbol{\nabla}}
    \newcommand{\eb}{\boldsymbol{e}}
    \usepackage{float}
    \floatstyle{plain} % optionally change the style of the new float
    \newfloat{Code}{H}{myc}
    \lstloadlanguages{Python}

    \begin{document}
    \begin{equation*} g_{ij} = \left[\begin{array}{ccc}\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{x}\right )  & \left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{z}\right ) \\\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{z}\right ) \\\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{z}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{z}\right )  & \left (\boldsymbol{e}_{z}\cdot \boldsymbol{e}_{z}\right ) \end{array}\right] \end{equation*}
    \begin{equation*} A = A  + A^{x} \boldsymbol{e}_{x} + A^{y} \boldsymbol{e}_{y} + A^{z} \boldsymbol{e}_{z} + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} A =  \begin{aligned}[t]  & A  \\  &  + A^{x} \boldsymbol{e}_{x} + A^{y} \boldsymbol{e}_{y} + A^{z} \boldsymbol{e}_{z} \\  &  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \\  &  + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{aligned} \end{equation*}
    \begin{equation*} A =  \begin{aligned}[t]  & A  \\  &  + A^{x} \boldsymbol{e}_{x} \\  &  + A^{y} \boldsymbol{e}_{y} \\  &  + A^{z} \boldsymbol{e}_{z} \\  &  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} \\  &  + A^{xz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} \\  &  + A^{yz} \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \\  &  + A^{xyz} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{aligned} \end{equation*}
    \begin{equation*} X = X^{x} \boldsymbol{e}_{x} + X^{y} \boldsymbol{e}_{y} + X^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} Y = Y^{x} \boldsymbol{e}_{x} + Y^{y} \boldsymbol{e}_{y} + Y^{z} \boldsymbol{e}_{z} \end{equation*}
    \begin{equation*} g_{ij} = \left[\begin{array}{cc}\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{x}\right )  & \left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right ) \\\left (\boldsymbol{e}_{x}\cdot \boldsymbol{e}_{y}\right )  & \left (\boldsymbol{e}_{y}\cdot \boldsymbol{e}_{y}\right ) \end{array}\right] \end{equation*}
    \begin{equation*} X = X^{x} \boldsymbol{e}_{x} + X^{y} \boldsymbol{e}_{y} \end{equation*}
    \begin{equation*} A = A  + A^{xy} \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} \end{equation*}
    \end{document}

```python
run('simple_check')
```

    u__x*e_x + u__y*e_y + u__z*e_z
    v__x*e_x + v__y*e_y + v__z*e_z
    w__x*e_x + w__y*e_y + w__z*e_z
    (u__x*v__y - u__y*v__x)*e_x^e_y + (u__x*v__z - u__z*v__x)*e_x^e_z + (u__y*v__z - u__z*v__y)*e_y^e_z
    True
    (u__x*v__y*w__z - u__x*v__z*w__y - u__y*v__x*w__z + u__y*v__z*w__x + u__z*v__x*w__y - u__z*v__y*w__x)*e_x^e_y^e_z
    True
    -u__x**2*v__y**2 - u__x**2*v__z**2 + 2*u__x*u__y*v__x*v__y + 2*u__x*u__z*v__x*v__z - u__y**2*v__x**2 - u__y**2*v__z**2 + 2*u__y*u__z*v__y*v__z - u__z**2*v__x**2 - u__z**2*v__y**2

    simple_check.py:5: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    simple_check.py:13: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      u = MV('u','vector')
    simple_check.py:14: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      v = MV('v','vector')
    simple_check.py:15: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      w = MV('w','vector')

```python
check_latex('spherical_latex')
```

    spherical_latex.py:5: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    spherical_latex.py:14: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)
    spherical_latex.py:15: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)
    spherical_latex.py:16: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','grade2',fct=True)

    \documentclass[10pt,fleqn]{report}
    \usepackage[vcentering]{geometry}
    \geometry{papersize={14in,11in},total={13in,10in}}

    \pagestyle{empty}
    \usepackage[latin1]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{amsbsy}
    \usepackage{tensor}
    \usepackage{listings}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{bm}
    \usepackage{breqn}
    \definecolor{gray}{rgb}{0.95,0.95,0.95}
    \setlength{\parindent}{0pt}
    \DeclareMathOperator{\Tr}{Tr}
    \DeclareMathOperator{\Adj}{Adj}
    \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}
    \newcommand{\lp}{\left (}
    \newcommand{\rp}{\right )}
    \newcommand{\paren}[1]{\lp {#1} \rp}
    \newcommand{\half}{\frac{1}{2}}
    \newcommand{\llt}{\left <}
    \newcommand{\rgt}{\right >}
    \newcommand{\abs}[1]{\left |{#1}\right | }
    \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}
    \newcommand{\lbrc}{\left \{}
    \newcommand{\rbrc}{\right \}}
    \newcommand{\W}{\wedge}
    \newcommand{\prm}[1]{{#1}'}
    \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}
    \newcommand{\R}{\dagger}
    \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}
    \newcommand{\grade}[1]{\left < {#1} \right >}
    \newcommand{\f}[2]{{#1}\lp{#2}\rp}
    \newcommand{\eval}[2]{\left . {#1} \right |_{#2}}
    \newcommand{\Nabla}{\boldsymbol{\nabla}}
    \newcommand{\eb}{\boldsymbol{e}}
    \usepackage{float}
    \floatstyle{plain} % optionally change the style of the new float
    \newfloat{Code}{H}{myc}
    \lstloadlanguages{Python}

    \begin{document}
    \begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]
    def derivatives_in_spherical_coordinates():
        Print_Function()
        X = (r,th,phi) = symbols('r theta phi')
        curv = [[r*cos(phi)*sin(th),r*sin(phi)*sin(th),r*cos(th)],[1,r,r*sin(th)]]
        (er,eth,ephi,grad) = MV.setup('e_r e_theta e_phi',metric='[1,1,1]',coords=X,curv=curv)
        f = MV('f','scalar',fct=True)
        A = MV('A','vector',fct=True)
        B = MV('B','grade2',fct=True)
        print('f =',f)
        print('A =',A)
        print('B =',B)
        print('grad*f =',grad*f)
        print('grad|A =',grad|A)
        print('-I*(grad^A) =',-MV.I*(grad^A))
        print('grad^B =',grad^B)
        return
    \end{lstlisting}
    Code Output:
    \begin{equation*} f = f \end{equation*}
    \begin{equation*} A = A^{r}  \boldsymbol{e}_{r} + A^{\theta }  \boldsymbol{e}_{\theta } + A^{\phi }  \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} B = B^{r\theta }  \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\theta } + B^{r\phi }  \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\phi } + B^{\theta \phi }  \boldsymbol{e}_{\theta }\wedge \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla}  f = \partial_{r} f  \boldsymbol{e}_{r} + \frac{\partial_{\theta } f }{r^{2}} \boldsymbol{e}_{\theta } + \frac{\partial_{\phi } f }{r^{2} {\sin{\left (\theta  \right )}}^{2}} \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \cdot A = \frac{A^{\theta } }{\tan{\left (\theta  \right )}} + \partial_{\phi } A^{\phi }  + \partial_{r} A^{r}  + \partial_{\theta } A^{\theta }  + \frac{2 A^{r} }{r} \end{equation*}
    \begin{equation*} -I (\boldsymbol{\nabla} \W A) = \frac{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}} \left(\frac{2 A^{\phi } }{\tan{\left (\theta  \right )}} + \partial_{\theta } A^{\phi }  - \frac{\partial_{\phi } A^{\theta } }{{\sin{\left (\theta  \right )}}^{2}}\right)}{r^{2}} \boldsymbol{e}_{r} + \frac{- r^{2} {\sin{\left (\theta  \right )}}^{2} \partial_{r} A^{\phi }  - 2 r A^{\phi }  {\sin{\left (\theta  \right )}}^{2} + \partial_{\phi } A^{r} }{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}}} \boldsymbol{e}_{\theta } + \frac{r^{2} \partial_{r} A^{\theta }  + 2 r A^{\theta }  - \partial_{\theta } A^{r} }{\sqrt{r^{4} {\sin{\left (\theta  \right )}}^{2}}} \boldsymbol{e}_{\phi } \end{equation*}
    \begin{equation*} \boldsymbol{\nabla} \W B = \frac{r^{2} \partial_{r} B^{\theta \phi }  + 4 r B^{\theta \phi }  - \frac{2 B^{r\phi } }{\tan{\left (\theta  \right )}} - \partial_{\theta } B^{r\phi }  + \frac{\partial_{\phi } B^{r\theta } }{{\sin{\left (\theta  \right )}}^{2}}}{r^{2}} \boldsymbol{e}_{r}\wedge \boldsymbol{e}_{\theta }\wedge \boldsymbol{e}_{\phi } \end{equation*}
    \end{document}

```python
run('terminal_check')
```

    A = A + A__x*e_x + A__y*e_y + A__z*e_z + A__xy*e_x^e_y + A__xz*e_x^e_z + A__yz*e_y^e_z + A__xyz*e_x^e_y^e_z
    A =  A
     + A__x*e_x + A__y*e_y + A__z*e_z
     + A__xy*e_x^e_y + A__xz*e_x^e_z + A__yz*e_y^e_z
     + A__xyz*e_x^e_y^e_z
    A =  A
     + A__x*e_x
     + A__y*e_y
     + A__z*e_z
     + A__xy*e_x^e_y
     + A__xz*e_x^e_z
     + A__yz*e_y^e_z
     + A__xyz*e_x^e_y^e_z
    g_{ij} =
     Matrix([
    [(e_x.e_x), (e_x.e_y), (e_x.e_z)],
    [(e_x.e_y), (e_y.e_y), (e_y.e_z)],
    [(e_x.e_z), (e_y.e_z), (e_z.e_z)]])
    X = X__x*e_x + X__y*e_y + X__z*e_z
    Y = Y__x*e_x + Y__y*e_y + Y__z*e_z
    g_{ij} =
     Matrix([
    [(e_x.e_x), (e_x.e_y)],
    [(e_x.e_y), (e_y.e_y)]])
    X = X__x*e_x + X__y*e_y
    A = A + A__xy*e_x^e_y
    g_{ii} =
     Matrix([
    [1, 0],
    [0, 1]])
    X = X__x*e_x + X__y*e_y
    A = A + A__xy*e_x^e_y
    g_{ij} =
     Matrix([
    [(a.a), (a.b), (a.c), (a.d), (a.e)],
    [(a.b), (b.b), (b.c), (b.d), (b.e)],
    [(a.c), (b.c), (c.c), (c.d), (c.e)],
    [(a.d), (b.d), (c.d), (d.d), (d.e)],
    [(a.e), (b.e), (c.e), (d.e), (e.e)]])
    a|(b*c) = -(a.c)*b + (a.b)*c
    a|(b^c) = -(a.c)*b + (a.b)*c
    a|(b^c^d) = (a.d)*b^c - (a.c)*b^d + (a.b)*c^d
    a|(b^c)+c|(a^b)+b|(c^a) = 0
    a*(b^c)-b*(a^c)+c*(a^b) = 3*a^b^c
    a*(b^c^d)-b*(a^c^d)+c*(a^b^d)-d*(a^b^c) = 4*a^b^c^d
    (a^b)|(c^d) = -(a.c)*(b.d) + (a.d)*(b.c)
    ((a^b)|c)|d = -(a.c)*(b.d) + (a.d)*(b.c)
    (a^b)x(c^d) = -(b.d)*a^c + (b.c)*a^d + (a.d)*b^c - (a.c)*b^d
    (a|(b^c))|(d^e) = (-(a.b)*(c.e) + (a.c)*(b.e))*d + ((a.b)*(c.d) - (a.c)*(b.d))*e
    f = f
    A = A__x*e_x + A__y*e_y + A__z*e_z
    B = B__xy*e_x^e_y + B__xz*e_x^e_z + B__yz*e_y^e_z
    C = C + C__x*e_x + C__y*e_y + C__z*e_z + C__xy*e_x^e_y + C__xz*e_x^e_z + C__yz*e_y^e_z + C__xyz*e_x^e_y^e_z
    grad*f = D{x}f*e_x + D{y}f*e_y + D{z}f*e_z
    grad|A = D{x}A__x + D{y}A__y + D{z}A__z
    grad*A = D{x}A__x + D{y}A__y + D{z}A__z + (-D{y}A__x + D{x}A__y)*e_x^e_y + (-D{z}A__x + D{x}A__z)*e_x^e_z + (-D{z}A__y + D{y}A__z)*e_y^e_z
    -I*(grad^A) = (-D{z}A__y + D{y}A__z)*e_x + (D{z}A__x - D{x}A__z)*e_y + (-D{y}A__x + D{x}A__y)*e_z
    grad*B = (-D{y}B__xy - D{z}B__xz)*e_x + (D{x}B__xy - D{z}B__yz)*e_y + (D{x}B__xz + D{y}B__yz)*e_z + (D{z}B__xy - D{y}B__xz + D{x}B__yz)*e_x^e_y^e_z
    grad^B = (D{z}B__xy - D{y}B__xz + D{x}B__yz)*e_x^e_y^e_z
    grad|B = (-D{y}B__xy - D{z}B__xz)*e_x + (D{x}B__xy - D{z}B__yz)*e_y + (D{x}B__xz + D{y}B__yz)*e_z
    grad<A = D{x}A__x + D{y}A__y + D{z}A__z
    grad>A = D{x}A__x + D{y}A__y + D{z}A__z
    grad<B = (-D{y}B__xy - D{z}B__xz)*e_x + (D{x}B__xy - D{z}B__yz)*e_y + (D{x}B__xz + D{y}B__yz)*e_z
    grad>B = 0
    grad<C = D{x}C__x + D{y}C__y + D{z}C__z + (-D{y}C__xy - D{z}C__xz)*e_x + (D{x}C__xy - D{z}C__yz)*e_y + (D{x}C__xz + D{y}C__yz)*e_z + D{z}C__xyz*e_x^e_y - D{y}C__xyz*e_x^e_z + D{x}C__xyz*e_y^e_z
    grad>C = D{x}C__x + D{y}C__y + D{z}C__z + D{x}C*e_x + D{y}C*e_y + D{z}C*e_z
    f = f
    A = A__r*e_r + A__theta*e_theta + A__phi*e_phi
    B = B__rtheta*e_r^e_theta + B__rphi*e_r^e_phi + B__thetaphi*e_theta^e_phi
    grad*f = D{r}f*e_r + D{theta}f*e_theta/r**2 + D{phi}f*e_phi/(r**2*sin(theta)**2)
    grad|A = A__theta/tan(theta) + D{phi}A__phi + D{r}A__r + D{theta}A__theta + 2*A__r/r
    -I*(grad^A) = sqrt(r**4*sin(theta)**2)*(2*A__phi/tan(theta) + D{theta}A__phi - D{phi}A__theta/sin(theta)**2)*e_r/r**2 + (-r**2*sin(theta)**2*D{r}A__phi - 2*r*A__phi*sin(theta)**2 + D{phi}A__r)*e_theta/sqrt(r**4*sin(theta)**2) + (r**2*D{r}A__theta + 2*r*A__theta - D{theta}A__r)*e_phi/sqrt(r**4*sin(theta)**2)
    grad^B = (r**2*D{r}B__thetaphi + 4*r*B__thetaphi - 2*B__rphi/tan(theta) - D{theta}B__rphi + D{phi}B__rtheta/sin(theta)**2)*e_r^e_theta^e_phi/r**2
    X = 1.2*e_x + 2.34*e_y + 0.555*e_z
    Nga(X,2) = 1.2*e_x + 2.3*e_y + 0.55*e_z
    X*Y = 12.7011 + 4.02078*e_x^e_y + 6.175185*e_x^e_z + 10.182*e_y^e_z
    Nga(X*Y,2) = 13.0 + 4.0*e_x^e_y + 6.2*e_x^e_z + 10.0*e_y^e_z
    g_{ij} =
     Matrix([
    [1, 0, 0, 0, 0],
    [0, 1, 0, 0, 0],
    [0, 0, 1, 0, 0],
    [0, 0, 0, 0, 2],
    [0, 0, 0, 2, 0]])
    F(a) = e_1 + n/2 - nbar/2
    F(b) = e_2 + n/2 - nbar/2
    F(c) = -e_1 + n/2 - nbar/2
    F(d) = e_3 + n/2 - nbar/2
    F(x) = x1*e_1 + x2*e_2 + x3*e_3 + (x1**2/2 + x2**2/2 + x3**2/2)*n - nbar/2
    a = e1, b = e2, c = -e1, and d = e3
    A = F(a) = 1/2*(a*a*n+2*a-nbar), etc.
    Circle through a, b, and c
    Circle: A^B^C^X = 0 = -x3*e_1^e_2^e_3^n + x3*e_1^e_2^e_3^nbar + (x1**2/2 + x2**2/2 + x3**2/2 - 1/2)*e_1^e_2^n^nbar
    Line through a and b
    Line  : A^B^n^X = 0 = -x3*e_1^e_2^e_3^n + (x1/2 + x2/2 - 1/2)*e_1^e_2^n^nbar + x3*e_1^e_3^n^nbar/2 - x3*e_2^e_3^n^nbar/2
    Sphere through a, b, c, and d
    Sphere: A^B^C^D^X = 0 = (-x1**2/2 - x2**2/2 - x3**2/2 + 1/2)*e_1^e_2^e_3^n^nbar
    Plane through a, b, and d
    Plane : A^B^n^D^X = 0 = (-x1/2 - x2/2 - x3/2 + 1/2)*e_1^e_2^e_3^n^nbar
    g_{ij} =
     Matrix([
    [(p1.p1), (p1.p2), (p1.p3), 0, 0],
    [(p1.p2), (p2.p2), (p2.p3), 0, 0],
    [(p1.p3), (p2.p3), (p3.p3), 0, 0],
    [                            0,                             0,                             0, 0, 2],
    [                            0,                             0,                             0, 2, 0]])
    Extracting direction of line from L = P1^P2^n
    (L|n)|nbar = 2*p1 - 2*p2
    Extracting plane of circle from C = P1^P2^P3
    ((C^n)|n)|nbar = 2*p1^p2 - 2*p1^p3 + 2*p2^p3
    (p2-p1)^(p3-p1) = p1^p2 - p1^p3 + p2^p3
    g_{ij} =
     Matrix([
    [                           0,                           -1, (P1.a)],
    [                          -1,                            0, (P2.a)],
    [(P1.a), (P2.a),  (a.a)]])
    B**2 = 1
    a' = a-(a^B)*B = -(P2.a)*P1 - (P1.a)*P2
    A+ = a'+a'*B = -2*(P2.a)*P1
    A- = a'-a'*B = -2*(P1.a)*P2
    (A+)^2 = 0
    (A-)^2 = 0
    a|B = -(P2.a)*P1 + (P1.a)*P2
    g_{ij} =
     Matrix([
    [                            1, (e1.e2), (e1.e3)],
    [(e1.e2),                             1, (e2.e3)],
    [(e1.e3), (e2.e3),                             1]])
    E = e1^e2^e3
    E**2 = (e1.e2)**2 - 2*(e1.e2)*(e1.e3)*(e2.e3) + (e1.e3)**2 + (e2.e3)**2 - 1
    E1 = (e2^e3)*E = ((e2.e3)**2 - 1)*e1 + ((e1.e2) - (e1.e3)*(e2.e3))*e2 + (-(e1.e2)*(e2.e3) + (e1.e3))*e3
    E2 =-(e1^e3)*E = ((e1.e2) - (e1.e3)*(e2.e3))*e1 + ((e1.e3)**2 - 1)*e2 + (-(e1.e2)*(e1.e3) + (e2.e3))*e3
    E3 = (e1^e2)*E = (-(e1.e2)*(e2.e3) + (e1.e3))*e1 + (-(e1.e2)*(e1.e3) + (e2.e3))*e2 + ((e1.e2)**2 - 1)*e3
    E1|e2 = 0
    E1|e3 = 0
    E2|e1 = 0
    E2|e3 = 0
    E3|e1 = 0
    E3|e2 = 0
    (E1|e1)/E**2 = 1
    (E2|e2)/E**2 = 1
    (E3|e3)/E**2 = 1

    terminal_check.py:6: DeprecationWarning: The `galgebra.deprecated` module is deprecated
      from galgebra.deprecated import MV
    terminal_check.py:13: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','mv')
    terminal_check.py:19: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    terminal_check.py:20: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      Y = MV('Y','vector')
    terminal_check.py:35: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    terminal_check.py:36: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','spinor')
    terminal_check.py:49: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      X = MV('X','vector')
    terminal_check.py:50: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','spinor')
    terminal_check.py:90: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)
    terminal_check.py:91: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)
    terminal_check.py:92: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','grade2',fct=True)
    terminal_check.py:93: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      C = MV('C','mv',fct=True)
    terminal_check.py:123: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      f = MV('f','scalar',fct=True)
    terminal_check.py:124: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      A = MV('A','vector',fct=True)
    terminal_check.py:125: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      B = MV('B','grade2',fct=True)
    terminal_check.py:267: DeprecationWarning: The `galgebra.deprecated.MV` class is deprecated in favor of `galgebra.mv.Mv`.
      a = MV(sym_lst,'vector')