<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="l00115"></a><spanclass="lineno"> 115</span> <spanclass="comment"> /// both d_in > d_out and d_out < d_in are supported</span></div>
<divclass="line"><aname="l00119"></a><spanclass="lineno"> 119</span> <spanclass="comment"> /// must be called before the transform is used</span></div>
<divclass="line"><aname="l00129"></a><spanclass="lineno"> 129</span> <spanclass="comment">/** Applies a principal component analysis on a set of vectors,</span></div>
<divclass="line"><aname="l00130"></a><spanclass="lineno"> 130</span> <spanclass="comment"> * with optionally whitening and random rotation. */</span></div>
<divclass="line"><aname="l00133"></a><spanclass="lineno"> 133</span> <spanclass="comment"> /** after transformation the components are multiplied by</span></div>
<divclass="line"><aname="l00144"></a><spanclass="lineno"> 144</span> <spanclass="comment"> /// ratio between # training vectors and dimension</span></div>
<divclass="line"><aname="l00147"></a><spanclass="lineno"> 147</span> <spanclass="comment"> /// try to distribute output eigenvectors in this many bins</span></div>
<divclass="line"><aname="l00159"></a><spanclass="lineno"> 159</span> <spanclass="comment">// the final matrix is computed after random rotation and/or whitening</span></div>
<divclass="line"><aname="l00171"></a><spanclass="lineno"> 171</span> <spanclass="comment"> /// called after mean, PCAMat and eigenvalues are computed</span></div>
<divclass="line"><aname="l00178"></a><spanclass="lineno"> 178</span> <spanclass="comment">/** Applies a rotation to align the dimensions with a PQ to minimize</span></div>
<divclass="line"><aname="l00179"></a><spanclass="lineno"> 179</span> <spanclass="comment"> * the reconstruction error. Can be used before an IndexPQ or an</span></div>
<divclass="line"><aname="l00180"></a><spanclass="lineno"> 180</span> <spanclass="comment"> * IndexIVFPQ. The method is the non-parametric version described in:</span></div>
<divclass="line"><aname="l00188"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#a07ad0c0c84f96a6880c1c8eaf09596e3"> 188</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="l00189"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#a12cb3e05989dee37592b682070c31000"> 189</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="l00190"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#ab88c87a3931ec356904abf5f1f797a83"> 190</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="l00191"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1OPQMatrix.html#a6406e97b05c831cc19b9343be3b43a1f"> 191</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="l00193"></a><spanclass="lineno"> 193</span> <spanclass="comment"> /// if there are too many training points, resample</span></div>
<divclass="line"><aname="l00197"></a><spanclass="lineno"> 197</span> <spanclass="comment"> /// if d2 != -1, output vectors of this dimension</span></div>
<divclass="line"><aname="l00207"></a><spanclass="lineno"> 207</span> <spanclass="comment">/** remap dimensions for intput vectors, possibly inserting 0s</span></div>
<divclass="line"><aname="l00208"></a><spanclass="lineno"> 208</span> <spanclass="comment"> * strictly speaking this is also a linear transform but we don't want</span></div>
<divclass="line"><aname="l00209"></a><spanclass="lineno"> 209</span> <spanclass="comment"> * to compute it with matrix multiplies */</span></div>
<divclass="line"><aname="l00219"></a><spanclass="lineno"> 219</span> <spanclass="comment"> /// remap input to output, skipping or inserting dimensions as needed</span></div>
<divclass="line"><aname="l00220"></a><spanclass="lineno"> 220</span> <spanclass="comment"> /// if uniform: distribute dimensions uniformly</span></div>
<divclass="line"><aname="l00221"></a><spanclass="lineno"> 221</span> <spanclass="comment"> /// otherwise just take the d_out first ones.</span></div>
<divclass="line"><aname="l00227"></a><spanclass="lineno"> 227</span> <spanclass="comment"> /// reverse transform correct only when the mapping is a permuation</span></div>
<divclass="line"><aname="l00228"></a><spanclass="lineno"> 228</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="l00235"></a><spanclass="lineno"> 235</span> <spanclass="comment">/** Index that applies a LinearTransform transform on vectors before</span></div>
<divclass="line"><aname="l00236"></a><spanclass="lineno"> 236</span> <spanclass="comment"> * handing them over to a sub-index */</span></div>
<divclass="line"><aname="l00242"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1IndexPreTransform.html#ae5ec3f184eb211e7d6e204082b52c8c0"> 242</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="l00248"></a><spanclass="lineno"> 248</span> <spanclass="comment"> /// ltrans is the last transform before the index</span></div>
<divclass="line"><aname="l00265"></a><spanclass="lineno"> 265</span> <spanclass="comment"> /** removes IDs from the index. Not supported by all indexes.</span></div>
<divclass="line"><aname="l00276"></a><spanclass="lineno"> 276</span> <spanclass="comment"> /// apply the transforms in the chain. The returned float * may be</span></div>
<divclass="line"><aname="l00277"></a><spanclass="lineno"> 277</span> <spanclass="comment"> /// equal to x, otherwise it should be deallocated.</span></div>
<divclass="line"><aname="l00278"></a><spanclass="lineno"> 278</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_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#l00240">VectorTransform.h:240</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#l00113">VectorTransform.h:113</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#l00189">VectorTransform.h:189</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#l00116">VectorTransform.h:116</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#l00160">VectorTransform.cpp:160</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#l00751">VectorTransform.cpp:751</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#l00190">VectorTransform.h:190</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#l00215">VectorTransform.h:215</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#l00708">VectorTransform.cpp:708</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#l00450">VectorTransform.cpp:450</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#l00148">VectorTransform.h:148</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#l00242">VectorTransform.h:242</a></div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_a6406e97b05c831cc19b9343be3b43a1f"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#a6406e97b05c831cc19b9343be3b43a1f">faiss::OPQMatrix::niter_pq_0</a></div><divclass="ttdeci">int niter_pq_0</div><divclass="ttdoc">same, for the first outer iteration </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00191">VectorTransform.h:191</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#l00830">VectorTransform.cpp:830</a></div></div>
<divclass="ttc"id="structfaiss_1_1OPQMatrix_html_afdd5b2c74d19ccc5c7a6e0199333321a"><divclass="ttname"><ahref="structfaiss_1_1OPQMatrix.html#afdd5b2c74d19ccc5c7a6e0199333321a">faiss::OPQMatrix::max_train_points</a></div><divclass="ttdeci">size_t max_train_points</div><divclass="ttdoc">if there are too many training points, resample </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00194">VectorTransform.h:194</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#l00437">VectorTransform.cpp:437</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#l00329">VectorTransform.cpp:329</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#l00719">VectorTransform.cpp:719</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#l00818">VectorTransform.cpp:818</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#l00728">VectorTransform.cpp:728</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#l00142">VectorTransform.h:142</a></div></div>
<divclass="ttc"id="structfaiss_1_1PCAMatrix_html_abdce90f57a3c4401f5230f03da901e0d"><divclass="ttname"><ahref="structfaiss_1_1PCAMatrix.html#abdce90f57a3c4401f5230f03da901e0d">faiss::PCAMatrix::max_points_per_d</a></div><divclass="ttdeci">size_t max_points_per_d</div><divclass="ttdoc">ratio between # training vectors and dimension </div><divclass="ttdef"><b>Definition:</b><ahref="VectorTransform_8h_source.html#l00145">VectorTransform.h:145</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#l00188">VectorTransform.h:188</a></div></div>