File: a00085_source.html

package info (click to toggle)
glm 0.9.3.3%2Bdfsg-0.1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 12,064 kB
  • sloc: cpp: 14,510; xml: 1,819; python: 111; makefile: 5
file content (378 lines) | stat: -rw-r--r-- 31,166 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>

<title>simd_vec4.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
  
  
  
   
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.8.0 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<div class="title">simd_vec4.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="a00085.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00002"></a>00002 
<a name="l00003"></a>00003 
<a name="l00004"></a>00004 
<a name="l00005"></a>00005 
<a name="l00006"></a>00006 
<a name="l00007"></a>00007 
<a name="l00008"></a>00008 
<a name="l00009"></a>00009 
<a name="l00010"></a>00010 
<a name="l00011"></a>00011 
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 
<a name="l00014"></a>00014 
<a name="l00015"></a>00015 
<a name="l00016"></a>00016 
<a name="l00017"></a>00017 
<a name="l00018"></a>00018 
<a name="l00019"></a>00019 
<a name="l00020"></a>00020 
<a name="l00021"></a>00021 
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 
<a name="l00027"></a>00027 
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 
<a name="l00034"></a>00034 
<a name="l00035"></a>00035 
<a name="l00036"></a>00036 
<a name="l00037"></a>00037 
<a name="l00038"></a>00038 <span class="preprocessor">#ifndef GLM_GTX_simd_vec4</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#define GLM_GTX_simd_vec4 GLM_VERSION</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span>
<a name="l00041"></a>00041 <span class="comment">// Dependency:</span>
<a name="l00042"></a>00042 <span class="preprocessor">#include &quot;../glm.hpp&quot;</span>
<a name="l00043"></a>00043 
<a name="l00044"></a>00044 <span class="preprocessor">#if(GLM_ARCH != GLM_ARCH_PURE)</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span>
<a name="l00046"></a>00046 <span class="preprocessor">#if(GLM_ARCH &amp; GLM_ARCH_SSE2)</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#       include &quot;../core/intrinsic_common.hpp&quot;</span>
<a name="l00048"></a>00048 <span class="preprocessor">#       include &quot;../core/intrinsic_geometric.hpp&quot;</span>
<a name="l00049"></a>00049 <span class="preprocessor">#else</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#       error &quot;GLM: GLM_GTX_simd_vec4 requires compiler support of SSE2 through intrinsics&quot;</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span>
<a name="l00053"></a>00053 <span class="preprocessor">#if(defined(GLM_MESSAGES) &amp;&amp; !defined(glm_ext))</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#       pragma message(&quot;GLM: GLM_GTX_simd_vec4 extension included&quot;)</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span>
<a name="l00057"></a>00057 <span class="keyword">namespace </span>glm{
<a name="l00058"></a>00058 <span class="keyword">namespace </span>detail
<a name="l00059"></a>00059 {
<a name="l00062"></a>00062         GLM_ALIGNED_STRUCT(16) fvec4SIMD
<a name="l00063"></a>00063         {
<a name="l00064"></a>00064                 <span class="keyword">enum</span> ctor{null};
<a name="l00065"></a>00065                 <span class="keyword">typedef</span> __m128 value_type;
<a name="l00066"></a>00066                 <span class="keyword">typedef</span> std::size_t size_type;
<a name="l00067"></a>00067                 <span class="keyword">static</span> size_type value_size();
<a name="l00068"></a>00068 
<a name="l00069"></a>00069                 <span class="keyword">typedef</span> fvec4SIMD type;
<a name="l00070"></a>00070                 <span class="keyword">typedef</span> tvec4&lt;bool&gt; bool_type;
<a name="l00071"></a>00071 
<a name="l00072"></a>00072                 __m128 Data;
<a name="l00073"></a>00073 
<a name="l00075"></a>00075                 <span class="comment">// Implicit basic constructors</span>
<a name="l00076"></a>00076 
<a name="l00077"></a>00077                 fvec4SIMD();
<a name="l00078"></a>00078                 fvec4SIMD(__m128 <span class="keyword">const</span> &amp; Data);
<a name="l00079"></a>00079                 fvec4SIMD(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00080"></a>00080 
<a name="l00082"></a>00082                 <span class="comment">// Explicit basic constructors</span>
<a name="l00083"></a>00083 
<a name="l00084"></a>00084                 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00085"></a>00085                         ctor);
<a name="l00086"></a>00086                 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00087"></a>00087                         <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00088"></a>00088                 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00089"></a>00089                         <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; x, 
<a name="l00090"></a>00090                         <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y, 
<a name="l00091"></a>00091                         <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; z, 
<a name="l00092"></a>00092                         <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; w);
<a name="l00093"></a>00093                 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00094"></a>00094                         tvec4&lt;float&gt; <span class="keyword">const</span> &amp; v);
<a name="l00095"></a>00095 
<a name="l00098"></a>00098 
<a name="l00099"></a>00099                 fvec4SIMD(<a class="code" href="a00140.html#ga80139c81aa2687717598312039cea8d1" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v, <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s1, <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s2);
<a name="l00100"></a>00100                 fvec4SIMD(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s1, <a class="code" href="a00140.html#ga80139c81aa2687717598312039cea8d1" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v, <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s2);
<a name="l00101"></a>00101                 fvec4SIMD(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s1, <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s2, <a class="code" href="a00140.html#ga80139c81aa2687717598312039cea8d1" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v);
<a name="l00102"></a>00102                 fvec4SIMD(<a class="code" href="a00140.html#ga8a44105c47072f9ea1413f15faa31f64" title="3 components vector of floating-point numbers.">vec3</a> <span class="keyword">const</span> &amp; v, <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00103"></a>00103                 fvec4SIMD(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s, <a class="code" href="a00140.html#ga8a44105c47072f9ea1413f15faa31f64" title="3 components vector of floating-point numbers.">vec3</a> <span class="keyword">const</span> &amp; v);
<a name="l00104"></a>00104                 fvec4SIMD(<a class="code" href="a00140.html#ga80139c81aa2687717598312039cea8d1" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v1, <a class="code" href="a00140.html#ga80139c81aa2687717598312039cea8d1" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v2);
<a name="l00105"></a>00105                 <span class="comment">//fvec4SIMD(ivec4SIMD const &amp; v);</span>
<a name="l00106"></a>00106 
<a name="l00108"></a>00108                 <span class="comment">// Unary arithmetic operators</span>
<a name="l00109"></a>00109 
<a name="l00110"></a>00110                 fvec4SIMD&amp; operator= (fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00111"></a>00111                 fvec4SIMD&amp; operator+=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00112"></a>00112                 fvec4SIMD&amp; operator-=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00113"></a>00113                 fvec4SIMD&amp; operator*=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00114"></a>00114                 fvec4SIMD&amp; operator/=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00115"></a>00115 
<a name="l00116"></a>00116                 fvec4SIMD&amp; operator+=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00117"></a>00117                 fvec4SIMD&amp; operator-=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00118"></a>00118                 fvec4SIMD&amp; operator*=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00119"></a>00119                 fvec4SIMD&amp; operator/=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00120"></a>00120 
<a name="l00121"></a>00121                 fvec4SIMD&amp; operator++();
<a name="l00122"></a>00122                 fvec4SIMD&amp; operator--();
<a name="l00123"></a>00123 
<a name="l00125"></a>00125                 <span class="comment">// Swizzle operators</span>
<a name="l00126"></a>00126 
<a name="l00127"></a>00127                 <span class="keyword">template</span> &lt;comp X, comp Y, comp Z, comp W&gt;
<a name="l00128"></a>00128                 fvec4SIMD&amp; swizzle();
<a name="l00129"></a>00129                 <span class="keyword">template</span> &lt;comp X, comp Y, comp Z, comp W&gt;
<a name="l00130"></a>00130                 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00131"></a>00131                 <span class="keyword">template</span> &lt;comp X, comp Y, comp Z&gt;
<a name="l00132"></a>00132                 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00133"></a>00133                 <span class="keyword">template</span> &lt;comp X, comp Y&gt;
<a name="l00134"></a>00134                 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00135"></a>00135                 <span class="keyword">template</span> &lt;comp X&gt;
<a name="l00136"></a>00136                 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00137"></a>00137         };
<a name="l00138"></a>00138 }<span class="comment">//namespace detail</span>
<a name="l00139"></a>00139 
<a name="l00140"></a>00140         <span class="keyword">typedef</span> glm::detail::fvec4SIMD simdVec4;
<a name="l00141"></a>00141 
<a name="l00144"></a>00144 
<a name="l00147"></a>00147         detail::tvec4&lt;float&gt; vec4_cast(
<a name="l00148"></a>00148                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00149"></a>00149 
<a name="l00152"></a>00152         detail::fvec4SIMD <a class="code" href="a00127.html#gaeca8e195d482248f677e3905d00f11ae" title="Returns x if x &gt;= 0; otherwise, it returns -x.">abs</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00153"></a>00153 
<a name="l00156"></a>00156         detail::fvec4SIMD <a class="code" href="a00127.html#ga79f412e6d33cb4be13497056c2298d14" title="Returns 1.0 if x &gt; 0, 0.0 if x == 0, or -1.0 if x &lt; 0.">sign</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00157"></a>00157 
<a name="l00160"></a>00160         detail::fvec4SIMD <a class="code" href="a00127.html#gac3458e950a8a716468866f841a833c77" title="Returns a value equal to the nearest integer that is less then or equal to x.">floor</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00161"></a>00161 
<a name="l00165"></a>00165         detail::fvec4SIMD <a class="code" href="a00127.html#gae1268fe85d913d9e4054de0e046abaef" title="Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolut...">trunc</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00166"></a>00166 
<a name="l00173"></a>00173         detail::fvec4SIMD <a class="code" href="a00127.html#ga32125c5451799e80b886ef665b947d0c" title="Returns a value equal to the nearest integer to x.">round</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00174"></a>00174 
<a name="l00179"></a>00179         <span class="comment">//detail::fvec4SIMD roundEven(detail::fvec4SIMD const &amp; x);</span>
<a name="l00180"></a>00180 
<a name="l00184"></a>00184         detail::fvec4SIMD <a class="code" href="a00127.html#ga1ce130f2934cf1d7aca83a7027422f3c" title="Returns a value equal to the nearest integer that is greater than or equal to x.">ceil</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00185"></a>00185 
<a name="l00188"></a>00188         detail::fvec4SIMD <a class="code" href="a00127.html#gad5e3814491ff6baa4f0d16aebcabff9b" title="Return x - floor(x).">fract</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00189"></a>00189 
<a name="l00193"></a>00193         detail::fvec4SIMD <a class="code" href="a00127.html#ga3bdf136bc96f670965cd2f48d14356b4" title="Modulus.">mod</a>(
<a name="l00194"></a>00194                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00195"></a>00195                 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00196"></a>00196 
<a name="l00200"></a>00200         detail::fvec4SIMD <a class="code" href="a00127.html#ga3bdf136bc96f670965cd2f48d14356b4" title="Modulus.">mod</a>(
<a name="l00201"></a>00201                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00202"></a>00202                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y);
<a name="l00203"></a>00203 
<a name="l00209"></a>00209         <span class="comment">//detail::fvec4SIMD modf(</span>
<a name="l00210"></a>00210         <span class="comment">//      detail::fvec4SIMD const &amp; x, </span>
<a name="l00211"></a>00211         <span class="comment">//      detail::fvec4SIMD &amp; i);</span>
<a name="l00212"></a>00212 
<a name="l00215"></a>00215         detail::fvec4SIMD <a class="code" href="a00127.html#ga0d2bb6c2caad4acf992e6dcd41a626fe" title="Returns y if y &lt; x; otherwise, it returns x.">min</a>(
<a name="l00216"></a>00216                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00217"></a>00217                 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00218"></a>00218 
<a name="l00219"></a>00219         detail::fvec4SIMD <a class="code" href="a00127.html#ga0d2bb6c2caad4acf992e6dcd41a626fe" title="Returns y if y &lt; x; otherwise, it returns x.">min</a>(
<a name="l00220"></a>00220                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00221"></a>00221                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y);
<a name="l00222"></a>00222 
<a name="l00225"></a>00225         detail::fvec4SIMD <a class="code" href="a00127.html#ga3f6af26fbb056e0fc8a04ddc8871add2" title="Returns y if x &lt; y; otherwise, it returns x.">max</a>(
<a name="l00226"></a>00226                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00227"></a>00227                 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00228"></a>00228 
<a name="l00229"></a>00229         detail::fvec4SIMD <a class="code" href="a00127.html#ga3f6af26fbb056e0fc8a04ddc8871add2" title="Returns y if x &lt; y; otherwise, it returns x.">max</a>(
<a name="l00230"></a>00230                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00231"></a>00231                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y);
<a name="l00232"></a>00232 
<a name="l00236"></a>00236         detail::fvec4SIMD <a class="code" href="a00127.html#ga99b1ce602a02833646e5077345858da4" title="Returns min(max(x, minVal), maxVal) for each component in x.">clamp</a>(
<a name="l00237"></a>00237                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00238"></a>00238                 detail::fvec4SIMD <span class="keyword">const</span> &amp; minVal, 
<a name="l00239"></a>00239                 detail::fvec4SIMD <span class="keyword">const</span> &amp; maxVal); 
<a name="l00240"></a>00240 
<a name="l00241"></a>00241         detail::fvec4SIMD <a class="code" href="a00127.html#ga99b1ce602a02833646e5077345858da4" title="Returns min(max(x, minVal), maxVal) for each component in x.">clamp</a>(
<a name="l00242"></a>00242                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00243"></a>00243                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; minVal, 
<a name="l00244"></a>00244                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; maxVal); 
<a name="l00245"></a>00245 
<a name="l00269"></a>00269         <span class="comment">// \todo Test when &#39;a&#39; is a boolean.</span>
<a name="l00271"></a>00271 <span class="comment"></span>        detail::fvec4SIMD <a class="code" href="a00127.html#ga3f64b3986efe205cf30300700667e761">mix</a>(
<a name="l00272"></a>00272                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x, 
<a name="l00273"></a>00273                 detail::fvec4SIMD <span class="keyword">const</span> &amp; y, 
<a name="l00274"></a>00274                 detail::fvec4SIMD <span class="keyword">const</span> &amp; a);
<a name="l00275"></a>00275 
<a name="l00278"></a>00278         detail::fvec4SIMD <a class="code" href="a00127.html#ga3d3199dcbbb0ac8e0d9664d538702a40" title="Returns 0.0 if x &lt; edge, otherwise it returns 1.0.">step</a>(
<a name="l00279"></a>00279                 detail::fvec4SIMD <span class="keyword">const</span> &amp; edge, 
<a name="l00280"></a>00280                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00281"></a>00281 
<a name="l00282"></a>00282         detail::fvec4SIMD <a class="code" href="a00127.html#ga3d3199dcbbb0ac8e0d9664d538702a40" title="Returns 0.0 if x &lt; edge, otherwise it returns 1.0.">step</a>(
<a name="l00283"></a>00283                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; edge, 
<a name="l00284"></a>00284                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00285"></a>00285 
<a name="l00296"></a>00296         detail::fvec4SIMD <a class="code" href="a00127.html#gabdfe71a62ef69b5ec834601e87588667" title="Returns 0.0 if x &lt;= edge0 and 1.0 if x &gt;= edge1 and performs smooth Hermite interpolation between 0 a...">smoothstep</a>(
<a name="l00297"></a>00297                 detail::fvec4SIMD <span class="keyword">const</span> &amp; edge0, 
<a name="l00298"></a>00298                 detail::fvec4SIMD <span class="keyword">const</span> &amp; edge1, 
<a name="l00299"></a>00299                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00300"></a>00300 
<a name="l00301"></a>00301         detail::fvec4SIMD <a class="code" href="a00127.html#gabdfe71a62ef69b5ec834601e87588667" title="Returns 0.0 if x &lt;= edge0 and 1.0 if x &gt;= edge1 and performs smooth Hermite interpolation between 0 a...">smoothstep</a>(
<a name="l00302"></a>00302                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; edge0, 
<a name="l00303"></a>00303                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; edge1, 
<a name="l00304"></a>00304                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00305"></a>00305 
<a name="l00312"></a>00312         <span class="comment">//bvec4 isnan(detail::fvec4SIMD const &amp; x);</span>
<a name="l00313"></a>00313 
<a name="l00320"></a>00320         <span class="comment">//bvec4 isinf(detail::fvec4SIMD const &amp; x);</span>
<a name="l00321"></a>00321 
<a name="l00326"></a>00326         <span class="comment">//detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const &amp; value);</span>
<a name="l00327"></a>00327 
<a name="l00334"></a>00334         <span class="comment">//detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const &amp; value);</span>
<a name="l00335"></a>00335 
<a name="l00338"></a>00338         detail::fvec4SIMD <a class="code" href="a00127.html#gae88b926eebc4d610ecdd148bf8c7bdac" title="Computes and returns a * b + c.">fma</a>(
<a name="l00339"></a>00339                 detail::fvec4SIMD <span class="keyword">const</span> &amp; a, 
<a name="l00340"></a>00340                 detail::fvec4SIMD <span class="keyword">const</span> &amp; b, 
<a name="l00341"></a>00341                 detail::fvec4SIMD <span class="keyword">const</span> &amp; c);
<a name="l00342"></a>00342 
<a name="l00352"></a>00352         <span class="comment">//detail::fvec4SIMD frexp(detail::fvec4SIMD const &amp; x, detail::ivec4SIMD &amp; exp);</span>
<a name="l00353"></a>00353 
<a name="l00360"></a>00360         <span class="comment">//detail::fvec4SIMD ldexp(detail::fvec4SIMD const &amp; x, detail::ivec4SIMD const &amp; exp);</span>
<a name="l00361"></a>00361 
<a name="l00364"></a>00364         <span class="keywordtype">float</span> <a class="code" href="a00129.html#ga282360c8bb80b80d3c7f5bc00766d873" title="Returns the length of x, i.e., sqrt(x * x).">length</a>(
<a name="l00365"></a>00365                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00366"></a>00366 
<a name="l00370"></a>00370         <span class="keywordtype">float</span> <a class="code" href="a00168.html#ga2e726cc8b9f02b7c09910858ea1afac6" title="Faster than the common length function but less accurate.">fastLength</a>(
<a name="l00371"></a>00371                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00372"></a>00372 
<a name="l00376"></a>00376         <span class="keywordtype">float</span> niceLength(
<a name="l00377"></a>00377                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00378"></a>00378 
<a name="l00381"></a>00381         detail::fvec4SIMD length4(
<a name="l00382"></a>00382                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00383"></a>00383 
<a name="l00387"></a>00387         detail::fvec4SIMD fastLength4(
<a name="l00388"></a>00388                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00389"></a>00389 
<a name="l00393"></a>00393         detail::fvec4SIMD niceLength4(
<a name="l00394"></a>00394                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00395"></a>00395 
<a name="l00398"></a>00398         <span class="keywordtype">float</span> <a class="code" href="a00129.html#ga3fac0e61144f60184d961dd156709dd3" title="Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).">distance</a>(
<a name="l00399"></a>00399                 detail::fvec4SIMD <span class="keyword">const</span> &amp; p0,
<a name="l00400"></a>00400                 detail::fvec4SIMD <span class="keyword">const</span> &amp; p1);
<a name="l00401"></a>00401 
<a name="l00404"></a>00404         detail::fvec4SIMD distance4(
<a name="l00405"></a>00405                 detail::fvec4SIMD <span class="keyword">const</span> &amp; p0,
<a name="l00406"></a>00406                 detail::fvec4SIMD <span class="keyword">const</span> &amp; p1);
<a name="l00407"></a>00407 
<a name="l00410"></a>00410         <span class="keywordtype">float</span> simdDot(
<a name="l00411"></a>00411                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00412"></a>00412                 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00413"></a>00413 
<a name="l00416"></a>00416         detail::fvec4SIMD dot4(
<a name="l00417"></a>00417                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00418"></a>00418                 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00419"></a>00419 
<a name="l00422"></a>00422         detail::fvec4SIMD <a class="code" href="a00129.html#gaa127ddc9d38f715125f91742d399eb6f" title="Returns the cross product of x and y.">cross</a>(
<a name="l00423"></a>00423                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00424"></a>00424                 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00425"></a>00425 
<a name="l00428"></a>00428         detail::fvec4SIMD <a class="code" href="a00129.html#ga68b931c228750eeba844c273c54ca43d" title="Returns a vector in the same direction as x but with length of 1.">normalize</a>(
<a name="l00429"></a>00429                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00430"></a>00430 
<a name="l00434"></a>00434         detail::fvec4SIMD <a class="code" href="a00168.html#ga2953e7426a420bb2b33affce7360ef40" title="Faster than the common normalize function but less accurate.">fastNormalize</a>(
<a name="l00435"></a>00435                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00436"></a>00436 
<a name="l00439"></a>00439         detail::fvec4SIMD simdFaceforward(
<a name="l00440"></a>00440                 detail::fvec4SIMD <span class="keyword">const</span> &amp; N,
<a name="l00441"></a>00441                 detail::fvec4SIMD <span class="keyword">const</span> &amp; I,
<a name="l00442"></a>00442                 detail::fvec4SIMD <span class="keyword">const</span> &amp; Nref);
<a name="l00443"></a>00443 
<a name="l00447"></a>00447         detail::fvec4SIMD <a class="code" href="a00129.html#gabe1fa0bef5f854242eb70ce56e5a7d03" title="For the incident vector I and surface orientation N, returns the reflection direction : result = I - ...">reflect</a>(
<a name="l00448"></a>00448                 detail::fvec4SIMD <span class="keyword">const</span> &amp; I,
<a name="l00449"></a>00449                 detail::fvec4SIMD <span class="keyword">const</span> &amp; N);
<a name="l00450"></a>00450 
<a name="l00455"></a>00455         detail::fvec4SIMD <a class="code" href="a00129.html#gabbb4909d3e99a7a2411cc63252afbbd8" title="For the incident vector I and surface normal N, and the ratio of indices of refraction eta...">refract</a>(
<a name="l00456"></a>00456                 detail::fvec4SIMD <span class="keyword">const</span> &amp; I,
<a name="l00457"></a>00457                 detail::fvec4SIMD <span class="keyword">const</span> &amp; N,
<a name="l00458"></a>00458                 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; eta);
<a name="l00459"></a>00459 
<a name="l00462"></a>00462         detail::fvec4SIMD <a class="code" href="a00128.html#ga9b2fd4f39c29e3d55c4b4087ab873f9f" title="Returns the positive square root of x.">sqrt</a>(
<a name="l00463"></a>00463                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00464"></a>00464 
<a name="l00468"></a>00468         detail::fvec4SIMD niceSqrt(
<a name="l00469"></a>00469                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00470"></a>00470 
<a name="l00474"></a>00474         detail::fvec4SIMD <a class="code" href="a00168.html#gad57c343d2362c1469043adedeb8ef8eb" title="Faster than the common sqrt function but less accurate.">fastSqrt</a>(
<a name="l00475"></a>00475                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00476"></a>00476 
<a name="l00479"></a>00479         detail::fvec4SIMD <a class="code" href="a00128.html#ga3fd19e045e3943b96e0cdad22fbda111" title="Returns the reciprocal of the positive square root of x.">inversesqrt</a>(
<a name="l00480"></a>00480                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00481"></a>00481 
<a name="l00485"></a>00485         detail::fvec4SIMD fastInversesqrt(
<a name="l00486"></a>00486                 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00487"></a>00487 
<a name="l00489"></a>00489 }<span class="comment">//namespace glm</span>
<a name="l00490"></a>00490 
<a name="l00491"></a>00491 <span class="preprocessor">#include &quot;simd_vec4.inl&quot;</span>
<a name="l00492"></a>00492 
<a name="l00493"></a>00493 <span class="preprocessor">#endif//(GLM_ARCH != GLM_ARCH_PURE)</span>
<a name="l00494"></a>00494 <span class="preprocessor"></span>
<a name="l00495"></a>00495 <span class="preprocessor">#endif//GLM_GTX_simd_vec4</span>
</pre></div></div><!-- contents -->


<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.0
</small></address>

</body>
</html>