quad_utils.hpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. #if defined __INTEL_COMPILER
  13. #define QuadReal_t _Quad
  14. #elif defined __GNUC__
  15. #define QuadReal_t __float128
  16. #endif
  17. #ifdef QuadReal_t
  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. inline std::ostream& operator<<(std::ostream& output, const QuadReal_t& q_);
  25. template<>
  26. inline QuadReal_t const_pi<QuadReal_t>(){
  27. static QuadReal_t pi=atoquad("3.1415926535897932384626433832795028841");
  28. return pi;
  29. }
  30. template<>
  31. inline QuadReal_t const_e<QuadReal_t>(){
  32. static QuadReal_t e=atoquad("2.71828182845904523536028747135266249775724709369995");
  33. return e;
  34. }
  35. #include <quad_utils.txx>
  36. #endif //QuadReal_t
  37. #endif //_QUAD_UTILS_HPP_