Trivector<Scalar, ToFrame> Identity<FromFrame, ToFrame>::operator()( Trivector<Scalar, FromFrame> const& trivector) const { return Trivector<Scalar, ToFrame>(trivector.coordinates()); }
quantities::Product<LScalar, RScalar> InnerProduct( Trivector<LScalar, Frame> const& left, Trivector<RScalar, Frame> const& right) { return left.coordinates() * right.coordinates(); }
Bivector<quantities::Product<LScalar, RScalar>, Frame> operator*( Trivector<LScalar, Frame> const& left, Vector<RScalar, Frame> const& right) { return Bivector<quantities::Product<LScalar, RScalar>, Frame>( left.coordinates() * right.coordinates()); }
Trivector<Scalar, ToFrame> Permutation<FromFrame, ToFrame>::operator()( Trivector<Scalar, FromFrame> const& trivector) const { return Trivector<Scalar, ToFrame>(Determinant() * trivector.coordinates()); }