| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/3rdparty/masm/wtf/MathExtras.h |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | const double piDouble = | - | ||||||||||||
| 4 | 3.14159265358979323846 | - | ||||||||||||
| 5 | ; | - | ||||||||||||
| 6 | const float piFloat = static_cast<float>( | - | ||||||||||||
| 7 | 3.14159265358979323846 | - | ||||||||||||
| 8 | ); | - | ||||||||||||
| 9 | - | |||||||||||||
| 10 | - | |||||||||||||
| 11 | - | |||||||||||||
| 12 | - | |||||||||||||
| 13 | - | |||||||||||||
| 14 | - | |||||||||||||
| 15 | const double piOverTwoDouble = | - | ||||||||||||
| 16 | 1.57079632679489661923 | - | ||||||||||||
| 17 | ; | - | ||||||||||||
| 18 | const float piOverTwoFloat = static_cast<float>( | - | ||||||||||||
| 19 | 1.57079632679489661923 | - | ||||||||||||
| 20 | ); | - | ||||||||||||
| 21 | - | |||||||||||||
| 22 | - | |||||||||||||
| 23 | - | |||||||||||||
| 24 | - | |||||||||||||
| 25 | - | |||||||||||||
| 26 | - | |||||||||||||
| 27 | const double piOverFourDouble = | - | ||||||||||||
| 28 | 0.78539816339744830962 | - | ||||||||||||
| 29 | ; | - | ||||||||||||
| 30 | const float piOverFourFloat = static_cast<float>( | - | ||||||||||||
| 31 | 0.78539816339744830962 | - | ||||||||||||
| 32 | ); | - | ||||||||||||
| 33 | inline double deg2rad(double d) { return never executed: d * piDouble / 180.0;return d * piDouble / 180.0;never executed: }return d * piDouble / 180.0; | 0 | ||||||||||||
| 34 | inline double rad2deg(double r) { return never executed: r * 180.0 / piDouble;return r * 180.0 / piDouble;never executed: }return r * 180.0 / piDouble; | 0 | ||||||||||||
| 35 | inline double deg2grad(double d) { return never executed: d * 400.0 / 360.0;return d * 400.0 / 360.0;never executed: }return d * 400.0 / 360.0; | 0 | ||||||||||||
| 36 | inline double grad2deg(double g) { return never executed: g * 360.0 / 400.0;return g * 360.0 / 400.0;never executed: }return g * 360.0 / 400.0; | 0 | ||||||||||||
| 37 | inline double turn2deg(double t) { return never executed: t * 360.0;return t * 360.0;never executed: }return t * 360.0; | 0 | ||||||||||||
| 38 | inline double deg2turn(double d) { return never executed: d / 360.0;return d / 360.0;never executed: }return d / 360.0; | 0 | ||||||||||||
| 39 | inline double rad2grad(double r) { return never executed: r * 200.0 / piDouble;return r * 200.0 / piDouble;never executed: }return r * 200.0 / piDouble; | 0 | ||||||||||||
| 40 | inline double grad2rad(double g) { return never executed: g * piDouble / 200.0;return g * piDouble / 200.0;never executed: }return g * piDouble / 200.0; | 0 | ||||||||||||
| 41 | - | |||||||||||||
| 42 | inline float deg2rad(float d) { return never executed: d * piFloat / 180.0f;return d * piFloat / 180.0f;never executed: }return d * piFloat / 180.0f; | 0 | ||||||||||||
| 43 | inline float rad2deg(float r) { return never executed: r * 180.0f / piFloat;return r * 180.0f / piFloat;never executed: }return r * 180.0f / piFloat; | 0 | ||||||||||||
| 44 | inline float deg2grad(float d) { return never executed: d * 400.0f / 360.0f;return d * 400.0f / 360.0f;never executed: }return d * 400.0f / 360.0f; | 0 | ||||||||||||
| 45 | inline float grad2deg(float g) { return never executed: g * 360.0f / 400.0f;return g * 360.0f / 400.0f;never executed: }return g * 360.0f / 400.0f; | 0 | ||||||||||||
| 46 | inline float turn2deg(float t) { return never executed: t * 360.0f;return t * 360.0f;never executed: }return t * 360.0f; | 0 | ||||||||||||
| 47 | inline float deg2turn(float d) { return never executed: d / 360.0f;return d / 360.0f;never executed: }return d / 360.0f; | 0 | ||||||||||||
| 48 | inline float rad2grad(float r) { return never executed: r * 200.0f / piFloat;return r * 200.0f / piFloat;never executed: }return r * 200.0f / piFloat; | 0 | ||||||||||||
| 49 | inline float grad2rad(float g) { return never executed: g * piFloat / 200.0f;return g * piFloat / 200.0f;never executed: }return g * piFloat / 200.0f; | 0 | ||||||||||||
| 50 | - | |||||||||||||
| 51 | - | |||||||||||||
| 52 | template<typename T> inline T defaultMinimumForClamp() { return never executed: std::numeric_limits<T>::min();return std::numeric_limits<T>::min();never executed: }return std::numeric_limits<T>::min(); | 0 | ||||||||||||
| 53 | template<> inline float defaultMinimumForClamp() { return never executed: -std::numeric_limits<float>::max();return -std::numeric_limits<float>::max();never executed: }return -std::numeric_limits<float>::max(); | 0 | ||||||||||||
| 54 | template<> inline double defaultMinimumForClamp() { return never executed: -std::numeric_limits<double>::max();return -std::numeric_limits<double>::max();never executed: }return -std::numeric_limits<double>::max(); | 0 | ||||||||||||
| 55 | template<typename T> inline T defaultMaximumForClamp() { return never executed: std::numeric_limits<T>::max();return std::numeric_limits<T>::max();never executed: }return std::numeric_limits<T>::max(); | 0 | ||||||||||||
| 56 | - | |||||||||||||
| 57 | template<typename T> inline T clampTo(double value, T min = defaultMinimumForClamp<T>(), T max = defaultMaximumForClamp<T>()) | - | ||||||||||||
| 58 | { | - | ||||||||||||
| 59 | if (value >= static_cast<double>(max)
| 0 | ||||||||||||
| 60 | return never executed: max;return max;never executed: return max; | 0 | ||||||||||||
| 61 | if (value <= static_cast<double>(min)
| 0 | ||||||||||||
| 62 | return never executed: min;return min;never executed: return min; | 0 | ||||||||||||
| 63 | return never executed: static_cast<T>(value);return static_cast<T>(value);never executed: return static_cast<T>(value); | 0 | ||||||||||||
| 64 | } | - | ||||||||||||
| 65 | template<> long long int clampTo(double, long long int, long long int); | - | ||||||||||||
| 66 | - | |||||||||||||
| 67 | inline int clampToInteger(double value) | - | ||||||||||||
| 68 | { | - | ||||||||||||
| 69 | return never executed: clampTo<int>(value);return clampTo<int>(value);never executed: return clampTo<int>(value); | 0 | ||||||||||||
| 70 | } | - | ||||||||||||
| 71 | - | |||||||||||||
| 72 | inline float clampToFloat(double value) | - | ||||||||||||
| 73 | { | - | ||||||||||||
| 74 | return never executed: clampTo<float>(value);return clampTo<float>(value);never executed: return clampTo<float>(value); | 0 | ||||||||||||
| 75 | } | - | ||||||||||||
| 76 | - | |||||||||||||
| 77 | inline int clampToPositiveInteger(double value) | - | ||||||||||||
| 78 | { | - | ||||||||||||
| 79 | return never executed: clampTo<int>(value, 0);return clampTo<int>(value, 0);never executed: return clampTo<int>(value, 0); | 0 | ||||||||||||
| 80 | } | - | ||||||||||||
| 81 | - | |||||||||||||
| 82 | inline int clampToInteger(float value) | - | ||||||||||||
| 83 | { | - | ||||||||||||
| 84 | return never executed: clampTo<int>(value);return clampTo<int>(value);never executed: return clampTo<int>(value); | 0 | ||||||||||||
| 85 | } | - | ||||||||||||
| 86 | - | |||||||||||||
| 87 | inline int clampToInteger(unsigned x) | - | ||||||||||||
| 88 | { | - | ||||||||||||
| 89 | const unsigned intMax = static_cast<unsigned>(std::numeric_limits<int>::max()); | - | ||||||||||||
| 90 | - | |||||||||||||
| 91 | if (x >= intMax
| 0 | ||||||||||||
| 92 | return never executed: std::numeric_limits<int>::max();return std::numeric_limits<int>::max();never executed: return std::numeric_limits<int>::max(); | 0 | ||||||||||||
| 93 | return never executed: static_cast<int>(x);return static_cast<int>(x);never executed: return static_cast<int>(x); | 0 | ||||||||||||
| 94 | } | - | ||||||||||||
| 95 | - | |||||||||||||
| 96 | inline bool isWithinIntRange(float x) | - | ||||||||||||
| 97 | { | - | ||||||||||||
| 98 | return never executed: x > static_cast<float>(std::numeric_limits<int>::min()) && x < static_cast<float>(std::numeric_limits<int>::max());return x > static_cast<float>(std::numeric_limits<int>::min()) && x < static_cast<float>(std::numeric_limits<int>::max());never executed: return x > static_cast<float>(std::numeric_limits<int>::min()) && x < static_cast<float>(std::numeric_limits<int>::max()); | 0 | ||||||||||||
| 99 | } | - | ||||||||||||
| 100 | - | |||||||||||||
| 101 | template<typename T> inline bool hasOneBitSet(T value) | - | ||||||||||||
| 102 | { | - | ||||||||||||
| 103 | return never executed: !((value - 1) & value) && value;return !((value - 1) & value) && value;never executed: return !((value - 1) & value) && value; | 0 | ||||||||||||
| 104 | } | - | ||||||||||||
| 105 | - | |||||||||||||
| 106 | template<typename T> inline bool hasZeroOrOneBitsSet(T value) | - | ||||||||||||
| 107 | { | - | ||||||||||||
| 108 | return never executed: !((value - 1) & value);return !((value - 1) & value);never executed: return !((value - 1) & value); | 0 | ||||||||||||
| 109 | } | - | ||||||||||||
| 110 | - | |||||||||||||
| 111 | template<typename T> inline bool hasTwoOrMoreBitsSet(T value) | - | ||||||||||||
| 112 | { | - | ||||||||||||
| 113 | return never executed: !hasZeroOrOneBitsSet(value);return !hasZeroOrOneBitsSet(value);never executed: return !hasZeroOrOneBitsSet(value); | 0 | ||||||||||||
| 114 | } | - | ||||||||||||
| 115 | - | |||||||||||||
| 116 | template <typename T> inline unsigned getLSBSet(T value) | - | ||||||||||||
| 117 | { | - | ||||||||||||
| 118 | unsigned result = 0; | - | ||||||||||||
| 119 | - | |||||||||||||
| 120 | while (value >>= 1
| 0 | ||||||||||||
| 121 | ++ never executed: result;++result;never executed: ++result; | 0 | ||||||||||||
| 122 | - | |||||||||||||
| 123 | return never executed: result;return result;never executed: return result; | 0 | ||||||||||||
| 124 | } | - | ||||||||||||
| 125 | - | |||||||||||||
| 126 | template<typename T> inline T timesThreePlusOneDividedByTwo(T value) | - | ||||||||||||
| 127 | { | - | ||||||||||||
| 128 | - | |||||||||||||
| 129 | - | |||||||||||||
| 130 | - | |||||||||||||
| 131 | - | |||||||||||||
| 132 | - | |||||||||||||
| 133 | return never executed: value + (value >> 1) + (value & 1);return value + (value >> 1) + (value & 1);never executed: return value + (value >> 1) + (value & 1); | 0 | ||||||||||||
| 134 | } | - | ||||||||||||
| 135 | inline void decomposeDouble(double number, bool& sign, int32_t& exponent, uint64_t& mantissa) | - | ||||||||||||
| 136 | { | - | ||||||||||||
| 137 | (!(std::isfinite(number)) ? (qmlWTFReportAssertionFailure(__FILE__, 379, __PRETTY_FUNCTION__, "std::isfinite(number)"), (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap())) : (void)0); | - | ||||||||||||
| 138 | - | |||||||||||||
| 139 | sign = std::signbit(number); | - | ||||||||||||
| 140 | - | |||||||||||||
| 141 | uint64_t bits = WTF::bitwise_cast<uint64_t>(number); | - | ||||||||||||
| 142 | exponent = (static_cast<int32_t>(bits >> 52) & 0x7ff) - 0x3ff; | - | ||||||||||||
| 143 | mantissa = bits & 0xFFFFFFFFFFFFFull; | - | ||||||||||||
| 144 | - | |||||||||||||
| 145 | - | |||||||||||||
| 146 | - | |||||||||||||
| 147 | if (exponent == -0x3ff
| 0 | ||||||||||||
| 148 | exponent = mantissa
never executed: exponent = mantissa ? -0x3fe : 0; | 0 | ||||||||||||
| 149 | else | - | ||||||||||||
| 150 | mantissa |= 0x10000000000000ull; never executed: mantissa |= 0x10000000000000ull; | 0 | ||||||||||||
| 151 | } | - | ||||||||||||
| 152 | - | |||||||||||||
| 153 | - | |||||||||||||
| 154 | inline void doubleToInteger(double d, unsigned long long& value) | - | ||||||||||||
| 155 | { | - | ||||||||||||
| 156 | if (std::isnan(d)
| 0 | ||||||||||||
| 157 | value = 0; never executed: value = 0; | 0 | ||||||||||||
| 158 | else { | - | ||||||||||||
| 159 | - | |||||||||||||
| 160 | double fmodValue = fmod(trunc(d), std::numeric_limits<unsigned long long>::max() + 1.0); | - | ||||||||||||
| 161 | if (fmodValue >= 0
| 0 | ||||||||||||
| 162 | - | |||||||||||||
| 163 | - | |||||||||||||
| 164 | value = static_cast<unsigned long long>(fmodValue); | - | ||||||||||||
| 165 | } never executed: else {end of block | 0 | ||||||||||||
| 166 | - | |||||||||||||
| 167 | - | |||||||||||||
| 168 | unsigned long long fmodValueInUnsignedLongLong = static_cast<unsigned long long>(-fmodValue); | - | ||||||||||||
| 169 | - | |||||||||||||
| 170 | - | |||||||||||||
| 171 | value = std::numeric_limits<unsigned long long>::max() - fmodValueInUnsignedLongLong + 1; | - | ||||||||||||
| 172 | } never executed: end of block | 0 | ||||||||||||
| 173 | } | - | ||||||||||||
| 174 | } | - | ||||||||||||
| 175 | - | |||||||||||||
| 176 | namespace WTF { | - | ||||||||||||
| 177 | - | |||||||||||||
| 178 | - | |||||||||||||
| 179 | inline uint32_t roundUpToPowerOfTwo(uint32_t v) | - | ||||||||||||
| 180 | { | - | ||||||||||||
| 181 | v--; | - | ||||||||||||
| 182 | v |= v >> 1; | - | ||||||||||||
| 183 | v |= v >> 2; | - | ||||||||||||
| 184 | v |= v >> 4; | - | ||||||||||||
| 185 | v |= v >> 8; | - | ||||||||||||
| 186 | v |= v >> 16; | - | ||||||||||||
| 187 | v++; | - | ||||||||||||
| 188 | return never executed: v;return v;never executed: return v; | 0 | ||||||||||||
| 189 | } | - | ||||||||||||
| 190 | - | |||||||||||||
| 191 | inline unsigned fastLog2(unsigned i) | - | ||||||||||||
| 192 | { | - | ||||||||||||
| 193 | unsigned log2 = 0; | - | ||||||||||||
| 194 | if (i & (i - 1)
| 0 | ||||||||||||
| 195 | log2 += 1; never executed: log2 += 1; | 0 | ||||||||||||
| 196 | if (i >> 16
| 0 | ||||||||||||
| 197 | log2 += 16, i >>= 16; never executed: log2 += 16, i >>= 16; | 0 | ||||||||||||
| 198 | if (i >> 8
| 0 | ||||||||||||
| 199 | log2 += 8, i >>= 8; never executed: log2 += 8, i >>= 8; | 0 | ||||||||||||
| 200 | if (i >> 4
| 0 | ||||||||||||
| 201 | log2 += 4, i >>= 4; never executed: log2 += 4, i >>= 4; | 0 | ||||||||||||
| 202 | if (i >> 2
| 0 | ||||||||||||
| 203 | log2 += 2, i >>= 2; never executed: log2 += 2, i >>= 2; | 0 | ||||||||||||
| 204 | if (i >> 1
| 0 | ||||||||||||
| 205 | log2 += 1; never executed: log2 += 1; | 0 | ||||||||||||
| 206 | return never executed: log2;return log2;never executed: return log2; | 0 | ||||||||||||
| 207 | } | - | ||||||||||||
| 208 | - | |||||||||||||
| 209 | } | - | ||||||||||||
| Switch to Source code | Preprocessed file |