<divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment"> * This source code is licensed under the CC-by-NC license found in the</span></div>
<divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment"> * LICENSE file in the root directory of this source tree.</span></div>
<divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment">// Copyright 2004-present Facebook. All Rights Reserved.</span></div>
<divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment">// -*- c++ -*-</span></div>
<divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> <spanclass="comment">/** Defines a few objects that apply transformations to a set of</span></div>
<divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> <spanclass="comment"> * vectors Often these are pre-processing steps.</span></div>
<divclass="line"><aname="l00028"></a><spanclass="lineno"> 28</span> <spanclass="comment">/** Any transformation applied on a set of vectors */</span></div>
<divclass="line"><aname="l00041"></a><spanclass="lineno"> 41</span> <spanclass="comment"> /// set if the LinearTransform does not require training, or if</span></div>
<divclass="line"><aname="l00042"></a><spanclass="lineno"> 42</span> <spanclass="comment"> /// training is done already</span></div>
<divclass="line"><aname="l00046"></a><spanclass="lineno"> 46</span> <spanclass="comment"> /** Perform training on a representative set of vectors. Does</span></div>
<divclass="line"><aname="l00047"></a><spanclass="lineno"> 47</span> <spanclass="comment"> * nothing by default.</span></div>
<divclass="line"><aname="l00054"></a><spanclass="lineno"> 54</span> <spanclass="comment"> /** apply the random roation, return new allocated matrix</span></div>
<divclass="line"><aname="l00055"></a><spanclass="lineno"> 55</span> <spanclass="comment"> * @param x size n * d_in</span></div>
<divclass="line"><aname="l00056"></a><spanclass="lineno"> 56</span> <spanclass="comment"> * @return size n * d_out</span></div>
<divclass="line"><aname="l00060"></a><spanclass="lineno"> 60</span> <spanclass="comment"> /// same as apply, but result is pre-allocated</span></div>
<divclass="line"><aname="l00061"></a><spanclass="lineno"> 61</span> <spanclass="comment"></span><spanclass="keyword">virtual</span><spanclass="keywordtype">void</span><aclass="code"href="structfaiss_1_1VectorTransform.html#a90f1a218c224c049f1bd8b77a78d6aa0">apply_noalloc</a> (idx_t n, <spanclass="keyword">const</span><spanclass="keywordtype">float</span> * x,</div>
<divclass="line"><aname="l00064"></a><spanclass="lineno"> 64</span> <spanclass="comment"> /// reverse transformation. May not be implemented or may return</span></div>
<divclass="line"><aname="l00075"></a><spanclass="lineno"> 75</span> <spanclass="comment">/** Generic linear transformation, with bias term applied on output</span></div>
<divclass="line"><aname="l00076"></a><spanclass="lineno"> 76</span> <spanclass="comment"> * y = A * x + b</span></div>
<divclass="line"><aname="l00081"></a><spanclass="lineno"> 81</span> <spanclass="keywordtype">bool</span> have_bias; <spanclass="comment">///! whether to use the bias term</span></div>
<divclass="line"><aname="l00090"></a><spanclass="lineno"> 90</span> <spanclass="comment"> /// both d_in > d_out and d_out < d_in are supported</span></div>
<divclass="line"><aname="l00094"></a><spanclass="lineno"> 94</span> <spanclass="comment"> /// same as apply, but result is pre-allocated</span></div>
<divclass="line"><aname="l00095"></a><spanclass="lineno"> 95</span> <spanclass="comment"></span><spanclass="keyword">virtual</span><spanclass="keywordtype">void</span><aclass="code"href="structfaiss_1_1LinearTransform.html#ab1467253297ce7a3838a71769b3c86aa">apply_noalloc</a> (idx_t n, <spanclass="keyword">const</span><spanclass="keywordtype">float</span> * x,</div>
<divclass="line"><aname="l00099"></a><spanclass="lineno"> 99</span> <spanclass="comment"> /// is reverse transform if A has orthonormal lines</span></div>
<divclass="line"><aname="l00100"></a><spanclass="lineno"> 100</span> <spanclass="comment"></span><spanclass="keywordtype">void</span><aclass="code"href="structfaiss_1_1LinearTransform.html#a1642efca4f5eb524c29722b0441c4d13">transform_transpose</a> (idx_t n, <spanclass="keyword">const</span><spanclass="keywordtype">float</span> * y,</div>
<divclass="line"><aname="l00103"></a><spanclass="lineno"> 103</span> <spanclass="comment">// ratio between # training vectors and dimension</span></div>
<divclass="line"><aname="l00107"></a><spanclass="lineno"> 107</span> <spanclass="comment">// subsamples training set if there are too many vectors</span></div>
<divclass="line"><aname="l00120"></a><spanclass="lineno"> 120</span> <spanclass="comment"> /// both d_in > d_out and d_out < d_in are supported</span></div>
<divclass="line"><aname="l00124"></a><spanclass="lineno"> 124</span> <spanclass="comment"> /// must be called before the transform is used</span></div>
<divclass="line"><aname="l00134"></a><spanclass="lineno"> 134</span> <spanclass="comment">/** Applies a principal component analysis on a set of vectors,</span></div>
<divclass="line"><aname="l00135"></a><spanclass="lineno"> 135</span> <spanclass="comment"> * with optionally whitening and random rotation. */</span></div>
<divclass="line"><aname="l00138"></a><spanclass="lineno"> 138</span> <spanclass="comment"> /** after transformation the components are multiplied by</span></div>
<divclass="line"><aname="l00149"></a><spanclass="lineno"> 149</span> <spanclass="comment"> /// try to distribute output eigenvectors in this many bins</span></div>
<divclass="line"><aname="l00161"></a><spanclass="lineno"> 161</span> <spanclass="comment">// the final matrix is computed after random rotation and/or whitening</span></div>
<divclass="line"><aname="l00173"></a><spanclass="lineno"> 173</span> <spanclass="comment"> /// called after mean, PCAMat and eigenvalues are computed</span></div>
<divclass="line"><aname="l00180"></a><spanclass="lineno"> 180</span> <spanclass="comment">/** Applies a rotation to align the dimensions with a PQ to minimize</span></div>
<divclass="line"><aname="l00181"></a><spanclass="lineno"> 181</span> <spanclass="comment"> * the reconstruction error. Can be used before an IndexPQ or an</span></div>
<divclass="line"><aname="l00182"></a><spanclass="lineno"> 182</span> <spanclass="comment"> * IndexIVFPQ. The method is the non-parametric version described in:</span></div>
<divclass="line"><aname="l00190"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#a07ad0c0c84f96a6880c1c8eaf09596e3"> 190</a></span> <spanclass="keywordtype">int</span><aclass="code"href="structfaiss_1_1OPQMatrix.html#a07ad0c0c84f96a6880c1c8eaf09596e3">M</a>; <spanclass="comment">///< nb of subquantizers</span></div>
<divclass="line"><aname="l00191"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#a12cb3e05989dee37592b682070c31000"> 191</a></span> <spanclass="comment"></span><spanclass="keywordtype">int</span><aclass="code"href="structfaiss_1_1OPQMatrix.html#a12cb3e05989dee37592b682070c31000">niter</a>; <spanclass="comment">///< Number of outer training iterations</span></div>
<divclass="line"><aname="l00192"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#ab88c87a3931ec356904abf5f1f797a83"> 192</a></span> <spanclass="comment"></span><spanclass="keywordtype">int</span><aclass="code"href="structfaiss_1_1OPQMatrix.html#ab88c87a3931ec356904abf5f1f797a83">niter_pq</a>; <spanclass="comment">///< Number of training iterations for the PQ</span></div>
<divclass="line"><aname="l00193"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#a6406e97b05c831cc19b9343be3b43a1f"> 193</a></span> <spanclass="comment"></span><spanclass="keywordtype">int</span><aclass="code"href="structfaiss_1_1OPQMatrix.html#a6406e97b05c831cc19b9343be3b43a1f">niter_pq_0</a>; <spanclass="comment">///< same, for the first outer iteration</span></div>
<divclass="line"><aname="l00194"></a><spanclass="lineno"> 194</span> <spanclass="comment"></span><spanclass="comment"> /// if there are too many training points, resample</span></div>
<divclass="line"><aname="l00198"></a><spanclass="lineno"> 198</span> <spanclass="comment"> /// if d2 != -1, output vectors of this dimension</span></div>
<divclass="line"><aname="l00208"></a><spanclass="lineno"> 208</span> <spanclass="comment">/** remap dimensions for intput vectors, possibly inserting 0s</span></div>
<divclass="line"><aname="l00209"></a><spanclass="lineno"> 209</span> <spanclass="comment"> * strictly speaking this is also a linear transform but we don't want</span></div>
<divclass="line"><aname="l00210"></a><spanclass="lineno"> 210</span> <spanclass="comment"> * to compute it with matrix multiplies */</span></div>
<divclass="line"><aname="l00220"></a><spanclass="lineno"> 220</span> <spanclass="comment"> /// remap input to output, skipping or inserting dimensions as needed</span></div>
<divclass="line"><aname="l00221"></a><spanclass="lineno"> 221</span> <spanclass="comment"> /// if uniform: distribute dimensions uniformly</span></div>
<divclass="line"><aname="l00222"></a><spanclass="lineno"> 222</span> <spanclass="comment"> /// otherwise just take the d_out first ones.</span></div>
<divclass="line"><aname="l00228"></a><spanclass="lineno"> 228</span> <spanclass="comment"> /// reverse transform correct only when the mapping is a permuation</span></div>
<divclass="line"><aname="l00229"></a><spanclass="lineno"> 229</span> <spanclass="comment"></span><spanclass="keyword">virtual</span><spanclass="keywordtype">void</span><aclass="code"href="structfaiss_1_1RemapDimensionsTransform.html#a2fc83e79e4d3c7853bfd6931cbbaf82a">reverse_transform</a> (idx_t n, <spanclass="keyword">const</span><spanclass="keywordtype">float</span> * xt,</div>
<divclass="line"><aname="l00236"></a><spanclass="lineno"> 236</span> <spanclass="comment">/** Index that applies a LinearTransform transform on vectors before</span></div>
<divclass="line"><aname="l00237"></a><spanclass="lineno"> 237</span> <spanclass="comment"> * handing them over to a sub-index */</span></div>
<divclass="line"><aname="l00243"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1IndexPreTransform.html#ae5ec3f184eb211e7d6e204082b52c8c0"> 243</a></span> <spanclass="keywordtype">bool</span><aclass="code"href="structfaiss_1_1IndexPreTransform.html#ae5ec3f184eb211e7d6e204082b52c8c0">own_fields</a>; <spanclass="comment">///! whether pointers are deleted in destructor</span></div>
<divclass="line"><aname="l00249"></a><spanclass="lineno"> 249</span> <spanclass="comment"> /// ltrans is the last transform before the index</span></div>
<divclass="line"><aname="l00266"></a><spanclass="lineno"> 266</span> <spanclass="comment"> /** removes IDs from the index. Not supported by all indexes.</span></div>
<divclass="line"><aname="l00277"></a><spanclass="lineno"> 277</span> <spanclass="comment"> /// apply the transforms in the chain. The returned float * may be</span></div>
<divclass="line"><aname="l00278"></a><spanclass="lineno"> 278</span> <spanclass="comment"> /// equal to x, otherwise it should be deallocated.</span></div>
<divclass="line"><aname="l00279"></a><spanclass="lineno"> 279</span> <spanclass="comment"></span><spanclass="keyword">const</span><spanclass="keywordtype">float</span> * <aclass="code"href="structfaiss_1_1IndexPreTransform.html#aa773a5763ebdd1561152b34453fda96d">apply_chain</a> (<aclass="code"href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> n, <spanclass="keyword">const</span><spanclass="keywordtype">float</span> *x) <spanclass="keyword">const</span>;</div>
<divclass="ttc"id="structfaiss_1_1LinearTransform_html_a1642efca4f5eb524c29722b0441c4d13"><divclass="ttname"><ahref="structfaiss_1_1LinearTransform.html#a1642efca4f5eb524c29722b0441c4d13">faiss::LinearTransform::transform_transpose</a></div><divclass="ttdeci">void transform_transpose(idx_t n, const float *y, float *x) const </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00130">VectorTransform.cpp:130</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexPreTransform_html_aee3cbbe7915ec9ed13d59ca9276bdefc"><divclass="ttname"><ahref="structfaiss_1_1IndexPreTransform.html#aee3cbbe7915ec9ed13d59ca9276bdefc">faiss::IndexPreTransform::index</a></div><divclass="ttdeci">Index * index</div><divclass="ttdoc">! chain of tranforms </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00241">VectorTransform.h:241</a></div></div>
<divclass="ttc"id="structfaiss_1_1RandomRotationMatrix_html"><divclass="ttname"><ahref="structfaiss_1_1RandomRotationMatrix.html">faiss::RandomRotationMatrix</a></div><divclass="ttdoc">Randomly rotate a set of vectors. </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00118">VectorTransform.h:118</a></div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_a12cb3e05989dee37592b682070c31000"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#a12cb3e05989dee37592b682070c31000">faiss::OPQMatrix::niter</a></div><divclass="ttdeci">int niter</div><divclass="ttdoc">Number of outer training iterations. </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00191">VectorTransform.h:191</a></div></div>
<divclass="ttc"id="structfaiss_1_1RandomRotationMatrix_html_a64e406c8f73c7692bcf7d97b27305fc6"><divclass="ttname"><ahref="structfaiss_1_1RandomRotationMatrix.html#a64e406c8f73c7692bcf7d97b27305fc6">faiss::RandomRotationMatrix::RandomRotationMatrix</a></div><divclass="ttdeci">RandomRotationMatrix(int d_in, int d_out)</div><divclass="ttdoc">both d_in &gt; d_out and d_out &lt; d_in are supported </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00121">VectorTransform.h:121</a></div></div>
<divclass="ttc"id="structfaiss_1_1RandomRotationMatrix_html_a857ad8c32fb76b3298d4eea4338ff66f"><divclass="ttname"><ahref="structfaiss_1_1RandomRotationMatrix.html#a857ad8c32fb76b3298d4eea4338ff66f">faiss::RandomRotationMatrix::init</a></div><divclass="ttdeci">void init(int seed)</div><divclass="ttdoc">must be called before the transform is used </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00181">VectorTransform.cpp:181</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexPreTransform_html_a8e48ac9fde5e76e378553b2a6ec2c86e"><divclass="ttname"><ahref="structfaiss_1_1IndexPreTransform.html#a8e48ac9fde5e76e378553b2a6ec2c86e">faiss::IndexPreTransform::reset</a></div><divclass="ttdeci">virtual void reset() override</div><divclass="ttdoc">removes all elements from the database. </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00769">VectorTransform.cpp:769</a></div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_ab88c87a3931ec356904abf5f1f797a83"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#ab88c87a3931ec356904abf5f1f797a83">faiss::OPQMatrix::niter_pq</a></div><divclass="ttdeci">int niter_pq</div><divclass="ttdoc">Number of training iterations for the PQ. </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00192">VectorTransform.h:192</a></div></div>
<divclass="ttc"id="structfaiss_1_1LinearTransform_html_aa40e156ef57fe206cd5f3a58ec0660da"><divclass="ttname"><ahref="structfaiss_1_1LinearTransform.html#aa40e156ef57fe206cd5f3a58ec0660da">faiss::LinearTransform::A</a></div><divclass="ttdeci">std::vector< float > A</div><divclass="ttdoc">! whether to use the bias term </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00084">VectorTransform.h:84</a></div></div>
<divclass="ttc"id="structfaiss_1_1RemapDimensionsTransform_html_a09202a195ff5f75f83e68792751a637f"><divclass="ttname"><ahref="structfaiss_1_1RemapDimensionsTransform.html#a09202a195ff5f75f83e68792751a637f">faiss::RemapDimensionsTransform::map</a></div><divclass="ttdeci">std::vector< int > map</div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00216">VectorTransform.h:216</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexPreTransform_html_aa773a5763ebdd1561152b34453fda96d"><divclass="ttname"><ahref="structfaiss_1_1IndexPreTransform.html#aa773a5763ebdd1561152b34453fda96d">faiss::IndexPreTransform::apply_chain</a></div><divclass="ttdeci">const float * apply_chain(idx_t n, const float *x) const </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00726">VectorTransform.cpp:726</a></div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_a4c78b2247815c065ca3c76eec221cb49"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#a4c78b2247815c065ca3c76eec221cb49">faiss::OPQMatrix::max_points_per_d</a></div><divclass="ttdeci">int max_points_per_d</div><divclass="ttdoc">if there are too many training points, resample </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00195">VectorTransform.h:195</a></div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_a1e314577db0c6cd4a709503f73eb71e2"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#a1e314577db0c6cd4a709503f73eb71e2">faiss::OPQMatrix::train</a></div><divclass="ttdeci">virtual void train(Index::idx_t n, const float *x) override</div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00469">VectorTransform.cpp:469</a></div></div>
<divclass="ttc"id="structfaiss_1_1PCAMatrix_html_ac9a4c97b5861081dfd8ca5881bb1a677"><divclass="ttname"><ahref="structfaiss_1_1PCAMatrix.html#ac9a4c97b5861081dfd8ca5881bb1a677">faiss::PCAMatrix::balanced_bins</a></div><divclass="ttdeci">int balanced_bins</div><divclass="ttdoc">try to distribute output eigenvectors in this many bins </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00150">VectorTransform.h:150</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a040c6aed1f224f3ea7bf58eebc0c31a4"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">faiss::Index::idx_t</a></div><divclass="ttdeci">long idx_t</div><divclass="ttdoc">all indices are this type </div><divclass="ttdef"><b>Definition:</b><ahref="Index_8h_source.html#l00064">Index.h:64</a></div></div>
<divclass="ttc"id="structfaiss_1_1LinearTransform_html_ab1467253297ce7a3838a71769b3c86aa"><divclass="ttname"><ahref="structfaiss_1_1LinearTransform.html#ab1467253297ce7a3838a71769b3c86aa">faiss::LinearTransform::apply_noalloc</a></div><divclass="ttdeci">virtual void apply_noalloc(idx_t n, const float *x, float *xt) const </div><divclass="ttdoc">same as apply, but result is pre-allocated </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00101">VectorTransform.cpp:101</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexPreTransform_html_ae5ec3f184eb211e7d6e204082b52c8c0"><divclass="ttname"><ahref="structfaiss_1_1IndexPreTransform.html#ae5ec3f184eb211e7d6e204082b52c8c0">faiss::IndexPreTransform::own_fields</a></div><divclass="ttdeci">bool own_fields</div><divclass="ttdoc">! the sub-index </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00243">VectorTransform.h:243</a></div></div>
<divclass="ttc"id="structfaiss_1_1RemapDimensionsTransform_html_a2fc83e79e4d3c7853bfd6931cbbaf82a"><divclass="ttname"><ahref="structfaiss_1_1RemapDimensionsTransform.html#a2fc83e79e4d3c7853bfd6931cbbaf82a">faiss::RemapDimensionsTransform::reverse_transform</a></div><divclass="ttdeci">virtual void reverse_transform(idx_t n, const float *xt, float *x) const override</div><divclass="ttdoc">reverse transform correct only when the mapping is a permuation </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00848">VectorTransform.cpp:848</a></div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_a6eb9d18ff15b1c598d3aa3bc9ab84519"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#a6eb9d18ff15b1c598d3aa3bc9ab84519">faiss::OPQMatrix::OPQMatrix</a></div><divclass="ttdeci">OPQMatrix(int d=0, int M=1, int d2=-1)</div><divclass="ttdoc">if d2 != -1, output vectors of this dimension </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00457">VectorTransform.cpp:457</a></div></div>
<divclass="ttc"id="structfaiss_1_1PCAMatrix_html_a117a70b8fca6d125725fe49fddebf97b"><divclass="ttname"><ahref="structfaiss_1_1PCAMatrix.html#a117a70b8fca6d125725fe49fddebf97b">faiss::PCAMatrix::prepare_Ab</a></div><divclass="ttdeci">void prepare_Ab()</div><divclass="ttdoc">called after mean, PCAMat and eigenvalues are computed </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00349">VectorTransform.cpp:349</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexPreTransform_html_a03c77c582a3421952e2cba2057083059"><divclass="ttname"><ahref="structfaiss_1_1IndexPreTransform.html#a03c77c582a3421952e2cba2057083059">faiss::IndexPreTransform::add</a></div><divclass="ttdeci">virtual void add(idx_t n, const float *x) override</div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00737">VectorTransform.cpp:737</a></div></div>
<divclass="ttc"id="structfaiss_1_1RemapDimensionsTransform_html_a550be3d40c221d2134bf06a13dd33c4d"><divclass="ttname"><ahref="structfaiss_1_1RemapDimensionsTransform.html#a550be3d40c221d2134bf06a13dd33c4d">faiss::RemapDimensionsTransform::apply_noalloc</a></div><divclass="ttdeci">virtual void apply_noalloc(idx_t n, const float *x, float *xt) const override</div><divclass="ttdoc">same as apply, but result is pre-allocated </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00836">VectorTransform.cpp:836</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexPreTransform_html_a07fef0553b2ef2907f394470f61898b2"><divclass="ttname"><ahref="structfaiss_1_1IndexPreTransform.html#a07fef0553b2ef2907f394470f61898b2">faiss::IndexPreTransform::add_with_ids</a></div><divclass="ttdeci">virtual void add_with_ids(idx_t n, const float *x, const long *xids) override</div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00746">VectorTransform.cpp:746</a></div></div>
<divclass="ttc"id="structfaiss_1_1PCAMatrix_html_af111f055b7571703a3aa270d89e99321"><divclass="ttname"><ahref="structfaiss_1_1PCAMatrix.html#af111f055b7571703a3aa270d89e99321">faiss::PCAMatrix::random_rotation</a></div><divclass="ttdeci">bool random_rotation</div><divclass="ttdoc">random rotation after PCA </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00147">VectorTransform.h:147</a></div></div>
<divclass="ttc"id="structfaiss_1_1VectorTransform_html_af3b3a8bf95911f4b28128001c83f91a5"><divclass="ttname"><ahref="structfaiss_1_1VectorTransform.html#af3b3a8bf95911f4b28128001c83f91a5">faiss::VectorTransform::apply</a></div><divclass="ttdeci">float * apply(idx_t n, const float *x) const </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00068">VectorTransform.cpp:68</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexPreTransform_html_ad4e59f4dacc1d8183a788510680f0df5"><divclass="ttname"><ahref="structfaiss_1_1IndexPreTransform.html#ad4e59f4dacc1d8183a788510680f0df5">faiss::IndexPreTransform::remove_ids</a></div><divclass="ttdeci">virtual long remove_ids(const IDSelector &sel) override</div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8cpp_source.html#l00774">VectorTransform.cpp:774</a></div></div>
<divclass="ttc"id="structfaiss_1_1VectorTransform_html_a90f1a218c224c049f1bd8b77a78d6aa0"><divclass="ttname"><ahref="structfaiss_1_1VectorTransform.html#a90f1a218c224c049f1bd8b77a78d6aa0">faiss::VectorTransform::apply_noalloc</a></div><divclass="ttdeci">virtual void apply_noalloc(idx_t n, const float *x, float *xt) const =0</div><divclass="ttdoc">same as apply, but result is pre-allocated </div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_a07ad0c0c84f96a6880c1c8eaf09596e3"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#a07ad0c0c84f96a6880c1c8eaf09596e3">faiss::OPQMatrix::M</a></div><divclass="ttdeci">int M</div><divclass="ttdoc">nb of subquantizers </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00190">VectorTransform.h:190</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hrclass="footer"/><addressclass="footer"><small>
Generated by  <ahref="http://www.doxygen.org/index.html">