1 /*! 2 * \file include/TFEL/Math/ST2toT2/T2toST2ST2toT2ProductExpr.hxx 3 * \brief 4 * \author Thomas Helfer 5 * \date 16 juin 2014 6 * \copyright Copyright (C) 2006-2018 CEA/DEN, EDF R&D. All rights 7 * reserved. 8 * This project is publicly released under either the GNU GPL Licence 9 * or the CECILL-A licence. A copy of thoses licences are delivered 10 * with the sources of TFEL. CEA or EDF may also distribute this 11 * project under specific licensing conditions. 12 */ 13 14 #ifndef LIB_TFEL_MATH_T2TOST2ST2TOT2PRODUCTEXPR_HXX 15 #define LIB_TFEL_MATH_T2TOST2ST2TOT2PRODUCTEXPR_HXX 16 17 #include"TFEL/Config/TFELConfig.hxx" 18 19 #include"TFEL/Math/General/EmptyRunTimeProperties.hxx" 20 #include"TFEL/Math/T2toST2/T2toST2Concept.hxx" 21 #include"TFEL/Math/ST2toT2/ST2toT2Concept.hxx" 22 #include"TFEL/Math/ST2toST2/ST2toST2Concept.hxx" 23 24 namespace tfel 25 { 26 27 namespace math 28 { 29 30 //! Empty structure used for partial specialisation of the 31 //! Expr class 32 template<unsigned short N> 33 struct TFEL_VISIBILITY_LOCAL T2toST2ST2toT2ProductExpr 34 {}; // end of struct T2toST2ST2toT2ProductExpr 35 36 /*! 37 * Partial specialisation 38 */ 39 template<typename ST2toST2ResultType> 40 struct TFEL_VISIBILITY_LOCAL Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr<1u> > 41 : public ST2toST2Concept<Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr<1u> > >, 42 public fsarray<StensorDimeToSize<ST2toST2Traits<ST2toST2ResultType>::dime>::value* 43 StensorDimeToSize<ST2toST2Traits<ST2toST2ResultType>::dime>::value, 44 typename ST2toST2Traits<ST2toST2ResultType>::NumType> 45 { 46 //! a simple alias 47 typedef EmptyRunTimeProperties RunTimeProperties; 48 //! a simple alias 49 typedef typename ST2toST2Traits<ST2toST2ResultType>::NumType value_type; 50 //! a simple check 51 TFEL_STATIC_ASSERT((ST2toST2Traits<ST2toST2ResultType>::dime==1u)); 52 /*! 53 * \param[in] a : first term of the product 54 * \param[in] b : second term of the product 55 */ 56 template<typename T2toST2Type, 57 typename ST2toT2Type2> 58 TFEL_MATH_INLINE Exprtfel::math::Expr59 Expr(const T2toST2Type& a, 60 const ST2toT2Type2& b) 61 { 62 //! a simple check 63 TFEL_STATIC_ASSERT((tfel::meta::Implements<T2toST2Type,T2toST2Concept>::cond)); 64 //! a simple check 65 TFEL_STATIC_ASSERT((tfel::meta::Implements<ST2toT2Type2,ST2toT2Concept>::cond)); 66 //! a simple check 67 TFEL_STATIC_ASSERT((T2toST2Traits<T2toST2Type>::dime==1u)); 68 //! a simple check 69 TFEL_STATIC_ASSERT((ST2toT2Traits <ST2toT2Type2>::dime==1u)); 70 this->v[0]=a(0,0)*b(0,0)+a(0,1)*b(1,0)+a(0,2)*b(2,0); 71 this->v[1]=a(0,0)*b(0,1)+a(0,1)*b(1,1)+a(0,2)*b(2,1); 72 this->v[2]=a(0,0)*b(0,2)+a(0,1)*b(1,2)+a(0,2)*b(2,2); 73 this->v[3]=a(1,0)*b(0,0)+a(1,1)*b(1,0)+a(1,2)*b(2,0); 74 this->v[4]=a(1,0)*b(0,1)+a(1,1)*b(1,1)+a(1,2)*b(2,1); 75 this->v[5]=a(1,0)*b(0,2)+a(1,1)*b(1,2)+a(1,2)*b(2,2); 76 this->v[6]=a(2,0)*b(0,0)+a(2,1)*b(1,0)+a(2,2)*b(2,0); 77 this->v[7]=a(2,0)*b(0,1)+a(2,1)*b(1,1)+a(2,2)*b(2,1); 78 this->v[8]=a(2,0)*b(0,2)+a(2,1)*b(1,2)+a(2,2)*b(2,2); 79 } // end of Expr 80 /*! 81 * \brief access operator 82 * \param[in] i : line index 83 * \param[in] j : column index 84 */ 85 TFEL_MATH_INLINE const value_type& operator ()tfel::math::Expr86 operator()(const unsigned short i, 87 const unsigned short j) const 88 { 89 return this->v[i*3+j]; 90 } // end of operator() 91 /*! 92 * \return the runtime properties 93 */ 94 TFEL_MATH_INLINE RunTimeProperties getRunTimePropertiestfel::math::Expr95 getRunTimeProperties() const 96 { 97 return RunTimeProperties(); 98 } 99 }; // end of struct Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr> 100 101 /*! 102 * Partial specialisation 103 */ 104 template<typename ST2toST2ResultType> 105 struct TFEL_VISIBILITY_LOCAL Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr<2u> > 106 : public ST2toST2Concept<Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr<2u> > >, 107 public fsarray<StensorDimeToSize<ST2toST2Traits<ST2toST2ResultType>::dime>::value* 108 StensorDimeToSize<ST2toST2Traits<ST2toST2ResultType>::dime>::value, 109 typename ST2toST2Traits<ST2toST2ResultType>::NumType> 110 { 111 //! a simple alias 112 typedef EmptyRunTimeProperties RunTimeProperties; 113 //! a simple alias 114 typedef typename ST2toST2Traits<ST2toST2ResultType>::NumType value_type; 115 //! a simple check 116 TFEL_STATIC_ASSERT((ST2toST2Traits<ST2toST2ResultType>::dime==2u)); 117 /*! 118 * \param[in] a : first term of the product 119 * \param[in] b : second term of the product 120 */ 121 template<typename T2toST2Type, 122 typename ST2toT2Type2> 123 TFEL_MATH_INLINE Exprtfel::math::Expr124 Expr(const T2toST2Type& a, 125 const ST2toT2Type2& b) 126 { 127 //! a simple check 128 TFEL_STATIC_ASSERT((tfel::meta::Implements<T2toST2Type,T2toST2Concept>::cond)); 129 //! a simple check 130 TFEL_STATIC_ASSERT((tfel::meta::Implements<ST2toT2Type2,ST2toT2Concept>::cond)); 131 //! a simple check 132 TFEL_STATIC_ASSERT((T2toST2Traits<T2toST2Type>::dime==2u)); 133 //! a simple check 134 TFEL_STATIC_ASSERT((ST2toT2Traits <ST2toT2Type2>::dime==2u)); 135 this->v[0]=a(0,0)*b(0,0)+a(0,1)*b(1,0)+a(0,2)*b(2,0)+a(0,3)*b(3,0)+a(0,4)*b(4,0); 136 this->v[1]=a(0,0)*b(0,1)+a(0,1)*b(1,1)+a(0,2)*b(2,1)+a(0,3)*b(3,1)+a(0,4)*b(4,1); 137 this->v[2]=a(0,0)*b(0,2)+a(0,1)*b(1,2)+a(0,2)*b(2,2)+a(0,3)*b(3,2)+a(0,4)*b(4,2); 138 this->v[3]=a(0,0)*b(0,3)+a(0,1)*b(1,3)+a(0,2)*b(2,3)+a(0,3)*b(3,3)+a(0,4)*b(4,3); 139 this->v[4]=a(1,0)*b(0,0)+a(1,1)*b(1,0)+a(1,2)*b(2,0)+a(1,3)*b(3,0)+a(1,4)*b(4,0); 140 this->v[5]=a(1,0)*b(0,1)+a(1,1)*b(1,1)+a(1,2)*b(2,1)+a(1,3)*b(3,1)+a(1,4)*b(4,1); 141 this->v[6]=a(1,0)*b(0,2)+a(1,1)*b(1,2)+a(1,2)*b(2,2)+a(1,3)*b(3,2)+a(1,4)*b(4,2); 142 this->v[7]=a(1,0)*b(0,3)+a(1,1)*b(1,3)+a(1,2)*b(2,3)+a(1,3)*b(3,3)+a(1,4)*b(4,3); 143 this->v[8]=a(2,0)*b(0,0)+a(2,1)*b(1,0)+a(2,2)*b(2,0)+a(2,3)*b(3,0)+a(2,4)*b(4,0); 144 this->v[9]=a(2,0)*b(0,1)+a(2,1)*b(1,1)+a(2,2)*b(2,1)+a(2,3)*b(3,1)+a(2,4)*b(4,1); 145 this->v[10]=a(2,0)*b(0,2)+a(2,1)*b(1,2)+a(2,2)*b(2,2)+a(2,3)*b(3,2)+a(2,4)*b(4,2); 146 this->v[11]=a(2,0)*b(0,3)+a(2,1)*b(1,3)+a(2,2)*b(2,3)+a(2,3)*b(3,3)+a(2,4)*b(4,3); 147 this->v[12]=a(3,0)*b(0,0)+a(3,1)*b(1,0)+a(3,2)*b(2,0)+a(3,3)*b(3,0)+a(3,4)*b(4,0); 148 this->v[13]=a(3,0)*b(0,1)+a(3,1)*b(1,1)+a(3,2)*b(2,1)+a(3,3)*b(3,1)+a(3,4)*b(4,1); 149 this->v[14]=a(3,0)*b(0,2)+a(3,1)*b(1,2)+a(3,2)*b(2,2)+a(3,3)*b(3,2)+a(3,4)*b(4,2); 150 this->v[15]=a(3,0)*b(0,3)+a(3,1)*b(1,3)+a(3,2)*b(2,3)+a(3,3)*b(3,3)+a(3,4)*b(4,3); 151 } // end of Expr 152 /*! 153 * \brief access operator 154 * \param[in] i : line index 155 * \param[in] j : column index 156 */ 157 TFEL_MATH_INLINE const value_type& operator ()tfel::math::Expr158 operator()(const unsigned short i, 159 const unsigned short j) const 160 { 161 return this->v[i*4+j]; 162 } // end of operator() 163 /*! 164 * \return the runtime properties 165 */ 166 TFEL_MATH_INLINE RunTimeProperties getRunTimePropertiestfel::math::Expr167 getRunTimeProperties() const 168 { 169 return RunTimeProperties(); 170 } 171 }; // end of struct Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr> 172 173 /*! 174 * Partial specialisation 175 */ 176 template<typename ST2toST2ResultType> 177 struct TFEL_VISIBILITY_LOCAL Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr<3u> > 178 : public ST2toST2Concept<Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr<3u> > >, 179 public fsarray<StensorDimeToSize<ST2toST2Traits<ST2toST2ResultType>::dime>::value* 180 StensorDimeToSize<ST2toST2Traits<ST2toST2ResultType>::dime>::value, 181 typename ST2toST2Traits<ST2toST2ResultType>::NumType> 182 { 183 //! a simple alias 184 typedef EmptyRunTimeProperties RunTimeProperties; 185 //! a simple alias 186 typedef typename ST2toST2Traits<ST2toST2ResultType>::NumType value_type; 187 //! a simple check 188 TFEL_STATIC_ASSERT((ST2toST2Traits<ST2toST2ResultType>::dime==3u)); 189 /*! 190 * \param[in] a : first term of the product 191 * \param[in] b : second term of the product 192 */ 193 template<typename T2toST2Type, 194 typename ST2toT2Type2> 195 TFEL_MATH_INLINE Exprtfel::math::Expr196 Expr(const T2toST2Type& a, 197 const ST2toT2Type2& b) 198 { 199 //! a simple check 200 TFEL_STATIC_ASSERT((tfel::meta::Implements<T2toST2Type,T2toST2Concept>::cond)); 201 //! a simple check 202 TFEL_STATIC_ASSERT((tfel::meta::Implements<ST2toT2Type2,ST2toT2Concept>::cond)); 203 //! a simple check 204 TFEL_STATIC_ASSERT((T2toST2Traits<T2toST2Type>::dime==3u)); 205 //! a simple check 206 TFEL_STATIC_ASSERT((ST2toT2Traits <ST2toT2Type2>::dime==3u)); 207 this->v[0]=a(0,0)*b(0,0)+a(0,1)*b(1,0)+a(0,2)*b(2,0)+a(0,3)*b(3,0)+a(0,4)*b(4,0)+a(0,5)*b(5,0)+a(0,6)*b(6,0)+a(0,7)*b(7,0)+a(0,8)*b(8,0); 208 this->v[1]=a(0,0)*b(0,1)+a(0,1)*b(1,1)+a(0,2)*b(2,1)+a(0,3)*b(3,1)+a(0,4)*b(4,1)+a(0,5)*b(5,1)+a(0,6)*b(6,1)+a(0,7)*b(7,1)+a(0,8)*b(8,1); 209 this->v[2]=a(0,0)*b(0,2)+a(0,1)*b(1,2)+a(0,2)*b(2,2)+a(0,3)*b(3,2)+a(0,4)*b(4,2)+a(0,5)*b(5,2)+a(0,6)*b(6,2)+a(0,7)*b(7,2)+a(0,8)*b(8,2); 210 this->v[3]=a(0,0)*b(0,3)+a(0,1)*b(1,3)+a(0,2)*b(2,3)+a(0,3)*b(3,3)+a(0,4)*b(4,3)+a(0,5)*b(5,3)+a(0,6)*b(6,3)+a(0,7)*b(7,3)+a(0,8)*b(8,3); 211 this->v[4]=a(0,0)*b(0,4)+a(0,1)*b(1,4)+a(0,2)*b(2,4)+a(0,3)*b(3,4)+a(0,4)*b(4,4)+a(0,5)*b(5,4)+a(0,6)*b(6,4)+a(0,7)*b(7,4)+a(0,8)*b(8,4); 212 this->v[5]=a(0,0)*b(0,5)+a(0,1)*b(1,5)+a(0,2)*b(2,5)+a(0,3)*b(3,5)+a(0,4)*b(4,5)+a(0,5)*b(5,5)+a(0,6)*b(6,5)+a(0,7)*b(7,5)+a(0,8)*b(8,5); 213 this->v[6]=a(1,0)*b(0,0)+a(1,1)*b(1,0)+a(1,2)*b(2,0)+a(1,3)*b(3,0)+a(1,4)*b(4,0)+a(1,5)*b(5,0)+a(1,6)*b(6,0)+a(1,7)*b(7,0)+a(1,8)*b(8,0); 214 this->v[7]=a(1,0)*b(0,1)+a(1,1)*b(1,1)+a(1,2)*b(2,1)+a(1,3)*b(3,1)+a(1,4)*b(4,1)+a(1,5)*b(5,1)+a(1,6)*b(6,1)+a(1,7)*b(7,1)+a(1,8)*b(8,1); 215 this->v[8]=a(1,0)*b(0,2)+a(1,1)*b(1,2)+a(1,2)*b(2,2)+a(1,3)*b(3,2)+a(1,4)*b(4,2)+a(1,5)*b(5,2)+a(1,6)*b(6,2)+a(1,7)*b(7,2)+a(1,8)*b(8,2); 216 this->v[9]=a(1,0)*b(0,3)+a(1,1)*b(1,3)+a(1,2)*b(2,3)+a(1,3)*b(3,3)+a(1,4)*b(4,3)+a(1,5)*b(5,3)+a(1,6)*b(6,3)+a(1,7)*b(7,3)+a(1,8)*b(8,3); 217 this->v[10]=a(1,0)*b(0,4)+a(1,1)*b(1,4)+a(1,2)*b(2,4)+a(1,3)*b(3,4)+a(1,4)*b(4,4)+a(1,5)*b(5,4)+a(1,6)*b(6,4)+a(1,7)*b(7,4)+a(1,8)*b(8,4); 218 this->v[11]=a(1,0)*b(0,5)+a(1,1)*b(1,5)+a(1,2)*b(2,5)+a(1,3)*b(3,5)+a(1,4)*b(4,5)+a(1,5)*b(5,5)+a(1,6)*b(6,5)+a(1,7)*b(7,5)+a(1,8)*b(8,5); 219 this->v[12]=a(2,0)*b(0,0)+a(2,1)*b(1,0)+a(2,2)*b(2,0)+a(2,3)*b(3,0)+a(2,4)*b(4,0)+a(2,5)*b(5,0)+a(2,6)*b(6,0)+a(2,7)*b(7,0)+a(2,8)*b(8,0); 220 this->v[13]=a(2,0)*b(0,1)+a(2,1)*b(1,1)+a(2,2)*b(2,1)+a(2,3)*b(3,1)+a(2,4)*b(4,1)+a(2,5)*b(5,1)+a(2,6)*b(6,1)+a(2,7)*b(7,1)+a(2,8)*b(8,1); 221 this->v[14]=a(2,0)*b(0,2)+a(2,1)*b(1,2)+a(2,2)*b(2,2)+a(2,3)*b(3,2)+a(2,4)*b(4,2)+a(2,5)*b(5,2)+a(2,6)*b(6,2)+a(2,7)*b(7,2)+a(2,8)*b(8,2); 222 this->v[15]=a(2,0)*b(0,3)+a(2,1)*b(1,3)+a(2,2)*b(2,3)+a(2,3)*b(3,3)+a(2,4)*b(4,3)+a(2,5)*b(5,3)+a(2,6)*b(6,3)+a(2,7)*b(7,3)+a(2,8)*b(8,3); 223 this->v[16]=a(2,0)*b(0,4)+a(2,1)*b(1,4)+a(2,2)*b(2,4)+a(2,3)*b(3,4)+a(2,4)*b(4,4)+a(2,5)*b(5,4)+a(2,6)*b(6,4)+a(2,7)*b(7,4)+a(2,8)*b(8,4); 224 this->v[17]=a(2,0)*b(0,5)+a(2,1)*b(1,5)+a(2,2)*b(2,5)+a(2,3)*b(3,5)+a(2,4)*b(4,5)+a(2,5)*b(5,5)+a(2,6)*b(6,5)+a(2,7)*b(7,5)+a(2,8)*b(8,5); 225 this->v[18]=a(3,0)*b(0,0)+a(3,1)*b(1,0)+a(3,2)*b(2,0)+a(3,3)*b(3,0)+a(3,4)*b(4,0)+a(3,5)*b(5,0)+a(3,6)*b(6,0)+a(3,7)*b(7,0)+a(3,8)*b(8,0); 226 this->v[19]=a(3,0)*b(0,1)+a(3,1)*b(1,1)+a(3,2)*b(2,1)+a(3,3)*b(3,1)+a(3,4)*b(4,1)+a(3,5)*b(5,1)+a(3,6)*b(6,1)+a(3,7)*b(7,1)+a(3,8)*b(8,1); 227 this->v[20]=a(3,0)*b(0,2)+a(3,1)*b(1,2)+a(3,2)*b(2,2)+a(3,3)*b(3,2)+a(3,4)*b(4,2)+a(3,5)*b(5,2)+a(3,6)*b(6,2)+a(3,7)*b(7,2)+a(3,8)*b(8,2); 228 this->v[21]=a(3,0)*b(0,3)+a(3,1)*b(1,3)+a(3,2)*b(2,3)+a(3,3)*b(3,3)+a(3,4)*b(4,3)+a(3,5)*b(5,3)+a(3,6)*b(6,3)+a(3,7)*b(7,3)+a(3,8)*b(8,3); 229 this->v[22]=a(3,0)*b(0,4)+a(3,1)*b(1,4)+a(3,2)*b(2,4)+a(3,3)*b(3,4)+a(3,4)*b(4,4)+a(3,5)*b(5,4)+a(3,6)*b(6,4)+a(3,7)*b(7,4)+a(3,8)*b(8,4); 230 this->v[23]=a(3,0)*b(0,5)+a(3,1)*b(1,5)+a(3,2)*b(2,5)+a(3,3)*b(3,5)+a(3,4)*b(4,5)+a(3,5)*b(5,5)+a(3,6)*b(6,5)+a(3,7)*b(7,5)+a(3,8)*b(8,5); 231 this->v[24]=a(4,0)*b(0,0)+a(4,1)*b(1,0)+a(4,2)*b(2,0)+a(4,3)*b(3,0)+a(4,4)*b(4,0)+a(4,5)*b(5,0)+a(4,6)*b(6,0)+a(4,7)*b(7,0)+a(4,8)*b(8,0); 232 this->v[25]=a(4,0)*b(0,1)+a(4,1)*b(1,1)+a(4,2)*b(2,1)+a(4,3)*b(3,1)+a(4,4)*b(4,1)+a(4,5)*b(5,1)+a(4,6)*b(6,1)+a(4,7)*b(7,1)+a(4,8)*b(8,1); 233 this->v[26]=a(4,0)*b(0,2)+a(4,1)*b(1,2)+a(4,2)*b(2,2)+a(4,3)*b(3,2)+a(4,4)*b(4,2)+a(4,5)*b(5,2)+a(4,6)*b(6,2)+a(4,7)*b(7,2)+a(4,8)*b(8,2); 234 this->v[27]=a(4,0)*b(0,3)+a(4,1)*b(1,3)+a(4,2)*b(2,3)+a(4,3)*b(3,3)+a(4,4)*b(4,3)+a(4,5)*b(5,3)+a(4,6)*b(6,3)+a(4,7)*b(7,3)+a(4,8)*b(8,3); 235 this->v[28]=a(4,0)*b(0,4)+a(4,1)*b(1,4)+a(4,2)*b(2,4)+a(4,3)*b(3,4)+a(4,4)*b(4,4)+a(4,5)*b(5,4)+a(4,6)*b(6,4)+a(4,7)*b(7,4)+a(4,8)*b(8,4); 236 this->v[29]=a(4,0)*b(0,5)+a(4,1)*b(1,5)+a(4,2)*b(2,5)+a(4,3)*b(3,5)+a(4,4)*b(4,5)+a(4,5)*b(5,5)+a(4,6)*b(6,5)+a(4,7)*b(7,5)+a(4,8)*b(8,5); 237 this->v[30]=a(5,0)*b(0,0)+a(5,1)*b(1,0)+a(5,2)*b(2,0)+a(5,3)*b(3,0)+a(5,4)*b(4,0)+a(5,5)*b(5,0)+a(5,6)*b(6,0)+a(5,7)*b(7,0)+a(5,8)*b(8,0); 238 this->v[31]=a(5,0)*b(0,1)+a(5,1)*b(1,1)+a(5,2)*b(2,1)+a(5,3)*b(3,1)+a(5,4)*b(4,1)+a(5,5)*b(5,1)+a(5,6)*b(6,1)+a(5,7)*b(7,1)+a(5,8)*b(8,1); 239 this->v[32]=a(5,0)*b(0,2)+a(5,1)*b(1,2)+a(5,2)*b(2,2)+a(5,3)*b(3,2)+a(5,4)*b(4,2)+a(5,5)*b(5,2)+a(5,6)*b(6,2)+a(5,7)*b(7,2)+a(5,8)*b(8,2); 240 this->v[33]=a(5,0)*b(0,3)+a(5,1)*b(1,3)+a(5,2)*b(2,3)+a(5,3)*b(3,3)+a(5,4)*b(4,3)+a(5,5)*b(5,3)+a(5,6)*b(6,3)+a(5,7)*b(7,3)+a(5,8)*b(8,3); 241 this->v[34]=a(5,0)*b(0,4)+a(5,1)*b(1,4)+a(5,2)*b(2,4)+a(5,3)*b(3,4)+a(5,4)*b(4,4)+a(5,5)*b(5,4)+a(5,6)*b(6,4)+a(5,7)*b(7,4)+a(5,8)*b(8,4); 242 this->v[35]=a(5,0)*b(0,5)+a(5,1)*b(1,5)+a(5,2)*b(2,5)+a(5,3)*b(3,5)+a(5,4)*b(4,5)+a(5,5)*b(5,5)+a(5,6)*b(6,5)+a(5,7)*b(7,5)+a(5,8)*b(8,5); 243 } // end of Expr 244 /*! 245 * \brief access operator 246 * \param[in] i : line index 247 * \param[in] j : column index 248 */ 249 TFEL_MATH_INLINE const value_type& operator ()tfel::math::Expr250 operator()(const unsigned short i, 251 const unsigned short j) const 252 { 253 return this->v[i*6+j]; 254 } // end of operator() 255 /*! 256 * \return the runtime properties 257 */ 258 TFEL_MATH_INLINE RunTimeProperties getRunTimePropertiestfel::math::Expr259 getRunTimeProperties() const 260 { 261 return RunTimeProperties(); 262 } 263 }; // end of struct Expr<ST2toST2ResultType,T2toST2ST2toT2ProductExpr> 264 265 } // end of namespace math 266 267 } // end of namespace tfel 268 269 #endif /* LIB_TFEL_MATH_T2TOST2ST2TOT2PRODUCTEXPR_HXX */ 270