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 |