00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #pragma once
00037
00038 #include "setup.hpp"
00039 #include "precision.hpp"
00040 #include "type_int.hpp"
00041 #include "_fixes.hpp"
00042
00043 namespace glm
00044 {
00047
00054 template <typename genType>
00055 GLM_FUNC_DECL genType abs(genType const & x);
00056
00063 template <typename genType>
00064 GLM_FUNC_DECL genType sign(genType const & x);
00065
00072 template <typename genType>
00073 GLM_FUNC_DECL genType floor(genType const & x);
00074
00082 template <typename genType>
00083 GLM_FUNC_DECL genType trunc(genType const & x);
00084
00095 template <typename genType>
00096 GLM_FUNC_DECL genType round(genType const & x);
00097
00107 template <typename genType>
00108 GLM_FUNC_DECL genType roundEven(genType const & x);
00109
00117 template <typename genType>
00118 GLM_FUNC_DECL genType ceil(genType const & x);
00119
00126 template <typename genType>
00127 GLM_FUNC_DECL genType fract(genType const & x);
00128
00136 template <typename genType>
00137 GLM_FUNC_DECL genType mod(
00138 genType const & x,
00139 genType const & y);
00140
00148 template <typename genType>
00149 GLM_FUNC_DECL genType mod(
00150 genType const & x,
00151 typename genType::value_type const & y);
00152
00162 template <typename genType>
00163 GLM_FUNC_DECL genType modf(
00164 genType const & x,
00165 genType & i);
00166
00173 template <typename genType>
00174 GLM_FUNC_DECL genType min(
00175 genType const & x,
00176 genType const & y);
00177
00178 template <typename genType>
00179 GLM_FUNC_DECL genType min(
00180 genType const & x,
00181 typename genType::value_type const & y);
00182
00189 template <typename genType>
00190 GLM_FUNC_DECL genType max(
00191 genType const & x,
00192 genType const & y);
00193
00194 template <typename genType>
00195 GLM_FUNC_DECL genType max(
00196 genType const & x,
00197 typename genType::value_type const & y);
00198
00206 template <typename genType>
00207 GLM_FUNC_DECL genType clamp(
00208 genType const & x,
00209 genType const & minVal,
00210 genType const & maxVal);
00211
00212 template <typename genType, precision P>
00213 GLM_FUNC_DECL genType clamp(
00214 genType const & x,
00215 typename genType::value_type const & minVal,
00216 typename genType::value_type const & maxVal);
00217
00260 template <typename T, typename U, precision P, template <typename, precision> class vecType>
00261 GLM_FUNC_DECL vecType<T, P> mix(
00262 vecType<T, P> const & x,
00263 vecType<T, P> const & y,
00264 vecType<U, P> const & a);
00265
00266 template <typename T, typename U, precision P, template <typename, precision> class vecType>
00267 GLM_FUNC_DECL vecType<T, P> mix(
00268 vecType<T, P> const & x,
00269 vecType<T, P> const & y,
00270 U const & a);
00271
00272 template <typename genTypeT, typename genTypeU>
00273 GLM_FUNC_DECL genTypeT mix(
00274 genTypeT const & x,
00275 genTypeT const & y,
00276 genTypeU const & a);
00277
00282 template <typename genType>
00283 GLM_FUNC_DECL genType step(
00284 genType const & edge,
00285 genType const & x);
00286
00291 template <template <typename, precision> class vecType, typename T, precision P>
00292 GLM_FUNC_DECL vecType<T, P> step(
00293 T const & edge,
00294 vecType<T, P> const & x);
00295
00310 template <typename genType>
00311 GLM_FUNC_DECL genType smoothstep(
00312 genType const & edge0,
00313 genType const & edge1,
00314 genType const & x);
00315
00316 template <typename genType>
00317 GLM_FUNC_DECL genType smoothstep(
00318 typename genType::value_type const & edge0,
00319 typename genType::value_type const & edge1,
00320 genType const & x);
00321
00334 template <typename genType>
00335 GLM_FUNC_DECL typename genType::bool_type isnan(genType const & x);
00336
00347 template <typename genType>
00348 GLM_FUNC_DECL typename genType::bool_type isinf(genType const & x);
00349
00356 GLM_FUNC_DECL int floatBitsToInt(float const & v);
00357
00364 template <template <typename, precision> class vecType, precision P>
00365 GLM_FUNC_DECL vecType<int, P> floatBitsToInt(vecType<float, P> const & v);
00366
00373 GLM_FUNC_DECL uint floatBitsToUint(float const & v);
00374
00381 template <template <typename, precision> class vecType, precision P>
00382 GLM_FUNC_DECL vecType<uint, P> floatBitsToUint(vecType<float, P> const & v);
00383
00392 GLM_FUNC_DECL float intBitsToFloat(int const & v);
00393
00402 template <template <typename, precision> class vecType, precision P>
00403 GLM_FUNC_DECL vecType<float, P> intBitsToFloat(vecType<int, P> const & v);
00404
00413 GLM_FUNC_DECL float uintBitsToFloat(uint const & v);
00414
00423 template <template <typename, precision> class vecType, precision P>
00424 GLM_FUNC_DECL vecType<float, P> uintBitsToFloat(vecType<uint, P> const & v);
00425
00432 template <typename genType>
00433 GLM_FUNC_DECL genType fma(genType const & a, genType const & b, genType const & c);
00434
00449 template <typename genType, typename genIType>
00450 GLM_FUNC_DECL genType frexp(genType const & x, genIType & exp);
00451
00463 template <typename genType, typename genIType>
00464 GLM_FUNC_DECL genType ldexp(genType const & x, genIType const & exp);
00465
00467 }
00468
00469 #include "func_common.inl"
00470