quad_utils.hpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. #include <ostream>
  9. #ifndef _QUAD_UTILS_
  10. #define _QUAD_UTILS_
  11. #ifdef PVFMM_QUAD_T
  12. typedef PVFMM_QUAD_T QuadReal_t;
  13. inline std::ostream& operator<<(std::ostream& output, const QuadReal_t& q_);
  14. #ifdef __INTEL_OFFLOAD
  15. #pragma offload_attribute(push,target(mic))
  16. #endif
  17. inline QuadReal_t atoquad(const char* str);
  18. inline QuadReal_t fabs(const QuadReal_t& f);
  19. inline QuadReal_t sqrt(const QuadReal_t& a);
  20. inline QuadReal_t sin(const QuadReal_t& a);
  21. inline QuadReal_t cos(const QuadReal_t& a);
  22. inline QuadReal_t exp(const QuadReal_t& a);
  23. inline QuadReal_t log(const QuadReal_t& a);
  24. template<>
  25. inline QuadReal_t const_pi<QuadReal_t>(){
  26. static QuadReal_t pi=atoquad("3.1415926535897932384626433832795028841");
  27. return pi;
  28. }
  29. template<>
  30. inline QuadReal_t const_e<QuadReal_t>(){
  31. static QuadReal_t e =atoquad("2.7182818284590452353602874713526624977");
  32. return e;
  33. }
  34. #ifdef __INTEL_OFFLOAD
  35. #pragma offload_attribute(pop)
  36. #endif
  37. #include <quad_utils.txx>
  38. #endif //PVFMM_QUAD_T
  39. #endif //_QUAD_UTILS_HPP_