faiss/docs/html/namespacefaiss.html

1843 lines
126 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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>Faiss: faiss Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Faiss
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">faiss Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1AutoTuneCriterion.html">AutoTuneCriterion</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1OneRecallAtRCriterion.html">OneRecallAtRCriterion</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IntersectionCriterion.html">IntersectionCriterion</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1OperatingPoint.html">OperatingPoint</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1OperatingPoints.html">OperatingPoints</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1ParameterRange.html">ParameterRange</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">possible values of a parameter, sorted from least to most expensive/accurate <a href="structfaiss_1_1ParameterRange.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1ParameterSpace.html">ParameterSpace</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1RangeSearchResult.html">RangeSearchResult</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IDSelector.html">IDSelector</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IDSelectorRange.html">IDSelectorRange</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IDSelectorBatch.html">IDSelectorBatch</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1BufferList.html">BufferList</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1RangeSearchPartialResult.html">RangeSearchPartialResult</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">the entries in the buffers are split per query <a href="structfaiss_1_1RangeSearchPartialResult.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1ClusteringParameters.html">ClusteringParameters</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1Clustering.html">Clustering</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputer4.html">HammingComputer4</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputer8.html">HammingComputer8</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputer16.html">HammingComputer16</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputer20.html">HammingComputer20</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputer32.html">HammingComputer32</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputer64.html">HammingComputer64</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputerM8.html">HammingComputerM8</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputerM4.html">HammingComputerM4</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HammingComputer.html">HammingComputer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1GenHammingComputer8.html">GenHammingComputer8</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1GenHammingComputer16.html">GenHammingComputer16</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1GenHammingComputer32.html">GenHammingComputer32</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1GenHammingComputerM8.html">GenHammingComputerM8</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1CMax.html">CMax</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1CMin.html">CMin</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1HeapArray.html">HeapArray</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1Index.html">Index</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1Cloner.html">Cloner</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexFlat.html">IndexFlat</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexFlatIP.html">IndexFlatIP</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexFlatL2.html">IndexFlatL2</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexFlatL2BaseShift.html">IndexFlatL2BaseShift</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexRefineFlat.html">IndexRefineFlat</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexFlat1D.html">IndexFlat1D</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">optimized version for 1D "vectors" <a href="structfaiss_1_1IndexFlat1D.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexIVF.html">IndexIVF</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexIVFFlat.html">IndexIVFFlat</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1CodeCmp.html">CodeCmp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexIVFPQ.html">IndexIVFPQ</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexIVFPQStats.html">IndexIVFPQStats</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexIVFPQR.html">IndexIVFPQR</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexIVFPQCompact.html">IndexIVFPQCompact</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexLSH.html">IndexLSH</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1ArgSort.html">ArgSort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1SortedArray.html">SortedArray</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1SemiSortedArray.html">SemiSortedArray</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1MinSumK.html">MinSumK</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexPQ.html">IndexPQ</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexPQStats.html">IndexPQStats</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1MultiIndexQuantizer.html">MultiIndexQuantizer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexIDMap.html">IndexIDMap</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexShards.html">IndexShards</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexSplitVectors.html">IndexSplitVectors</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1Score3Computer.html">Score3Computer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndirectSort.html">IndirectSort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1RankingScore2.html">RankingScore2</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1SimulatedAnnealingParameters.html">SimulatedAnnealingParameters</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">parameters used for the simulated annealing method <a href="structfaiss_1_1SimulatedAnnealingParameters.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1PermutationObjective.html">PermutationObjective</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">abstract class for the loss function <a href="structfaiss_1_1PermutationObjective.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1ReproduceDistancesObjective.html">ReproduceDistancesObjective</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1SimulatedAnnealingOptimizer.html">SimulatedAnnealingOptimizer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simulated annealing optimization algorithm for permutations. <a href="structfaiss_1_1SimulatedAnnealingOptimizer.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1PolysemousTraining.html">PolysemousTraining</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">optimizes the order of indices in a <a class="el" href="structfaiss_1_1ProductQuantizer.html">ProductQuantizer</a> <a href="structfaiss_1_1PolysemousTraining.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1ProductQuantizer.html">ProductQuantizer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1NopDistanceCorrection.html">NopDistanceCorrection</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1BaseShiftDistanceCorrection.html">BaseShiftDistanceCorrection</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1RandomGenerator.html">RandomGenerator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">random generator that can be used in multithreaded contexts <a href="structfaiss_1_1RandomGenerator.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1VectorTransform.html">VectorTransform</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1LinearTransform.html">LinearTransform</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1RandomRotationMatrix.html">RandomRotationMatrix</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Randomly rotate a set of vectors. <a href="structfaiss_1_1RandomRotationMatrix.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1PCAMatrix.html">PCAMatrix</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1OPQMatrix.html">OPQMatrix</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1RemapDimensionsTransform.html">RemapDimensionsTransform</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfaiss_1_1IndexPreTransform.html">IndexPreTransform</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ab1048e8626c8177397ec0c90109f60f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1048e8626c8177397ec0c90109f60f8"></a>
typedef <a class="el" href="structfaiss_1_1HeapArray.html">HeapArray</a>&lt; <a class="el" href="structfaiss_1_1CMin.html">CMin</a>&lt; float, <br class="typebreak"/>
long &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>float_minheap_array_t</b></td></tr>
<tr class="separator:ab1048e8626c8177397ec0c90109f60f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94a5e78e82662bd4c077aeac092b2502"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94a5e78e82662bd4c077aeac092b2502"></a>
typedef <a class="el" href="structfaiss_1_1HeapArray.html">HeapArray</a>&lt; <a class="el" href="structfaiss_1_1CMin.html">CMin</a>&lt; int, <br class="typebreak"/>
long &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>int_minheap_array_t</b></td></tr>
<tr class="separator:a94a5e78e82662bd4c077aeac092b2502"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e7691e2264000b90e81dd00c8b2a331"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e7691e2264000b90e81dd00c8b2a331"></a>
typedef <a class="el" href="structfaiss_1_1HeapArray.html">HeapArray</a>&lt; <a class="el" href="structfaiss_1_1CMax.html">CMax</a>&lt; float, <br class="typebreak"/>
long &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>float_maxheap_array_t</b></td></tr>
<tr class="separator:a9e7691e2264000b90e81dd00c8b2a331"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca6dab2ebae3c66f1bc2bfe5c194a7ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca6dab2ebae3c66f1bc2bfe5c194a7ae"></a>
typedef <a class="el" href="structfaiss_1_1HeapArray.html">HeapArray</a>&lt; <a class="el" href="structfaiss_1_1CMax.html">CMax</a>&lt; int, <br class="typebreak"/>
long &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>int_maxheap_array_t</b></td></tr>
<tr class="separator:aca6dab2ebae3c66f1bc2bfe5c194a7ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:afd12191c638da74760ff397cf319752c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#afd12191c638da74760ff397cf319752c">MetricType</a> { <b>METRIC_INNER_PRODUCT</b> = 0,
<b>METRIC_L2</b> = 1
}</td></tr>
<tr class="memdesc:afd12191c638da74760ff397cf319752c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Some algorithms support both an inner product vetsion and a L2 search version. <br/></td></tr>
<tr class="separator:afd12191c638da74760ff397cf319752c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a0c95ec47726f2ce3fb668dcb1f9a3317"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structfaiss_1_1Index.html">Index</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a0c95ec47726f2ce3fb668dcb1f9a3317">index_factory</a> (int d, const char *description_in, <a class="el" href="namespacefaiss.html#afd12191c638da74760ff397cf319752c">MetricType</a> metric)</td></tr>
<tr class="separator:a0c95ec47726f2ce3fb668dcb1f9a3317"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38bd0dde8a1b229201a5fcb64d05daa6"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a38bd0dde8a1b229201a5fcb64d05daa6">kmeans_clustering</a> (size_t d, size_t n, size_t k, const float *x, float *centroids)</td></tr>
<tr class="separator:a38bd0dde8a1b229201a5fcb64d05daa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ae1b2a404a4f618609a5b87eecc344b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6ae1b2a404a4f618609a5b87eecc344b"></a>
template&lt;size_t nbits, typename T &gt; </td></tr>
<tr class="memitem:a6ae1b2a404a4f618609a5b87eecc344b"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><b>hamming</b> (const uint8_t *bs1, const uint8_t *bs2)</td></tr>
<tr class="separator:a6ae1b2a404a4f618609a5b87eecc344b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a866a1991153d86e11e93d22b1567d578"><td class="memTemplParams" colspan="2"><a class="anchor" id="a866a1991153d86e11e93d22b1567d578"></a>
template&lt;size_t nbits&gt; </td></tr>
<tr class="memitem:a866a1991153d86e11e93d22b1567d578"><td class="memTemplItemLeft" align="right" valign="top">hamdis_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>hamming</b> (const uint64_t *bs1, const uint64_t *bs2)</td></tr>
<tr class="separator:a866a1991153d86e11e93d22b1567d578"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a020c4142c2661fa5387255c73e1b3510"><td class="memTemplParams" colspan="2"><a class="anchor" id="a020c4142c2661fa5387255c73e1b3510"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a020c4142c2661fa5387255c73e1b3510"><td class="memTemplItemLeft" align="right" valign="top">hamdis_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>hamming&lt; 64 &gt;</b> (const uint64_t *pa, const uint64_t *pb)</td></tr>
<tr class="separator:a020c4142c2661fa5387255c73e1b3510"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a251cd1d86f57ca5499d939d3f5ae093e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a251cd1d86f57ca5499d939d3f5ae093e"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a251cd1d86f57ca5499d939d3f5ae093e"><td class="memTemplItemLeft" align="right" valign="top">hamdis_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>hamming&lt; 128 &gt;</b> (const uint64_t *pa, const uint64_t *pb)</td></tr>
<tr class="separator:a251cd1d86f57ca5499d939d3f5ae093e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d4176559a9c361225a047c03f62d648"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d4176559a9c361225a047c03f62d648"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a8d4176559a9c361225a047c03f62d648"><td class="memTemplItemLeft" align="right" valign="top">hamdis_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>hamming&lt; 256 &gt;</b> (const uint64_t *pa, const uint64_t *pb)</td></tr>
<tr class="separator:a8d4176559a9c361225a047c03f62d648"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af860acfd5b9adbb6a50d4b458d0df8b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af860acfd5b9adbb6a50d4b458d0df8b7"></a>
hamdis_t&#160;</td><td class="memItemRight" valign="bottom"><b>hamming</b> (const uint64_t *bs1, const uint64_t *bs2, size_t nwords)</td></tr>
<tr class="separator:af860acfd5b9adbb6a50d4b458d0df8b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ab3ff3b742c0931338befb5968b3ca3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5ab3ff3b742c0931338befb5968b3ca3"></a>
template&lt;size_t nbits&gt; </td></tr>
<tr class="memitem:a5ab3ff3b742c0931338befb5968b3ca3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>hammings</b> (const uint64_t *bs1, const uint64_t *bs2, size_t n1, size_t n2, hamdis_t *dis)</td></tr>
<tr class="separator:a5ab3ff3b742c0931338befb5968b3ca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8b915d9be5f42ccf53fa6bd202f0d63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8b915d9be5f42ccf53fa6bd202f0d63"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>hammings</b> (const uint64_t *bs1, const uint64_t *bs2, size_t n1, size_t n2, size_t nwords, hamdis_t *__restrict dis)</td></tr>
<tr class="separator:ac8b915d9be5f42ccf53fa6bd202f0d63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6219abead5068a666182957770f52e3"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad6219abead5068a666182957770f52e3"></a>
template&lt;size_t nbits&gt; </td></tr>
<tr class="memitem:ad6219abead5068a666182957770f52e3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>hamming_count_thres</b> (const uint64_t *bs1, const uint64_t *bs2, size_t n1, size_t n2, hamdis_t ht, size_t *nptr)</td></tr>
<tr class="separator:ad6219abead5068a666182957770f52e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbf295e8e60fc0afe10315c9b5312ded"><td class="memTemplParams" colspan="2"><a class="anchor" id="afbf295e8e60fc0afe10315c9b5312ded"></a>
template&lt;size_t nbits&gt; </td></tr>
<tr class="memitem:afbf295e8e60fc0afe10315c9b5312ded"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>crosshamming_count_thres</b> (const uint64_t *dbs, size_t n, int ht, size_t *nptr)</td></tr>
<tr class="separator:afbf295e8e60fc0afe10315c9b5312ded"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01762c2ee39fe30bf177d3e11eba5c38"><td class="memTemplParams" colspan="2"><a class="anchor" id="a01762c2ee39fe30bf177d3e11eba5c38"></a>
template&lt;size_t nbits&gt; </td></tr>
<tr class="memitem:a01762c2ee39fe30bf177d3e11eba5c38"><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>match_hamming_thres</b> (const uint64_t *bs1, const uint64_t *bs2, size_t n1, size_t n2, int ht, long *idx, hamdis_t *hams)</td></tr>
<tr class="separator:a01762c2ee39fe30bf177d3e11eba5c38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afde8c1f96d4c776b101dd67cc0064c3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afde8c1f96d4c776b101dd67cc0064c3d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec2bitvec</b> (const float *x, uint8_t *b, size_t d)</td></tr>
<tr class="separator:afde8c1f96d4c776b101dd67cc0064c3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a224890519ae5efe7a3c8cdf94bda60e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a224890519ae5efe7a3c8cdf94bda60e9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvecs2bitvecs</b> (const float *x, uint8_t *b, size_t d, size_t n)</td></tr>
<tr class="separator:a224890519ae5efe7a3c8cdf94bda60e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e10b0864a93653945dbd950b9fcdacf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e10b0864a93653945dbd950b9fcdacf"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>bitvec_print</b> (const uint8_t *b, size_t d)</td></tr>
<tr class="separator:a0e10b0864a93653945dbd950b9fcdacf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9962e3db5bf5e276950685a587b37a94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9962e3db5bf5e276950685a587b37a94"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>hammings</b> (const uint8_t *a, const uint8_t *b, size_t na, size_t nb, size_t ncodes, hamdis_t *__restrict dis)</td></tr>
<tr class="separator:a9962e3db5bf5e276950685a587b37a94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57fbe98f92f64f97dc13a34f76290eea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57fbe98f92f64f97dc13a34f76290eea"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>hammings_knn_core</b> (<a class="el" href="structfaiss_1_1HeapArray.html">int_maxheap_array_t</a> *ha, const uint8_t *a, const uint8_t *b, size_t nb, size_t ncodes)</td></tr>
<tr class="separator:a57fbe98f92f64f97dc13a34f76290eea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0b4dc73a8470d61f510396dc460ca18"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#ac0b4dc73a8470d61f510396dc460ca18">hammings_knn</a> (<a class="el" href="structfaiss_1_1HeapArray.html">int_maxheap_array_t</a> *ha, const uint8_t *a, const uint8_t *b, size_t nb, size_t ncodes, int order)</td></tr>
<tr class="separator:ac0b4dc73a8470d61f510396dc460ca18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac713458e556afa5bd612b88944292d65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac713458e556afa5bd612b88944292d65"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>hamming_count_thres</b> (const uint8_t *bs1, const uint8_t *bs2, size_t n1, size_t n2, hamdis_t ht, size_t ncodes, size_t *nptr)</td></tr>
<tr class="separator:ac713458e556afa5bd612b88944292d65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a399cfe2b1a7b2e3d722e10654c164ae0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a399cfe2b1a7b2e3d722e10654c164ae0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>crosshamming_count_thres</b> (const uint8_t *dbs, size_t n, hamdis_t ht, size_t ncodes, size_t *nptr)</td></tr>
<tr class="separator:a399cfe2b1a7b2e3d722e10654c164ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9569826dd5f45d9bbf4933877862a9fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9569826dd5f45d9bbf4933877862a9fd"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>match_hamming_thres</b> (const uint8_t *bs1, const uint8_t *bs2, size_t n1, size_t n2, hamdis_t ht, size_t ncodes, long *idx, hamdis_t *dis)</td></tr>
<tr class="separator:a9569826dd5f45d9bbf4933877862a9fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae81da42f6f40356f7525917b3acb54c8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#ae81da42f6f40356f7525917b3acb54c8">generalized_hammings_knn</a> (<a class="el" href="structfaiss_1_1HeapArray.html">int_maxheap_array_t</a> *ha, const uint8_t *a, const uint8_t *b, size_t nb, size_t code_size, int ordered)</td></tr>
<tr class="separator:ae81da42f6f40356f7525917b3acb54c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d2125afc95e3417b270cb9428f8e0ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d2125afc95e3417b270cb9428f8e0ef"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>popcount64</b> (uint64_t x)</td></tr>
<tr class="separator:a7d2125afc95e3417b270cb9428f8e0ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0832c5ab58f4d1a340b0bde273c5b501"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a0832c5ab58f4d1a340b0bde273c5b501">hammings</a> (const uint8_t *a, const uint8_t *b, size_t na, size_t nb, size_t nbytespercode, hamdis_t *dis)</td></tr>
<tr class="separator:a0832c5ab58f4d1a340b0bde273c5b501"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c20def47976af19292a160b2ec551d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c20def47976af19292a160b2ec551d2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SPECIALIZED_HC</b> (4)</td></tr>
<tr class="separator:a3c20def47976af19292a160b2ec551d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb4e4208ec84a403e02dba1b18b29840"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb4e4208ec84a403e02dba1b18b29840"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SPECIALIZED_HC</b> (8)</td></tr>
<tr class="separator:acb4e4208ec84a403e02dba1b18b29840"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a138c0f4e83d2e8b7fdd90ef895f8c6f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a138c0f4e83d2e8b7fdd90ef895f8c6f2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SPECIALIZED_HC</b> (16)</td></tr>
<tr class="separator:a138c0f4e83d2e8b7fdd90ef895f8c6f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a965aa1292a3957feaaec0f4ed1b54f85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a965aa1292a3957feaaec0f4ed1b54f85"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SPECIALIZED_HC</b> (20)</td></tr>
<tr class="separator:a965aa1292a3957feaaec0f4ed1b54f85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69f0b96e4d8c59be97ee73aedafac0a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69f0b96e4d8c59be97ee73aedafac0a2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SPECIALIZED_HC</b> (32)</td></tr>
<tr class="separator:a69f0b96e4d8c59be97ee73aedafac0a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadcee2efcbb11d2c1d284589ba12b8ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadcee2efcbb11d2c1d284589ba12b8ae"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SPECIALIZED_HC</b> (64)</td></tr>
<tr class="separator:aadcee2efcbb11d2c1d284589ba12b8ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69337e23232a204be3e1464713fee62d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69337e23232a204be3e1464713fee62d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>generalized_hamming_64</b> (uint64_t a)</td></tr>
<tr class="separator:a69337e23232a204be3e1464713fee62d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d40aec5723474516de576263cc03048"><td class="memTemplParams" colspan="2">template&lt;class C &gt; </td></tr>
<tr class="memitem:a1d40aec5723474516de576263cc03048"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a1d40aec5723474516de576263cc03048">heap_pop</a> (size_t k, typename C::T *bh_val, typename C::TI *bh_ids)</td></tr>
<tr class="separator:a1d40aec5723474516de576263cc03048"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbe85976d4f73309622f6b62c4d7af2b"><td class="memTemplParams" colspan="2">template&lt;class C &gt; </td></tr>
<tr class="memitem:acbe85976d4f73309622f6b62c4d7af2b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#acbe85976d4f73309622f6b62c4d7af2b">heap_push</a> (size_t k, typename C::T *bh_val, typename C::TI *bh_ids, typename C::T val, typename C::TI ids)</td></tr>
<tr class="separator:acbe85976d4f73309622f6b62c4d7af2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7518ec4c13865a4860429899a8c96d25"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7518ec4c13865a4860429899a8c96d25"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7518ec4c13865a4860429899a8c96d25"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>minheap_pop</b> (size_t k, T *bh_val, long *bh_ids)</td></tr>
<tr class="separator:a7518ec4c13865a4860429899a8c96d25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a549c638312ecdb0eebed275d6fc0b08f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a549c638312ecdb0eebed275d6fc0b08f"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a549c638312ecdb0eebed275d6fc0b08f"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>minheap_push</b> (size_t k, T *bh_val, long *bh_ids, T val, long ids)</td></tr>
<tr class="separator:a549c638312ecdb0eebed275d6fc0b08f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1b226e3626cfdecba6db1e9ac68f18a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad1b226e3626cfdecba6db1e9ac68f18a"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad1b226e3626cfdecba6db1e9ac68f18a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>maxheap_pop</b> (size_t k, T *bh_val, long *bh_ids)</td></tr>
<tr class="separator:ad1b226e3626cfdecba6db1e9ac68f18a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac905d8159b8453e3e525204c66b28aae"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac905d8159b8453e3e525204c66b28aae"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac905d8159b8453e3e525204c66b28aae"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>maxheap_push</b> (size_t k, T *bh_val, long *bh_ids, T val, long ids)</td></tr>
<tr class="separator:ac905d8159b8453e3e525204c66b28aae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8617ea308e081aed83d4a084a9d31f70"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8617ea308e081aed83d4a084a9d31f70"></a>
template&lt;class C &gt; </td></tr>
<tr class="memitem:a8617ea308e081aed83d4a084a9d31f70"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>heap_heapify</b> (size_t k, typename C::T *bh_val, typename C::TI *bh_ids, const typename C::T *x=nullptr, const typename C::TI *ids=nullptr, size_t k0=0)</td></tr>
<tr class="separator:a8617ea308e081aed83d4a084a9d31f70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a099a7f4bb3ec3f961ff7084b863ee867"><td class="memTemplParams" colspan="2"><a class="anchor" id="a099a7f4bb3ec3f961ff7084b863ee867"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a099a7f4bb3ec3f961ff7084b863ee867"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>minheap_heapify</b> (size_t k, T *bh_val, long *bh_ids, const T *x=nullptr, const long *ids=nullptr, size_t k0=0)</td></tr>
<tr class="separator:a099a7f4bb3ec3f961ff7084b863ee867"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f59bc94a944798de93c1315c298d6c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4f59bc94a944798de93c1315c298d6c8"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4f59bc94a944798de93c1315c298d6c8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>maxheap_heapify</b> (size_t k, T *bh_val, long *bh_ids, const T *x=nullptr, const long *ids=nullptr, size_t k0=0)</td></tr>
<tr class="separator:a4f59bc94a944798de93c1315c298d6c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa5c2b8f24eb244fb064af0c7d853422"><td class="memTemplParams" colspan="2"><a class="anchor" id="afa5c2b8f24eb244fb064af0c7d853422"></a>
template&lt;class C &gt; </td></tr>
<tr class="memitem:afa5c2b8f24eb244fb064af0c7d853422"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>heap_addn</b> (size_t k, typename C::T *bh_val, typename C::TI *bh_ids, const typename C::T *x, const typename C::TI *ids, size_t n)</td></tr>
<tr class="separator:afa5c2b8f24eb244fb064af0c7d853422"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7ba34d7d099ca3f410f9b07b633b194"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa7ba34d7d099ca3f410f9b07b633b194"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa7ba34d7d099ca3f410f9b07b633b194"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>minheap_addn</b> (size_t k, T *bh_val, long *bh_ids, const T *x, const long *ids, size_t n)</td></tr>
<tr class="separator:aa7ba34d7d099ca3f410f9b07b633b194"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e0519b23a4473f557b72cded5b73647"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4e0519b23a4473f557b72cded5b73647"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4e0519b23a4473f557b72cded5b73647"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>maxheap_addn</b> (size_t k, T *bh_val, long *bh_ids, const T *x, const long *ids, size_t n)</td></tr>
<tr class="separator:a4e0519b23a4473f557b72cded5b73647"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e69334ccd78982042a6210c743d0418"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4e69334ccd78982042a6210c743d0418"></a>
template&lt;typename C &gt; </td></tr>
<tr class="memitem:a4e69334ccd78982042a6210c743d0418"><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>heap_reorder</b> (size_t k, typename C::T *bh_val, typename C::TI *bh_ids)</td></tr>
<tr class="separator:a4e69334ccd78982042a6210c743d0418"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9231a772f9c6a87f03162a16e49fdc61"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9231a772f9c6a87f03162a16e49fdc61"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a9231a772f9c6a87f03162a16e49fdc61"><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>minheap_reorder</b> (size_t k, T *bh_val, long *bh_ids)</td></tr>
<tr class="separator:a9231a772f9c6a87f03162a16e49fdc61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb31108ab96628b124e5cd72d0183b2e"><td class="memTemplParams" colspan="2"><a class="anchor" id="adb31108ab96628b124e5cd72d0183b2e"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:adb31108ab96628b124e5cd72d0183b2e"><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><b>maxheap_reorder</b> (size_t k, T *bh_val, long *bh_ids)</td></tr>
<tr class="separator:adb31108ab96628b124e5cd72d0183b2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab39977a9b0d876f912d6d7b09f9f3d18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab39977a9b0d876f912d6d7b09f9f3d18"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>write_VectorTransform</b> (const <a class="el" href="structfaiss_1_1VectorTransform.html">VectorTransform</a> *vt, FILE *f)</td></tr>
<tr class="separator:ab39977a9b0d876f912d6d7b09f9f3d18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeecb2752b0d13ace2d17ebc0189e9ea3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeecb2752b0d13ace2d17ebc0189e9ea3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>write_ProductQuantizer</b> (const <a class="el" href="structfaiss_1_1ProductQuantizer.html">ProductQuantizer</a> *pq, const char *fname)</td></tr>
<tr class="separator:aeecb2752b0d13ace2d17ebc0189e9ea3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add675e330da6a82b27101862206de6c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add675e330da6a82b27101862206de6c2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>write_index</b> (const <a class="el" href="structfaiss_1_1Index.html">Index</a> *idx, FILE *f)</td></tr>
<tr class="separator:add675e330da6a82b27101862206de6c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa41490abaa2dad0dd2131150ed99ef8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa41490abaa2dad0dd2131150ed99ef8d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>write_index</b> (const <a class="el" href="structfaiss_1_1Index.html">Index</a> *idx, const char *fname)</td></tr>
<tr class="separator:aa41490abaa2dad0dd2131150ed99ef8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad72efd9404a8058159f1ae48225a2d94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad72efd9404a8058159f1ae48225a2d94"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>write_VectorTransform</b> (const <a class="el" href="structfaiss_1_1VectorTransform.html">VectorTransform</a> *vt, const char *fname)</td></tr>
<tr class="separator:ad72efd9404a8058159f1ae48225a2d94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a303b95b7a7eb474965f65f59f87626a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a303b95b7a7eb474965f65f59f87626a3"></a>
<a class="el" href="structfaiss_1_1VectorTransform.html">VectorTransform</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>read_VectorTransform</b> (FILE *f)</td></tr>
<tr class="separator:a303b95b7a7eb474965f65f59f87626a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a818fa626e2368301ccf872b7ba65383a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a818fa626e2368301ccf872b7ba65383a"></a>
<a class="el" href="structfaiss_1_1ProductQuantizer.html">ProductQuantizer</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>read_ProductQuantizer</b> (const char *fname)</td></tr>
<tr class="separator:a818fa626e2368301ccf872b7ba65383a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa46fe38a858ecfde7e0fc0744939d5ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structfaiss_1_1Index.html">Index</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#aa46fe38a858ecfde7e0fc0744939d5ad">read_index</a> (FILE *f, bool try_mmap)</td></tr>
<tr class="separator:aa46fe38a858ecfde7e0fc0744939d5ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70cfb0fb5ec10bfef6f3ae0ec7c13ee7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70cfb0fb5ec10bfef6f3ae0ec7c13ee7"></a>
<a class="el" href="structfaiss_1_1Index.html">Index</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>read_index</b> (const char *fname, bool try_mmap)</td></tr>
<tr class="separator:a70cfb0fb5ec10bfef6f3ae0ec7c13ee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73e97b42d11f03a68bfda4ad5c569dd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73e97b42d11f03a68bfda4ad5c569dd1"></a>
<a class="el" href="structfaiss_1_1VectorTransform.html">VectorTransform</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>read_VectorTransform</b> (const char *fname)</td></tr>
<tr class="separator:a73e97b42d11f03a68bfda4ad5c569dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3143984f302f56032b80948ddebc62af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3143984f302f56032b80948ddebc62af"></a>
<a class="el" href="structfaiss_1_1Index.html">Index</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>clone_index</b> (const <a class="el" href="structfaiss_1_1Index.html">Index</a> *index)</td></tr>
<tr class="separator:a3143984f302f56032b80948ddebc62af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c5553442c8b9342a0ad449e2b67f275"><td class="memTemplParams" colspan="2">template&lt;class C &gt; </td></tr>
<tr class="memitem:a7c5553442c8b9342a0ad449e2b67f275"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a7c5553442c8b9342a0ad449e2b67f275">partial_sort</a> (int k, int n, const typename C::T *vals, typename C::TI *perm)</td></tr>
<tr class="separator:a7c5553442c8b9342a0ad449e2b67f275"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1224ccbe0087fd6634d59b3008251b6"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad1224ccbe0087fd6634d59b3008251b6"></a>
template&lt;typename CT , class C &gt; </td></tr>
<tr class="memitem:ad1224ccbe0087fd6634d59b3008251b6"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>pq_estimators_from_tables_Mmul4</b> (int M, const CT *codes, size_t ncodes, const float *__restrict dis_table, size_t ksub, size_t k, float *heap_dis, long *heap_ids)</td></tr>
<tr class="separator:ad1224ccbe0087fd6634d59b3008251b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c00476e94f1b25bfb9cb9eee6dc320"><td class="memTemplParams" colspan="2"><a class="anchor" id="a01c00476e94f1b25bfb9cb9eee6dc320"></a>
template&lt;typename CT , class C &gt; </td></tr>
<tr class="memitem:a01c00476e94f1b25bfb9cb9eee6dc320"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>pq_estimators_from_tables_M4</b> (const CT *codes, size_t ncodes, const float *__restrict dis_table, size_t ksub, size_t k, float *heap_dis, long *heap_ids)</td></tr>
<tr class="separator:a01c00476e94f1b25bfb9cb9eee6dc320"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2a71f7d5402ae02ce169a4cc83020eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2a71f7d5402ae02ce169a4cc83020eb"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#af2a71f7d5402ae02ce169a4cc83020eb">getmillisecs</a> ()</td></tr>
<tr class="memdesc:af2a71f7d5402ae02ce169a4cc83020eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">ms elapsed since some arbitrary epoch <br/></td></tr>
<tr class="separator:af2a71f7d5402ae02ce169a4cc83020eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e52268bd04f91f6806c11a4fa9844af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e52268bd04f91f6806c11a4fa9844af"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>float_rand</b> (float *x, size_t n, long seed)</td></tr>
<tr class="separator:a4e52268bd04f91f6806c11a4fa9844af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a141b90397a6460c087dd685c618ccc2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a141b90397a6460c087dd685c618ccc2e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>float_randn</b> (float *x, size_t n, long seed)</td></tr>
<tr class="separator:a141b90397a6460c087dd685c618ccc2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a755f31dec6ad03a39132c22e64e9efd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a755f31dec6ad03a39132c22e64e9efd7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>long_rand</b> (long *x, size_t n, long seed)</td></tr>
<tr class="separator:a755f31dec6ad03a39132c22e64e9efd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e0d986276186a6f4ae31573521cdc72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e0d986276186a6f4ae31573521cdc72"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>rand_perm</b> (int *perm, size_t n, long seed)</td></tr>
<tr class="separator:a2e0d986276186a6f4ae31573521cdc72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9835f65db4dc94f35dfaa522aa09c1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9835f65db4dc94f35dfaa522aa09c1b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>byte_rand</b> (uint8_t *x, size_t n, long seed)</td></tr>
<tr class="separator:af9835f65db4dc94f35dfaa522aa09c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a416579174077c326f5e1694c04142098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a416579174077c326f5e1694c04142098"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>reflection</b> (const float *__restrict u, float *__restrict x, size_t n, size_t d, size_t nu)</td></tr>
<tr class="separator:a416579174077c326f5e1694c04142098"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34ed95d839d548e34fdd03f83676b633"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34ed95d839d548e34fdd03f83676b633"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>reflection_ref</b> (const float *u, float *x, size_t n, size_t d, size_t nu)</td></tr>
<tr class="separator:a34ed95d839d548e34fdd03f83676b633"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7466bd32de31640860393a701eaac5ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7466bd32de31640860393a701eaac5ad"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a7466bd32de31640860393a701eaac5ad">fvec_L2sqr</a> (const float *x, const float *y, size_t d)</td></tr>
<tr class="memdesc:a7466bd32de31640860393a701eaac5ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Squared L2 distance between two vectors. <br/></td></tr>
<tr class="separator:a7466bd32de31640860393a701eaac5ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83eae4ad08f3d1f3e7af467853d74d7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83eae4ad08f3d1f3e7af467853d74d7b"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_L2sqr_ref</b> (const float *x, const float *y, size_t d)</td></tr>
<tr class="separator:a83eae4ad08f3d1f3e7af467853d74d7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6490f0d832462623e19a96481daeef5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af6490f0d832462623e19a96481daeef5"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_inner_product</b> (const float *x, const float *y, size_t d)</td></tr>
<tr class="separator:af6490f0d832462623e19a96481daeef5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28a3cb6cd969528a0745764696f701c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28a3cb6cd969528a0745764696f701c8"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_inner_product_ref</b> (const float *x, const float *y, size_t d)</td></tr>
<tr class="separator:a28a3cb6cd969528a0745764696f701c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a49180ebf10e643217bbce5862c7f84"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a7a49180ebf10e643217bbce5862c7f84">fvec_norm_L2sqr</a> (const float *x, size_t d)</td></tr>
<tr class="separator:a7a49180ebf10e643217bbce5862c7f84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab048727c2b9d7a55e19cf94339a182d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab048727c2b9d7a55e19cf94339a182d6"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_norm_L2sqr_ref</b> (const float *__restrict x, size_t d)</td></tr>
<tr class="separator:ab048727c2b9d7a55e19cf94339a182d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02b3f0bedbd7590d60c01c3ee42d00ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a02b3f0bedbd7590d60c01c3ee42d00ee"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_inner_products_ny</b> (float *__restrict ip, const float *x, const float *y, size_t d, size_t ny)</td></tr>
<tr class="separator:a02b3f0bedbd7590d60c01c3ee42d00ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a052456d4db25ce5de406794939fd0537"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a052456d4db25ce5de406794939fd0537"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_L2sqr_ny</b> (float *__restrict dis, const float *x, const float *y, size_t d, size_t ny)</td></tr>
<tr class="separator:a052456d4db25ce5de406794939fd0537"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ee963ae53a231071a04335b6419a34a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ee963ae53a231071a04335b6419a34a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_norms_L2</b> (float *__restrict nr, const float *__restrict x, size_t d, size_t nx)</td></tr>
<tr class="separator:a8ee963ae53a231071a04335b6419a34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe16f5b787a3a757b0ffd587f2b0f546"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe16f5b787a3a757b0ffd587f2b0f546"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_norms_L2sqr</b> (float *__restrict nr, const float *__restrict x, size_t d, size_t nx)</td></tr>
<tr class="separator:afe16f5b787a3a757b0ffd587f2b0f546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c4685ed77895118ae8277abe54fae8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c4685ed77895118ae8277abe54fae8f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_renorm_L2</b> (size_t d, size_t nx, float *__restrict x)</td></tr>
<tr class="separator:a4c4685ed77895118ae8277abe54fae8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a880c7318971f866267a86945aaa61b17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a880c7318971f866267a86945aaa61b17">knn_inner_product</a> (const float *x, const float *y, size_t d, size_t nx, size_t ny, <a class="el" href="structfaiss_1_1HeapArray.html">float_minheap_array_t</a> *res)</td></tr>
<tr class="separator:a880c7318971f866267a86945aaa61b17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f803e3d3b07cfab63699c89de161237"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a2f803e3d3b07cfab63699c89de161237">knn_L2sqr</a> (const float *x, const float *y, size_t d, size_t nx, size_t ny, <a class="el" href="structfaiss_1_1HeapArray.html">float_maxheap_array_t</a> *res)</td></tr>
<tr class="separator:a2f803e3d3b07cfab63699c89de161237"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eb1701e46123827966f2a56da893d1d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a5eb1701e46123827966f2a56da893d1d">knn_L2sqr_base_shift</a> (const float *x, const float *y, size_t d, size_t nx, size_t ny, <a class="el" href="structfaiss_1_1HeapArray.html">float_maxheap_array_t</a> *res, const float *base_shift)</td></tr>
<tr class="separator:a5eb1701e46123827966f2a56da893d1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada53442290616e25b2bbe49a1444a225"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada53442290616e25b2bbe49a1444a225"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_inner_products_by_idx</b> (float *__restrict ip, const float *x, const float *y, const long *__restrict ids, size_t d, size_t nx, size_t ny)</td></tr>
<tr class="separator:ada53442290616e25b2bbe49a1444a225"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acad70536e37674f21dc4f47fc130e03b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acad70536e37674f21dc4f47fc130e03b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_L2sqr_by_idx</b> (float *__restrict dis, const float *x, const float *y, const long *__restrict ids, size_t d, size_t nx, size_t ny)</td></tr>
<tr class="separator:acad70536e37674f21dc4f47fc130e03b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04eafd0d8f57e413587661c6bf6eb5be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04eafd0d8f57e413587661c6bf6eb5be"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>knn_inner_products_by_idx</b> (const float *x, const float *y, const long *__restrict ids, size_t d, size_t nx, size_t ny, <a class="el" href="structfaiss_1_1HeapArray.html">float_minheap_array_t</a> *res)</td></tr>
<tr class="separator:a04eafd0d8f57e413587661c6bf6eb5be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a705dcfc6ae950690bc14ccf3dae591b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a705dcfc6ae950690bc14ccf3dae591b8"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>knn_L2sqr_by_idx</b> (const float *x, const float *y, const long *__restrict ids, size_t d, size_t nx, size_t ny, <a class="el" href="structfaiss_1_1HeapArray.html">float_maxheap_array_t</a> *res)</td></tr>
<tr class="separator:a705dcfc6ae950690bc14ccf3dae591b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1faa7bd079c9b1addf3058ddf882a000"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a1faa7bd079c9b1addf3058ddf882a000">range_search_L2sqr</a> (const float *x, const float *y, size_t d, size_t nx, size_t ny, float radius, <a class="el" href="structfaiss_1_1RangeSearchResult.html">RangeSearchResult</a> *res)</td></tr>
<tr class="separator:a1faa7bd079c9b1addf3058ddf882a000"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab29d725b808df6f142b80f21aa45e507"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab29d725b808df6f142b80f21aa45e507"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#ab29d725b808df6f142b80f21aa45e507">range_search_inner_product</a> (const float *x, const float *y, size_t d, size_t nx, size_t ny, float radius, <a class="el" href="structfaiss_1_1RangeSearchResult.html">RangeSearchResult</a> *result)</td></tr>
<tr class="memdesc:ab29d725b808df6f142b80f21aa45e507"><td class="mdescLeft">&#160;</td><td class="mdescRight">same as range_search_L2sqr for the inner product similarity <br/></td></tr>
<tr class="separator:ab29d725b808df6f142b80f21aa45e507"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38c7007a07161c88fd2e40caedec3f21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38c7007a07161c88fd2e40caedec3f21"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>inner_product_to_L2sqr</b> (float *__restrict dis, const float *nr1, const float *nr2, size_t n1, size_t n2)</td></tr>
<tr class="separator:a38c7007a07161c88fd2e40caedec3f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb68fe89ad5e948974da1b70d7b4157c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#afb68fe89ad5e948974da1b70d7b4157c">matrix_qr</a> (int m, int n, float *a)</td></tr>
<tr class="separator:afb68fe89ad5e948974da1b70d7b4157c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d9c7db82d43c1f0ab1d28b92bc9fe57"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a3d9c7db82d43c1f0ab1d28b92bc9fe57">pairwise_L2sqr</a> (long d, long nq, const float *xq, long nb, const float *xb, float *dis, long ldq, long ldb, long ldd)</td></tr>
<tr class="separator:a3d9c7db82d43c1f0ab1d28b92bc9fe57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1cfbe51f2d77dc5094e0140f5955165"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#ad1cfbe51f2d77dc5094e0140f5955165">km_update_centroids</a> (const float *x, float *centroids, long *assign, size_t d, size_t k, size_t n)</td></tr>
<tr class="separator:ad1cfbe51f2d77dc5094e0140f5955165"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0ee1b6fbd3d6da0f1a3550a780ca24c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#ae0ee1b6fbd3d6da0f1a3550a780ca24c">ranklist_handle_ties</a> (int k, long *idx, const float *dis)</td></tr>
<tr class="separator:ae0ee1b6fbd3d6da0f1a3550a780ca24c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dbc652ba48d41f126b8815004899448"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a8dbc652ba48d41f126b8815004899448">ranklist_intersection_size</a> (size_t k1, const long *v1, size_t k2, const long *v2_in)</td></tr>
<tr class="separator:a8dbc652ba48d41f126b8815004899448"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94c1d99ac39d22e362aa27ce7c7ff714"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94c1d99ac39d22e362aa27ce7c7ff714"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a94c1d99ac39d22e362aa27ce7c7ff714">imbalance_factor</a> (int k, const int *hist)</td></tr>
<tr class="memdesc:a94c1d99ac39d22e362aa27ce7c7ff714"><td class="mdescLeft">&#160;</td><td class="mdescRight">same, takes a histogram as input <br/></td></tr>
<tr class="separator:a94c1d99ac39d22e362aa27ce7c7ff714"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af762526714e6138009c72aee98657538"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af762526714e6138009c72aee98657538"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#af762526714e6138009c72aee98657538">imbalance_factor</a> (int n, int k, const long *assign)</td></tr>
<tr class="memdesc:af762526714e6138009c72aee98657538"><td class="mdescLeft">&#160;</td><td class="mdescRight">a balanced assignment has a IF of 1 <br/></td></tr>
<tr class="separator:af762526714e6138009c72aee98657538"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bea462108bee98d8d5859b51ec4db8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bea462108bee98d8d5859b51ec4db8e"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a7bea462108bee98d8d5859b51ec4db8e">ivec_hist</a> (size_t n, const int *v, int vmax, int *hist)</td></tr>
<tr class="memdesc:a7bea462108bee98d8d5859b51ec4db8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute histogram on v <br/></td></tr>
<tr class="separator:a7bea462108bee98d8d5859b51ec4db8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a154a47857ed321b9db91122770a16e09"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a154a47857ed321b9db91122770a16e09">bincode_hist</a> (size_t n, size_t nbits, const uint8_t *codes, int *hist)</td></tr>
<tr class="separator:a154a47857ed321b9db91122770a16e09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4369329c9dbdfe23e3f35d09ba7b5c6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4369329c9dbdfe23e3f35d09ba7b5c6e"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a4369329c9dbdfe23e3f35d09ba7b5c6e">ivec_checksum</a> (size_t n, const int *a)</td></tr>
<tr class="memdesc:a4369329c9dbdfe23e3f35d09ba7b5c6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute a checksum on a table. <br/></td></tr>
<tr class="separator:a4369329c9dbdfe23e3f35d09ba7b5c6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a027b726c606d329c30840e51b539ddb4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a027b726c606d329c30840e51b539ddb4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_argsort</b> (size_t n, const float *vals, size_t *perm)</td></tr>
<tr class="separator:a027b726c606d329c30840e51b539ddb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e967dd8492dc074a7d6950d437e53a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e967dd8492dc074a7d6950d437e53a2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_argsort_parallel</b> (size_t n, const float *vals, size_t *perm)</td></tr>
<tr class="separator:a0e967dd8492dc074a7d6950d437e53a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40328c31abd0bbba5bd95d7de951e847"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a40328c31abd0bbba5bd95d7de951e847">fvec_madd</a> (size_t n, const float *a, float bf, const float *b, float *c)</td></tr>
<tr class="separator:a40328c31abd0bbba5bd95d7de951e847"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9da63b8bb84460f5e8ccf8e17622cc7a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a9da63b8bb84460f5e8ccf8e17622cc7a">fvec_madd_and_argmin</a> (size_t n, const float *a, float bf, const float *b, float *c)</td></tr>
<tr class="separator:a9da63b8bb84460f5e8ccf8e17622cc7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3af5769b0b649f112332a874c64d361"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3af5769b0b649f112332a874c64d361"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#aa3af5769b0b649f112332a874c64d361">get_mem_usage_kb</a> ()</td></tr>
<tr class="memdesc:aa3af5769b0b649f112332a874c64d361"><td class="mdescLeft">&#160;</td><td class="mdescRight">get current RSS usage in kB <br/></td></tr>
<tr class="separator:aa3af5769b0b649f112332a874c64d361"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f0c0270de04cc395edd3d2823d0128d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f0c0270de04cc395edd3d2823d0128d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_inner_products_ny</b> (float *ip, const float *x, const float *y, size_t d, size_t ny)</td></tr>
<tr class="separator:a1f0c0270de04cc395edd3d2823d0128d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40265aa2cbbe57e5b223c2c7dafac31f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#a40265aa2cbbe57e5b223c2c7dafac31f">fvec_norms_L2</a> (float *ip, const float *x, size_t d, size_t nx)</td></tr>
<tr class="separator:a40265aa2cbbe57e5b223c2c7dafac31f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abce90e9d55d6838c7a37422285192d54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abce90e9d55d6838c7a37422285192d54"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefaiss.html#abce90e9d55d6838c7a37422285192d54">fvec_norms_L2sqr</a> (float *ip, const float *x, size_t d, size_t nx)</td></tr>
<tr class="memdesc:abce90e9d55d6838c7a37422285192d54"><td class="mdescLeft">&#160;</td><td class="mdescRight">same as fvec_norms_L2, but computes square norms <br/></td></tr>
<tr class="separator:abce90e9d55d6838c7a37422285192d54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d81952ec447e6886d2fd3b930fdc096"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d81952ec447e6886d2fd3b930fdc096"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>fvec_renorm_L2</b> (size_t d, size_t nx, float *x)</td></tr>
<tr class="separator:a1d81952ec447e6886d2fd3b930fdc096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7c6da3d6915a010d5d3074d93878ce9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7c6da3d6915a010d5d3074d93878ce9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>reflection</b> (const float *u, float *x, size_t n, size_t d, size_t nu)</td></tr>
<tr class="separator:ab7c6da3d6915a010d5d3074d93878ce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a8cd23fc7d944b9cfe8b498a4b35bc558"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cd23fc7d944b9cfe8b498a4b35bc558"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>read_old_fmt_hack</b> = 0</td></tr>
<tr class="separator:a8cd23fc7d944b9cfe8b498a4b35bc558"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d6b069b2590a195d078d696cba14284"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d6b069b2590a195d078d696cba14284"></a>
<a class="el" href="structfaiss_1_1IndexIVFPQStats.html">IndexIVFPQStats</a>&#160;</td><td class="memItemRight" valign="bottom"><b>indexIVFPQ_stats</b></td></tr>
<tr class="separator:a2d6b069b2590a195d078d696cba14284"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefa127b38407a74770a4b7cfb50ca87d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefa127b38407a74770a4b7cfb50ca87d"></a>
<a class="el" href="structfaiss_1_1IndexPQStats.html">IndexPQStats</a>&#160;</td><td class="memItemRight" valign="bottom"><b>indexPQ_stats</b></td></tr>
<tr class="separator:aefa127b38407a74770a4b7cfb50ca87d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Copyright (c) 2015-present, Facebook, Inc. All rights reserved.</p>
<p>This source code is licensed under the CC-by-NC license found in the LICENSE file in the root directory of this source tree.</p>
<p>Copyright (c) 2015-present, Facebook, Inc. All rights reserved.</p>
<p>This source code is licensed under the CC-by-NC license found in the LICENSE file in the root directory of this source tree.Multi-dimensional array class for CUDA device and host usage. Originally from Facebook's fbcunn, since added to the Torch GPU library cutorch as well.</p>
<p>Copyright (c) 2015-present, Facebook, Inc. All rights reserved.</p>
<p>This source code is licensed under the CC-by-NC license found in the LICENSE file in the root directory of this source tree.</p>
<p>Throughout the library, vectors are provided as float * pointers. Most algorithms can be optimized when several vectors are processed (added/searched) together in a batch. In this case, they are passed in as a matrix. When n vectors of size d are provided as float * x, component j of vector i is</p>
<p>x[ i * d + j ]</p>
<p>where 0 &lt;= i &lt; n and 0 &lt;= j &lt; d. In other words, matrices are always compact. When specifying the size of the matrix, we call it an n*d matrix, which implies a row-major storage.</p>
<p>Copyright (c) 2015-present, Facebook, Inc. All rights reserved.</p>
<p>This source code is licensed under the CC-by-NC license found in the LICENSE file in the root directory of this source tree. Copyright 2004-present Facebook. All Rights Reserved -*- c++ -*-</p>
<p>A few utilitary functions for similarity search:</p>
<ul>
<li>random generators</li>
<li>optimized exhaustive distance and knn search functions</li>
<li>some functions reimplemented from torch for speed</li>
</ul>
<p>Copyright (c) 2015-present, Facebook, Inc. All rights reserved.</p>
<p>This source code is licensed under the CC-by-NC license found in the LICENSE file in the root directory of this source tree. Defines a few objects that apply transformations to a set of vectors Often these are pre-processing steps. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a154a47857ed321b9db91122770a16e09"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::bincode_hist </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>n</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>codes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hist</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute histogram of bits on a code array</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">codes</td><td>size(n, nbits / 8) </td></tr>
<tr><td class="paramname">hist</td><td>size(nbits): nb of 1s in the array of codes </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01466">1466</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a40328c31abd0bbba5bd95d7de951e847"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::fvec_madd </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>n</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>bf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>compute c := a + bf * b for a, b and c tables</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">n</td><td>size of the tables </td></tr>
<tr><td class="paramname">a</td><td>size n </td></tr>
<tr><td class="paramname">b</td><td>size n </td></tr>
<tr><td class="paramname">c</td><td>restult table, size n </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01706">1706</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a9da63b8bb84460f5e8ccf8e17622cc7a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int faiss::fvec_madd_and_argmin </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>n</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>bf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>same as fvec_madd, also return index of the min of the result table </p>
<dl class="section return"><dt>Returns</dt><dd>index of the min of table c </dd></dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01780">1780</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a7a49180ebf10e643217bbce5862c7f84"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float faiss::fvec_norm_L2sqr </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>squared norm of a vector </p>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l00512">512</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a40265aa2cbbe57e5b223c2c7dafac31f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::fvec_norms_L2 </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>ip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nx</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>compute the L2 norms for a set of vectors</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ip</td><td>output norms, size nx </td></tr>
<tr><td class="paramname">x</td><td>set of vectors, size nx * d </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae81da42f6f40356f7525917b3acb54c8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::generalized_hammings_knn </td>
<td>(</td>
<td class="paramtype">int_maxheap_array_t *&#160;</td>
<td class="paramname"><em>ha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>code_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>ordered</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>generalized Hamming distances (= count number of code bytes that are the same) </p>
<p>Definition at line <a class="el" href="hamming_8cpp_source.html#l00626">626</a> of file <a class="el" href="hamming_8cpp_source.html">hamming.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a0832c5ab58f4d1a340b0bde273c5b501"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::hammings </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>na</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nbytespercode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">hamdis_t *&#160;</td>
<td class="paramname"><em>dis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute a set of Hamming distances between na and nb binary vectors</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">a</td><td>size na * nbytespercode </td></tr>
<tr><td class="paramname">b</td><td>size nb * nbytespercode </td></tr>
<tr><td class="paramname">nbytespercode</td><td>should be multiple of 8 </td></tr>
<tr><td class="paramname">dis</td><td>output distances, size na * nb </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ac0b4dc73a8470d61f510396dc460ca18"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::hammings_knn </td>
<td>(</td>
<td class="paramtype">int_maxheap_array_t *&#160;</td>
<td class="paramname"><em>ha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>ncodes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>ordered</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the k smallest Hamming distances for a set of binary query vectors </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">a</td><td>queries, size ha-&gt;nh * ncodes </td></tr>
<tr><td class="paramname">b</td><td>database, size nb * ncodes </td></tr>
<tr><td class="paramname">nb</td><td>number of database vectors </td></tr>
<tr><td class="paramname">ncodes</td><td>size of the binary codes (bytes) </td></tr>
<tr><td class="paramname">ordered</td><td>if != 0: order the results by decreasing distance (may be bottleneck for k/n &gt; 0.01) </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="hamming_8cpp_source.html#l00471">471</a> of file <a class="el" href="hamming_8cpp_source.html">hamming.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a1d40aec5723474516de576263cc03048"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class C &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void faiss::heap_pop </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">typename C::T *&#160;</td>
<td class="paramname"><em>bh_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">typename C::TI *&#160;</td>
<td class="paramname"><em>bh_ids</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Pops the top element from the heap defined by bh_val[0..k-1] and bh_ids[0..k-1]. on output the element at k-1 is undefined. </p>
<p>Definition at line <a class="el" href="Heap_8h_source.html#l00091">91</a> of file <a class="el" href="Heap_8h_source.html">Heap.h</a>.</p>
</div>
</div>
<a class="anchor" id="acbe85976d4f73309622f6b62c4d7af2b"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class C &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void faiss::heap_push </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">typename C::T *&#160;</td>
<td class="paramname"><em>bh_val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">typename C::TI *&#160;</td>
<td class="paramname"><em>bh_ids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">typename C::T&#160;</td>
<td class="paramname"><em>val</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">typename C::TI&#160;</td>
<td class="paramname"><em>ids</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Pushes the element (val, ids) into the heap bh_val[0..k-2] and bh_ids[0..k-2]. on output the element at k-1 is defined. </p>
<p>Definition at line <a class="el" href="Heap_8h_source.html#l00127">127</a> of file <a class="el" href="Heap_8h_source.html">Heap.h</a>.</p>
</div>
</div>
<a class="anchor" id="a0c95ec47726f2ce3fb668dcb1f9a3317"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structfaiss_1_1Index.html">Index</a> * faiss::index_factory </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>description</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">MetricType&#160;</td>
<td class="paramname"><em>metric</em> = <code>METRIC_L2</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Build and index with the sequence of processing steps described in the string. </p>
<p>Definition at line <a class="el" href="AutoTune_8cpp_source.html#l00623">623</a> of file <a class="el" href="AutoTune_8cpp_source.html">AutoTune.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="ad1cfbe51f2d77dc5094e0140f5955165"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int faiss::km_update_centroids </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>centroids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long *&#160;</td>
<td class="paramname"><em>assign</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>n</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>For k-means: update stage. Returns nb of split clusters. </p>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01285">1285</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a38bd0dde8a1b229201a5fcb64d05daa6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float faiss::kmeans_clustering </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>n</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>centroids</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>simplified interface</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">d</td><td>dimension of the data </td></tr>
<tr><td class="paramname">n</td><td>nb of training vectors </td></tr>
<tr><td class="paramname">k</td><td>nb of output centroids </td></tr>
<tr><td class="paramname">x</td><td>training set (size n * d) </td></tr>
<tr><td class="paramname">centroids</td><td>output centroids (size k * d) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>final quantization error </dd></dl>
<p>Definition at line <a class="el" href="Clustering_8cpp_source.html#l00204">204</a> of file <a class="el" href="Clustering_8cpp_source.html">Clustering.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a880c7318971f866267a86945aaa61b17"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::knn_inner_product </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>ny</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float_minheap_array_t *&#160;</td>
<td class="paramname"><em>res</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the k nearest neighors of each of the nx vectors x among the ny vector y, w.r.t to max inner product</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x</td><td>query vectors, size nx * d </td></tr>
<tr><td class="paramname">y</td><td>database vectors, size ny * d </td></tr>
<tr><td class="paramname">res</td><td>result array, which also provides k. Sorted on output </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l00831">831</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a2f803e3d3b07cfab63699c89de161237"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::knn_L2sqr </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>ny</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float_maxheap_array_t *&#160;</td>
<td class="paramname"><em>res</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as knn_inner_product, for the L2 distance </p>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l00851">851</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a5eb1701e46123827966f2a56da893d1d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::knn_L2sqr_base_shift </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>ny</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float_maxheap_array_t *&#160;</td>
<td class="paramname"><em>res</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>base_shift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>same as knn_L2sqr, but base_shift[bno] is subtracted to all computed distances.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base_shift</td><td>size ny </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l00871">871</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="afb68fe89ad5e948974da1b70d7b4157c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::matrix_qr </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>n</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>a</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>compute the Q of the QR decomposition for m &gt; n </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">a</td><td>size n * m: input matrix and output Q </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01207">1207</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a3d9c7db82d43c1f0ab1d28b92bc9fe57"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::pairwise_L2sqr </td>
<td>(</td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>nq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>xq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>nb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>xb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>ldq</em> = <code>-1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>ldb</em> = <code>-1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>ldd</em> = <code>-1</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute pairwise distances between sets of vectors</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">d</td><td>dimension of the vectors </td></tr>
<tr><td class="paramname">nq</td><td>nb of query vectors </td></tr>
<tr><td class="paramname">nb</td><td>nb of database vectors </td></tr>
<tr><td class="paramname">xq</td><td>query vectors (size nq * d) </td></tr>
<tr><td class="paramname">xb</td><td>database vectros (size nb * d) </td></tr>
<tr><td class="paramname">dis</td><td>output distances (size nq * nb) </td></tr>
<tr><td class="paramname">ldq,ldb,ldd</td><td>strides for the matrices </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01229">1229</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a7c5553442c8b9342a0ad449e2b67f275"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class C &gt; </div>
<table class="memname">
<tr>
<td class="memname">void faiss::partial_sort </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>n</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const typename C::T *&#160;</td>
<td class="paramname"><em>vals</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">typename C::TI *&#160;</td>
<td class="paramname"><em>perm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Array has n values. Sort the k first ones and copy the other ones into elements k..n-1 </p>
<p>Definition at line <a class="el" href="IndexPQ_8cpp_source.html#l00528">528</a> of file <a class="el" href="IndexPQ_8cpp_source.html">IndexPQ.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a1faa7bd079c9b1addf3058ddf882a000"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::range_search_L2sqr </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>ny</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>radius</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">RangeSearchResult *&#160;</td>
<td class="paramname"><em>result</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the k nearest neighors of each of the nx vectors x among the ny vector y, w.r.t to max inner product</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x</td><td>query vectors, size nx * d </td></tr>
<tr><td class="paramname">y</td><td>database vectors, size ny * d </td></tr>
<tr><td class="paramname">radius</td><td>search radius around the x vectors </td></tr>
<tr><td class="paramname">result</td><td>result structure </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01152">1152</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="ae0ee1b6fbd3d6da0f1a3550a780ca24c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void faiss::ranklist_handle_ties </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long *&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>dis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>distances are supposed to be sorted. Sorts indices with same distance </p>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01377">1377</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a8dbc652ba48d41f126b8815004899448"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t faiss::ranklist_intersection_size </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>k1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const long *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>k2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const long *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>count the number of comon elements between v1 and v2 algorithm = sorting + bissection to avoid double-counting duplicates </p>
<p>Definition at line <a class="el" href="utils_8cpp_source.html#l01393">1393</a> of file <a class="el" href="utils_8cpp_source.html">utils.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="aa46fe38a858ecfde7e0fc0744939d5ad"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structfaiss_1_1Index.html">Index</a> * faiss::read_index </td>
<td>(</td>
<td class="paramtype">FILE *&#160;</td>
<td class="paramname"><em>f</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>try_mmap</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>mmap'ing currently works only for <a class="el" href="structfaiss_1_1IndexIVFPQCompact.html">IndexIVFPQCompact</a>, the <a class="el" href="structfaiss_1_1IndexIVFPQCompact.html">IndexIVFPQCompact</a> destructor will unmap the file. </p>
<p>Definition at line <a class="el" href="index__io_8cpp_source.html#l00476">476</a> of file <a class="el" href="index__io_8cpp_source.html">index_io.cpp</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<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.5
</small></address>
</body>
</html>