12 #ifndef OHMMS_MATRIXOPERATOR_H 13 #define OHMMS_MATRIXOPERATOR_H 29 template<
class T1,
class C1>
30 inline typename MakeReturn<UnaryNode<OpUnaryMinus, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t>>::Expression_t
37 template<
class T1,
class C1>
45 template<
class T1,
class C1>
46 inline typename MakeReturn<UnaryNode<OpBitwiseNot, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t>>::Expression_t
53 template<
class T1,
class C1>
54 inline typename MakeReturn<UnaryNode<OpIdentity, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t>>::Expression_t
61 template<
class T1,
class T2,
class C2>
70 template<
class T1,
class C1,
class T2,
class C2>
71 inline typename MakeReturn<
72 BinaryNode<OpAdd, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
81 template<
class T1,
class C1,
class T2,
class C2>
82 inline typename MakeReturn<
83 BinaryNode<OpSubtract, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
94 template<
class T1,
class C1,
class T2,
class C2>
95 inline typename MakeReturn<
96 BinaryNode<OpMultiply, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
106 template<
class T1,
class C1,
class T2,
class C2>
107 inline typename MakeReturn<
108 BinaryNode<OpMod, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
117 template<
class T1,
class C1,
class T2,
class C2>
118 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
119 typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
120 typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
129 template<
class T1,
class C1,
class T2,
class C2>
130 inline typename MakeReturn<
131 BinaryNode<OpBitwiseOr, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
141 template<
class T1,
class C1,
class T2,
class C2>
142 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
143 typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
144 typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
153 template<
class T1,
class C1,
class T2>
154 inline typename MakeReturn<
155 BinaryNode<OpAdd, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
164 template<
class T1,
class C1,
class T2>
165 inline typename MakeReturn<
166 BinaryNode<OpSubtract, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
176 template<
class T1,
class C1,
class T2>
177 inline typename MakeReturn<
178 BinaryNode<OpMultiply, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
188 template<
class T1,
class C1,
class T2>
189 inline typename MakeReturn<
190 BinaryNode<OpMod, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
199 template<
class T1,
class C1,
class T2>
200 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
201 typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
202 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
211 template<
class T1,
class C1,
class T2>
212 inline typename MakeReturn<
213 BinaryNode<OpBitwiseOr, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
223 template<
class T1,
class C1,
class T2>
224 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
225 typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
226 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
235 template<
class T1,
class T2,
class C2>
236 inline typename MakeReturn<
237 BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
246 template<
class T1,
class T2,
class C2>
247 inline typename MakeReturn<
248 BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
258 template<
class T1,
class T2,
class C2>
259 inline typename MakeReturn<
260 BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
270 template<
class T1,
class T2,
class C2>
271 inline typename MakeReturn<
272 BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
281 template<
class T1,
class T2,
class C2>
282 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
283 typename CreateLeaf<Expression<T1>>::Leaf_t,
284 typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
293 template<
class T1,
class T2,
class C2>
294 inline typename MakeReturn<
295 BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
305 template<
class T1,
class T2,
class C2>
306 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
307 typename CreateLeaf<Expression<T1>>::Leaf_t,
308 typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
317 template<
class T1,
class C1,
class T2>
318 inline typename MakeReturn<
319 BinaryNode<OpAdd, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
326 template<
class T1,
class C1,
class T2>
327 inline typename MakeReturn<
328 BinaryNode<OpSubtract, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
335 template<
class T1,
class C1,
class T2>
336 inline typename MakeReturn<
337 BinaryNode<OpMultiply, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
344 template<
class T1,
class C1,
class T2>
345 inline typename MakeReturn<
346 BinaryNode<OpMod, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
353 template<
class T1,
class C1,
class T2>
354 inline typename MakeReturn<
363 template<
class T1,
class C1,
class T2>
364 inline typename MakeReturn<
365 BinaryNode<OpBitwiseOr, typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
372 template<
class T1,
class C1,
class T2>
373 inline typename MakeReturn<
382 template<
class T1,
class T2,
class C2>
383 inline typename MakeReturn<
384 BinaryNode<OpAdd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
391 template<
class T1,
class T2,
class C2>
392 inline typename MakeReturn<
393 BinaryNode<OpSubtract, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
400 template<
class T1,
class T2,
class C2>
401 inline typename MakeReturn<
402 BinaryNode<OpMultiply, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
409 template<
class T1,
class T2,
class C2>
410 inline typename MakeReturn<
411 BinaryNode<OpMod, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
418 template<
class T1,
class T2,
class C2>
419 inline typename MakeReturn<
420 BinaryNode<OpBitwiseAnd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
428 template<
class T1,
class T2,
class C2>
429 inline typename MakeReturn<
430 BinaryNode<OpBitwiseOr, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::Expression_t
437 template<
class T1,
class T2,
class C2>
438 inline typename MakeReturn<
439 BinaryNode<OpBitwiseXor, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Matrix<T2, C2>>::Leaf_t>>::
446 #ifdef PETE_ALLOW_SCALAR_SHIFT 447 #endif // PETE_ALLOW_SCALAR_SHIFT 449 template<
class T1,
class C1,
class T2,
class T3>
450 inline typename MakeReturn<TrinaryNode<FnWhere,
451 typename CreateLeaf<Matrix<T1, C1>>::Leaf_t,
462 #ifndef PETE_EXPRESSION_OPERATORS 463 #define PETE_EXPRESSION_OPERATORS 466 inline typename MakeReturn<UnaryNode<OpUnaryMinus, typename CreateLeaf<Expression<T1>>::Leaf_t>>::Expression_t
482 inline typename MakeReturn<UnaryNode<OpBitwiseNot, typename CreateLeaf<Expression<T1>>::Leaf_t>>::Expression_t
490 inline typename MakeReturn<UnaryNode<OpIdentity, typename CreateLeaf<Expression<T1>>::Leaf_t>>::Expression_t
497 template<
class T1,
class T2>
506 template<
class T1,
class T2>
507 inline typename MakeReturn<
508 BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
517 template<
class T1,
class T2>
518 inline typename MakeReturn<
519 BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
529 template<
class T1,
class T2>
530 inline typename MakeReturn<
531 BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
541 template<
class T1,
class T2>
542 inline typename MakeReturn<
543 BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
552 template<
class T1,
class T2>
553 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
554 typename CreateLeaf<Expression<T1>>::Leaf_t,
555 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
564 template<
class T1,
class T2>
565 inline typename MakeReturn<
566 BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
576 template<
class T1,
class T2>
577 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
578 typename CreateLeaf<Expression<T1>>::Leaf_t,
579 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
588 template<
class T1,
class T2>
589 inline typename MakeReturn<
590 BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
597 template<
class T1,
class T2>
598 inline typename MakeReturn<
599 BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
606 template<
class T1,
class T2>
607 inline typename MakeReturn<
608 BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
615 template<
class T1,
class T2>
616 inline typename MakeReturn<
617 BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
624 template<
class T1,
class T2>
625 inline typename MakeReturn<
634 template<
class T1,
class T2>
635 inline typename MakeReturn<
636 BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
643 template<
class T1,
class T2>
644 inline typename MakeReturn<
653 template<
class T1,
class T2>
654 inline typename MakeReturn<
655 BinaryNode<OpAdd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
662 template<
class T1,
class T2>
663 inline typename MakeReturn<
664 BinaryNode<OpSubtract, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
671 template<
class T1,
class T2>
672 inline typename MakeReturn<
673 BinaryNode<OpMultiply, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
680 template<
class T1,
class T2>
681 inline typename MakeReturn<
682 BinaryNode<OpMod, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
689 template<
class T1,
class T2>
690 inline typename MakeReturn<
691 BinaryNode<OpBitwiseAnd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
699 template<
class T1,
class T2>
700 inline typename MakeReturn<
701 BinaryNode<OpBitwiseOr, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
708 template<
class T1,
class T2>
709 inline typename MakeReturn<
710 BinaryNode<OpBitwiseXor, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
717 #ifdef PETE_ALLOW_SCALAR_SHIFT 718 #endif // PETE_ALLOW_SCALAR_SHIFT 720 template<
class T1,
class T2,
class T3>
721 inline typename MakeReturn<TrinaryNode<FnWhere,
722 typename CreateLeaf<Expression<T1>>::Leaf_t,
733 #endif // PETE_EXPRESSION_OPERATORS 735 template<
class T1,
class C1,
class RHS>
743 template<
class T1,
class C1,
class RHS>
751 template<
class T1,
class C1,
class RHS>
759 template<
class T1,
class C1,
class RHS>
767 template<
class T1,
class C1,
class RHS>
775 template<
class T1,
class C1,
class RHS>
783 template<
class T1,
class C1,
class RHS>
791 template<
class T1,
class C1,
class RHS>
801 #endif // OHMMS_MATRIXOPERATOR_H MakeReturn< BinaryNode< OpMultiply, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator*(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
Matrix< T1, C1 > & operator%=(Matrix< T1, C1 > &lhs, const RHS &rhs)
Matrix< T1, C1 > & operator|=(Matrix< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< BinaryNode< OpMod, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator%(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
helper functions for EinsplineSetBuilder
MakeReturn< UnaryNode< OpBitwiseNot, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t > >::Expression_t operator~(const Matrix< T1, C1 > &l)
MakeReturn< UnaryNode< OpUnaryMinus, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t > >::Expression_t operator-(const Matrix< T1, C1 > &l)
MakeReturn< TrinaryNode< FnWhere, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< T2 >::Leaf_t, typename CreateLeaf< T3 >::Leaf_t > >::Expression_t where(const Matrix< T1, C1 > &c, const T2 &t, const T3 &f)
const AntiSymTensor< T, D > & operator+(const AntiSymTensor< T, D > &op)
Matrix< T1, C1 > & operator+=(Matrix< T1, C1 > &lhs, const RHS &rhs)
static Expression_t make(const T &a)
Matrix< T1, C1 > & operator &=(Matrix< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< BinaryNode< OpBitwiseAnd, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator &(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
Matrix< T1, C1 > & operator^=(Matrix< T1, C1 > &lhs, const RHS &rhs)
Matrix< T1, C1 > & assign(Matrix< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< BinaryNode< OpBitwiseXor, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator^(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
MakeReturn< UnaryNode< OpCast< T1 >, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t peteCast(const T1 &, const Matrix< T2, C2 > &l)
Matrix< T1, C1 > & operator*=(Matrix< T1, C1 > &lhs, const RHS &rhs)
Matrix< T1, C1 > & operator-=(Matrix< T1, C1 > &lhs, const RHS &rhs)
void evaluate(Matrix< T, Alloc > &lhs, const Op &op, const Expression< RHS > &rhs)
MakeReturn< UnaryNode< OpIdentity, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t > >::Expression_t PETE_identity(const Matrix< T1, C1 > &l)
MakeReturn< BinaryNode< OpBitwiseOr, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator|(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)