Chemical Data Processing Library C++ API - Version 1.4.0
GridExpression.hpp
Go to the documentation of this file.
1 /*
2  * GridExpression.hpp
3  *
4  * Copyright (C) 2003 Thomas Seidel <thomas.seidel@univie.ac.at>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this library; see the file COPYING. If not, write to
18  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21 
27 #ifndef CDPL_MATH_GRIDEXPRESSION_HPP
28 #define CDPL_MATH_GRIDEXPRESSION_HPP
29 
30 #include <type_traits>
31 
32 #include "CDPL/Math/Check.hpp"
33 #include "CDPL/Math/Expression.hpp"
34 #include "CDPL/Math/CommonType.hpp"
35 #include "CDPL/Math/Functional.hpp"
36 #include "CDPL/Math/TypeTraits.hpp"
37 #include "CDPL/Base/Exceptions.hpp"
38 
39 
40 namespace CDPL
41 {
42 
43  namespace Math
44  {
45 
46  template <typename C>
47  class GridContainer;
48 
54  template <typename E, typename F>
55  class GridUnary : public GridExpression<GridUnary<E, F> >
56  {
57 
58  typedef GridUnary<E, F> SelfType;
59  typedef F FunctorType;
60  typedef E ExpressionType;
61  typedef typename E::ConstClosureType ExpressionClosureType;
62 
63  public:
67  typedef typename F::ResultType ValueType;
68 
72  typedef const ValueType ConstReference;
73 
77  typedef const ValueType Reference;
78 
82  typedef const SelfType ConstClosureType;
83 
88 
92  typedef typename E::SizeType SizeType;
93 
97  typedef typename E::DifferenceType DifferenceType;
98 
104  expr(e) {}
105 
111  {
112  return expr.getSize1();
113  }
114 
120  {
121  return expr.getSize2();
122  }
123 
129  {
130  return expr.getSize3();
131  }
132 
141  {
142  return FunctorType::apply(expr(i, j, k));
143  }
144 
145  private:
146  ExpressionClosureType expr;
147  };
148 
154  template <typename E, typename F>
156  {
157 
162 
167  };
168 
175  template <typename E1, typename E2, typename F>
176  class GridBinary1 : public GridExpression<GridBinary1<E1, E2, F> >
177  {
178 
180  typedef F FunctorType;
181  typedef E1 Expression1Type;
182  typedef E2 Expression2Type;
183  typedef typename E1::ConstClosureType Expression1ClosureType;
184  typedef typename E2::ConstClosureType Expression2ClosureType;
185 
186  public:
190  typedef typename F::ResultType ValueType;
191 
195  typedef const ValueType ConstReference;
196 
200  typedef const ValueType Reference;
201 
205  typedef const SelfType ConstClosureType;
206 
211 
216 
221 
227  GridBinary1(const Expression1Type& e1, const Expression2Type& e2):
228  expr1(e1), expr2(e2) {}
229 
236  {
237  return CDPL_MATH_CHECK_SIZE_EQUALITY(SizeType(expr1.getSize1()), SizeType(expr2.getSize1()), Base::SizeError);
238  }
239 
246  {
247  return CDPL_MATH_CHECK_SIZE_EQUALITY(SizeType(expr1.getSize2()), SizeType(expr2.getSize2()), Base::SizeError);
248  }
249 
256  {
257  return CDPL_MATH_CHECK_SIZE_EQUALITY(SizeType(expr1.getSize3()), SizeType(expr2.getSize3()), Base::SizeError);
258  }
259 
268  {
269  return FunctorType::apply(expr1(i, j, k), expr2(i, j, k));
270  }
271 
272  private:
273  Expression1ClosureType expr1;
274  Expression2ClosureType expr2;
275  };
276 
283  template <typename E1, typename E2, typename F>
285  {
286 
291 
296  };
297 
304  template <typename E1, typename E2, typename F>
305  class Scalar1GridBinary : public GridExpression<Scalar1GridBinary<E1, E2, F> >
306  {
307 
309  typedef F FunctorType;
310  typedef E1 Expression1Type;
311  typedef E2 Expression2Type;
312  typedef const E1 Expression1ClosureType;
313  typedef typename E2::ConstClosureType Expression2ClosureType;
314 
315  public:
319  typedef typename F::ResultType ValueType;
320 
324  typedef const ValueType ConstReference;
325 
329  typedef const ValueType Reference;
330 
334  typedef const SelfType ConstClosureType;
335 
340 
344  typedef typename E2::SizeType SizeType;
345 
349  typedef typename E2::DifferenceType DifferenceType;
350 
356  Scalar1GridBinary(const Expression1Type& e1, const Expression2Type& e2):
357  expr1(e1), expr2(e2) {}
358 
364  {
365  return expr2.getSize1();
366  }
367 
373  {
374  return expr2.getSize2();
375  }
376 
382  {
383  return expr2.getSize3();
384  }
385 
394  {
395  return FunctorType::apply(expr1, expr2(i, j, k));
396  }
397 
398  private:
399  Expression1ClosureType expr1;
400  Expression2ClosureType expr2;
401  };
402 
409  template <typename E1, typename E2, typename F>
411  {
416 
421  };
422 
429  template <typename E1, typename E2, typename F>
430  class Scalar2GridBinary : public GridExpression<Scalar2GridBinary<E1, E2, F> >
431  {
432 
434  typedef F FunctorType;
435  typedef E1 Expression1Type;
436  typedef E2 Expression2Type;
437  typedef typename E1::ConstClosureType Expression1ClosureType;
438  typedef const E2 Expression2ClosureType;
439 
440  public:
444  typedef typename F::ResultType ValueType;
445 
449  typedef const ValueType ConstReference;
450 
454  typedef const ValueType Reference;
455 
459  typedef const SelfType ConstClosureType;
460 
465 
469  typedef typename E1::SizeType SizeType;
470 
474  typedef typename E1::DifferenceType DifferenceType;
475 
481  Scalar2GridBinary(const Expression1Type& e1, const Expression2Type& e2):
482  expr1(e1), expr2(e2) {}
483 
489  {
490  return expr1.getSize1();
491  }
492 
498  {
499  return expr1.getSize2();
500  }
501 
507  {
508  return expr1.getSize3();
509  }
510 
519  {
520  return FunctorType::apply(expr1(i, j, k), expr2);
521  }
522 
523  private:
524  Expression1ClosureType expr1;
525  Expression2ClosureType expr2;
526  };
527 
534  template <typename E1, typename E2, typename F>
536  {
537 
542 
547  };
548 
555  template <typename E>
558  {
559  typedef typename GridUnaryTraits<E, ScalarNegation<typename E::ValueType> >::ExpressionType ExpressionType;
560 
561  return ExpressionType(e());
562  }
563 
570  template <typename E>
571  const E&
573  {
574  return e();
575  }
576 
585  template <typename E1, typename E2>
586  typename GridBinary1Traits<E1, E2, ScalarAddition<typename E1::ValueType, typename E2::ValueType> >::ResultType
588  {
589  typedef typename GridBinary1Traits<E1, E2,
591 
592  return ExpressionType(e1(), e2());
593  }
594 
603  template <typename E1, typename E2>
604  typename GridBinary1Traits<E1, E2, ScalarSubtraction<typename E1::ValueType, typename E2::ValueType> >::ResultType
606  {
607  typedef typename GridBinary1Traits<E1, E2,
609 
610  return ExpressionType(e1(), e2());
611  }
612 
621  template <typename E, typename T>
622  typename std::enable_if<IsScalar<T>::value, typename Scalar2GridBinaryTraits<E, T, ScalarMultiplication<typename E::ValueType, T> >::ResultType>::type
623  operator*(const GridExpression<E>& e, const T& t)
624  {
625  typedef typename Scalar2GridBinaryTraits<E, T,
626  ScalarMultiplication<typename E::ValueType, T> >::ExpressionType ExpressionType;
627 
628  return ExpressionType(e(), t);
629  }
630 
639  template <typename T, typename E>
640  typename std::enable_if<IsScalar<T>::value, typename Scalar1GridBinaryTraits<T, E, ScalarMultiplication<T, typename E::ValueType> >::ResultType>::type
641  operator*(const T& t, const GridExpression<E>& e)
642  {
643  typedef typename Scalar1GridBinaryTraits<T, E,
644  ScalarMultiplication<T, typename E::ValueType> >::ExpressionType ExpressionType;
645 
646  return ExpressionType(t, e());
647  }
648 
657  template <typename E, typename T>
658  typename std::enable_if<IsScalar<T>::value, typename Scalar2GridBinaryTraits<E, T, ScalarDivision<typename E::ValueType, T> >::ResultType>::type
659  operator/(const GridExpression<E>& e, const T& t)
660  {
661  typedef typename Scalar2GridBinaryTraits<E, T,
662  ScalarDivision<typename E::ValueType, T> >::ExpressionType ExpressionType;
663 
664  return ExpressionType(e(), t);
665  }
666 
675  template <typename E1, typename E2>
678  {
679  return GridEquality<E1, E2>::apply(e1, e2);
680  }
681 
690  template <typename E1, typename E2>
693  {
694  return !GridEquality<E1, E2>::apply(e1, e2);
695  }
696 
707  template <typename E1, typename E2, typename T>
708  typename std::enable_if<std::is_arithmetic<T>::value, typename GridToleranceEquality<E1, E2, T>::ResultType>::type
709  equals(const GridExpression<E1>& e1, const GridExpression<E2>& e2, const T& eps)
710  {
711  return GridToleranceEquality<E1, E2, T>::apply(e1, e2, eps);
712  }
713 
720  template <typename E>
721  typename GridUnaryTraits<E, ScalarConjugation<typename E::ValueType> >::ResultType
723  {
724  typedef typename GridUnaryTraits<E, ScalarConjugation<typename E::ValueType> >::ExpressionType ExpressionType;
725 
726  return ExpressionType(e());
727  }
728 
735  template <typename E>
736  typename GridUnaryTraits<E, ScalarConjugation<typename E::ValueType> >::ResultType
738  {
739  typedef typename GridUnaryTraits<E, ScalarConjugation<typename E::ValueType> >::ExpressionType ExpressionType;
740 
741  return ExpressionType(e());
742  }
743 
750  template <typename E>
751  typename GridUnaryTraits<E, ScalarReal<typename E::ValueType> >::ResultType
753  {
754  typedef typename GridUnaryTraits<E, ScalarReal<typename E::ValueType> >::ExpressionType ExpressionType;
755 
756  return ExpressionType(e());
757  }
758 
765  template <typename E>
766  typename GridUnaryTraits<E, ScalarImaginary<typename E::ValueType> >::ResultType
768  {
769  typedef typename GridUnaryTraits<E, ScalarImaginary<typename E::ValueType> >::ExpressionType ExpressionType;
770 
771  return ExpressionType(e());
772  }
773 
782  template <typename E1, typename E2>
783  typename GridBinary1Traits<E1, E2, ScalarDivision<typename E1::ValueType, typename E2::ValueType> >::ResultType
785  {
786  typedef typename GridBinary1Traits<E1, E2,
788 
789  return ExpressionType(e1(), e2());
790  }
791 
800  template <typename E1, typename E2>
801  typename GridBinary1Traits<E1, E2, ScalarMultiplication<typename E1::ValueType, typename E2::ValueType> >::ResultType
803  {
804  typedef typename GridBinary1Traits<E1, E2,
806 
807  return ExpressionType(e1(), e2());
808  }
809 
816  template <typename E>
819  {
820  return GridElementSum<E>::apply(e);
821  }
822  } // namespace Math
823 } // namespace CDPL
824 
825 #endif // CDPL_MATH_GRIDEXPRESSION_HPP
Definition of exception classes.
Definition of various preprocessor macros for error checking.
#define CDPL_MATH_CHECK_SIZE_EQUALITY(size1, size2, e)
Throws the exception e if size1 differs from size2, otherwise returns std::min(size1,...
Definition: Check.hpp:84
Common type deduction.
Definition of basic expression types.
Definition of various functors.
Definition of type traits.
Thrown to indicate that the size of a (multidimensional) array is not correct.
Definition: Base/Exceptions.hpp:133
E ExpressionType
The derived expression type.
Definition: Expression.hpp:49
Expression template node combining two grid expressions E1 and E2 element-wise via the binary functor...
Definition: GridExpression.hpp:177
F::ResultType ValueType
The element value type of the expression (the functor's result type).
Definition: GridExpression.hpp:190
CommonType< typename E1::SizeType, typename E2::SizeType >::Type SizeType
The common size type of the two wrapped expressions.
Definition: GridExpression.hpp:215
ConstReference operator()(SizeType i, SizeType j, SizeType k) const
Applies the binary functor to the elements at (i, j, k) of the two wrapped expressions and returns th...
Definition: GridExpression.hpp:267
GridBinary1(const Expression1Type &e1, const Expression2Type &e2)
Constructs the expression template node wrapping e1 and e2.
Definition: GridExpression.hpp:227
SizeType getSize1() const
Returns the size along the first dimension after verifying that both wrapped expressions agree on it.
Definition: GridExpression.hpp:235
const ValueType ConstReference
Constant element reference type.
Definition: GridExpression.hpp:195
SelfType ClosureType
Closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:210
CommonType< typename E1::DifferenceType, typename E2::DifferenceType >::Type DifferenceType
The common signed difference type of the two wrapped expressions.
Definition: GridExpression.hpp:220
const SelfType ConstClosureType
Constant closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:205
SizeType getSize3() const
Returns the size along the third dimension after verifying that both wrapped expressions agree on it.
Definition: GridExpression.hpp:255
const ValueType Reference
Mutable element reference type (degrades to const for expression template results).
Definition: GridExpression.hpp:200
SizeType getSize2() const
Returns the size along the second dimension after verifying that both wrapped expressions agree on it...
Definition: GridExpression.hpp:245
CRTP base class of all grid expression types.
Definition: Expression.hpp:188
Expression template node applying a unary functor F element-wise to a grid expression E.
Definition: GridExpression.hpp:56
E::SizeType SizeType
The size type inherited from the wrapped expression.
Definition: GridExpression.hpp:92
SizeType getSize2() const
Returns the size of the wrapped grid expression along the second dimension.
Definition: GridExpression.hpp:119
const SelfType ConstClosureType
Constant closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:82
SizeType getSize1() const
Returns the size of the wrapped grid expression along the first dimension.
Definition: GridExpression.hpp:110
SizeType getSize3() const
Returns the size of the wrapped grid expression along the third dimension.
Definition: GridExpression.hpp:128
SelfType ClosureType
Closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:87
E::DifferenceType DifferenceType
The signed difference type inherited from the wrapped expression.
Definition: GridExpression.hpp:97
GridUnary(const ExpressionType &e)
Constructs the expression template node wrapping e.
Definition: GridExpression.hpp:103
ConstReference operator()(SizeType i, SizeType j, SizeType k) const
Applies the unary functor to the element at (i, j, k) of the wrapped expression and returns the resul...
Definition: GridExpression.hpp:140
const ValueType ConstReference
Constant element reference type.
Definition: GridExpression.hpp:72
const ValueType Reference
Mutable element reference type (degrades to const for expression template results).
Definition: GridExpression.hpp:77
F::ResultType ValueType
The element value type of the expression (the functor's result type).
Definition: GridExpression.hpp:67
Expression template node combining a scalar E1 (lhs) and a grid expression E2 (rhs) element-wise via ...
Definition: GridExpression.hpp:306
SizeType getSize2() const
Returns the size of the wrapped grid expression along the second dimension.
Definition: GridExpression.hpp:372
const SelfType ConstClosureType
Constant closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:334
F::ResultType ValueType
The element value type of the expression (the functor's result type).
Definition: GridExpression.hpp:319
SizeType getSize3() const
Returns the size of the wrapped grid expression along the third dimension.
Definition: GridExpression.hpp:381
Scalar1GridBinary(const Expression1Type &e1, const Expression2Type &e2)
Constructs the expression template node combining the scalar e1 and the grid expression e2.
Definition: GridExpression.hpp:356
E2::DifferenceType DifferenceType
The signed difference type inherited from the wrapped grid expression.
Definition: GridExpression.hpp:349
const ValueType ConstReference
Constant element reference type.
Definition: GridExpression.hpp:324
ConstReference operator()(SizeType i, SizeType j, SizeType k) const
Applies the binary functor to the scalar and the element at (i, j, k) of the wrapped grid expression ...
Definition: GridExpression.hpp:393
E2::SizeType SizeType
The size type inherited from the wrapped grid expression.
Definition: GridExpression.hpp:344
SizeType getSize1() const
Returns the size of the wrapped grid expression along the first dimension.
Definition: GridExpression.hpp:363
SelfType ClosureType
Closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:339
const ValueType Reference
Mutable element reference type (degrades to const for expression template results).
Definition: GridExpression.hpp:329
Expression template node combining a grid expression E1 (lhs) and a scalar E2 (rhs) element-wise via ...
Definition: GridExpression.hpp:431
E1::SizeType SizeType
The size type inherited from the wrapped grid expression.
Definition: GridExpression.hpp:469
const ValueType Reference
Mutable element reference type (degrades to const for expression template results).
Definition: GridExpression.hpp:454
ConstReference operator()(SizeType i, SizeType j, SizeType k) const
Applies the binary functor to the element at (i, j, k) of the wrapped grid expression and the scalar ...
Definition: GridExpression.hpp:518
SizeType getSize2() const
Returns the size of the wrapped grid expression along the second dimension.
Definition: GridExpression.hpp:497
const SelfType ConstClosureType
Constant closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:459
SizeType getSize3() const
Returns the size of the wrapped grid expression along the third dimension.
Definition: GridExpression.hpp:506
SizeType getSize1() const
Returns the size of the wrapped grid expression along the first dimension.
Definition: GridExpression.hpp:488
Scalar2GridBinary(const Expression1Type &e1, const Expression2Type &e2)
Constructs the expression template node combining the grid expression e1 and the scalar e2.
Definition: GridExpression.hpp:481
SelfType ClosureType
Closure type used when this expression appears inside another expression.
Definition: GridExpression.hpp:464
F::ResultType ValueType
The element value type of the expression (the functor's result type).
Definition: GridExpression.hpp:444
const ValueType ConstReference
Constant element reference type.
Definition: GridExpression.hpp:449
E1::DifferenceType DifferenceType
The signed difference type inherited from the wrapped grid expression.
Definition: GridExpression.hpp:474
constexpr unsigned int T
Specifies Hydrogen (Tritium).
Definition: AtomType.hpp:67
constexpr unsigned int F
Specifies Fluorine.
Definition: AtomType.hpp:107
constexpr unsigned int E
Specifies that the stereocenter has E configuration.
Definition: CIPDescriptor.hpp:96
GridBinary1Traits< E1, E2, ScalarMultiplication< typename E1::ValueType, typename E2::ValueType > >::ResultType elemProd(const GridExpression< E1 > &e1, const GridExpression< E2 > &e2)
Returns the element-wise product of the grid expressions e1 and e2 (Hadamard product).
Definition: GridExpression.hpp:802
GridUnaryTraits< E, ScalarConjugation< typename E::ValueType > >::ResultType herm(const GridExpression< E > &e)
Returns the Hermitian conjugate of the grid expression e (alias of conj() for grids).
Definition: GridExpression.hpp:737
GridUnaryTraits< E, ScalarConjugation< typename E::ValueType > >::ResultType conj(const GridExpression< E > &e)
Returns the element-wise complex conjugate of the grid expression e (identity for real-valued grids).
Definition: GridExpression.hpp:722
std::enable_if< std::is_arithmetic< T >::value, typename GridToleranceEquality< E1, E2, T >::ResultType >::type equals(const GridExpression< E1 > &e1, const GridExpression< E2 > &e2, const T &eps)
Tells whether the grid expressions e1 and e2 agree element-wise within the absolute tolerance eps.
Definition: GridExpression.hpp:709
std::enable_if< IsScalar< T >::value, typename Scalar2GridBinaryTraits< E, T, ScalarDivision< typename E::ValueType, T > >::ResultType >::type operator/(const GridExpression< E > &e, const T &t)
Returns the element-wise quotient of the grid expression e by the scalar t.
Definition: GridExpression.hpp:659
GridUnaryTraits< E, ScalarReal< typename E::ValueType > >::ResultType real(const GridExpression< E > &e)
Returns the element-wise real part of the grid expression e.
Definition: GridExpression.hpp:752
GridEquality< E1, E2 >::ResultType operator!=(const GridExpression< E1 > &e1, const GridExpression< E2 > &e2)
Tells whether the grid expressions e1 and e2 differ in at least one element.
Definition: GridExpression.hpp:692
GridEquality< E1, E2 >::ResultType operator==(const GridExpression< E1 > &e1, const GridExpression< E2 > &e2)
Tells whether the grid expressions e1 and e2 are element-wise equal.
Definition: GridExpression.hpp:677
std::enable_if< IsScalar< T >::value, typename Scalar2GridBinaryTraits< E, T, ScalarMultiplication< typename E::ValueType, T > >::ResultType >::type operator*(const GridExpression< E > &e, const T &t)
Returns the element-wise product of the grid expression e and the scalar t.
Definition: GridExpression.hpp:623
GridBinary1Traits< E1, E2, ScalarDivision< typename E1::ValueType, typename E2::ValueType > >::ResultType elemDiv(const GridExpression< E1 > &e1, const GridExpression< E2 > &e2)
Returns the element-wise quotient of the grid expressions e1 and e2.
Definition: GridExpression.hpp:784
GridUnaryTraits< E, ScalarImaginary< typename E::ValueType > >::ResultType imag(const GridExpression< E > &e)
Returns the element-wise imaginary part of the grid expression e.
Definition: GridExpression.hpp:767
GridUnaryTraits< E, ScalarNegation< typename E::ValueType > >::ResultType operator-(const GridExpression< E > &e)
Returns the element-wise negation of the grid expression e.
Definition: GridExpression.hpp:557
GridElementSum< E >::ResultType sum(const GridExpression< E > &e)
Returns the sum of all elements of the grid expression e.
Definition: GridExpression.hpp:818
const E & operator+(const GridExpression< E > &e)
Returns the grid expression e unchanged (unary +).
Definition: GridExpression.hpp:572
The namespace of the Chemical Data Processing Library.
std::common_type< T1, T2 >::type Type
The common type.
Definition: CommonType.hpp:51
Traits selecting the expression template node and its result type for the Math::GridBinary1 instantia...
Definition: GridExpression.hpp:285
GridBinary1< E1, E2, F > ExpressionType
The expression template node type.
Definition: GridExpression.hpp:290
ExpressionType ResultType
The expression template result type returned by free-function operators.
Definition: GridExpression.hpp:295
GridScalarUnaryFunctor< G >::ResultType ResultType
Definition: Functional.hpp:2829
static ResultType apply(const GridExpression< G > &e)
Returns the element sum of e.
Definition: Functional.hpp:2836
static ResultType apply(const GridExpression< G1 > &e1, const GridExpression< G2 > &e2)
Tells whether e1 and e2 have the same dimensions and equal element values.
Definition: Functional.hpp:2708
GridBooleanBinaryFunctor< G1, G2 >::ResultType ResultType
Definition: Functional.hpp:2700
Scalar3GridBooleanTernaryFunctor< G1, G2, T >::ResultType ResultType
Definition: Functional.hpp:2772
static ResultType apply(const GridExpression< G1 > &e1, const GridExpression< G2 > &e2, Argument3Type epsilon)
Tells whether e1 and e2 agree element-wise within the absolute tolerance epsilon.
Definition: Functional.hpp:2782
Traits selecting the expression template node and its result type for the Math::GridUnary instantiati...
Definition: GridExpression.hpp:156
ExpressionType ResultType
The expression template result type returned by free-function operators.
Definition: GridExpression.hpp:166
GridUnary< E, F > ExpressionType
The expression template node type.
Definition: GridExpression.hpp:161
Traits selecting the expression template node and its result type for the Math::Scalar1GridBinary ins...
Definition: GridExpression.hpp:411
ExpressionType ResultType
The expression template result type returned by free-function operators.
Definition: GridExpression.hpp:420
Scalar1GridBinary< E1, E2, F > ExpressionType
The expression template node type.
Definition: GridExpression.hpp:415
Traits selecting the expression template node and its result type for the Math::Scalar2GridBinary ins...
Definition: GridExpression.hpp:536
ExpressionType ResultType
The expression template result type returned by free-function operators.
Definition: GridExpression.hpp:546
Scalar2GridBinary< E1, E2, F > ExpressionType
The expression template node type.
Definition: GridExpression.hpp:541
Scalar binary addition functor: apply(t1, t2) returns t1 + t2.
Definition: Functional.hpp:373
Scalar binary division functor: apply(t1, t2) returns t1 / t2.
Definition: Functional.hpp:448
Scalar binary multiplication functor: apply(t1, t2) returns t1 * t2.
Definition: Functional.hpp:423
Scalar binary subtraction functor: apply(t1, t2) returns t1 - t2.
Definition: Functional.hpp:398