math.hpp modified to remove ambiguis calls in cuda build
This commit is contained in:
parent
d2cd132b62
commit
66fc880fcd
|
@ -11,7 +11,7 @@
|
||||||
#include "TypeTools.hpp"
|
#include "TypeTools.hpp"
|
||||||
|
|
||||||
// [CLI11:public_includes:set]
|
// [CLI11:public_includes:set]
|
||||||
#include <cmath>
|
#include "math.hpp"
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
@ -21,16 +21,16 @@ Licence:
|
||||||
#ifndef __math_hpp__
|
#ifndef __math_hpp__
|
||||||
#define __math_hpp__
|
#define __math_hpp__
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
#include "pFlowMacros.hpp"
|
|
||||||
#include "builtinTypes.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __CUDACC__
|
#ifdef __CUDACC__
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
#else
|
||||||
|
#include <cmath>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "pFlowMacros.hpp"
|
||||||
|
#include "builtinTypes.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//* * * * * * * * * * * List of functinos * * * * * * * * //
|
//* * * * * * * * * * * List of functinos * * * * * * * * //
|
||||||
|
@ -44,7 +44,8 @@ namespace pFlow
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real abs(real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real abs(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
#ifdef __CUDACC__
|
||||||
return ::fabs(x);
|
return ::fabs(x);
|
||||||
|
@ -53,24 +54,20 @@ INLINE_FUNCTION_HD real abs(real x)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD int64 abs(int64 x)
|
INLINE_FUNCTION_HD
|
||||||
{
|
int64 abs(int64 x)
|
||||||
#ifdef __CUDACC__
|
{
|
||||||
return ::abs(x);
|
return std::abs(x);
|
||||||
#else
|
}
|
||||||
return std::abs(x);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD int32 abs(int32 x)
|
INLINE_FUNCTION_HD int32 abs(int32 x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::abs(x);
|
|
||||||
#else
|
|
||||||
return std::abs(x);
|
return std::abs(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real mod(real x, real y)
|
INLINE_FUNCTION_HD real mod(real x, real y)
|
||||||
|
@ -102,163 +99,132 @@ INLINE_FUNCTION_HD auto mod(uint32 x, uint32 y)
|
||||||
return x%y;
|
return x%y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real remainder(real x, real y)
|
INLINE_FUNCTION_HD real remainder(real x, real y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::remainder(x,y);
|
|
||||||
#else
|
|
||||||
return std::remainder(x,y);
|
return std::remainder(x,y);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real exp(real x)
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_H
|
||||||
|
real exp(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::exp(x);
|
|
||||||
#else
|
|
||||||
return std::exp(x);
|
return std::exp(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real log(real x)
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
real log(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::log(x);
|
|
||||||
#else
|
|
||||||
return std::log(x);
|
return std::log(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real log10(real x)
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
real log10(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::log10(x);
|
|
||||||
#else
|
|
||||||
return std::log10(x);
|
return std::log10(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real pow(real x, real y)
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
real pow(real x, real y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::pow(x, y);
|
|
||||||
#else
|
|
||||||
return std::pow(x, y);
|
return std::pow(x, y);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
real sqrt(real x)
|
||||||
INLINE_FUNCTION_HD real sqrt(real x)
|
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::sqrt(x);
|
|
||||||
#else
|
|
||||||
return std::sqrt(x);
|
return std::sqrt(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real cbrt (real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real cbrt (real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::cbrt (x);
|
|
||||||
#else
|
|
||||||
return std::cbrt (x);
|
return std::cbrt (x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real sin(real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real sin(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::sin(x);
|
|
||||||
#else
|
|
||||||
return std::sin(x);
|
return std::sin(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real cos(real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real cos(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::cos(x);
|
|
||||||
#else
|
|
||||||
return std::cos(x);
|
return std::cos(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real tan(real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real tan(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::tan(x);
|
|
||||||
#else
|
|
||||||
return std::tan(x);
|
return std::tan(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real asin(real x)
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
real asin(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::asin(x);
|
|
||||||
#else
|
|
||||||
return std::asin(x);
|
return std::asin(x);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
real acos(real x)
|
||||||
INLINE_FUNCTION_HD real acos(real x)
|
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::acos(x);
|
|
||||||
#else
|
|
||||||
return std::acos(x);
|
return std::acos(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real atan(real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real atan(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::atan(x);
|
|
||||||
#else
|
|
||||||
return std::atan(x);
|
return std::atan(x);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD real
|
||||||
|
atan2(real y, real x)
|
||||||
INLINE_FUNCTION_HD real atan2(real y, real x)
|
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::atan2(y, x);
|
|
||||||
#else
|
|
||||||
return std::atan2(y, x);
|
return std::atan2(y, x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real sinh(real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real sinh(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::sinh(x);
|
|
||||||
#else
|
|
||||||
return std::sinh(x);
|
return std::sinh(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD real cosh(real x)
|
INLINE_FUNCTION_HD
|
||||||
|
real cosh(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::cosh(x);
|
|
||||||
#else
|
|
||||||
return std::cosh(x);
|
return std::cosh(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real tanh(real x)
|
INLINE_FUNCTION_HD real tanh(real x)
|
||||||
{
|
{
|
||||||
|
@ -287,14 +253,14 @@ INLINE_FUNCTION_HD real acosh(real x)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real atanh(real x)
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
real atanh(real x)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::atanh(x);
|
|
||||||
#else
|
|
||||||
return std::atanh(x);
|
return std::atanh(x);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real min(real x, real y)
|
INLINE_FUNCTION_HD real min(real x, real y)
|
||||||
{
|
{
|
||||||
|
@ -305,43 +271,36 @@ INLINE_FUNCTION_HD real min(real x, real y)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE_FUNCTION_HD int64 min(int32 x, int32 y)
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
int64 min(int32 x, int32 y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::min(x, y);
|
|
||||||
#else
|
|
||||||
return std::min(x, y);
|
return std::min(x, y);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE_FUNCTION_HD int64 min(int64 x, int64 y)
|
|
||||||
{
|
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::min(x, y);
|
|
||||||
#else
|
|
||||||
return std::min(x, y);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
INLINE_FUNCTION_HD uint64 min(uint64 x, uint64 y)
|
|
||||||
{
|
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::min(x, y);
|
|
||||||
#else
|
|
||||||
return std::min(x, y);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
int64 min(int64 x, int64 y)
|
||||||
|
{
|
||||||
|
return std::min(x, y);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
uint64 min(uint64 x, uint64 y)
|
||||||
|
{
|
||||||
|
return std::min(x, y);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD uint32 min(uint32 x, uint32 y)
|
INLINE_FUNCTION_HD uint32 min(uint32 x, uint32 y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::min(x, y);
|
|
||||||
#else
|
|
||||||
return std::min(x, y);
|
return std::min(x, y);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
INLINE_FUNCTION_HD real max(real x, real y)
|
INLINE_FUNCTION_HD real max(real x, real y)
|
||||||
|
@ -353,42 +312,34 @@ INLINE_FUNCTION_HD real max(real x, real y)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD int64 max(int64 x, int64 y)
|
INLINE_FUNCTION_HD int64 max(int64 x, int64 y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::max(x, y);
|
|
||||||
#else
|
|
||||||
return std::max(x, y);
|
return std::max(x, y);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD int32 max(int32 x, int32 y)
|
INLINE_FUNCTION_HD int32 max(int32 x, int32 y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::max(x, y);
|
|
||||||
#else
|
|
||||||
return std::max(x, y);
|
return std::max(x, y);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD uint64 max(uint64 x, uint64 y)
|
INLINE_FUNCTION_HD uint64 max(uint64 x, uint64 y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::max(x, y);
|
|
||||||
#else
|
|
||||||
return std::max(x, y);
|
return std::max(x, y);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CUDACC__
|
||||||
INLINE_FUNCTION_HD uint32 max(uint32 x, uint32 y)
|
INLINE_FUNCTION_HD uint32 max(uint32 x, uint32 y)
|
||||||
{
|
{
|
||||||
#ifdef __CUDACC__
|
|
||||||
return ::max(x, y);
|
|
||||||
#else
|
|
||||||
return std::max(x, y);
|
return std::max(x, y);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
} // pFlow
|
} // pFlow
|
||||||
|
|
|
@ -18,18 +18,22 @@ Licence:
|
||||||
|
|
||||||
-----------------------------------------------------------------------------*/
|
-----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
namespace pFlow
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
#define T3Func(fnName) \
|
#define T3Func(fnName) \
|
||||||
template<typename T> \
|
template<typename T> \
|
||||||
INLINE_FUNCTION_HD pFlow::triple<T> pFlow::fnName(const pFlow::triple<T>& v) \
|
INLINE_FUNCTION_HD triple<T> fnName(const triple<T>& v) \
|
||||||
{ \
|
{ \
|
||||||
return pFlow::triple<T>(fnName(v.x_), fnName(v.y_), fnName(v.z_)); \
|
return triple<T>(fnName(v.x_), fnName(v.y_), fnName(v.z_)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define T3Func2(fnName) \
|
#define T3Func2(fnName) \
|
||||||
template<typename T> \
|
template<typename T> \
|
||||||
INLINE_FUNCTION_HD pFlow::triple<T> pFlow::fnName(const pFlow::triple<T>& arg1, const pFlow::triple<T>& arg2) \
|
INLINE_FUNCTION_HD triple<T> fnName(const triple<T>& arg1, const triple<T>& arg2) \
|
||||||
{ \
|
{ \
|
||||||
return pFlow::triple<T>(fnName(arg1.x_, arg2.x_), fnName(arg1.y_,arg2.y_), fnName(arg1.z_, arg2.z_)); \
|
return triple<T>(fnName(arg1.x_, arg2.x_), fnName(arg1.y_,arg2.y_), fnName(arg1.z_, arg2.z_)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
//* * * * * * * * * * * List of functinos * * * * * * * * //
|
//* * * * * * * * * * * List of functinos * * * * * * * * //
|
||||||
|
@ -68,21 +72,21 @@ T3Func2(max);
|
||||||
|
|
||||||
// elements of t3 raised by e
|
// elements of t3 raised by e
|
||||||
template<typename T>
|
template<typename T>
|
||||||
INLINE_FUNCTION_HD pFlow::triple<T> pFlow::pow(const pFlow::triple<T>& t3, T e)
|
INLINE_FUNCTION_HD triple<T> pow(const triple<T>& t3, T e)
|
||||||
{
|
{
|
||||||
return pFlow::triple<T>( pow(t3.x_, e), pow(t3.y_,e), pow(t3.z_,e));
|
return triple<T>( pow(t3.x_, e), pow(t3.y_,e), pow(t3.z_,e));
|
||||||
}
|
}
|
||||||
|
|
||||||
// return the min of 3 elements x, y, z
|
// return the min of 3 elements x, y, z
|
||||||
template<typename T>
|
template<typename T>
|
||||||
INLINE_FUNCTION_HD T pFlow::min(const pFlow::triple<T>& t3)
|
INLINE_FUNCTION_HD T min(const triple<T>& t3)
|
||||||
{
|
{
|
||||||
return min( min(t3.x_, t3.y_), t3.z_);
|
return min( min(t3.x_, t3.y_), t3.z_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return the max of 3 elements x, y, z
|
// return the max of 3 elements x, y, z
|
||||||
template<typename T>
|
template<typename T>
|
||||||
INLINE_FUNCTION_HD T pFlow::max(const pFlow::triple<T>& t3)
|
INLINE_FUNCTION_HD T max(const triple<T>& t3)
|
||||||
{
|
{
|
||||||
return max( max(t3.x_, t3.y_), t3.z_);
|
return max( max(t3.x_, t3.y_), t3.z_);
|
||||||
}
|
}
|
||||||
|
@ -91,3 +95,5 @@ INLINE_FUNCTION_HD T pFlow::max(const pFlow::triple<T>& t3)
|
||||||
|
|
||||||
#undef T3Func
|
#undef T3Func
|
||||||
#undef T3Func2
|
#undef T3Func2
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -50,6 +50,8 @@ using realx3x3 = triple<realx3>;
|
||||||
|
|
||||||
using realx4 = quadruple<real>;
|
using realx4 = quadruple<real>;
|
||||||
|
|
||||||
|
using realx4x3 = quadruple<realx3>;
|
||||||
|
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
inline word basicTypeName<int8x3>(){ return "int8x3"; }
|
inline word basicTypeName<int8x3>(){ return "int8x3"; }
|
||||||
|
@ -85,6 +87,8 @@ inline word basicTypeName<realx3x3>(){ return "realx3x3"; }
|
||||||
template<>
|
template<>
|
||||||
inline word basicTypeName<realx4>(){ return "realx4"; }
|
inline word basicTypeName<realx4>(){ return "realx4"; }
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline word basicTypeName<realx4x3>(){ return "realx4x3"; }
|
||||||
|
|
||||||
extern const realx3 zero3;
|
extern const realx3 zero3;
|
||||||
extern const realx3 one3;
|
extern const realx3 one3;
|
||||||
|
|
Loading…
Reference in New Issue