Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: include/private/SkFloatingPoint.h

Issue 2233853002: constexpr NaN,+Inf,-Inf (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/core/SkLiteDL.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkFloatingPoint_DEFINED 10 #ifndef SkFloatingPoint_DEFINED
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 #define sk_float_ceil2int(x) (int)sk_float_ceil(x) 93 #define sk_float_ceil2int(x) (int)sk_float_ceil(x)
94 #endif 94 #endif
95 95
96 #define sk_double_floor(x) floor(x) 96 #define sk_double_floor(x) floor(x)
97 #define sk_double_round(x) floor((x) + 0.5) 97 #define sk_double_round(x) floor((x) + 0.5)
98 #define sk_double_ceil(x) ceil(x) 98 #define sk_double_ceil(x) ceil(x)
99 #define sk_double_floor2int(x) (int)floor(x) 99 #define sk_double_floor2int(x) (int)floor(x)
100 #define sk_double_round2int(x) (int)floor((x) + 0.5f) 100 #define sk_double_round2int(x) (int)floor((x) + 0.5f)
101 #define sk_double_ceil2int(x) (int)ceil(x) 101 #define sk_double_ceil2int(x) (int)ceil(x)
102 102
103 extern const uint32_t gIEEENotANumber; 103 static const uint32_t kIEEENotANumber = 0x7fffffff;
104 extern const uint32_t gIEEEInfinity; 104 #define SK_FloatNaN (*SkTCast<const float*>(&kIEEENotANumber))
105 extern const uint32_t gIEEENegativeInfinity; 105 #define SK_FloatInfinity (+(float)INFINITY)
106 106 #define SK_FloatNegativeInfinity (-(float)INFINITY)
107 #define SK_FloatNaN (*SkTCast<const float*>(&gIEEENotANumber))
108 #define SK_FloatInfinity (*SkTCast<const float*>(&gIEEEInfinity))
109 #define SK_FloatNegativeInfinity (*SkTCast<const float*>(&gIEEENegativeInfini ty))
110 107
111 static inline float sk_float_rsqrt_portable(float x) { 108 static inline float sk_float_rsqrt_portable(float x) {
112 // Get initial estimate. 109 // Get initial estimate.
113 int i = *SkTCast<int*>(&x); 110 int i = *SkTCast<int*>(&x);
114 i = 0x5F1FFFF9 - (i>>1); 111 i = 0x5F1FFFF9 - (i>>1);
115 float estimate = *SkTCast<float*>(&i); 112 float estimate = *SkTCast<float*>(&i);
116 113
117 // One step of Newton's method to refine. 114 // One step of Newton's method to refine.
118 const float estimate_sq = estimate*estimate; 115 const float estimate_sq = estimate*estimate;
119 estimate *= 0.703952253f*(2.38924456f-x*estimate_sq); 116 estimate *= 0.703952253f*(2.38924456f-x*estimate_sq);
(...skipping 29 matching lines...) Expand all
149 // This is the number of significant digits we can print in a string such that w hen we read that 146 // This is the number of significant digits we can print in a string such that w hen we read that
150 // string back we get the floating point number we expect. The minimum value C requires is 6, but 147 // string back we get the floating point number we expect. The minimum value C requires is 6, but
151 // most compilers support 9 148 // most compilers support 9
152 #ifdef FLT_DECIMAL_DIG 149 #ifdef FLT_DECIMAL_DIG
153 #define SK_FLT_DECIMAL_DIG FLT_DECIMAL_DIG 150 #define SK_FLT_DECIMAL_DIG FLT_DECIMAL_DIG
154 #else 151 #else
155 #define SK_FLT_DECIMAL_DIG 9 152 #define SK_FLT_DECIMAL_DIG 9
156 #endif 153 #endif
157 154
158 #endif 155 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkLiteDL.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698