glm/doc/api-0.9.2/a00102_source.html
Christophe Riccio 8d2d112180 Added API doc
2011-10-24 15:24:48 +01:00

335 lines
32 KiB
HTML

<!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"/>
<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>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<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>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</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 class="header">
<div class="headertitle">
<div class="title">simd_vec4.hpp</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">// OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)</span>
<a name="l00004"></a>00004 <span class="comment"></span><span class="comment">// Created : 2009-05-07</span>
<a name="l00005"></a>00005 <span class="comment">// Updated : 2009-05-07</span>
<a name="l00006"></a>00006 <span class="comment">// Licence : This source is under MIT License</span>
<a name="l00007"></a>00007 <span class="comment">// File : glm/gtx/simd_vec4.hpp</span>
<a name="l00009"></a>00009 <span class="comment"></span><span class="comment">// Dependency:</span>
<a name="l00010"></a>00010 <span class="comment">// - GLM core</span>
<a name="l00011"></a>00011 <span class="comment">// - intrinsic</span>
<a name="l00013"></a>00013 <span class="comment"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#ifndef glm_gtx_simd_vec4</span>
<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define glm_gtx_simd_vec4</span>
<a name="l00016"></a>00016 <span class="preprocessor"></span>
<a name="l00017"></a>00017 <span class="comment">// Dependency:</span>
<a name="l00018"></a>00018 <span class="preprocessor">#include &quot;../glm.hpp&quot;</span>
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="preprocessor">#if(GLM_ARCH &amp; GLM_ARCH_SSE2)</span>
<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor"># include &quot;../core/intrinsic_common.hpp&quot;</span>
<a name="l00022"></a>00022 <span class="preprocessor"># include &quot;../core/intrinsic_geometric.hpp&quot;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#else</span>
<a name="l00024"></a>00024 <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="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span>
<a name="l00027"></a>00027 <span class="preprocessor">#if(defined(GLM_MESSAGES) &amp;&amp; !defined(glm_ext))</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_simd_vec4 extension included&quot;)</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a>00031 <span class="keyword">namespace </span>glm{
<a name="l00032"></a>00032 <span class="keyword">namespace </span>detail
<a name="l00033"></a>00033 {
<a name="l00036"></a>00036 <a class="code" href="a00291.html#ga7210a12f9861ab5585662dc1bf5a8221" title="4x4 Matrix implemented using SIMD SEE intrinsics.">GLM_ALIGNED_STRUCT</a>(16) fvec4SIMD
<a name="l00037"></a>00037 {
<a name="l00038"></a>00038 <span class="keyword">enum</span> ctor{null};
<a name="l00039"></a>00039 <span class="keyword">typedef</span> __m128 value_type;
<a name="l00040"></a>00040 <span class="keyword">typedef</span> std::size_t size_type;
<a name="l00041"></a>00041 <span class="keyword">static</span> size_type value_size();
<a name="l00042"></a>00042
<a name="l00043"></a>00043 <span class="keyword">typedef</span> fvec4SIMD type;
<a name="l00044"></a>00044 <span class="keyword">typedef</span> tvec4&lt;bool&gt; bool_type;
<a name="l00045"></a>00045
<a name="l00046"></a>00046 __m128 Data;
<a name="l00047"></a>00047
<a name="l00049"></a>00049 <span class="comment">// Implicit basic constructors</span>
<a name="l00050"></a>00050
<a name="l00051"></a>00051 fvec4SIMD();
<a name="l00052"></a>00052 fvec4SIMD(__m128 <span class="keyword">const</span> &amp; Data);
<a name="l00053"></a>00053 fvec4SIMD(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00054"></a>00054
<a name="l00056"></a>00056 <span class="comment">// Explicit basic constructors</span>
<a name="l00057"></a>00057
<a name="l00058"></a>00058 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00059"></a>00059 ctor);
<a name="l00060"></a>00060 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00061"></a>00061 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00062"></a>00062 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00063"></a>00063 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; x,
<a name="l00064"></a>00064 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y,
<a name="l00065"></a>00065 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; z,
<a name="l00066"></a>00066 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; w);
<a name="l00067"></a>00067 <span class="keyword">explicit</span> fvec4SIMD(
<a name="l00068"></a>00068 tvec4&lt;float&gt; <span class="keyword">const</span> &amp; v);
<a name="l00069"></a>00069
<a name="l00072"></a>00072
<a name="l00073"></a>00073 fvec4SIMD(<a class="code" href="a00235.html#gae0d1080e37fc58255cac2d521704ec60" 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="l00074"></a>00074 fvec4SIMD(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s1, <a class="code" href="a00235.html#gae0d1080e37fc58255cac2d521704ec60" 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="l00075"></a>00075 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="a00235.html#gae0d1080e37fc58255cac2d521704ec60" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v);
<a name="l00076"></a>00076 fvec4SIMD(<a class="code" href="a00235.html#gac422c7058a7c9963b55ad70764c62752" 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="l00077"></a>00077 fvec4SIMD(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s, <a class="code" href="a00235.html#gac422c7058a7c9963b55ad70764c62752" title="3 components vector of floating-point numbers.">vec3</a> <span class="keyword">const</span> &amp; v);
<a name="l00078"></a>00078 fvec4SIMD(<a class="code" href="a00235.html#gae0d1080e37fc58255cac2d521704ec60" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v1, <a class="code" href="a00235.html#gae0d1080e37fc58255cac2d521704ec60" title="2 components vector of floating-point numbers.">vec2</a> <span class="keyword">const</span> &amp; v2);
<a name="l00079"></a>00079 <span class="comment">//fvec4SIMD(ivec4SIMD const &amp; v);</span>
<a name="l00080"></a>00080
<a name="l00082"></a>00082 <span class="comment">// Unary arithmetic operators</span>
<a name="l00083"></a>00083
<a name="l00084"></a>00084 fvec4SIMD&amp; operator= (fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00085"></a>00085 fvec4SIMD&amp; operator+=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00086"></a>00086 fvec4SIMD&amp; operator-=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00087"></a>00087 fvec4SIMD&amp; operator*=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00088"></a>00088 fvec4SIMD&amp; operator/=(fvec4SIMD <span class="keyword">const</span> &amp; v);
<a name="l00089"></a>00089
<a name="l00090"></a>00090 fvec4SIMD&amp; operator+=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00091"></a>00091 fvec4SIMD&amp; operator-=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00092"></a>00092 fvec4SIMD&amp; operator*=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00093"></a>00093 fvec4SIMD&amp; operator/=(<span class="keywordtype">float</span> <span class="keyword">const</span> &amp; s);
<a name="l00094"></a>00094
<a name="l00095"></a>00095 fvec4SIMD&amp; operator++();
<a name="l00096"></a>00096 fvec4SIMD&amp; operator--();
<a name="l00097"></a>00097
<a name="l00099"></a>00099 <span class="comment">// Swizzle operators</span>
<a name="l00100"></a>00100
<a name="l00101"></a>00101 <span class="keyword">template</span> &lt;comp X, comp Y, comp Z, comp W&gt;
<a name="l00102"></a>00102 fvec4SIMD&amp; swizzle();
<a name="l00103"></a>00103 <span class="keyword">template</span> &lt;comp X, comp Y, comp Z, comp W&gt;
<a name="l00104"></a>00104 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00105"></a>00105 <span class="keyword">template</span> &lt;comp X, comp Y, comp Z&gt;
<a name="l00106"></a>00106 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00107"></a>00107 <span class="keyword">template</span> &lt;comp X, comp Y&gt;
<a name="l00108"></a>00108 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00109"></a>00109 <span class="keyword">template</span> &lt;comp X&gt;
<a name="l00110"></a>00110 fvec4SIMD swizzle() <span class="keyword">const</span>;
<a name="l00111"></a>00111 };
<a name="l00112"></a>00112 }<span class="comment">//namespace detail</span>
<a name="l00113"></a>00113
<a name="l00114"></a>00114 <span class="keyword">namespace </span>gtx{
<a name="l00115"></a><a class="code" href="a00215.html">00115</a> <span class="keyword">namespace </span>simd_vec4
<a name="l00116"></a>00116 {
<a name="l00117"></a>00117 <span class="keyword">typedef</span> glm::detail::fvec4SIMD simdVec4;
<a name="l00118"></a>00118
<a name="l00121"></a>00121
<a name="l00124"></a>00124 <a class="code" href="a00022.html" title="Basic 4D vector type.">detail::tvec4&lt;float&gt;</a> <a class="code" href="a00292.html#gaf44c64b2f9e70746b8a83571812670fc" title="Convert a simdVec4 to a vec4.">vec4_cast</a>(
<a name="l00125"></a>00125 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00126"></a>00126
<a name="l00129"></a>00129 detail::fvec4SIMD <a class="code" href="a00292.html#ga427e341830f94e41ece21ea4ebc854c3" title="Returns x if x &gt;= 0; otherwise, it returns -x.">abs</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00130"></a>00130
<a name="l00133"></a>00133 detail::fvec4SIMD <a class="code" href="a00292.html#ga5a32ecd67af075293c5c8278f2938d4d" 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="l00134"></a>00134
<a name="l00137"></a>00137 detail::fvec4SIMD <a class="code" href="a00292.html#gab7b1e6c9349aec87e1d3346e867588d6" 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="l00138"></a>00138
<a name="l00142"></a>00142 detail::fvec4SIMD <a class="code" href="a00292.html#ga4733720fa96ed2125f15e4b96578f486" 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="l00143"></a>00143
<a name="l00150"></a>00150 detail::fvec4SIMD <a class="code" href="a00292.html#gad17e750a691edfe51fd1f60d8cac2329" title="Returns a value equal to the nearest integer to x.">round</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00151"></a>00151
<a name="l00156"></a>00156 <span class="comment">//detail::fvec4SIMD roundEven(detail::fvec4SIMD const &amp; x);</span>
<a name="l00157"></a>00157
<a name="l00161"></a>00161 detail::fvec4SIMD <a class="code" href="a00292.html#ga3ce76f0bb739c0d5f04e7bfa4251993d" title="Returns a value equal to the nearest integer to x.">ceil</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00162"></a>00162
<a name="l00165"></a>00165 detail::fvec4SIMD <a class="code" href="a00292.html#ga0a98f9d76fee0ca46c1f97861e3e366c" title="Return x - floor(x).">fract</a>(detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00166"></a>00166
<a name="l00170"></a>00170 detail::fvec4SIMD <a class="code" href="a00292.html#gaf95a2c5c60a6f2a36911d32901e44aba" title="Modulus.">mod</a>(
<a name="l00171"></a>00171 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00172"></a>00172 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00173"></a>00173
<a name="l00177"></a>00177 detail::fvec4SIMD <a class="code" href="a00292.html#gaf95a2c5c60a6f2a36911d32901e44aba" title="Modulus.">mod</a>(
<a name="l00178"></a>00178 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00179"></a>00179 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y);
<a name="l00180"></a>00180
<a name="l00186"></a>00186 <span class="comment">//detail::fvec4SIMD modf(</span>
<a name="l00187"></a>00187 <span class="comment">// detail::fvec4SIMD const &amp; x, </span>
<a name="l00188"></a>00188 <span class="comment">// detail::fvec4SIMD &amp; i);</span>
<a name="l00189"></a>00189
<a name="l00192"></a>00192 detail::fvec4SIMD <a class="code" href="a00292.html#gac8850ebd4ae655de76f375105cf7b3d8" title="Returns the fractional part of x and sets i to the integer part (as a whole number floating point val...">min</a>(
<a name="l00193"></a>00193 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00194"></a>00194 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00195"></a>00195
<a name="l00196"></a>00196 detail::fvec4SIMD <a class="code" href="a00292.html#gac8850ebd4ae655de76f375105cf7b3d8" title="Returns the fractional part of x and sets i to the integer part (as a whole number floating point val...">min</a>(
<a name="l00197"></a>00197 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00198"></a>00198 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y);
<a name="l00199"></a>00199
<a name="l00202"></a>00202 detail::fvec4SIMD <a class="code" href="a00292.html#ga10dbe289232abf23c8d668c646ff05d6" title="Returns y if x &lt; y; otherwise, it returns x.">max</a>(
<a name="l00203"></a>00203 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00204"></a>00204 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00205"></a>00205
<a name="l00206"></a>00206 detail::fvec4SIMD <a class="code" href="a00292.html#ga10dbe289232abf23c8d668c646ff05d6" title="Returns y if x &lt; y; otherwise, it returns x.">max</a>(
<a name="l00207"></a>00207 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00208"></a>00208 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; y);
<a name="l00209"></a>00209
<a name="l00213"></a>00213 detail::fvec4SIMD <a class="code" href="a00292.html#ga73e895d1fdba2b620e84383517c552b0" title="Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...">clamp</a>(
<a name="l00214"></a>00214 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00215"></a>00215 detail::fvec4SIMD <span class="keyword">const</span> &amp; minVal,
<a name="l00216"></a>00216 detail::fvec4SIMD <span class="keyword">const</span> &amp; maxVal);
<a name="l00217"></a>00217
<a name="l00218"></a>00218 detail::fvec4SIMD <a class="code" href="a00292.html#ga73e895d1fdba2b620e84383517c552b0" title="Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...">clamp</a>(
<a name="l00219"></a>00219 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00220"></a>00220 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; minVal,
<a name="l00221"></a>00221 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; maxVal);
<a name="l00222"></a>00222
<a name="l00246"></a>00246 <span class="comment">// \todo Test when &#39;a&#39; is a boolean.</span>
<a name="l00248"></a>00248 <span class="comment"></span> detail::fvec4SIMD <a class="code" href="a00292.html#gafb120dd721c6b87f5f23c3edd159cfaa" title="(From GLM_GTX_simd_vec4 extension, common function)">mix</a>(
<a name="l00249"></a>00249 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00250"></a>00250 detail::fvec4SIMD <span class="keyword">const</span> &amp; y,
<a name="l00251"></a>00251 detail::fvec4SIMD <span class="keyword">const</span> &amp; a);
<a name="l00252"></a>00252
<a name="l00255"></a>00255 detail::fvec4SIMD <a class="code" href="a00292.html#ga459647604ac2aa0a97c4eb739a7302cb" title="Returns 0.0 if x &lt; edge, otherwise it returns 1.0.">step</a>(
<a name="l00256"></a>00256 detail::fvec4SIMD <span class="keyword">const</span> &amp; edge,
<a name="l00257"></a>00257 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00258"></a>00258
<a name="l00259"></a>00259 detail::fvec4SIMD <a class="code" href="a00292.html#ga459647604ac2aa0a97c4eb739a7302cb" title="Returns 0.0 if x &lt; edge, otherwise it returns 1.0.">step</a>(
<a name="l00260"></a>00260 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; edge,
<a name="l00261"></a>00261 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00262"></a>00262
<a name="l00273"></a>00273 detail::fvec4SIMD <a class="code" href="a00292.html#gaeadaacf6c87b0699292de98b7140a278" 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="l00274"></a>00274 detail::fvec4SIMD <span class="keyword">const</span> &amp; edge0,
<a name="l00275"></a>00275 detail::fvec4SIMD <span class="keyword">const</span> &amp; edge1,
<a name="l00276"></a>00276 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00277"></a>00277
<a name="l00278"></a>00278 detail::fvec4SIMD <a class="code" href="a00292.html#gaeadaacf6c87b0699292de98b7140a278" 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="l00279"></a>00279 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; edge0,
<a name="l00280"></a>00280 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; edge1,
<a name="l00281"></a>00281 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00282"></a>00282
<a name="l00289"></a>00289 <span class="comment">//bvec4 isnan(detail::fvec4SIMD const &amp; x);</span>
<a name="l00290"></a>00290
<a name="l00297"></a>00297 <span class="comment">//bvec4 isinf(detail::fvec4SIMD const &amp; x);</span>
<a name="l00298"></a>00298
<a name="l00303"></a>00303 <span class="comment">//detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const &amp; value);</span>
<a name="l00304"></a>00304
<a name="l00311"></a>00311 <span class="comment">//detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const &amp; value);</span>
<a name="l00312"></a>00312
<a name="l00315"></a>00315 detail::fvec4SIMD <a class="code" href="a00292.html#ga4b9f36f4524482b43324f4631944569d" title="Returns true if x holds a NaN (not a number) representation in the underlying implementation&#39;s set of...">fma</a>(
<a name="l00316"></a>00316 detail::fvec4SIMD <span class="keyword">const</span> &amp; a,
<a name="l00317"></a>00317 detail::fvec4SIMD <span class="keyword">const</span> &amp; b,
<a name="l00318"></a>00318 detail::fvec4SIMD <span class="keyword">const</span> &amp; c);
<a name="l00319"></a>00319
<a name="l00329"></a>00329 <span class="comment">//detail::fvec4SIMD frexp(detail::fvec4SIMD const &amp; x, detail::ivec4SIMD &amp; exp);</span>
<a name="l00330"></a>00330
<a name="l00337"></a>00337 <span class="comment">//detail::fvec4SIMD ldexp(detail::fvec4SIMD const &amp; x, detail::ivec4SIMD const &amp; exp);</span>
<a name="l00338"></a>00338
<a name="l00341"></a>00341 <span class="keywordtype">float</span> <a class="code" href="a00292.html#gaf76a38ce8c466c9b0bc4c1b5db1a6faa" title="Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two...">length</a>(
<a name="l00342"></a>00342 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00343"></a>00343
<a name="l00347"></a>00347 <span class="keywordtype">float</span> <a class="code" href="a00292.html#ga0d4469acfe98c8b2eab8696bf25a3dde" title="Returns the length of x, i.e., sqrt(x * x).">fastLength</a>(
<a name="l00348"></a>00348 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00349"></a>00349
<a name="l00353"></a>00353 <span class="keywordtype">float</span> <a class="code" href="a00292.html#ga97a71f5eed0feb541ea1131a46e4422e" title="Returns the length of x, i.e., sqrt(x * x).">niceLength</a>(
<a name="l00354"></a>00354 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00355"></a>00355
<a name="l00358"></a>00358 detail::fvec4SIMD <a class="code" href="a00292.html#ga6c7fffeb58db66f602585b24a8e4f2db" title="Returns the length of x, i.e., sqrt(x * x).">length4</a>(
<a name="l00359"></a>00359 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00360"></a>00360
<a name="l00364"></a>00364 detail::fvec4SIMD <a class="code" href="a00292.html#ga1c85830900d5d3f29902b12d46c60dd3" title="Returns the length of x, i.e., sqrt(x * x).">fastLength4</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 detail::fvec4SIMD <a class="code" href="a00292.html#ga159f5857abf0df4250bae94f95b9d015" title="Returns the length of x, i.e., sqrt(x * x).">niceLength4</a>(
<a name="l00371"></a>00371 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00372"></a>00372
<a name="l00375"></a>00375 <span class="keywordtype">float</span> <a class="code" href="a00292.html#gac514ca90bcc5a17bd7162ea32a220580" title="Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).">distance</a>(
<a name="l00376"></a>00376 detail::fvec4SIMD <span class="keyword">const</span> &amp; p0,
<a name="l00377"></a>00377 detail::fvec4SIMD <span class="keyword">const</span> &amp; p1);
<a name="l00378"></a>00378
<a name="l00381"></a>00381 detail::fvec4SIMD <a class="code" href="a00292.html#gae9238f5011fd124d44dad7b39f0d5a0f" title="Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).">distance4</a>(
<a name="l00382"></a>00382 detail::fvec4SIMD <span class="keyword">const</span> &amp; p0,
<a name="l00383"></a>00383 detail::fvec4SIMD <span class="keyword">const</span> &amp; p1);
<a name="l00384"></a>00384
<a name="l00387"></a>00387 <span class="keywordtype">float</span> <a class="code" href="a00292.html#ga44faf22be31f5809ed97bf611a56f3e9" title="Returns the dot product of x and y, i.e., result = x * y.">simdDot</a>(
<a name="l00388"></a>00388 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00389"></a>00389 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00390"></a>00390
<a name="l00393"></a>00393 detail::fvec4SIMD <a class="code" href="a00292.html#gaa50f94e3de246ea1a1914266aef2f74b" title="Returns the dot product of x and y, i.e., result = x * y.">dot4</a>(
<a name="l00394"></a>00394 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00395"></a>00395 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00396"></a>00396
<a name="l00399"></a>00399 detail::fvec4SIMD <a class="code" href="a00292.html#gabe4bd036ccfd0e1d53ea828d478cdd2c" title="Returns the cross product of x and y.">cross</a>(
<a name="l00400"></a>00400 detail::fvec4SIMD <span class="keyword">const</span> &amp; x,
<a name="l00401"></a>00401 detail::fvec4SIMD <span class="keyword">const</span> &amp; y);
<a name="l00402"></a>00402
<a name="l00405"></a>00405 detail::fvec4SIMD <a class="code" href="a00292.html#ga4e5cbc78bdd522b61ecd2154b50251af" title="Returns a vector in the same direction as x but with length of 1.">normalize</a>(
<a name="l00406"></a>00406 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00407"></a>00407
<a name="l00411"></a>00411 detail::fvec4SIMD <a class="code" href="a00292.html#ga58eeeead0d2b381f7d461dac26381125" title="Returns a vector in the same direction as x but with length of 1.">fastNormalize</a>(
<a name="l00412"></a>00412 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00413"></a>00413
<a name="l00416"></a>00416 detail::fvec4SIMD <a class="code" href="a00292.html#gac11cb08f6ba68f761b7146a60e72da55" title="If dot(Nref, I) &lt; 0.0, return N, otherwise, return -N.">simdFaceforward</a>(
<a name="l00417"></a>00417 detail::fvec4SIMD <span class="keyword">const</span> &amp; N,
<a name="l00418"></a>00418 detail::fvec4SIMD <span class="keyword">const</span> &amp; I,
<a name="l00419"></a>00419 detail::fvec4SIMD <span class="keyword">const</span> &amp; Nref);
<a name="l00420"></a>00420
<a name="l00424"></a>00424 detail::fvec4SIMD <a class="code" href="a00292.html#ga42f1073cf493e7c299c72ae95180265d" title="For the incident vector I and surface orientation N, returns the reflection direction : result = I - ...">reflect</a>(
<a name="l00425"></a>00425 detail::fvec4SIMD <span class="keyword">const</span> &amp; I,
<a name="l00426"></a>00426 detail::fvec4SIMD <span class="keyword">const</span> &amp; N);
<a name="l00427"></a>00427
<a name="l00432"></a>00432 detail::fvec4SIMD <a class="code" href="a00292.html#ga894c3ec0524d03313dc9c72d36290c00" title="For the incident vector I and surface normal N, and the ratio of indices of refraction eta...">refract</a>(
<a name="l00433"></a>00433 detail::fvec4SIMD <span class="keyword">const</span> &amp; I,
<a name="l00434"></a>00434 detail::fvec4SIMD <span class="keyword">const</span> &amp; N,
<a name="l00435"></a>00435 <span class="keywordtype">float</span> <span class="keyword">const</span> &amp; eta);
<a name="l00436"></a>00436
<a name="l00439"></a>00439 detail::fvec4SIMD <a class="code" href="a00292.html#ga28dbd1d165fc4301de4fb16a049fcfb2" title="Returns the positive square root of x.">sqrt</a>(
<a name="l00440"></a>00440 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00441"></a>00441
<a name="l00445"></a>00445 detail::fvec4SIMD <a class="code" href="a00292.html#ga163877845325804cda05e8b5142822d5" title="Returns the positive square root of x with the nicest quality but very slow.">niceSqrt</a>(
<a name="l00446"></a>00446 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00447"></a>00447
<a name="l00451"></a>00451 detail::fvec4SIMD <a class="code" href="a00292.html#ga56465ed17cafbff1e225f82eeb7184e5" title="Returns the positive square root of x Less accurate but much faster than sqrt.">fastSqrt</a>(
<a name="l00452"></a>00452 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00453"></a>00453
<a name="l00456"></a>00456 detail::fvec4SIMD <a class="code" href="a00292.html#gaa4e215b72e48012a6388a1477c84e2ad" title="Returns the reciprocal of the positive square root of x.">inversesqrt</a>(
<a name="l00457"></a>00457 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00458"></a>00458
<a name="l00462"></a>00462 detail::fvec4SIMD <a class="code" href="a00292.html#gab299477526abc9646263950bfbe32b3f" title="Returns the reciprocal of the positive square root of x.">fastInversesqrt</a>(
<a name="l00463"></a>00463 detail::fvec4SIMD <span class="keyword">const</span> &amp; x);
<a name="l00464"></a>00464
<a name="l00466"></a>00466 }<span class="comment">//namespace simd_vec4</span>
<a name="l00467"></a>00467 }<span class="comment">//namespace gtx</span>
<a name="l00468"></a>00468 }<span class="comment">//namespace glm</span>
<a name="l00469"></a>00469
<a name="l00470"></a>00470 <span class="preprocessor">#include &quot;simd_vec4.inl&quot;</span>
<a name="l00471"></a>00471
<a name="l00472"></a>00472 <span class="keyword">namespace </span>glm{<span class="keyword">using namespace </span>gtx::simd_vec4;}
<a name="l00473"></a>00473
<a name="l00474"></a>00474 <span class="preprocessor">#endif//glm_gtx_simd_vec4</span>
</pre></div></div>
</div>
<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.7.4 </small></address>
</body>
</html>