| Index: src/conversions.h
|
| diff --git a/src/conversions.h b/src/conversions.h
|
| index 70559c9e9d7979f449110793bbdde122cd1d99a5..d62a172757daa09880b7e19f753b52e5ac3ed305 100644
|
| --- a/src/conversions.h
|
| +++ b/src/conversions.h
|
| @@ -59,14 +59,23 @@ inline double SignedZero(bool negative) {
|
|
|
| // The fast double-to-(unsigned-)int conversion routine does not guarantee
|
| // rounding towards zero.
|
| +// For NaN and values outside the int range, return INT_MIN or INT_MAX.
|
| +inline int FastD2IChecked(double x) {
|
| + if (!(x >= INT_MIN)) return INT_MIN; // Negation to catch NaNs.
|
| + if (x > INT_MAX) return INT_MAX;
|
| + return static_cast<int>(x);
|
| +}
|
| +
|
| +
|
| +// The fast double-to-(unsigned-)int conversion routine does not guarantee
|
| +// rounding towards zero.
|
| // The result is unspecified if x is infinite or NaN, or if the rounded
|
| // integer value is outside the range of type int.
|
| inline int FastD2I(double x) {
|
| - // The static_cast convertion from double to int used to be slow, but
|
| - // as new benchmarks show, now it is much faster than lrint().
|
| return static_cast<int>(x);
|
| }
|
|
|
| +
|
| inline unsigned int FastD2UI(double x);
|
|
|
|
|
|
|