/[escript]/trunk/escriptcore/src/Data.cpp
ViewVC logotype

Diff of /trunk/escriptcore/src/Data.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6167 by jfenwick, Fri Apr 8 06:22:04 2016 UTC revision 6168 by jfenwick, Wed Apr 13 03:08:12 2016 UTC
# Line 1119  Data Line 1119  Data
1119  Data::oneOver() const  Data::oneOver() const
1120  {  {
1121      MAKELAZYOP(RECIP);      MAKELAZYOP(RECIP);
1122      return C_TensorUnaryOperation(*this, escript::ESFunction::INVF);          return C_TensorUnaryOperation(*this, escript::ES_optype::RECIP);    
1123  }  }
1124    
1125  Data  Data
# Line 1130  Data::wherePositive() const Line 1130  Data::wherePositive() const
1130          throw DataException("The wherePositive operation is not supported for complex data.");          throw DataException("The wherePositive operation is not supported for complex data.");
1131      }      }
1132      MAKELAZYOP(GZ);      MAKELAZYOP(GZ);
1133      return C_TensorUnaryOperation(*this, escript::ESFunction::GTZEROF);          return C_TensorUnaryOperation(*this, escript::ES_optype::GZ);    
1134  }  }
1135    
1136  Data  Data
# Line 1141  Data::whereNegative() const Line 1141  Data::whereNegative() const
1141          throw DataException("The whereNegative operation is not supported for complex data.");          throw DataException("The whereNegative operation is not supported for complex data.");
1142      }      }
1143      MAKELAZYOP(LZ);      MAKELAZYOP(LZ);
1144      return C_TensorUnaryOperation(*this, escript::ESFunction::LTZEROF);          return C_TensorUnaryOperation(*this, escript::ES_optype::LZ);    
1145  }  }
1146    
1147  Data  Data
# Line 1152  Data::whereNonNegative() const Line 1152  Data::whereNonNegative() const
1152          throw DataException("The whereNonNegative operation is not supported for complex data.");          throw DataException("The whereNonNegative operation is not supported for complex data.");
1153      }      }
1154      MAKELAZYOP(GEZ);      MAKELAZYOP(GEZ);
1155      return C_TensorUnaryOperation(*this, escript::ESFunction::GEZEROF);          return C_TensorUnaryOperation(*this, escript::ES_optype::GEZ);    
1156  }  }
1157    
1158  Data  Data
# Line 1163  Data::whereNonPositive() const Line 1163  Data::whereNonPositive() const
1163          throw DataException("The whereNonPositive operation is not supported for complex data.");          throw DataException("The whereNonPositive operation is not supported for complex data.");
1164      }      }
1165      MAKELAZYOP(LEZ);      MAKELAZYOP(LEZ);
1166      return C_TensorUnaryOperation(*this, escript::ESFunction::LEZEROF);      return C_TensorUnaryOperation(*this, escript::ES_optype::LEZ);
1167  }  }
1168    
1169  Data  Data
1170  Data::whereZero(real_t tol) const  Data::whereZero(real_t tol) const
1171  {  {
1172      MAKELAZYOPOFF(EZ,tol);      MAKELAZYOPOFF(EZ,tol);
1173      return C_TensorUnaryOperation(*this, escript::ESFunction::EQZEROF, tol);      return C_TensorUnaryOperation(*this, escript::ES_optype::EZ, tol);
1174  }  }
1175    
1176  Data  Data
1177  Data::whereNonZero(real_t tol) const  Data::whereNonZero(real_t tol) const
1178  {  {
1179      MAKELAZYOPOFF(NEZ,tol);      MAKELAZYOPOFF(NEZ,tol);
1180      return C_TensorUnaryOperation(*this, escript::ESFunction::NEQZEROF, tol);      return C_TensorUnaryOperation(*this, escript::ES_optype::NEZ, tol);
1181  }  }
1182    
1183  Data  Data
# Line 1784  Data::conjugate() const Line 1784  Data::conjugate() const
1784      }      }
1785      if (isComplex())      if (isComplex())
1786      {      {
1787          return C_TensorUnaryOperation(*this, escript::ESFunction::CONJF);                return C_TensorUnaryOperation(*this, escript::ES_optype::CONJ);      
1788      }      }
1789      else      else
1790      {      {
# Line 1804  Data::real() const Line 1804  Data::real() const
1804      }      }
1805      if (isComplex())      if (isComplex())
1806      {      {
1807          return C_TensorUnaryOperation(*this, escript::ESFunction::REALF);                return C_TensorUnaryOperation(*this, escript::ES_optype::REAL);      
1808      }      }
1809      else      else
1810      {      {
# Line 1823  Data::imag() const Line 1823  Data::imag() const
1823      }      }
1824      if (isComplex())      if (isComplex())
1825      {      {
1826          return C_TensorUnaryOperation(*this, escript::ESFunction::IMAGF);                return C_TensorUnaryOperation(*this, escript::ES_optype::IMAG);      
1827      }      }
1828      else      else
1829      {      {
# Line 1838  Data Line 1838  Data
1838  Data::sin() const  Data::sin() const
1839  {  {
1840      MAKELAZYOP(SIN);      MAKELAZYOP(SIN);
1841      return C_TensorUnaryOperation(*this, escript::ESFunction::SINF);      return C_TensorUnaryOperation(*this, escript::ES_optype::SIN);
1842  }  }
1843    
1844  Data  Data
1845  Data::cos() const  Data::cos() const
1846  {  {
1847      MAKELAZYOP(COS);      MAKELAZYOP(COS);
1848      return C_TensorUnaryOperation(*this, escript::ESFunction::COSF);      return C_TensorUnaryOperation(*this, escript::ES_optype::COS);
1849  }  }
1850    
1851  Data  Data
1852  Data::tan() const  Data::tan() const
1853  {  {
1854      MAKELAZYOP(TAN);      MAKELAZYOP(TAN);
1855      return C_TensorUnaryOperation(*this, escript::ESFunction::TANF);      return C_TensorUnaryOperation(*this, escript::ES_optype::TAN);
1856  }  }
1857    
1858  Data  Data
1859  Data::asin() const  Data::asin() const
1860  {  {
1861      MAKELAZYOP(ASIN);      MAKELAZYOP(ASIN);
1862      return C_TensorUnaryOperation(*this, escript::ESFunction::ASINF);      return C_TensorUnaryOperation(*this, escript::ES_optype::ASIN);
1863  }  }
1864    
1865  Data  Data
1866  Data::acos() const  Data::acos() const
1867  {  {
1868      MAKELAZYOP(ACOS);      MAKELAZYOP(ACOS);
1869      return C_TensorUnaryOperation(*this, escript::ESFunction::ACOSF);      return C_TensorUnaryOperation(*this, escript::ES_optype::ACOS);
1870  }  }
1871    
1872    
# Line 1874  Data Line 1874  Data
1874  Data::atan() const  Data::atan() const
1875  {  {
1876      MAKELAZYOP(ATAN);      MAKELAZYOP(ATAN);
1877      return C_TensorUnaryOperation(*this, escript::ESFunction::ATANF);      return C_TensorUnaryOperation(*this, escript::ES_optype::ATAN);
1878  }  }
1879    
1880  Data  Data
1881  Data::sinh() const  Data::sinh() const
1882  {  {
1883      MAKELAZYOP(SINH);      MAKELAZYOP(SINH);
1884      return C_TensorUnaryOperation(*this, escript::ESFunction::SINHF);      return C_TensorUnaryOperation(*this, escript::ES_optype::SINH);
1885  }  }
1886    
1887  Data  Data
1888  Data::cosh() const  Data::cosh() const
1889  {  {
1890      MAKELAZYOP(COSH);      MAKELAZYOP(COSH);
1891      return C_TensorUnaryOperation(*this, escript::ESFunction::COSHF);      return C_TensorUnaryOperation(*this, escript::ES_optype::COSH);
1892  }  }
1893    
1894  Data  Data
1895  Data::tanh() const  Data::tanh() const
1896  {  {
1897      MAKELAZYOP(TANH);      MAKELAZYOP(TANH);
1898      return C_TensorUnaryOperation(*this, escript::ESFunction::TANHF);      return C_TensorUnaryOperation(*this, escript::ES_optype::TANH);
1899  }  }
1900    
1901    
# Line 1906  Data::erf() const Line 1906  Data::erf() const
1906      throw DataException("Error - Data:: erf function is not supported on _WIN32 platforms.");      throw DataException("Error - Data:: erf function is not supported on _WIN32 platforms.");
1907  #else  #else
1908      MAKELAZYOP(ERF);      MAKELAZYOP(ERF);
1909      return C_TensorUnaryOperation(*this, escript::ESFunction::ERFF);      return C_TensorUnaryOperation(*this, escript::ES_optype::ERF);
1910  #endif  #endif
1911  }  }
1912    
# Line 1914  Data Line 1914  Data
1914  Data::asinh() const  Data::asinh() const
1915  {  {
1916      MAKELAZYOP(ASINH);      MAKELAZYOP(ASINH);
1917      return C_TensorUnaryOperation(*this, escript::ESFunction::ASINHF);      return C_TensorUnaryOperation(*this, escript::ES_optype::ASINH);
1918  }  }
1919    
1920  Data  Data
1921  Data::acosh() const  Data::acosh() const
1922  {  {
1923      MAKELAZYOP(ACOSH);      MAKELAZYOP(ACOSH);
1924      return C_TensorUnaryOperation(*this, escript::ESFunction::ACOSHF);          return C_TensorUnaryOperation(*this, escript::ES_optype::ACOSH);    
1925  }  }
1926    
1927  Data  Data
1928  Data::atanh() const  Data::atanh() const
1929  {  {
1930      MAKELAZYOP(ATANH);      MAKELAZYOP(ATANH);
1931      return C_TensorUnaryOperation(*this, escript::ESFunction::ATANHF);      return C_TensorUnaryOperation(*this, escript::ES_optype::ATANH);
1932  }  }
1933    
1934  Data  Data
1935  Data::log10() const  Data::log10() const
1936  {  {
1937      MAKELAZYOP(LOG10);      MAKELAZYOP(LOG10);
1938      return C_TensorUnaryOperation(*this, escript::ESFunction::LOG10F);      return C_TensorUnaryOperation(*this, escript::ES_optype::LOG10);
1939  }  }
1940    
1941  Data  Data
1942  Data::log() const  Data::log() const
1943  {  {
1944      MAKELAZYOP(LOG);      MAKELAZYOP(LOG);
1945      return C_TensorUnaryOperation(*this, escript::ESFunction::LOGF);      return C_TensorUnaryOperation(*this, escript::ES_optype::LOG);
1946  }  }
1947    
1948  Data  Data
1949  Data::sign() const  Data::sign() const
1950  {  {
1951      MAKELAZYOP(SIGN);      MAKELAZYOP(SIGN);
1952      return C_TensorUnaryOperation(*this, escript::ESFunction::SIGNF);      return C_TensorUnaryOperation(*this, escript::ES_optype::SIGN);
1953  }  }
1954    
1955  Data  Data
1956  Data::abs() const  Data::abs() const
1957  {  {
1958      MAKELAZYOP(ABS);      MAKELAZYOP(ABS);
1959      return C_TensorUnaryOperation(*this, escript::ESFunction::ABSF);      return C_TensorUnaryOperation(*this, escript::ES_optype::ABS);
1960  }  }
1961    
1962  Data  Data
1963  Data::neg() const  Data::neg() const
1964  {  {
1965      MAKELAZYOP(NEG);      MAKELAZYOP(NEG);
1966      return C_TensorUnaryOperation(*this, escript::ESFunction::NEGF);      return C_TensorUnaryOperation(*this, escript::ES_optype::NEG);
1967  }  }
1968    
1969  Data  Data
# Line 1982  Data Line 1982  Data
1982  Data::exp() const  Data::exp() const
1983  {  {
1984      MAKELAZYOP(EXP);      MAKELAZYOP(EXP);
1985      return C_TensorUnaryOperation(*this, escript::ESFunction::EXPF);      return C_TensorUnaryOperation(*this, escript::ES_optype::EXP);
1986  }  }
1987    
1988  Data  Data
1989  Data::sqrt() const  Data::sqrt() const
1990  {  {
1991      MAKELAZYOP(SQRT);      MAKELAZYOP(SQRT);
1992      return C_TensorUnaryOperation(*this, escript::ESFunction::SQRTF);      return C_TensorUnaryOperation(*this, escript::ES_optype::SQRT);
1993  }  }
1994    
1995  real_t  real_t
# Line 2916  Data::operator+=(const Data& right) Line 2916  Data::operator+=(const Data& right)
2916      {      {
2917          complicate();          complicate();
2918      }      }
2919      TensorSelfUpdateBinaryOperation(right, escript::ESFunction::PLUSF);        TensorSelfUpdateBinaryOperation(right, escript::ES_optype::ADD);  
     //binaryDataOp(right, escript::ESFunction::PLUSF);  
2920      return (*this);      return (*this);
2921  }  }
2922    
# Line 2953  Data::operator-=(const Data& right) Line 2952  Data::operator-=(const Data& right)
2952      {      {
2953          complicate();          complicate();
2954      }      }
2955      TensorSelfUpdateBinaryOperation(right, escript::ESFunction::MINUSF);      TensorSelfUpdateBinaryOperation(right, escript::ES_optype::SUB);
     //binaryDataOp(right, escript::ESFunction::MINUSF);  
2956      return (*this);      return (*this);
2957  }  }
2958    
# Line 2981  Data::operator*=(const Data& right) Line 2979  Data::operator*=(const Data& right)
2979      {      {
2980          complicate();          complicate();
2981      }      }
2982      TensorSelfUpdateBinaryOperation(right, escript::ESFunction::MULTIPLIESF);      TensorSelfUpdateBinaryOperation(right, escript::ES_optype::MUL);
     //binaryDataOp(right, escript::ESFunction::MULTIPLIESF);  
2983      return (*this);      return (*this);
2984  }  }
2985    
# Line 3009  Data::operator/=(const Data& right) Line 3006  Data::operator/=(const Data& right)
3006      {      {
3007          complicate();          complicate();
3008      }      }
3009      TensorSelfUpdateBinaryOperation(right, escript::ESFunction::DIVIDESF);      TensorSelfUpdateBinaryOperation(right, escript::ES_optype::DIV);
     //binaryDataOp(right, escript::ESFunction::DIVIDESF);  
3010      return (*this);      return (*this);
3011  }  }
3012    
# Line 3075  Data Line 3071  Data
3071  Data::powD(const Data& right) const  Data::powD(const Data& right) const
3072  {  {
3073      MAKELAZYBIN(right,POW);      MAKELAZYBIN(right,POW);
     //BINOPTENSOR(*this, pow_func);  
3074            
3075      return C_TensorBinaryOperation(*this, right, ESFunction::POWF);          return C_TensorBinaryOperation(*this, right, ES_optype::POW);    
3076            
3077  }  }
3078    
# Line 3088  Data Line 3083  Data
3083  escript::operator+(const Data& left, const Data& right)  escript::operator+(const Data& left, const Data& right)
3084  {  {
3085      MAKELAZYBIN2(left,right,ADD);      MAKELAZYBIN2(left,right,ADD);
 //    BINOPTENSOR(left,plus_func)  
3086            
3087            return C_TensorBinaryOperation(left, right, ES_optype::ADD);
     return C_TensorBinaryOperation(left, right, ESFunction::PLUSF);  
3088  }  }
3089    
3090  //  //
# Line 3100  Data Line 3093  Data
3093  escript::operator-(const Data& left, const Data& right)  escript::operator-(const Data& left, const Data& right)
3094  {  {
3095      MAKELAZYBIN2(left,right,SUB);      MAKELAZYBIN2(left,right,SUB);
3096      return C_TensorBinaryOperation(left, right, ESFunction::MINUSF);          return C_TensorBinaryOperation(left, right, ES_optype::SUB);    
3097  }  }
3098    
3099  //  //
# Line 3109  Data Line 3102  Data
3102  escript::operator*(const Data& left, const Data& right)  escript::operator*(const Data& left, const Data& right)
3103  {  {
3104      MAKELAZYBIN2(left,right,MUL);          MAKELAZYBIN2(left,right,MUL);    
 //    BINOPTENSOR(left,multiplies_func);  
3105            
3106      return C_TensorBinaryOperation(left, right, ESFunction::MULTIPLIESF);              return C_TensorBinaryOperation(left, right, ES_optype::MUL);        
3107  }  }
3108    
3109  //  //
# Line 3120  Data Line 3112  Data
3112  escript::operator/(const Data& left, const Data& right)  escript::operator/(const Data& left, const Data& right)
3113  {  {
3114      MAKELAZYBIN2(left,right,DIV);      MAKELAZYBIN2(left,right,DIV);
3115  //    BINOPTENSOR(left,divides_func);      return C_TensorBinaryOperation(left, right, ES_optype::DIV);        
           
     return C_TensorBinaryOperation(left, right, ESFunction::DIVIDESF);          
3116  }  }
3117    
3118  //  //
# Line 5754  void Data::complicate() Line 5744  void Data::complicate()
5744    
5745  Data  Data
5746  escript::C_TensorUnaryOperation(Data const &arg_0,  escript::C_TensorUnaryOperation(Data const &arg_0,
5747                         escript::ESFunction operation,                         escript::ES_optype operation,
5748                         DataTypes::real_t tol)                         DataTypes::real_t tol)
5749  {  {
5750    if (arg_0.isEmpty())  // do this before we attempt to interpolate    if (arg_0.isEmpty())  // do this before we attempt to interpolate
# Line 6030  escript::C_TensorUnaryOperation(Data con Line 6020  escript::C_TensorUnaryOperation(Data con
6020  Data  Data
6021  escript::C_TensorBinaryOperation(Data const &arg_0,  escript::C_TensorBinaryOperation(Data const &arg_0,
6022                          Data const &arg_1,                          Data const &arg_1,
6023                          ESFunction operation)                          escript::ES_optype operation)
6024  {  {
6025    if (arg_0.isEmpty() || arg_1.isEmpty())    if (arg_0.isEmpty() || arg_1.isEmpty())
6026    {    {
# Line 6205  escript::C_TensorBinaryOperation(Data co Line 6195  escript::C_TensorBinaryOperation(Data co
6195    
6196  void  void
6197  Data::TensorSelfUpdateBinaryOperation(const Data& right,  Data::TensorSelfUpdateBinaryOperation(const Data& right,
6198                     escript::ESFunction operation)                     escript::ES_optype operation)
6199  {  {
6200     //     //
6201     // if this has a rank of zero promote it to the rank of the RHS     // if this has a rank of zero promote it to the rank of the RHS
# Line 6301  Data::TensorSelfUpdateBinaryOperation(co Line 6291  Data::TensorSelfUpdateBinaryOperation(co
6291  #if 0  #if 0
6292  void  void
6293  Data::binaryDataOp(const Data& right,  Data::binaryDataOp(const Data& right,
6294                     escript::ESFunction operation)                     escript::ES_optype operation)
6295  {  {
6296     //     //
6297     // if this has a rank of zero promote it to the rank of the RHS     // if this has a rank of zero promote it to the rank of the RHS

Legend:
Removed from v.6167  
changed lines
  Added in v.6168

  ViewVC Help
Powered by ViewVC 1.1.26