Changeset 1130
- Timestamp:
- Jan 12, 2012, 12:36:29 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lol/math/real.h
r1122 r1130 89 89 friend real ldexp(real const &x, int exp); 90 90 friend real modf(real const &x, real *iptr); 91 friend real ulp(real const &x); 92 friend real nextafter(real const &x, real const &y); 91 93 92 94 /* Power functions */ -
trunk/src/real.cpp
r1128 r1130 939 939 } 940 940 941 real ulp(real const &x) 942 { 943 real ret = real::R_1; 944 if (x) 945 ret.m_signexp = x.m_signexp + 1 - real::BIGITS * real::BIGIT_BITS; 946 else 947 ret.m_signexp = 0; 948 return ret; 949 } 950 951 real nextafter(real const &x, real const &y) 952 { 953 if (x == y) 954 return x; 955 else if (x < y) 956 return x + ulp(x); 957 else 958 return x - ulp(x); 959 } 960 941 961 real copysign(real const &x, real const &y) 942 962 { -
trunk/test/unit/real.cpp
r1122 r1130 241 241 LOLUNIT_ASSERT_EQUAL((double)ldexp(a3, 7), 0.0); 242 242 LOLUNIT_ASSERT_EQUAL((double)ldexp(a3, -7), 0.0); 243 } 244 245 LOLUNIT_TEST(Ulp) 246 { 247 real a1 = real::R_PI; 248 249 LOLUNIT_ASSERT_NOT_EQUAL((double)(a1 + ulp(a1) - a1), 0.0); 250 LOLUNIT_ASSERT_EQUAL((double)(a1 + ulp(a1) / 2 - a1), 0.0); 243 251 } 244 252
Note: See TracChangeset
for help on using the changeset viewer.