10 #ifndef MA_LaOuterProd_H_
11 #define MA_LaOuterProd_H_
28 inline ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, double>,
double>,
double> Outer_product(
const ABObj<vec, LAVector, double>& obj) {
30 return ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, double>,
double>,
double>(VectorOuterProduct<ABObj<vec, LAVector, double>,
double>(obj));
35 inline ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T> operator*(T f,
const ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>& obj) {
37 return ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>(obj.Obj(), obj.f()*f);
42 inline ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T> operator/(
const ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>& obj, T f) {
44 return ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>(obj.Obj(), obj.f()/f);
49 inline ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T> operator-(
const ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>& obj) {
51 return ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>(obj.Obj(), T(-1.)*obj.f());
54 void Outer_prod(LASymMatrix&,
const LAVector&,
double f = 1.);
60 #endif //MA_LaOuterProd_H_