• Home
  • Raw
  • Download

Lines Matching refs:x

71 	GLM_FUNC_QUALIFIER float nextafterf(float x, float y)  argument
76 GLM_GET_FLOAT_WORD(hx, x);
78 ix = hx&0x7fffffff; // |x|
81 if((ix>0x7f800000) || // x is nan
83 return x+y;
84 if(x==y) return y; // x=y, return y
85 if(ix==0) { // x == 0
86 GLM_SET_FLOAT_WORD(x,(hy&0x80000000)|1);// return +-minsubnormal
87 t = x*x;
88 if(t==x) return t; else return x; // raise underflow flag
90 if(hx>=0) { // x > 0
91 if(hx>hy) { // x > y, x -= ulp
93 } else { // x < y, x += ulp
96 } else { // x < 0
97 if(hy>=0||hx>hy){ // x < y, x -= ulp
99 } else { // x > y, x += ulp
104 if(hy>=0x7f800000) return x+x; // overflow
106 t = x*x;
107 if(t!=x) { // raise underflow flag
112 GLM_SET_FLOAT_WORD(x,hx);
113 return x;
116 GLM_FUNC_QUALIFIER double nextafter(double x, double y) argument
122 GLM_EXTRACT_WORDS(hx, lx, x);
124 ix = hx & 0x7fffffff; // |x|
127 if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || // x is nan
129 return x+y;
130 if(x==y) return y; // x=y, return y
131 if((ix|lx)==0) { // x == 0
132 GLM_INSERT_WORDS(x, hy & 0x80000000, 1); // return +-minsubnormal
133 t = x*x;
134 if(t==x) return t; else return x; // raise underflow flag
136 if(hx>=0) { // x > 0
137 if(hx>hy||((hx==hy)&&(lx>ly))) { // x > y, x -= ulp
140 } else { // x < y, x += ulp
144 } else { // x < 0
145 if(hy>=0||hx>hy||((hx==hy)&&(lx>ly))){// x < y, x -= ulp
148 } else { // x > y, x += ulp
154 if(hy>=0x7ff00000) return x+x; // overflow
156 t = x*x;
157 if(t!=x) { // raise underflow flag
162 GLM_INSERT_WORDS(x,hx,lx);
163 return x;
175 GLM_FUNC_QUALIFIER float next_float(float const & x) argument
178 return std::nextafter(x, std::numeric_limits<float>::max());
180 return detail::nextafterf(x, FLT_MAX);
182 return __builtin_nextafterf(x, FLT_MAX);
184 return nextafterf(x, FLT_MAX);
189 GLM_FUNC_QUALIFIER double next_float(double const & x) argument
192 return std::nextafter(x, std::numeric_limits<double>::max());
194 return detail::nextafter(x, std::numeric_limits<double>::max());
196 return __builtin_nextafter(x, FLT_MAX);
198 return nextafter(x, DBL_MAX);
203 GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x) argument
207 Result[i] = next_float(x[i]);
211 GLM_FUNC_QUALIFIER float prev_float(float const & x) argument
214 return std::nextafter(x, std::numeric_limits<float>::min());
216 return detail::nextafterf(x, FLT_MIN);
218 return __builtin_nextafterf(x, FLT_MIN);
220 return nextafterf(x, FLT_MIN);
224 GLM_FUNC_QUALIFIER double prev_float(double const & x) argument
227 return std::nextafter(x, std::numeric_limits<double>::min());
229 return _nextafter(x, DBL_MIN);
231 return __builtin_nextafter(x, DBL_MIN);
233 return nextafter(x, DBL_MIN);
238 GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x) argument
242 Result[i] = prev_float(x[i]);
247 GLM_FUNC_QUALIFIER T next_float(T const & x, uint const & ulps) argument
249 T temp = x;
256 GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x, vecType<uint, P> const & ulps) argument
260 Result[i] = next_float(x[i], ulps[i]);
265 GLM_FUNC_QUALIFIER T prev_float(T const & x, uint const & ulps) argument
267 T temp = x;
274 GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x, vecType<uint, P> const & ulps) argument
278 Result[i] = prev_float(x[i], ulps[i]);
283 GLM_FUNC_QUALIFIER uint float_distance(T const & x, T const & y) argument
287 if(x < y)
289 T temp = x;
296 else if(y < x)
299 while(temp != x)// && ulp < std::numeric_limits<std::size_t>::max())
314 …GLM_FUNC_QUALIFIER vecType<uint, P> float_distance(vecType<T, P> const & x, vecType<T, P> const & … argument
318 Result[i] = float_distance(x[i], y[i]);