<!-- HTML header for doxygen 1.8.4-->
<!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.10"/>
<meta name="keywords" content="madlib,postgres,greenplum,machine learning,data mining,deep learning,ensemble methods,data science,market basket analysis,affinity analysis,pca,lda,regression,elastic net,huber white,proportional hazards,k-means,latent dirichlet allocation,bayes,support vector machines,svm"/>
<title>MADlib: File Members</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script src="../mathjax/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="madlib_extra.css" rel="stylesheet" type="text/css"/>
<!-- google analytics -->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-45382226-1', 'auto');
  ga('send', 'pageview');
</script>
</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 id="projectlogo"><a href="http://madlib.incubator.apache.org"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   <span id="projectnumber">1.7dev</span>
   </div>
   <div id="projectbrief">User Documentation</div>
  </td>
   <td>        <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>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('globals_g.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</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 class="contents">
<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>

<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
<li>gamma_cdf()
: <a class="el" href="prob_8sql__in.html#ab6760b0486bad2f1ab0635eb59404e7c">prob.sql_in</a>
</li>
<li>gamma_pdf()
: <a class="el" href="prob_8sql__in.html#a6c37e3bda2596accbb46525321a328c4">prob.sql_in</a>
</li>
<li>gamma_quantile()
: <a class="el" href="prob_8sql__in.html#ac48bbd491bd34831415705c3a0b7bf29">prob.sql_in</a>
</li>
<li>gamma_random()
: <a class="el" href="sample_8sql__in.html#afc523f72e64820329acb8874c2a759d3">sample.sql_in</a>
</li>
<li>gen_doc_svecs()
: <a class="el" href="svec__util_8sql__in.html#a6136c83e9c419d783d1ec6db061f8d6e">svec_util.sql_in</a>
</li>
<li>gen_rules_from_cfp()
: <a class="el" href="assoc__rules_8sql__in.html#a9a872579615586ce478d32ba145cc279">assoc_rules.sql_in</a>
</li>
<li>geometric_cdf()
: <a class="el" href="prob_8sql__in.html#a00879bdf7d48ceddedb3b4cc33511497">prob.sql_in</a>
</li>
<li>geometric_pmf()
: <a class="el" href="prob_8sql__in.html#a5e08db93bd448a1e2164e106ce5781a4">prob.sql_in</a>
</li>
<li>geometric_quantile()
: <a class="el" href="prob_8sql__in.html#a62674ca958aec0533cdf0a74a1dadea9">prob.sql_in</a>
</li>
<li>get_col()
: <a class="el" href="linalg_8sql__in.html#a20f34c9e661191e5225cca7bc23252c5">linalg.sql_in</a>
</li>
<li>get_row()
: <a class="el" href="linalg_8sql__in.html#af6b905fcac7746ef0ed0c36df4a1e070">linalg.sql_in</a>
</li>
<li>get_tree()
: <a class="el" href="random__forest_8sql__in.html#af22b14c3da4f64b544b6c333a8e97070">random_forest.sql_in</a>
</li>
<li>get_tree_surr()
: <a class="el" href="random__forest_8sql__in.html#a3ba1911b340a431982189e3e1f8c0111">random_forest.sql_in</a>
</li>
<li>glm()
: <a class="el" href="glm_8sql__in.html#a4938524efbef7684ce8a8e2646f126ef">glm.sql_in</a>
</li>
<li>glm_predict()
: <a class="el" href="glm_8sql__in.html#add7c22acc8eaaa3eace7089eadc5f367">glm.sql_in</a>
</li>
<li>glm_predict_binomial()
: <a class="el" href="glm_8sql__in.html#a9a468186034a936c3997cad22b03cafe">glm.sql_in</a>
</li>
<li>glm_predict_poisson()
: <a class="el" href="glm_8sql__in.html#a941d49196e573048852def804c5ce4c4">glm.sql_in</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Mon Jul 27 2015 20:27:22 for MADlib by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li>
  </ul>
</div>
</body>
</html>
