MCPcopy Create free account
hub / github.com/ChaiScript/ChaiScript / Approx

Class Approx

unittests/catch.hpp:2063–2166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2061namespace Detail {
2062
2063 class Approx {
2064 private:
2065 bool equalityComparisonImpl(double other) const;
2066
2067 public:
2068 explicit Approx ( double value );
2069
2070 static Approx custom();
2071
2072 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2073 Approx operator()( T const& value ) {
2074 Approx approx( static_cast<double>(value) );
2075 approx.epsilon( m_epsilon );
2076 approx.margin( m_margin );
2077 approx.scale( m_scale );
2078 return approx;
2079 }
2080
2081 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2082 explicit Approx( T const& value ): Approx(static_cast<double>(value))
2083 {}
2084
2085 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2086 friend bool operator == ( const T& lhs, Approx const& rhs ) {
2087 auto lhs_v = static_cast<double>(lhs);
2088 return rhs.equalityComparisonImpl(lhs_v);
2089 }
2090
2091 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2092 friend bool operator == ( Approx const& lhs, const T& rhs ) {
2093 return operator==( rhs, lhs );
2094 }
2095
2096 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2097 friend bool operator != ( T const& lhs, Approx const& rhs ) {
2098 return !operator==( lhs, rhs );
2099 }
2100
2101 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2102 friend bool operator != ( Approx const& lhs, T const& rhs ) {
2103 return !operator==( rhs, lhs );
2104 }
2105
2106 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2107 friend bool operator <= ( T const& lhs, Approx const& rhs ) {
2108 return static_cast<double>(lhs) < rhs.m_value || lhs == rhs;
2109 }
2110
2111 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2112 friend bool operator <= ( Approx const& lhs, T const& rhs ) {
2113 return lhs.m_value < static_cast<double>(rhs) || lhs == rhs;
2114 }
2115
2116 template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
2117 friend bool operator >= ( T const& lhs, Approx const& rhs ) {
2118 return static_cast<double>(lhs) > rhs.m_value || lhs == rhs;
2119 }
2120

Callers 2

customMethod · 0.85
compiled_tests.cppFile · 0.85

Calls 1

stringifyFunction · 0.85

Tested by

no test coverage detected