In [1]:
import subprocess
import sys
import os
from IPython.display import display_pretty

os.chdir('../Old Format')

def check_latex(name):
    # todo: use subprocess.run once we drop Python 2.7
    p = subprocess.Popen([sys.executable, name + '.py'], stderr=subprocess.PIPE, universal_newlines=True)
    try:
        stdout, stderr = p.communicate()
    except:
        p.kill()
    if p.poll():
        raise RuntimeError("The script raised an exception:\n\n" + stderr)

    with open(name + '.tex', 'r') as f:
        # can't use display.Latex here, it would result in CSS comparisons in the output.
        
        # using `display` forces this to be a separate output to any stdout from above.
        display_pretty(f.read(), raw=True)

In [2]:
!python bad_example.py


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

In [3]:
!python eval_check.py


Frame = (ex + ey,ex - ey)
Reciprocal Frame = (ex/2 + ey/2,ex/2 - ey/2)
eu.eu_r = 1
eu.ev_r = -1/2 + 1/2
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 = -1/2 + 1/2
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

In [4]:
!python exp_check.py


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

In [5]:
check_latex('latex_check')


\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{align*} 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{align*} 
  \begin{align*} 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{align*} 
\begin{equation*} g_{ij} =   \left [ \begin{array}{ccc} \left ( e_{x}\cdot e_{x}\right )  & \left ( e_{x}\cdot e_{y}\right )  & \left ( e_{x}\cdot e_{z}\right )   \\ \left ( e_{x}\cdot e_{y}\right )  & \left ( e_{y}\cdot e_{y}\right )  & \left ( e_{y}\cdot e_{z}\right )   \\ \left ( e_{x}\cdot e_{z}\right )  & \left ( e_{y}\cdot e_{z}\right )  & \left ( e_{z}\cdot 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 ( e_{x}\cdot e_{x}\right )  & \left ( e_{x}\cdot e_{y}\right )   \\ \left ( e_{x}\cdot e_{y}\right )  & \left ( e_{y}\cdot 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 ( a\cdot a\right )  & \left ( a\cdot b\right )  & \left ( a\cdot c\right )  & \left ( a\cdot d\right )   \\ \left ( a\cdot b\right )  & \left ( b\cdot b\right )  & \left ( b\cdot c\right )  & \left ( b\cdot d\right )   \\ \left ( a\cdot c\right )  & \left ( b\cdot c\right )  & \left ( c\cdot c\right )  & \left ( c\cdot d\right )   \\ \left ( a\cdot d\right )  & \left ( b\cdot d\right )  & \left ( c\cdot d\right )  & \left ( d\cdot d\right )   \end{array}\right ] \end{equation*}
\begin{equation*} \bm{a\cdot (b c)} = - \left ( a\cdot c\right )  \boldsymbol{b} + \left ( a\cdot b\right )  \boldsymbol{c} \end{equation*}
\begin{equation*} \bm{a\cdot (b\W c)} = - \left ( a\cdot c\right )  \boldsymbol{b} + \left ( a\cdot b\right )  \boldsymbol{c} \end{equation*}
\begin{equation*} \bm{a\cdot (b\W c\W d)} = \left ( a\cdot d\right )  \boldsymbol{b}\wedge \boldsymbol{c} - \left ( a\cdot c\right )  \boldsymbol{b}\wedge \boldsymbol{d} + \left ( a\cdot 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 ( a\cdot c\right )  \left ( b\cdot d\right )  + \left ( a\cdot d\right )  \left ( b\cdot c\right ) \end{equation*}
\begin{equation*} \bm{((a\W b)\cdot c)\cdot d} = - \left ( a\cdot c\right )  \left ( b\cdot d\right )  + \left ( a\cdot d\right )  \left ( b\cdot c\right ) \end{equation*}
\begin{equation*} \bm{(a\W b)\times (c\W d)} = - \left ( b\cdot d\right )  \boldsymbol{a}\wedge \boldsymbol{c} + \left ( b\cdot c\right )  \boldsymbol{a}\wedge \boldsymbol{d} + \left ( a\cdot d\right )  \boldsymbol{b}\wedge \boldsymbol{c} - \left ( a\cdot 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 \cdot 2 \boldsymbol{e}_{x} + 2 \cdot 34 \boldsymbol{e}_{y} + 0 \cdot 555 \boldsymbol{e}_{z} \end{equation*}
\begin{equation*} Nga(X,2) = 1 \cdot 2 \boldsymbol{e}_{x} + 2 \cdot 3 \boldsymbol{e}_{y} + 0 \cdot 55 \boldsymbol{e}_{z} \end{equation*}
  \begin{align*} X Y =  & 12 \cdot 7011  \\  &  + 4 \cdot 02078 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + 6 \cdot 175185 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + 10 \cdot 182 \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{align*} 
  \begin{align*} Nga(X Y,2) =  & 13 \cdot 0  \\  &  + 4 \cdot 0 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} + 6 \cdot 2 \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} + 10 \cdot 0 \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{align*} 
\\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{align*} 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{align*} 
\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{align*} \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{align*} 
\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{align*} \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{align*} 
\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 ( p_{1}\cdot p_{1}\right )  & \left ( p_{1}\cdot p_{2}\right )  & \left ( p_{1}\cdot p_{3}\right )  & 0 & 0  \\ \left ( p_{1}\cdot p_{2}\right )  & \left ( p_{2}\cdot p_{2}\right )  & \left ( p_{2}\cdot p_{3}\right )  & 0 & 0  \\ \left ( p_{1}\cdot p_{3}\right )  & \left ( p_{2}\cdot p_{3}\right )  & \left ( p_{3}\cdot 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{align*} (L\cdot n)\cdot \bar{n} =  & 2 \boldsymbol{p}_{1} \\  &  -2 \boldsymbol{p}_{2}  \end{align*} 
\begin{equation*} \text{Extracting plane of circle from }C = P1\W P2\W P3 \end{equation*}
  \begin{align*} ((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{align*} 
  \begin{align*} (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{align*} 
\\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 ( P_{1}\cdot a\right )   \\ -1 & 0 & \left ( P_{2}\cdot a\right )   \\ \left ( P_{1}\cdot a\right )  & \left ( P_{2}\cdot a\right )  & \left ( a\cdot a\right )   \end{array}\right ] \end{equation*}
\begin{equation*} B^{2} = 1 \end{equation*}
  \begin{align*} a' = a-(a\W B) B =  & - \left ( P_{2}\cdot a\right )  \boldsymbol{P}_{1} \\  &  - \left ( P_{1}\cdot a\right )  \boldsymbol{P}_{2}  \end{align*} 
\begin{equation*} A+ = a'+a' B = - 2 \left ( P_{2}\cdot a\right )  \boldsymbol{P}_{1} \end{equation*}
\begin{equation*} A- = a'-a' B = - 2 \left ( P_{1}\cdot a\right )  \boldsymbol{P}_{2} \end{equation*}
\begin{equation*} (A+)^{2} =  0 \end{equation*}
\begin{equation*} (A-)^{2} =  0 \end{equation*}
  \begin{align*} a\cdot B =  & - \left ( P_{2}\cdot a\right )  \boldsymbol{P}_{1} \\  &  + \left ( P_{1}\cdot a\right )  \boldsymbol{P}_{2}  \end{align*} 
\\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 ( e_{1}\cdot e_{2}\right )  & \left ( e_{1}\cdot e_{3}\right )   \\ \left ( e_{1}\cdot e_{2}\right )  & 1 & \left ( e_{2}\cdot e_{3}\right )   \\ \left ( e_{1}\cdot e_{3}\right )  & \left ( e_{2}\cdot 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 ( e_{1}\cdot e_{2}\right ) ^{2} - 2 \left ( e_{1}\cdot e_{2}\right )  \left ( e_{1}\cdot e_{3}\right )  \left ( e_{2}\cdot e_{3}\right )  + \left ( e_{1}\cdot e_{3}\right ) ^{2} + \left ( e_{2}\cdot e_{3}\right ) ^{2} - 1 \end{equation*}
  \begin{align*} E1 = (e2\W e3) E =  & \left ( \left ( e_{2}\cdot e_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{1} \\  &  + \left ( \left ( e_{1}\cdot e_{2}\right )  - \left ( e_{1}\cdot e_{3}\right )  \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{2} \\  &  + \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{2}\cdot e_{3}\right )  + \left ( e_{1}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{3}  \end{align*} 
  \begin{align*} E2 =-(e1\W e3) E =  & \left ( \left ( e_{1}\cdot e_{2}\right )  - \left ( e_{1}\cdot e_{3}\right )  \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{1} \\  &  + \left ( \left ( e_{1}\cdot e_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{2} \\  &  + \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{1}\cdot e_{3}\right )  + \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{3}  \end{align*} 
  \begin{align*} E3 = (e1\W e2) E =  & \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{2}\cdot e_{3}\right )  + \left ( e_{1}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{1} \\  &  + \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{1}\cdot e_{3}\right )  + \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{2} \\  &  + \left ( \left ( e_{1}\cdot e_{2}\right ) ^{2} - 1\right ) \boldsymbol{e}_{3}  \end{align*} 
\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}

In [6]:
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}

In [7]:
!python mv_setup_options.py


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

In [8]:
check_latex('physics_check_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{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{align*} \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{align*} 
  \begin{align*} \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{align*} 
\\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{align*} R =  & \cosh{\left (\frac{\alpha }{2} \right )}  \\  &  + \sinh{\left (\frac{\alpha }{2} \right )} \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x}  \end{align*} 
\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{align*} 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{align*} 
\begin{equation*} \f{\sinh}{\alpha} = \gamma\beta \end{equation*}
\begin{equation*} \f{\cosh}{\alpha} = \gamma \end{equation*}
  \begin{align*} 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{align*} 

\end{document}

In [9]:
check_latex('print_check_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*} \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{align*} \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{align*} 
  \begin{align*} \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{align*} 
  \begin{align*} \bm{A} =  & A^{x}  \boldsymbol{e}_{x} \\  &  + A^{y}  \boldsymbol{e}_{y} \\  &  + A^{z}  \boldsymbol{e}_{z}  \end{align*} 
  \begin{align*} \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{align*} 
  \begin{align*} \boldsymbol{\nabla}  f =  & \partial_{x} f  \boldsymbol{e}_{x} \\  &  + \partial_{y} f  \boldsymbol{e}_{y} \\  &  + \partial_{z} f  \boldsymbol{e}_{z}  \end{align*} 
\begin{equation*} \boldsymbol{\nabla} \cdot \bm{A} = \partial_{x} A^{x}  + \partial_{y} A^{y}  + \partial_{z} A^{z} \end{equation*}
  \begin{align*} \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{align*} 
  \begin{align*} -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{align*} 
  \begin{align*} \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{align*} 
\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{align*} \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{align*} 
\begin{equation*} g_{ij} =  \left [ \begin{array}{cccc} \left ( a\cdot a\right )  & \left ( a\cdot b\right )  & \left ( a\cdot c\right )  & \left ( a\cdot d\right )   \\ \left ( a\cdot b\right )  & \left ( b\cdot b\right )  & \left ( b\cdot c\right )  & \left ( b\cdot d\right )   \\ \left ( a\cdot c\right )  & \left ( b\cdot c\right )  & \left ( c\cdot c\right )  & \left ( c\cdot d\right )   \\ \left ( a\cdot d\right )  & \left ( b\cdot d\right )  & \left ( c\cdot d\right )  & \left ( d\cdot d\right )   \end{array}\right ] \end{equation*}
  \begin{align*} \bm{a\cdot (b c)} =  & - \left ( a\cdot c\right )  \boldsymbol{b} \\  &  + \left ( a\cdot b\right )  \boldsymbol{c}  \end{align*} 
  \begin{align*} \bm{a\cdot (b\W c)} =  & - \left ( a\cdot c\right )  \boldsymbol{b} \\  &  + \left ( a\cdot b\right )  \boldsymbol{c}  \end{align*} 
  \begin{align*} \bm{a\cdot (b\W c\W d)} =  & \left ( a\cdot d\right )  \boldsymbol{b}\wedge \boldsymbol{c} \\  &  - \left ( a\cdot c\right )  \boldsymbol{b}\wedge \boldsymbol{d} \\  &  + \left ( a\cdot b\right )  \boldsymbol{c}\wedge \boldsymbol{d}  \end{align*} 
\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 ( a\cdot c\right )  \left ( b\cdot d\right )  + \left ( a\cdot d\right )  \left ( b\cdot c\right ) \end{equation*}
\begin{equation*} \bm{((a\W b)\cdot c)\cdot d} = - \left ( a\cdot c\right )  \left ( b\cdot d\right )  + \left ( a\cdot d\right )  \left ( b\cdot c\right ) \end{equation*}
  \begin{align*} \bm{(a\W b)\times (c\W d)} =  & - \left ( b\cdot d\right )  \boldsymbol{a}\wedge \boldsymbol{c} \\  &  + \left ( b\cdot c\right )  \boldsymbol{a}\wedge \boldsymbol{d} \\  &  + \left ( a\cdot d\right )  \boldsymbol{b}\wedge \boldsymbol{c} \\  &  - \left ( a\cdot c\right )  \boldsymbol{b}\wedge \boldsymbol{d}  \end{align*} 
\begin{equation*} E =  \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3} \end{equation*}
\begin{equation*} E^{2} = \left ( e_{1}\cdot e_{2}\right ) ^{2} - 2 \left ( e_{1}\cdot e_{2}\right )  \left ( e_{1}\cdot e_{3}\right )  \left ( e_{2}\cdot e_{3}\right )  + \left ( e_{1}\cdot e_{3}\right ) ^{2} + \left ( e_{2}\cdot e_{3}\right ) ^{2} - 1 \end{equation*}
  \begin{align*} E1 = (e2\W e3) E =  & \left ( \left ( e_{2}\cdot e_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{1} \\  &  + \left ( \left ( e_{1}\cdot e_{2}\right )  - \left ( e_{1}\cdot e_{3}\right )  \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{2} \\  &  + \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{2}\cdot e_{3}\right )  + \left ( e_{1}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{3}  \end{align*} 
  \begin{align*} E2 =-(e1\W e3) E =  & \left ( \left ( e_{1}\cdot e_{2}\right )  - \left ( e_{1}\cdot e_{3}\right )  \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{1} \\  &  + \left ( \left ( e_{1}\cdot e_{3}\right ) ^{2} - 1\right ) \boldsymbol{e}_{2} \\  &  + \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{1}\cdot e_{3}\right )  + \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{3}  \end{align*} 
  \begin{align*} E3 = (e1\W e2) E =  & \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{2}\cdot e_{3}\right )  + \left ( e_{1}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{1} \\  &  + \left ( - \left ( e_{1}\cdot e_{2}\right )  \left ( e_{1}\cdot e_{3}\right )  + \left ( e_{2}\cdot e_{3}\right ) \right ) \boldsymbol{e}_{2} \\  &  + \left ( \left ( e_{1}\cdot e_{2}\right ) ^{2} - 1\right ) \boldsymbol{e}_{3}  \end{align*} 
\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{align*} A =  & A^{r}  \boldsymbol{e}_{r} \\  &  + A^{\theta }  \boldsymbol{e}_{\theta } \\  &  + A^{\phi }  \boldsymbol{e}_{\phi }  \end{align*} 
  \begin{align*} 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{align*} 
  \begin{align*} \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{align*} 
\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{align*} -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{align*} 
\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{align*} 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{align*} 
  \begin{align*} 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{align*} 
  \begin{align*} 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{align*} 
  \begin{align*} J =  & J^{t}  \boldsymbol{\gamma }_{t} \\  &  + J^{x}  \boldsymbol{\gamma }_{x} \\  &  + J^{y}  \boldsymbol{\gamma }_{y} \\  &  + J^{z}  \boldsymbol{\gamma }_{z}  \end{align*} 
\begin{equation*} \boldsymbol{\nabla}  F = J \end{equation*}
  \begin{align*} R =  & \cosh{\left (\frac{\alpha }{2} \right )}  \\  &  + \sinh{\left (\frac{\alpha }{2} \right )} \boldsymbol{\gamma }_{t}\wedge \boldsymbol{\gamma }_{x}  \end{align*} 
\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{align*} 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{align*} 
\begin{equation*} \f{\sinh}{\alpha} = \gamma\beta \end{equation*}
\begin{equation*} \f{\cosh}{\alpha} = \gamma \end{equation*}
  \begin{align*} 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{align*} 
  \begin{align*} \bm{A} =  & A^{t}  \boldsymbol{\gamma }_{t} \\  &  + A^{x}  \boldsymbol{\gamma }_{x} \\  &  + A^{y}  \boldsymbol{\gamma }_{y} \\  &  + A^{z}  \boldsymbol{\gamma }_{z}  \end{align*} 
  \begin{align*} \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{align*} 

\end{document}

In [10]:
!python prob_not_solenoidal.py


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 

In [11]:
!python products_latex.py


#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 = \boldsymbol{e}_{x}*s {\left (x,y,z \right )} \frac{\partial}{\partial x} + \boldsymbol{e}_{y}*s {\left (x,y,z \right )} \frac{\partial}{\partial y} + \boldsymbol{e}_{z}*s {\left (x,y,z \right )} \frac{\partial}{\partial z}
s^grad = \boldsymbol{e}_{x}*s {\left (x,y,z \right )} \frac{\partial}{\partial x} + \boldsymbol{e}_{y}*s {\left (x,y,z \right )} \frac{\partial}{\partial y} + \boldsymbol{e}_{z}*s {\left (x,y,z \right )} \frac{\partial}{\partial z}
s<grad = \boldsymbol{e}_{x}*s {\left (x,y,z \right )} \frac{\partial}{\partial x} + \boldsymbol{e}_{y}*s {\left (x,y,z \right )} \frac{\partial}{\partial y} + \boldsymbol{e}_{z}*s {\left (x,y,z \right )} \frac{\partial}{\partial 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} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial y} + v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial z} + \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}*(- v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{x} {\left (x,y,z \right )} \frac{\partial}{\partial y}) + \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z}*(- v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{x} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}*(- v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial y} + v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial z})
v^grad = \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}*(- v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{x} {\left (x,y,z \right )} \frac{\partial}{\partial y}) + \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z}*(- v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{x} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}*(- v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial y} + v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial z})
v|grad = v^{x} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial y} + v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial z}
v<grad = v^{x} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial y} + v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial z}
v>grad = v^{x} {\left (x,y,z \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y,z \right )} \frac{\partial}{\partial y} + v^{z} {\left (x,y,z \right )} \frac{\partial}{\partial 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 = \boldsymbol{e}_{x}*(b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial y} + b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{y}*(- b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial x} + b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{z}*(- b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial x} -  b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial y}) + \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}*(b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial x} -  b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial y} + b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial z})
b^grad = \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}*(b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial x} -  b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial y} + b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial z})
b|grad = \boldsymbol{e}_{x}*(b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial y} + b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{y}*(- b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial x} + b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{z}*(- b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial x} -  b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial y})
b<grad =  0 
b>grad = \boldsymbol{e}_{x}*(b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial y} + b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{y}*(- b^{xy} {\left (x,y,z \right )} \frac{\partial}{\partial x} + b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial z}) + \boldsymbol{e}_{z}*(- b^{xz} {\left (x,y,z \right )} \frac{\partial}{\partial x} -  b^{yz} {\left (x,y,z \right )} \frac{\partial}{\partial 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 = -(e_x.e_x)*(e_y.e_y)*D{x}v__x/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) - (e_x.e_x)*(e_y.e_y)*D{y}v__y/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) + (e_x.e_y)**2*D{x}v__x/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) + (e_x.e_y)**2*D{y}v__y/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2)
grad<v = -(e_x.e_x)*(e_y.e_y)*D{x}v__x/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) - (e_x.e_x)*(e_y.e_y)*D{y}v__y/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) + (e_x.e_y)**2*D{x}v__x/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) + (e_x.e_y)**2*D{y}v__y/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2)
grad>v = -(e_x.e_x)*(e_y.e_y)*D{x}v__x/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) - (e_x.e_x)*(e_y.e_y)*D{y}v__y/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) + (e_x.e_y)**2*D{x}v__x/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2) + (e_x.e_y)**2*D{y}v__y/(-(e_x.e_x)*(e_y.e_y) + (e_x.e_y)**2)

s*grad = \boldsymbol{e}_{x}*(\frac{\left ( e_{y}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} -  \frac{\left ( e_{x}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial y}) + \boldsymbol{e}_{y}*(- \frac{\left ( e_{x}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} + \frac{\left ( e_{x}\cdot e_{x}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial y})
s^grad = \boldsymbol{e}_{x}*(\frac{\left ( e_{y}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} -  \frac{\left ( e_{x}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial y}) + \boldsymbol{e}_{y}*(- \frac{\left ( e_{x}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} + \frac{\left ( e_{x}\cdot e_{x}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial y})
s<grad = \boldsymbol{e}_{x}*(\frac{\left ( e_{y}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} -  \frac{\left ( e_{x}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial y}) + \boldsymbol{e}_{y}*(- \frac{\left ( e_{x}\cdot e_{y}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} + \frac{\left ( e_{x}\cdot e_{x}\right )  s {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial 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} {\left (x,y \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y \right )} \frac{\partial}{\partial y} + \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}*(- \frac{\left ( e_{x}\cdot e_{y}\right )  v^{x} {\left (x,y \right )} + \left ( e_{y}\cdot e_{y}\right )  v^{y} {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} + \frac{\left ( e_{x}\cdot e_{x}\right )  v^{x} {\left (x,y \right )} + \left ( e_{x}\cdot e_{y}\right )  v^{y} {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial y})
v^grad = \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}*(- \frac{\left ( e_{x}\cdot e_{y}\right )  v^{x} {\left (x,y \right )} + \left ( e_{y}\cdot e_{y}\right )  v^{y} {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial x} + \frac{\left ( e_{x}\cdot e_{x}\right )  v^{x} {\left (x,y \right )} + \left ( e_{x}\cdot e_{y}\right )  v^{y} {\left (x,y \right )}}{\left ( e_{x}\cdot e_{x}\right )  \left ( e_{y}\cdot e_{y}\right )  - \left ( e_{x}\cdot e_{y}\right ) ^{2}} \frac{\partial}{\partial y})
v|grad = v^{x} {\left (x,y \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y \right )} \frac{\partial}{\partial y}
v<grad = v^{x} {\left (x,y \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y \right )} \frac{\partial}{\partial y}
v>grad = v^{x} {\left (x,y \right )} \frac{\partial}{\partial x} + v^{y} {\left (x,y \right )} \frac{\partial}{\partial 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

In [12]:
check_latex('reflect_test')


\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}

In [13]:
check_latex('simple_check_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*} g_{ij} =  \left [ \begin{array}{ccc} \left ( e_{x}\cdot e_{x}\right )  & \left ( e_{x}\cdot e_{y}\right )  & \left ( e_{x}\cdot e_{z}\right )   \\ \left ( e_{x}\cdot e_{y}\right )  & \left ( e_{y}\cdot e_{y}\right )  & \left ( e_{y}\cdot e_{z}\right )   \\ \left ( e_{x}\cdot e_{z}\right )  & \left ( e_{y}\cdot e_{z}\right )  & \left ( e_{z}\cdot 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{align*} 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{align*} 
  \begin{align*} 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{align*} 
\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 ( e_{x}\cdot e_{x}\right )  & \left ( e_{x}\cdot e_{y}\right )   \\ \left ( e_{x}\cdot e_{y}\right )  & \left ( e_{y}\cdot 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}

In [14]:
!python simple_check.py


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

In [15]:
check_latex('spherical_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{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}

In [16]:
!python terminal_check.py


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) = (a.b)*c - (b.c)*a - ((a.b)*c - (b.c)*a)
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.7011000000000 + 4.02078*e_x^e_y + 6.175185*e_x^e_z + 10.182*e_y^e_z
Nga(X*Y,2) = 13. + 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