quad_utils.hpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /**
  2. * \file quad_utils.hpp
  3. * \author Dhairya Malhotra, dhairya.malhotra@gmail.com
  4. * \date 7-16-2014
  5. * \brief This file contains definition of QuadReal_t.
  6. */
  7. #include <cmath>
  8. #ifndef _QUAD_UTILS_
  9. #define _QUAD_UTILS_
  10. #ifdef PVFMM_QUAD_T
  11. typedef PVFMM_QUAD_T QuadReal_t;
  12. inline std::ostream& operator<<(std::ostream& output, const QuadReal_t& q_);
  13. #ifdef __INTEL_OFFLOAD
  14. #pragma offload_attribute(push,target(mic))
  15. #endif
  16. inline QuadReal_t atoquad(const char* str);
  17. inline QuadReal_t fabs(const QuadReal_t& f);
  18. inline QuadReal_t sqrt(const QuadReal_t& a);
  19. inline QuadReal_t sin(const QuadReal_t& a);
  20. inline QuadReal_t cos(const QuadReal_t& a);
  21. inline QuadReal_t exp(const QuadReal_t& a);
  22. template<>
  23. inline QuadReal_t const_pi<QuadReal_t>(){
  24. static QuadReal_t pi=atoquad("3.1415926535897932384626433832795028841");
  25. return pi;
  26. }
  27. template<>
  28. inline QuadReal_t const_e<QuadReal_t>(){
  29. static QuadReal_t e =atoquad("2.7182818284590452353602874713526624977");
  30. return e;
  31. }
  32. #ifdef __INTEL_OFFLOAD
  33. #pragma offload_attribute(pop)
  34. #endif
  35. #include <quad_utils.txx>
  36. #endif //PVFMM_QUAD_T
  37. #endif //_QUAD_UTILS_HPP_