• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1///////////////////////////////////////////////////////////////////////////////////////////////////
2// OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
3///////////////////////////////////////////////////////////////////////////////////////////////////
4// Created : 2005-12-21
5// Updated : 2005-12-27
6// Licence : This source is under MIT License
7// File    : glm/gtx/optimum_pow.inl
8///////////////////////////////////////////////////////////////////////////////////////////////////
9
10namespace glm
11{
12	template <typename genType>
13	GLM_FUNC_QUALIFIER genType pow2(genType const & x)
14	{
15		return x * x;
16	}
17
18	template <typename genType>
19	GLM_FUNC_QUALIFIER genType pow3(genType const & x)
20	{
21		return x * x * x;
22	}
23
24	template <typename genType>
25	GLM_FUNC_QUALIFIER genType pow4(genType const & x)
26	{
27		return (x * x) * (x * x);
28	}
29
30	GLM_FUNC_QUALIFIER bool powOfTwo(int x)
31	{
32		return !(x & (x - 1));
33	}
34
35	template <precision P>
36	GLM_FUNC_QUALIFIER detail::tvec2<bool, P> powOfTwo(detail::tvec2<int, P> const & x)
37	{
38		return detail::tvec2<bool, P>(
39			powOfTwo(x.x),
40			powOfTwo(x.y));
41	}
42
43	template <precision P>
44	GLM_FUNC_QUALIFIER detail::tvec3<bool, P> powOfTwo(detail::tvec3<int, P> const & x)
45	{
46		return detail::tvec3<bool, P>(
47			powOfTwo(x.x),
48			powOfTwo(x.y),
49			powOfTwo(x.z));
50	}
51
52	template <precision P>
53	GLM_FUNC_QUALIFIER detail::tvec4<bool, P> powOfTwo(detail::tvec4<int, P> const & x)
54	{
55		return detail::tvec4<bool, P>(
56			powOfTwo(x.x),
57			powOfTwo(x.y),
58			powOfTwo(x.z),
59			powOfTwo(x.w));
60	}
61}//namespace glm
62