Преглед на файлове

added precision functions

Nicolas Winkler преди 5 години
родител
ревизия
4534d34765
променени са 2 файла, в които са добавени 45 реда и са изтрити 0 реда
  1. 5 0
      libmandel/include/Types.h
  2. 40 0
      libmandel/src/Types.cpp

+ 5 - 0
libmandel/include/Types.h

@@ -125,6 +125,11 @@ namespace mnd
 #endif
 
     std::string toString(const Real& num);
+
+
+    template<typename T>
+    constexpr mnd::Real precision(void);
+
 }
 
 

+ 40 - 0
libmandel/src/Types.cpp

@@ -17,5 +17,45 @@ namespace mnd
         return ss.str();
     }
 #endif // WITH_BOOST
+
+
+    template<>
+    constexpr Real precision<float>(void)
+    {
+        return 1.0e-7;
+    }
+
+    template<>
+    constexpr Real precision<double>(void)
+    {
+        return 1.0e-15;
+    }
+
+#ifdef WITH_QD
+    template<>
+    constexpr Real precision<DoubleDouble>(void)
+    {
+        return Real("1.0e-29");
+    }
+
+    template<>
+    constexpr Real precision<QuadDouble>(void)
+    {
+        return Real("1.0e-57");
+    }
+#endif // WITH_QD
+#ifdef WITH_BOOST
+    template<>
+    constexpr Real precision<Float128>(void)
+    {
+        return Real("1.0e-29");
+    }
+
+    template<>
+    constexpr Real precision<Float256>(void)
+    {
+        return Real("1.0e-60");
+    }
+#endif // WITH_BOOST
 }