//============================================================================ // Copyright (c) Kitware, Inc. // All rights reserved. // See LICENSE.txt for details. // // This software is distributed WITHOUT ANY WARRANTY; without even // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ ////////////////////////// **** DO NOT EDIT THIS FILE!!! **** // This file is automatically generated by VecOperators.h.in // clang-format off #ifndef vtk_m_internal_VecOperators_h #define vtk_m_internal_VecOperators_h #include namespace vtkm { #if (!(defined(VTKM_CUDA) && (__CUDACC_VER_MAJOR__ < 8))) #if (defined(VTKM_GCC) || defined(VTKM_CLANG)) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunknown-pragmas" #pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Wconversion" #pragma GCC diagnostic ignored "-Wfloat-conversion" #endif // gcc || clang #endif // not using cuda < 8 #if defined(VTKM_MSVC) #pragma warning(push) #pragma warning(disable : 4244) #endif // operator- unary overloads for generic and specific sizes {{{ template inline VTKM_EXEC_CONT typename std::enable_if<(std::is_floating_point::value || std::is_signed::value), vtkm::Vec>::type operator-(vtkm::Vec x) { for(int i=0; i < Size; ++i) { x[i] = -x[i]; } return x; } template inline VTKM_EXEC_CONT typename std::enable_if<(std::is_floating_point::value || std::is_signed::value), vtkm::Vec>::type operator-(const vtkm::Vec& x) { return vtkm::Vec(-x[0]); } template inline VTKM_EXEC_CONT typename std::enable_if<(std::is_floating_point::value || std::is_signed::value), vtkm::Vec>::type operator-(const vtkm::Vec& x) { return vtkm::Vec(-x[0], -x[1]); } template inline VTKM_EXEC_CONT typename std::enable_if<(std::is_floating_point::value || std::is_signed::value), vtkm::Vec>::type operator-(const vtkm::Vec& x) { return vtkm::Vec(-x[0], -x[1], -x[2]); } template inline VTKM_EXEC_CONT typename std::enable_if<(std::is_floating_point::value || std::is_signed::value), vtkm::Vec>::type operator-(const vtkm::Vec& x) { return vtkm::Vec(-x[0], -x[1], -x[2], -x[3]); } //}}} // operator+ overloads for generic vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Vec a, const vtkm::Vec& b ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] + b[i]; } return a; } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Vec a, T scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] + scalar; } return a; } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] + scalar; } return a; } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] + scalar; } return a; } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( T scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar + a[i]; } return a; } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar + a[i]; } return a; } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar + a[i]; } return a; } //}}} // operator* overloads for generic vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Vec a, const vtkm::Vec& b ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] * b[i]; } return a; } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Vec a, T scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] * scalar; } return a; } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] * scalar; } return a; } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] * scalar; } return a; } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( T scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar * a[i]; } return a; } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar * a[i]; } return a; } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar * a[i]; } return a; } //}}} // operator- overloads for generic vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Vec a, const vtkm::Vec& b ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] - b[i]; } return a; } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Vec a, T scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] - scalar; } return a; } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] - scalar; } return a; } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] - scalar; } return a; } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( T scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar - a[i]; } return a; } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar - a[i]; } return a; } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar - a[i]; } return a; } //}}} // operator/ overloads for generic vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Vec a, const vtkm::Vec& b ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] / b[i]; } return a; } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Vec a, T scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] / scalar; } return a; } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] / scalar; } return a; } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Vec a, vtkm::Float64 scalar ) { for (int i = 0; i < Size; ++i) { a[i] = a[i] / scalar; } return a; } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( T scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar / a[i]; } return a; } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar / a[i]; } return a; } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, vtkm::Vec a ) { for (int i = 0; i < Size; ++i) { a[i] = scalar / a[i]; } return a; } //}}} // operator+ overloads for specific vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] + b[0]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] + scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] + b[0], a[1] + b[1]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] + b[0], a[1] + b[1], a[2] + b[2]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar, a[2] + scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar, a[2] + scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar, a[2] + scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1], scalar + a[2]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1], scalar + a[2]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1], scalar + a[2]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar, a[2] + scalar, a[3] + scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar, a[2] + scalar, a[3] + scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] + scalar, a[1] + scalar, a[2] + scalar, a[3] + scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1], scalar + a[2], scalar + a[3]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1], scalar + a[2], scalar + a[3]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator+( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar + a[0], scalar + a[1], scalar + a[2], scalar + a[3]); } //}}} // operator* overloads for specific vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] * b[0]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] * scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] * b[0], a[1] * b[1]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] * b[0], a[1] * b[1], a[2] * b[2]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar, a[2] * scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar, a[2] * scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar, a[2] * scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1], scalar * a[2]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1], scalar * a[2]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1], scalar * a[2]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar, a[2] * scalar, a[3] * scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar, a[2] * scalar, a[3] * scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] * scalar, a[1] * scalar, a[2] * scalar, a[3] * scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1], scalar * a[2], scalar * a[3]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1], scalar * a[2], scalar * a[3]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator*( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar * a[0], scalar * a[1], scalar * a[2], scalar * a[3]); } //}}} // operator- overloads for specific vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] - b[0]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] - scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] - b[0], a[1] - b[1]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] - b[0], a[1] - b[1], a[2] - b[2]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar, a[2] - scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar, a[2] - scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar, a[2] - scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1], scalar - a[2]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1], scalar - a[2]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1], scalar - a[2]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar, a[2] - scalar, a[3] - scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar, a[2] - scalar, a[3] - scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] - scalar, a[1] - scalar, a[2] - scalar, a[3] - scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1], scalar - a[2], scalar - a[3]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1], scalar - a[2], scalar - a[3]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator-( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar - a[0], scalar - a[1], scalar - a[2], scalar - a[3]); } //}}} // operator/ overloads for specific vector sizes -------------------{{{ // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] / b[0]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] / scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] / b[0], a[1] / b[1]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] / b[0], a[1] / b[1], a[2] / b[2]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar, a[2] / scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar, a[2] / scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar, a[2] / scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1], scalar / a[2]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1], scalar / a[2]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1], scalar / a[2]); } // Vec_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, const vtkm::Vec& b ) { return vtkm::Vec(a[0] / b[0], a[1] / b[1], a[2] / b[2], a[3] / b[3]); } // Vec_Scalar for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, T scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar, a[2] / scalar, a[3] / scalar); } // Vec_Scalar for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar, a[2] / scalar, a[3] / scalar); } // Vec_Scalar for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( const vtkm::Vec& a, vtkm::Float64 scalar ) { return vtkm::Vec(a[0] / scalar, a[1] / scalar, a[2] / scalar, a[3] / scalar); } // Scalar_Vec for ['T', 'T'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( T scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1], scalar / a[2], scalar / a[3]); } // Scalar_Vec for ['T', 'vtkm::Float64'] template inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1], scalar / a[2], scalar / a[3]); } // Scalar_Vec for ['vtkm::Float64', 'vtkm::Float64'] inline VTKM_EXEC_CONT vtkm::Vec operator/( vtkm::Float64 scalar, const vtkm::Vec& a ) { return vtkm::Vec(scalar / a[0], scalar / a[1], scalar / a[2], scalar / a[3]); } //}}} #if defined(VTKM_MSVC) #pragma warning(pop) #endif #if (defined(VTKM_CUDA) && (__CUDACC_VER_MAJOR__ < 8)) #if (defined(VTKM_GCC) || defined(VTKM_CLANG)) #pragma GCC diagnostic pop #endif // gcc || clang #endif // use cuda < 8 } // clang-format on #endif //vtk_m_internal_VecOperators_h