ExpressionDot<ExpressionVector<Vdim>,RExpressionType> dot(const VectorSmall<Vdim>& l, const ExpressionBase<RExpressionType>& r) { return ExpressionDot<ExpressionVector<Vdim>,RExpressionType>(ExpressionVector<Vdim>(l),r.cast()); }
ExpressionDot<LExpressionType, ExpressionVector<Vdim> > dot(const ExpressionBase<LExpressionType>& l, const VectorSmall<Vdim>& r) { return ExpressionDot<LExpressionType,ExpressionVector<Vdim> >(l.cast(),ExpressionVector<Vdim>(r)); }
ExpressionDot<LExpressionType, ExpressionScalar > dot(const ExpressionBase<LExpressionType>& l, const Real& r) { return ExpressionDot<LExpressionType,ExpressionScalar>(l.cast(),ExpressionScalar(r)); }
ExpressionDot<ExpressionScalar,RExpressionType> dot(const Real& l, const ExpressionBase<RExpressionType>& r) { return ExpressionDot<ExpressionScalar,RExpressionType>(ExpressionScalar(l),r.cast()); }
ExpressionExponential<ExpressionType> exp (const ExpressionBase<ExpressionType>& l) { return ExpressionExponential<ExpressionType > (l.cast() ); }
ExpressionDot<LExpressionType,RExpressionType> dot(const ExpressionBase<LExpressionType>& l, const ExpressionBase<RExpressionType>& r) { return ExpressionDot<LExpressionType,RExpressionType>(l.cast(),r.cast()); }
ExpressionAddition<LExpressionType, ExpressionVector<Vdim> > operator+ (const ExpressionBase<LExpressionType>& l, const VectorSmall<Vdim>& r) { return ExpressionAddition<LExpressionType, ExpressionVector<Vdim> > (l.cast(), ExpressionVector<Vdim> (r) ); }
ExpressionAddition<ExpressionVector<Vdim>, RExpressionType> operator+ (const VectorSmall<Vdim>& l, const ExpressionBase<RExpressionType>& r) { return ExpressionAddition<ExpressionVector<Vdim>, RExpressionType> (ExpressionVector<Vdim> (l), r.cast() ); }
ExpressionAddition<ExpressionScalar, RExpressionType> operator+ (const Real& l, const ExpressionBase<RExpressionType>& r) { return ExpressionAddition<ExpressionScalar, RExpressionType> (ExpressionScalar (l), r.cast() ); }
ExpressionAddition<LExpressionType, ExpressionScalar > operator+ (const ExpressionBase<LExpressionType>& l, const Real& r) { return ExpressionAddition<LExpressionType, ExpressionScalar> (l.cast(), ExpressionScalar (r) ); }
ExpressionAddition<LExpressionType, RExpressionType> operator+ (const ExpressionBase<LExpressionType>& l, const ExpressionBase<RExpressionType>& r) { return ExpressionAddition<LExpressionType, RExpressionType> (l.cast(), r.cast() ); }