\input{mjo-common}
-% Absolute value (modulis) of a scalar.
+% Absolute value (modulus) of a scalar.
\newcommand*{\abs}[1]{\left\lvert{#1}\right\rvert}
% Norm of a vector.
\newcommand*{\norm}[1]{\left\lVert{#1}\right\rVert}
% The inner product between its two arguments.
-\newcommand*{\ip}[2]{\langle{#1},{#2}\rangle}
+\newcommand*{\ip}[2]{\left\langle{#1},{#2}\right\rangle}
% The tensor product of its two arguments.
\newcommand*{\tp}[2]{ {#1}\otimes{#2} }
+% The Kronecker product of its two arguments. The usual notation for
+% this is the same as the tensor product notation used for \tp, but
+% that leads to confusion because the two definitions may not agree.
+\newcommand*{\kp}[2]{ {#1}\odot{#2} }
+
+% The adjoint of a linear operator.
+\newcommand*{\adjoint}[1]{ #1^{*} }
+
+% The ``transpose'' of a linear operator; namely, the adjoint, but
+% specialized to real matrices.
+\newcommand*{\transpose}[1]{ #1^{T} }
+
+% The trace of an operator.
+\newcommand*{\trace}[1]{ \operatorname{trace}\of{{#1}} }
+
% The ``span of'' operator. The name \span is already taken.
\newcommand*{\spanof}[1]{ \operatorname{span}\of{{#1}} }
% The ``co-dimension of'' operator.
\newcommand*{\codim}{ \operatorname{codim} }
-% The trace of an operator.
-\newcommand*{\trace}[1]{ \operatorname{trace}\of{{#1}} }
-
% The orthogonal projection of its second argument onto the first.
\newcommand*{\proj}[2] { \operatorname{proj}\of{#1, #2} }
\fi
}
}
+
+
+%
+% Orthogonal direct sum.
+%
+% Wasysym contains the \ocircle that we use in \directsumperp.
+\usepackage{wasysym}
+\usepackage{scalerel}
+\DeclareMathOperator{\oplusperp}{\mathbin{
+ \ooalign{
+ $\ocircle$\cr
+ \raisebox{\noexpand{0.65\height}}{${\vstretch{0.5}{\perp}}$}\cr
+ }
+}}
+
+\newcommand*{\directsumperp}[2]{ {#1}\oplusperp{#2} }