Returns various inner and outer products of two onionic vectors.
x %<*>% y
x %>*<% y="" x="" %<.="">% y
x %>.%>*>
onions
Robin K. S. Hankin
This page documents an attempt at a consistent notation for onionic
products. The default product for onions (viz “*
”) is
sometimes known as the “Grassman product”. There is another
product known as the Euclidean product defined by \(E(p,q)=p'q\)
where \(x'\) is the conjugate of \(x\).
Each of these products separates into an “even” and an
“odd” part, here denoted by functions g_even()
and
g_odd()
for the Grassman product, and e_even()
and
e_odd()
for the Euclidean product. These are defined as
follows:
g_even(x,y)=(xy+yx)/2
g_odd(x,y)=(xy-yx)/2
e_even(x,y)=(x'y+y'x)/2
e_odd(x,y)=(x'y-y'x)/2
These functions have an equivalent binary operator.
The Grassman operators have a “*
”; they are
“%<*>%
” for the even Grassman product and
“%>*<%
” for the odd product.
The Euclidean operators have a “.
”; they are
“%<.>%
” for the even Euclidean product and
“%>.<%
” for the odd product.
Function dotprod()
returns the Euclidean even product of two
onionic vectors. That is, if x
and y
are eight-element
vectors of the components of two onions, return sum(x*y)
.
Note that the returned value is a numeric vector (compare
%<.>%
, e.even()
, which return onionic vectors with zero
imaginary part).
There is no binary operator for the ordinary Euclidean product (it seems
to be rarely needed in practice). For Conj(x)*x
, Norm(x)
is much more efficient and accurate.
Function prod()
is documented at Summary.Rd
.