quad_utils.hpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. #ifndef _QUAD_UTILS_
  8. #define _QUAD_UTILS_
  9. #include <pvfmm_common.hpp>
  10. #include <iostream>
  11. #include <vector>
  12. #ifdef PVFMM_QUAD_T
  13. typedef PVFMM_QUAD_T QuadReal_t;
  14. inline std::ostream& operator<<(std::ostream& output, const QuadReal_t& q_);
  15. #ifdef __INTEL_OFFLOAD
  16. #pragma offload_attribute(push,target(mic))
  17. #endif
  18. inline QuadReal_t atoquad(const char* str);
  19. inline QuadReal_t fabs(const QuadReal_t& f);
  20. inline QuadReal_t sqrt(const QuadReal_t& a);
  21. inline QuadReal_t sin(const QuadReal_t& a);
  22. inline QuadReal_t cos(const QuadReal_t& a);
  23. inline QuadReal_t exp(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_