http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/b5b51c69/docs/v1.11/graph_legend.html
----------------------------------------------------------------------
diff --git a/docs/v1.11/graph_legend.html b/docs/v1.11/graph_legend.html
new file mode 100644
index 0000000..3bb5227
--- /dev/null
+++ b/docs/v1.11/graph_legend.html
@@ -0,0 +1,148 @@
+<!-- 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.13"/>
+<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: Graph Legend</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);
+</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>
+<!-- hack in the navigation tree -->
+<script type="text/javascript" src="eigen_navtree_hacks.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', 'madlib.incubator.apache.org');
+  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.11</span>
+   </div>
+   <div id="projectbrief">User Documentation for MADlib</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.13 -->
+<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('graph_legend.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="header">
+  <div class="headertitle">
+<div class="title">Graph Legend</div>  </div>
+</div><!--header-->
+<div class="contents">
+<p>This page explains how to interpret the graphs that are generated by 
doxygen.</p>
+<p>Consider the following example: </p><div class="fragment"><div 
class="line">/*! Invisible class because of truncation */</div><div 
class="line">class Invisible { };</div><div class="line"></div><div 
class="line">/*! Truncated class, inheritance relation is hidden */</div><div 
class="line">class Truncated : public Invisible { };</div><div 
class="line"></div><div class="line">/* Class not documented with doxygen 
comments */</div><div class="line">class Undocumented { };</div><div 
class="line"></div><div class="line">/*! Class that is inherited using public 
inheritance */</div><div class="line">class PublicBase : public Truncated { 
};</div><div class="line"></div><div class="line">/*! A template class 
*/</div><div class="line">template&lt;class T&gt; class Templ { };</div><div 
class="line"></div><div class="line">/*! Class that is inherited using 
protected inheritance */</div><div class="line">class ProtectedBase { 
};</div><div class="line"></div><div class="line">/*! Class that is 
 inherited using private inheritance */</div><div class="line">class 
PrivateBase { };</div><div class="line"></div><div class="line">/*! Class that 
is used by the Inherited class */</div><div class="line">class Used { 
};</div><div class="line"></div><div class="line">/*! Super class that inherits 
a number of other classes */</div><div class="line">class Inherited : public 
PublicBase,</div><div class="line">                  protected 
ProtectedBase,</div><div class="line">                  private 
PrivateBase,</div><div class="line">                  public 
Undocumented,</div><div class="line">                  public 
Templ&lt;int&gt;</div><div class="line">{</div><div class="line">  
private:</div><div class="line">    Used *m_usedClass;</div><div 
class="line">};</div></div><!-- fragment --><p> This will result in the 
following graph:</p>
+<center><iframe scrolling="no" frameborder="0" src="graph_legend.svg" 
width="680" height="206"><p><b>This browser is not able to show SVG: try 
Firefox, Chrome, Safari, or Opera instead.</b></p></iframe> </center><p>The 
boxes in the above graph have the following meaning: </p>
+<ul>
+<li>
+A filled gray box represents the struct or class for which the graph is 
generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a gray border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all 
inheritance/containment relations are shown. A graph is truncated if it does 
not fit within the specified boundaries. </li>
+</ul>
+<p>The arrows have the following meaning: </p>
+<ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between 
two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another 
class. The arrow is labelled with the variable(s) through which the pointed 
class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the 
template class it was instantiated from. The arrow is labelled with the 
template parameters of the instance. </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 Tue May 16 2017 13:24:39 for MADlib by
+    <a href="http://www.doxygen.org/index.html";>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/b5b51c69/docs/v1.11/graph_legend.md5
----------------------------------------------------------------------
diff --git a/docs/v1.11/graph_legend.md5 b/docs/v1.11/graph_legend.md5
new file mode 100644
index 0000000..a06ed05
--- /dev/null
+++ b/docs/v1.11/graph_legend.md5
@@ -0,0 +1 @@
+387ff8eb65306fa251338d3c9bd7bfff
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/b5b51c69/docs/v1.11/graph_legend.svg
----------------------------------------------------------------------
diff --git a/docs/v1.11/graph_legend.svg b/docs/v1.11/graph_legend.svg
new file mode 100644
index 0000000..12d6a4d
--- /dev/null
+++ b/docs/v1.11/graph_legend.svg
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+ -->
+<!-- Title: Graph Legend Pages: 1 -->
+<svg width="510pt" height="154pt"
+ viewBox="0.00 0.00 509.69 154.00" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink";>
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 150)">
+<title>Graph Legend</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-150 505.687,-150 
505.687,4 -4,4"/>
+<!-- Node9 -->
+<g id="node1" class="node"><title>Node9</title>
+<polygon fill="#bfbfbf" stroke="black" points="293.431,-18 238.599,-18 
238.599,-0 293.431,-0 293.431,-18"/>
+<text text-anchor="middle" x="266.015" y="-6" 
font-family="Helvetica,sans-Serif" font-size="10.00">Inherited</text>
+</g>
+<!-- Node10 -->
+<g id="node2" class="node"><title>Node10</title>
+<g id="a_node2"><a xlink:href="$classPublicBase.html" xlink:title="PublicBase">
+<polygon fill="none" stroke="black" points="66.044,-82 -0.0146549,-82 
-0.0146549,-64 66.044,-64 66.044,-82"/>
+<text text-anchor="middle" x="33.0146" y="-70" 
font-family="Helvetica,sans-Serif" font-size="10.00">PublicBase</text>
+</a>
+</g>
+</g>
+<!-- Node10&#45;&gt;Node9 -->
+<g id="edge1" class="edge"><title>Node10&#45;&gt;Node9</title>
+<path fill="none" stroke="midnightblue" d="M73.3674,-61.2624C120.605,-48.6928 
197.564,-28.2142 238.451,-17.3346"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="72.239,-57.9407 
63.4753,-63.8946 74.0391,-64.7054 72.239,-57.9407"/>
+</g>
+<!-- Node11 -->
+<g id="node3" class="node"><title>Node11</title>
+<g id="a_node3"><a xlink:href="$classTruncated.html" xlink:title="Truncated">
+<polygon fill="none" stroke="red" points="63.1738,-146 2.85549,-146 
2.85549,-128 63.1738,-128 63.1738,-146"/>
+<text text-anchor="middle" x="33.0146" y="-134" 
font-family="Helvetica,sans-Serif" font-size="10.00">Truncated</text>
+</a>
+</g>
+</g>
+<!-- Node11&#45;&gt;Node10 -->
+<g id="edge2" class="edge"><title>Node11&#45;&gt;Node10</title>
+<path fill="none" stroke="midnightblue" d="M33.0146,-117.828C33.0146,-106.079 
33.0146,-91.3449 33.0146,-82.3053"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="29.5147,-117.895 
33.0146,-127.895 36.5147,-117.895 29.5147,-117.895"/>
+</g>
+<!-- Node13 -->
+<g id="node4" class="node"><title>Node13</title>
+<g id="a_node4"><a xlink:href="$classProtectedBase.html" 
xlink:title="ProtectedBase">
+<polygon fill="none" stroke="black" points="165.611,-82 84.4179,-82 
84.4179,-64 165.611,-64 165.611,-82"/>
+<text text-anchor="middle" x="125.015" y="-70" 
font-family="Helvetica,sans-Serif" font-size="10.00">ProtectedBase</text>
+</a>
+</g>
+</g>
+<!-- Node13&#45;&gt;Node9 -->
+<g id="edge3" class="edge"><title>Node13&#45;&gt;Node9</title>
+<path fill="none" stroke="darkgreen" d="M152.713,-59.8204C180.778,-47.4799 
223.402,-28.7375 247.577,-18.1074"/>
+<polygon fill="darkgreen" stroke="darkgreen" points="151.193,-56.6654 
143.448,-63.8946 154.011,-63.0733 151.193,-56.6654"/>
+</g>
+<!-- Node14 -->
+<g id="node5" class="node"><title>Node14</title>
+<g id="a_node5"><a xlink:href="$classPrivateBase.html" 
xlink:title="PrivateBase">
+<polygon fill="none" stroke="black" points="253.931,-82 184.099,-82 
184.099,-64 253.931,-64 253.931,-82"/>
+<text text-anchor="middle" x="219.015" y="-70" 
font-family="Helvetica,sans-Serif" font-size="10.00">PrivateBase</text>
+</a>
+</g>
+</g>
+<!-- Node14&#45;&gt;Node9 -->
+<g id="edge4" class="edge"><title>Node14&#45;&gt;Node9</title>
+<path fill="none" stroke="#8b1a1a" d="M231.432,-55.6198C240.534,-43.6129 
252.513,-27.8108 259.719,-18.3053"/>
+<polygon fill="#8b1a1a" stroke="#8b1a1a" points="228.411,-53.8111 
225.159,-63.8946 233.989,-58.0399 228.411,-53.8111"/>
+</g>
+<!-- Node15 -->
+<g id="node6" class="node"><title>Node15</title>
+<polygon fill="none" stroke="#bfbfbf" points="355.837,-82 272.192,-82 
272.192,-64 355.837,-64 355.837,-82"/>
+<text text-anchor="middle" x="314.015" y="-70" 
font-family="Helvetica,sans-Serif" font-size="10.00">Undocumented</text>
+</g>
+<!-- Node15&#45;&gt;Node9 -->
+<g id="edge5" class="edge"><title>Node15&#45;&gt;Node9</title>
+<path fill="none" stroke="midnightblue" d="M301.606,-55.9718C292.278,-43.9234 
279.876,-27.904 272.445,-18.3053"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="298.85,-58.1299 
307.739,-63.8946 304.385,-53.8447 298.85,-58.1299"/>
+</g>
+<!-- Node16 -->
+<g id="node7" class="node"><title>Node16</title>
+<g id="a_node7"><a xlink:href="$classTempl.html" xlink:title="Templ&lt; int 
&gt;">
+<polygon fill="none" stroke="black" points="444.489,-82 373.54,-82 373.54,-64 
444.489,-64 444.489,-82"/>
+<text text-anchor="middle" x="409.015" y="-70" 
font-family="Helvetica,sans-Serif" font-size="10.00">Templ&lt; int &gt;</text>
+</a>
+</g>
+</g>
+<!-- Node16&#45;&gt;Node9 -->
+<g id="edge6" class="edge"><title>Node16&#45;&gt;Node9</title>
+<path fill="none" stroke="midnightblue" d="M380.923,-59.8204C352.46,-47.4799 
309.232,-28.7375 284.714,-18.1074"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="379.753,-63.1278 
390.32,-63.8946 382.537,-56.7055 379.753,-63.1278"/>
+</g>
+<!-- Node17 -->
+<g id="node8" class="node"><title>Node17</title>
+<g id="a_node8"><a xlink:href="$classTempl.html" xlink:title="Templ&lt; T 
&gt;">
+<polygon fill="none" stroke="black" points="441.683,-146 376.346,-146 
376.346,-128 441.683,-128 441.683,-146"/>
+<text text-anchor="middle" x="409.015" y="-134" 
font-family="Helvetica,sans-Serif" font-size="10.00">Templ&lt; T &gt;</text>
+</a>
+</g>
+</g>
+<!-- Node17&#45;&gt;Node16 -->
+<g id="edge7" class="edge"><title>Node17&#45;&gt;Node16</title>
+<path fill="none" stroke="orange" stroke-dasharray="5,2" 
d="M409.015,-117.828C409.015,-106.079 409.015,-91.3449 409.015,-82.3053"/>
+<polygon fill="orange" stroke="orange" points="405.515,-117.895 
409.015,-127.895 412.515,-117.895 405.515,-117.895"/>
+<text text-anchor="middle" x="422.914" y="-102" 
font-family="Helvetica,sans-Serif" font-size="10.00">&lt; int &gt;</text>
+</g>
+<!-- Node18 -->
+<g id="node9" class="node"><title>Node18</title>
+<g id="a_node9"><a xlink:href="$classUsed.html" xlink:title="Used">
+<polygon fill="none" stroke="black" points="501.861,-82 462.168,-82 
462.168,-64 501.861,-64 501.861,-82"/>
+<text text-anchor="middle" x="482.015" y="-70" 
font-family="Helvetica,sans-Serif" font-size="10.00">Used</text>
+</a>
+</g>
+</g>
+<!-- Node18&#45;&gt;Node9 -->
+<g id="edge8" class="edge"><title>Node18&#45;&gt;Node9</title>
+<path fill="none" stroke="#9a32cd" stroke-dasharray="5,2" 
d="M452.451,-63.5142C410.543,-51.4849 334.429,-29.6374 293.618,-17.9232"/>
+<polygon fill="#9a32cd" stroke="#9a32cd" points="451.504,-66.8834 
462.081,-66.2783 453.435,-60.1551 451.504,-66.8834"/>
+<text text-anchor="middle" x="417.305" y="-38" 
font-family="Helvetica,sans-Serif" font-size="10.00">m_usedClass</text>
+</g>
+</g>
+</svg>

http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/b5b51c69/docs/v1.11/group__grp__arima.html
----------------------------------------------------------------------
diff --git a/docs/v1.11/group__grp__arima.html 
b/docs/v1.11/group__grp__arima.html
new file mode 100644
index 0000000..19d174d
--- /dev/null
+++ b/docs/v1.11/group__grp__arima.html
@@ -0,0 +1,414 @@
+<!-- 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.13"/>
+<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: ARIMA</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);
+</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>
+<!-- hack in the navigation tree -->
+<script type="text/javascript" src="eigen_navtree_hacks.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', 'madlib.incubator.apache.org');
+  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.11</span>
+   </div>
+   <div id="projectbrief">User Documentation for MADlib</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.13 -->
+<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('group__grp__arima.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="header">
+  <div class="headertitle">
+<div class="title">ARIMA<div class="ingroups"><a class="el" 
href="group__grp__tsa.html">Time Series Analysis</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><b>Contents</b> <ul>
+<li class="level1">
+<a href="#train">Training Function</a> </li>
+<li class="level1">
+<a href="#forecast">Forecasting Function</a> </li>
+<li class="level1">
+<a href="#examples">Examples</a> </li>
+<li class="level1">
+<a href="#background">Technical Background</a> </li>
+<li class="level1">
+<a href="#literature">Literature</a> </li>
+<li class="level1">
+<a href="#related">Related Topics</a> </li>
+</ul>
+</div><p>Given a time series of data X, the Autoregressive Integrated Moving 
Average (ARIMA) model is a tool for understanding and, perhaps, predicting 
future values in the series. The model consists of three parts, an 
autoregressive (AR) part, a moving average (MA) part, and an integrated (I) 
part where an initial differencing step can be applied to remove any 
non-stationarity in the signal. The model is generally referred to as an 
ARIMA(p, d, q) model where parameters p, d, and q are non-negative integers 
that refer to the order of the autoregressive, integrated, and moving average 
parts of the model respectively.</p>
+<p><a class="anchor" id="train"></a></p><dl class="section user"><dt>Training 
Function</dt><dd></dd></dl>
+<p>The ARIMA training function has the following syntax. </p><pre 
class="syntax">
+arima_train( input_table,
+       output_table,
+       timestamp_column,
+       timeseries_column,
+       grouping_columns,
+       include_mean,
+       non_seasonal_orders,
+       optimizer_params
+     )
+</pre><p><b>Arguments</b> </p><dl class="arglist">
+<dt>input_table </dt>
+<dd><p class="startdd">TEXT. The name of the table containing time series 
data.</p>
+<p class="enddd"></p>
+</dd>
+<dt>output_table </dt>
+<dd><p class="startdd">TEXT. The name of the table to store the ARIMA model. 
Three tables are created, with names based on the value of the 
<em>output_table</em> argument in the training function:</p>
+<ol type="1">
+<li><em>output_table</em>: Table containing the ARIMA model. Contains the 
following columns: <table class="output">
+<tr>
+<th>mean </th><td>Model mean (only if 'include_mean' is TRUE)  </td></tr>
+<tr>
+<th>mean_std_error </th><td>Standard errors for mean  </td></tr>
+<tr>
+<th>ar_params </th><td>Auto-regressions parameters of the ARIMA model  
</td></tr>
+<tr>
+<th>ar_std_errors </th><td>Standard errors for AR parameters  </td></tr>
+<tr>
+<th>ma_params </th><td>Moving average parameters of the ARIMA model  </td></tr>
+<tr>
+<th>ma_std_errors </th><td>Standard errors for MA parameters  </td></tr>
+</table>
+</li>
+<li><em>output_table</em>_summary: Table containing descriptive statistics of 
the ARIMA model. Contains the following columns: <table class="output">
+<tr>
+<th>input_table </th><td>Table name with the source data  </td></tr>
+<tr>
+<th>timestamp_col </th><td>Column name in the source table that contains the 
timestamp index to data  </td></tr>
+<tr>
+<th>timeseries_col </th><td>Column name in the source table that contains the 
data values  </td></tr>
+<tr>
+<th>non_seasonal_orders </th><td>Orders of the non-seasonal ARIMA model  
</td></tr>
+<tr>
+<th>include_mean </th><td>TRUE if intercept was included in ARIMA model  
</td></tr>
+<tr>
+<th>residual_variance </th><td>Variance of the residuals  </td></tr>
+<tr>
+<th>log_likelihood </th><td>Log likelihood value (when using MLE)  </td></tr>
+<tr>
+<th>iter_num </th><td>The number of iterations executed  </td></tr>
+<tr>
+<th>exec_time </th><td>Total time taken to train the model  </td></tr>
+</table>
+</li>
+<li><em>output_table</em>_residual: Table containing the residuals for each 
data point in 'input_table'. Contains the following columns: <table 
class="output">
+<tr>
+<th>timestamp_col </th><td>Same as the 'timestamp_col' parameter (all indices 
from source table included except the first <em>d</em> elements, where 
<em>d</em> is the differencing order value from 'non_seasonal_orders')   
</td></tr>
+<tr>
+<th>residual </th><td>Residual value for each data point  </td></tr>
+</table>
+</li>
+</ol>
+<p></p>
+<p class="enddd"></p>
+</dd>
+<dt>timestamp_column </dt>
+<dd><p class="startdd">TEXT. The name of the column containing the timestamp 
(index) data. This could be a serial index (INTEGER) or date/time value 
(TIMESTAMP).</p>
+<p class="enddd"></p>
+</dd>
+<dt>timeseries_column </dt>
+<dd><p class="startdd">TEXT. The name of the column containing the time series 
data. This data is currently restricted to DOUBLE PRECISION.</p>
+<p class="enddd"></p>
+</dd>
+<dt>grouping_columns (optional) </dt>
+<dd><p class="startdd">TEXT, default: NULL. <em>Not currently implemented. Any 
non-NULL value is ignored.</em></p>
+<p>A comma-separated list of column names used to group the input dataset into 
discrete groups, training one ARIMA model per group. It is similar to the SQL 
<code>GROUP BY</code> clause. When this value is null, no grouping is used and 
a single result model is generated.</p>
+<p class="enddd"></p>
+</dd>
+<dt>include_mean (optional) </dt>
+<dd><p class="startdd">BOOLEAN, default: FALSE. Mean value of the data series 
is added in the ARIMA model if this variable is True. </p>
+<p class="enddd"></p>
+</dd>
+<dt>non_seasonal_orders (optional) </dt>
+<dd><p class="startdd">INTEGER[], default: 'ARRAY[1,1,1]'. Orders of the ARIMA 
model. The orders are [p, d, q], where parameters p, d, and q are non-negative 
integers that refer to the order of the autoregressive, integrated, and moving 
average parts of the model respectively. </p>
+<p class="enddd"></p>
+</dd>
+<dt>optimizer_params (optional) </dt>
+<dd>TEXT. Comma-separated list of optimizer-specific parameters of the form 
‘name=value'. The order of the parameters does not matter. The following 
parameters are recognized:<ul>
+<li><b>max_iter:</b> Maximum number of iterations to run learning algorithm 
(Default = 100)</li>
+<li><b>tau:</b> Computes the initial step size for gradient algorithm (Default 
= 0.001)</li>
+<li><b>e1:</b> Algorithm-specific threshold for convergence (Default = 
1e-15)</li>
+<li><b>e2:</b> Algorithm-specific threshold for convergence (Default = 
1e-15)</li>
+<li><b>e3:</b> Algorithm-specific threshold for convergence (Default = 
1e-15)</li>
+<li><b>hessian_delta:</b> Delta parameter to compute a numerical approximation 
of the Hessian matrix (Default = 1e-6)  </li>
+</ul>
+</dd>
+</dl>
+<p><a class="anchor" id="forecast"></a></p><dl class="section 
user"><dt>Forecasting Function</dt><dd></dd></dl>
+<p>The ARIMA forecast function has the following syntax. </p><pre 
class="syntax">
+arima_forecast( model_table,
+                output_table,
+                steps_ahead
+              )
+</pre><p> <b>Arguments</b> </p><dl class="arglist">
+<dt>model_table </dt>
+<dd><p class="startdd">TEXT. The name of the table containing the ARIMA model 
trained on the time series dataset.</p>
+<p class="enddd"></p>
+</dd>
+<dt>output_table </dt>
+<dd><p class="startdd">TEXT. The name of the table to store the forecasted 
values. The output table produced by the forecast function contains the 
following columns. </p><table class="output">
+<tr>
+<th>group_by_cols </th><td>Grouping column values (if grouping parameter is 
provided)  </td></tr>
+<tr>
+<th>step_ahead </th><td>Time step for the forecast  </td></tr>
+<tr>
+<th>forecast_value </th><td>Forecast of the current time step  </td></tr>
+</table>
+<p class="enddd"></p>
+</dd>
+<dt>steps_ahead </dt>
+<dd>INTEGER. The number of steps to forecast at the end of the time series. 
</dd>
+</dl>
+<p><a class="anchor" id="examples"></a></p><dl class="section 
user"><dt>Examples</dt><dd><ol type="1">
+<li>View online help for the ARIMA training function. <pre class="example">
+SELECT madlib.arima_train();
+</pre></li>
+<li>Create an input data set. <pre class="example">
+DROP TABLE IF EXISTS arima_beer;
+CREATE TABLE arima_beer (time_id integer NOT NULL, value double precision NOT 
NULL );
+COPY arima_beer (time_id, value) FROM stdin WITH DELIMITER '|';
+1  | 93.2
+2  | 96.0
+3  | 95.2
+4  | 77.0
+5  | 70.9
+6  | 64.7
+7  | 70.0
+8  | 77.2
+9  | 79.5
+10 | 100.5
+11 | 100.7
+12 | 107.0
+13 | 95.9
+14 | 82.7
+15 | 83.2
+16 | 80.0
+17 | 80.4
+18 | 67.5
+19 | 75.7
+20 | 71.0
+21 | 89.2
+22 | 101.0
+23 | 105.2
+24 | 114.0
+25 | 96.2
+26 | 84.4
+27 | 91.2
+28 | 81.9
+29 | 80.5
+30 | 70.4
+31 | 74.7
+32 | 75.9
+33 | 86.2
+34 | 98.7
+35 | 100.9
+36 | 113.7
+37 | 89.7
+38 | 84.4
+39 | 87.2
+40 | 85.5
+\.
+</pre></li>
+<li>Train an ARIMA model. <pre class="example">
+-- Train ARIMA model with 'grouping_columns'=NULL, 'include_mean'=TRUE,
+--   and 'non_seasonal_orders'=[1,1,1]
+SELECT madlib.arima_train( 'arima_beer',
+                           'arima_beer_output',
+                           'time_id',
+                           'value',
+                           NULL,
+                           FALSE,
+                           ARRAY[1, 1, 1]
+                         );
+</pre></li>
+<li>Examine the ARIMA model. <pre class="example">
+\x ON
+SELECT * FROM arima_beer_output;
+</pre> Result: <pre class="result">
+-[ RECORD 1 ]-+------------------
+ar_params     | {0.221954769696}
+ar_std_errors | {0.575367782602}
+ma_params     | {-0.140623564576}
+ma_std_errors | {0.533445214346}
+</pre></li>
+<li>View the summary statistics table. <pre class="example">
+SELECT * FROM arima_beer_output_summary;
+</pre> Result: <pre class="result">
+-[ RECORD 1 ]-------+---------------
+input_table         | arima_beer
+timestamp_col       | time_id
+timeseries_col      | value
+non_seasonal_orders | {1,1,1}
+include_mean        | f
+residual_variance   | 100.989970539
+log_likelihood      | -145.331516396
+iter_num            | 28
+exec_time (s)       | 2.75
+</pre></li>
+<li>View the residuals. <pre class="example">
+\x OFF
+SELECT * FROM arima_beer_output_residual;
+</pre> Result: <pre class="result">
+ time_id |      residual
+---------+--------------------
+       2 |                  0
+       4 |   -18.222328834394
+       6 |  -5.49616627282665
+...
+      35 |   1.06298837051437
+      37 |  -25.0886854003757
+      39 |   3.48401666299571
+(40 rows)
+</pre></li>
+<li>Use the ARIMA forecast function to forecast 10 future values. <pre 
class="example">
+SELECT madlib.arima_forecast( 'arima_beer_output',
+                              'arima_beer_forecast_output',
+                              10
+                            );
+SELECT * FROM arima_beer_forecast_output;
+</pre> Result: <pre class="result">
+ steps_ahead | forecast_value
+-------------+----------------
+           1 |  85.3802343659
+           3 |  85.3477516875
+           5 |  85.3461514635
+           7 |  85.3460726302
+           9 |  85.3460687465
+           2 |  85.3536518121
+           4 |  85.3464421267
+           6 |  85.3460869494
+           8 |  85.3460694519
+          10 |    85.34606859
+(10 rows)
+</pre></li>
+</ol>
+</dd></dl>
+<p><a class="anchor" id="background"></a></p><dl class="section 
user"><dt>Technical Background</dt><dd>An ARIMA model is an 
<em>a</em>uto-<em>r</em>egressive <em>i</em>ntegrated <em>m</em>oving 
<em>a</em>verage model. An ARIMA model is typically expressed in the form <p 
class="formulaDsp">
+<img class="formulaDsp" alt="\[ (1 - \phi(B)) Y_t = (1 + \theta(B)) Z_t, \]" 
src="form_535.png"/>
+</p>
+</dd></dl>
+<p>where <img class="formulaInl" alt="$B$" src="form_207.png"/> is the 
backshift operator. The time <img class="formulaInl" alt="$ t $" 
src="form_536.png"/> is from <img class="formulaInl" alt="$ 1 $" 
src="form_537.png"/> to <img class="formulaInl" alt="$ N $" 
src="form_220.png"/>.</p>
+<p>ARIMA models involve the following variables:</p><ul>
+<li>The values of the time series: <img class="formulaInl" alt="$ X_t $" 
src="form_538.png"/>.</li>
+<li>Parameters of the model: <img class="formulaInl" alt="$ p $" 
src="form_111.png"/>, <img class="formulaInl" alt="$ q $" src="form_539.png"/>, 
and <img class="formulaInl" alt="$ d $" src="form_468.png"/>; <img 
class="formulaInl" alt="$ d $" src="form_468.png"/> is the differencing order, 
<img class="formulaInl" alt="$ p $" src="form_111.png"/> is the order of the AR 
operator, and <img class="formulaInl" alt="$ q $" src="form_539.png"/> is the 
order of the MA operator.</li>
+<li>The AR operator: <img class="formulaInl" alt="$ \phi(B) $" 
src="form_540.png"/>.</li>
+<li>The MA operator: <img class="formulaInl" alt="$ \theta(B) $" 
src="form_541.png"/>.</li>
+<li>The lag difference: <img class="formulaInl" alt="$ Y_{t} $" 
src="form_542.png"/>, where <img class="formulaInl" alt="$ Y_{t} = 
(1-B)^{d}(X_{t} - \mu) $" src="form_543.png"/>.</li>
+<li>The mean value: <img class="formulaInl" alt="$ \mu $" 
src="form_288.png"/>, which is set to be zero for <img class="formulaInl" 
alt="$ d&gt;0 $" src="form_544.png"/> and estimated from the data when d=0.</li>
+<li>The error terms: <img class="formulaInl" alt="$ Z_t $" 
src="form_545.png"/>.</li>
+</ul>
+<p>The auto regression operator models the prediction for the next observation 
as some linear combination of the previous observations. More formally, an AR 
operator of order <img class="formulaInl" alt="$ p $" src="form_111.png"/> is 
defined as</p>
+<p class="formulaDsp">
+<img class="formulaDsp" alt="\[ \phi(B) Y_t= \phi_1 Y_{t-1} + \dots + \phi_{p} 
Y_{t-p} \]" src="form_546.png"/>
+</p>
+<p>The moving average operator is similar, and it models the prediction for 
the next observation as a linear combination of the errors in the previous 
prediction errors. More formally, the MA operator of order <img 
class="formulaInl" alt="$ q $" src="form_539.png"/> is defined as</p>
+<p class="formulaDsp">
+<img class="formulaDsp" alt="\[ \theta(B) Z_t = \theta_{1} Z_{t-1} + \dots + 
\theta_{q} Z_{t-q}. \]" src="form_547.png"/>
+</p>
+<p>We estimate the parameters using the Levenberg-Marquardt Algorithm. In 
mathematics and computing, the Levenberg-Marquardt algorithm (LMA), also known 
as the damped least-squares (DLS) method, provides a numerical solution to the 
problem of minimizing a function, generally nonlinear, over a space of 
parameters of the function.</p>
+<p>Like other numeric minimization algorithms, LMA is an iterative procedure. 
To start a minimization, the user has to provide an initial guess for the 
parameter vector, $p$, as well as some tuning parameters <img 
class="formulaInl" alt="$\tau, \epsilon_1, \epsilon_2, \epsilon_3,$" 
src="form_548.png"/>.</p>
+<p><a class="anchor" id="literature"></a></p><dl class="section 
user"><dt>Literature</dt><dd></dd></dl>
+<p>[1] Rob J Hyndman and George Athanasopoulos: Forecasting: principles and 
practice, <a href="http://otexts.com/fpp/";>http://otexts.com/fpp/</a></p>
+<p>[2] Robert H. Shumway, David S. Stoffer: Time Series Analysis and Its 
Applications With R Examples, Third edition Springer Texts in Statistics, 
2010</p>
+<p>[3] Henri Gavin: The Levenberg-Marquardt method for nonlinear least squares 
curve-fitting problems, 2011</p>
+<p><a class="anchor" id="related"></a></p><dl class="section user"><dt>Related 
Topics</dt><dd></dd></dl>
+<p>File <a class="el" href="arima_8sql__in.html" title="Arima function for 
forecasting of timeseries data. ">arima.sql_in</a> documenting the ARIMA 
functions </p>
+</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 Tue May 16 2017 13:24:38 for MADlib by
+    <a href="http://www.doxygen.org/index.html";>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/b5b51c69/docs/v1.11/group__grp__array.html
----------------------------------------------------------------------
diff --git a/docs/v1.11/group__grp__array.html 
b/docs/v1.11/group__grp__array.html
new file mode 100644
index 0000000..8b48d77
--- /dev/null
+++ b/docs/v1.11/group__grp__array.html
@@ -0,0 +1,352 @@
+<!-- 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.13"/>
+<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: Array Operations</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);
+</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>
+<!-- hack in the navigation tree -->
+<script type="text/javascript" src="eigen_navtree_hacks.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', 'madlib.incubator.apache.org');
+  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.11</span>
+   </div>
+   <div id="projectbrief">User Documentation for MADlib</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.13 -->
+<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('group__grp__array.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="header">
+  <div class="headertitle">
+<div class="title">Array Operations<div class="ingroups"><a class="el" 
href="group__grp__datatrans.html">Data Types and Transformations</a> &raquo; <a 
class="el" href="group__grp__arraysmatrix.html">Arrays and 
Matrices</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><b>Contents</b> <ul>
+<li>
+<a href="#notes">Implementation Notes</a> </li>
+<li>
+<a href="#list">List of Array Operations</a> </li>
+<li>
+<a href="#examples">Examples</a> </li>
+<li>
+<a href="#related">Related Topics</a> </li>
+</ul>
+</div><p>This module provides a set of basic array operations implemented in C 
and SQL. It is a support module for several machine learning algorithms that 
require fast array operations.</p>
+<p><a class="anchor" id="notes"></a></p><dl class="section 
user"><dt>Implementation Notes</dt><dd></dd></dl>
+<p>All functions (except <a class="el" 
href="array__ops_8sql__in.html#acb57ea4521dcb717f9e3148e0acccc74" title="This 
function normalizes an array as sum of squares to be 1. ">normalize()</a> and 
<a class="el" href="array__ops_8sql__in.html#acc295a568878940ffc3e2c9a75990efb" 
title="This function takes an array as the input and keep only elements that 
satisfy the operator on specifi...">array_filter()</a>) described in this 
module work with 2-D arrays.</p>
+<p>These functions support several numeric types:</p><ul>
+<li>SMALLINT</li>
+<li>INTEGER</li>
+<li>BIGINT</li>
+<li>REAL</li>
+<li>DOUBLE PRECISION (FLOAT8)</li>
+<li>NUMERIC (internally casted into FLOAT8, loss of precisions can happen)</li>
+</ul>
+<p>Additionally, <a class="el" 
href="array__ops_8sql__in.html#af057b589f2a2cb1095caa99feaeb3d70" title="This 
function takes a 2-D array as the input and unnests it by one level. It returns 
a set of 1-D arr...">array_unnest_2d_to_1d()</a> supports other data types such 
as TEXT or VARCHAR.</p>
+<p>Several of the function require NO NULL VALUES, while others omit NULLs and 
return results. See details in description of individual functions.</p>
+<p><a class="anchor" id="list"></a></p><dl class="section user"><dt>Array 
Operations</dt><dd><table class="output">
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a91c8d3715142927b3967f05a4fbf1575" title="Adds 
two arrays. It requires that all the values are NON-NULL. Return type is the 
same as the input t...">array_add()</a></th><td><p class="starttd">Adds two 
arrays. It requires that all the values are NON-NULL. Return type is the same 
as the input type.</p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a26e8508a2bae10a6574cec697a270eea" 
title="Aggregate, element-wise sum of arrays. It requires that all the values 
are NON-NULL. Return type is the same as the input type. ">sum()</a></th><td><p 
class="starttd">Aggregate, sums vector element-wisely. It requires that all the 
values are NON-NULL. Return type is the same as the input type.</p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a2875a161a01c7dcdea9a4997b074eefc" 
title="Subtracts two arrays. It requires that all the values are NON-NULL. 
Return type is the same as the in...">array_sub()</a></th><td><p 
class="starttd">Subtracts two arrays. It requires that all the values are 
NON-NULL. Return type is the same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a652d70c480d484c4a1a92ded384b0dd7" 
title="Element-wise product of two arrays. It requires that all the values are 
NON-NULL. Return type is the ...">array_mult()</a></th><td><p 
class="starttd">Element-wise product of two arrays. It requires that all the 
values are NON-NULL. Return type is the same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a6cc05e7052495f8b64692faf40219576" 
title="Element-wise division of two arrays. It requires that all the values are 
NON-NULL. Return type is the same as the input type. 
">array_div()</a></th><td><p class="starttd">Element-wise division of two 
arrays. It requires that all the values are NON-NULL. Return type is the same 
as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#acde10964ed23b7c8da515fb84cb8d5e0" 
title="Dot-product of two arrays. It requires that all the values are NON-NULL. 
Return type is the same as t...">array_dot()</a></th><td><p 
class="starttd">Dot-product of two arrays. It requires that all the values are 
NON-NULL. Return type is the same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#aedf6cb13eb4803bcc12dc4d95ea8ff4e" title="Checks 
whether one array contains the other. This function returns TRUE if each 
non-zero element in t...">array_contains()</a></th><td><p 
class="starttd">Checks whether one array contains the other. This function 
returns TRUE if each non-zero element in the right array equals to the element 
with the same index in the left array. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#ae891429cc50705c530f3e5ca15541849" title="This 
function finds the maximum value in the array. NULLs are ignored. Return type 
is the same as the...">array_max()</a></th><td><p class="starttd">This function 
finds the maximum value in the array. NULLs are ignored. Return type is the 
same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#aa415256a9064aecc600dfb5e377fb7b1" title="This 
function finds the maximum value and corresponding index in the array. NULLs 
are ignored...">array_max_index()</a></th><td><p class="starttd">This function 
finds the maximum value and corresponding index in the array. NULLs are 
ignored. Return type is array in format [max, index], and its element type is 
the same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a6659bf9d9363eb179fab34f81f8ac59b" title="This 
function finds the minimum value in the array. NULLs are ignored. Return type 
is the same as the...">array_min()</a></th><td><p class="starttd">This function 
finds the minimum value in the array. NULLs are ignored. Return type is the 
same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a813a4d9ffc1c18b1b3e18f6ecdb2051f" title="This 
function finds the minimum value and corresponding index in the array. NULLs 
are ignored...">array_min_index()</a></th><td><p class="starttd">This function 
finds the minimum value and corresponding index in the array. NULLs are 
ignored. Return type is array in format [min, index], and its element type is 
the same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a4c98f20e6a737358806f63318daea5ec" title="This 
function finds the sum of the values in the array. NULLs are ignored. Return 
type is the same as...">array_sum()</a></th><td><p class="starttd">This 
function finds the sum of the values in the array. NULLs are ignored. Return 
type is the same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a418de59800833aa95f9b7cbd6b12901c" title="This 
function finds the sum of the values in the array. NULLs are ignored. Return 
type is always FLOA...">array_sum_big()</a></th><td><p class="starttd">This 
function finds the sum of the values in the array. NULLs are ignored. Return 
type is always FLOAT8 regardless of input. This function is meant to replace <a 
class="el" href="array__ops_8sql__in.html#a4c98f20e6a737358806f63318daea5ec" 
title="This function finds the sum of the values in the array. NULLs are 
ignored. Return type is the same as...">array_sum()</a> in cases when a sum may 
overflow the element type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a13c0b0c53e8b0dc4e08c21bb8152ee7d" title="This 
function finds the sum of abs of the values in the array. NULLs are ignored. 
Return type is the ...">array_abs_sum()</a></th><td><p class="starttd">This 
function finds the sum of abs of the values in the array. NULLs are ignored. 
Return type is the same as the input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#ac14e74c10b58f5518cd0e3e56067e5ba" title="This 
function takes an array as the input and finds absolute value of each element 
in the array...">array_abs()</a></th><td><p class="starttd">This function takes 
an array as the input and finds abs of each element in the array, returning the 
resulting array. It requires that all the values are NON-NULL. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a407598f9eb70637798b02fd731bfca2c" title="This 
function finds the mean of the values in the array. NULLs are ignored. 
">array_mean()</a></th><td><p class="starttd">This function finds the mean of 
the values in the array. NULLs are ignored. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a3b6c2d173a611e6d6b184d825c2b336d" title="This 
function finds the standard deviation of the values in the array. NULLs are 
ignored. ">array_stddev()</a></th><td><p class="starttd">This function finds 
the standard deviation of the values in the array. NULLs are ignored. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#ab066e65a41db78b00b4532996b2a6efc" title="This 
function creates an array of set size (the argument value) of FLOAT8, 
initializing the values to...">array_of_float()</a></th><td><p 
class="starttd">This function creates an array of set size (the argument value) 
of FLOAT8, initializing the values to 0.0. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#ab7d8550e66d2e0bd54b8f0997d93880c" title="This 
function creates an array of set size (the argument value) of BIGINT, 
initializing the values to...">array_of_bigint()</a></th><td><p 
class="starttd">This function creates an array of set size (the argument value) 
of BIGINT, initializing the values to 0. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a065a5323f3b742be47e39ad8b4c90fc2" title="This 
functions set every values in the array to some desired value (provided as the 
argument)...">array_fill()</a></th><td><p class="starttd">This functions set 
every value in the array to some desired value (provided as the argument). </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#acc295a568878940ffc3e2c9a75990efb" title="This 
function takes an array as the input and keep only elements that satisfy the 
operator on specifi...">array_filter()</a></th><td><p class="starttd">This 
function takes an array as the input and keep only elements that satisfy the 
operator on specified scalar. It requires that the array is 1-D and all the 
values are NON-NULL. Return type is the same as the input type. By default, 
this function removes all zeros. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#ae6881cc5c86941b6ffca35d7f3cd5c12" title="This 
function takes an array as the input and executes element-wise multiplication 
by the scalar prov...">array_scalar_mult()</a></th><td><p class="starttd">This 
function takes an array as the input and executes element-wise multiplication 
by the scalar provided as the second argument, returning the resulting array. 
It requires that all the values are NON-NULL. Return type is the same as the 
input type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a0b6ffe59b12c3dee076c3059f9ab363f" title="This 
function takes an array as the input and executes element-wise addition by the 
scalar provided a...">array_scalar_add()</a></th><td><p class="starttd">This 
function takes an array as the input and executes element-wise addition of the 
scalar provided as the second argument, returning the resulting array. It 
requires that all the values are NON-NULL. Return type is the same as the input 
type. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a83451ed0c3ca5a9c62751dba47e45df7" title="This 
function takes an array as the input and finds square root of each element in 
the array...">array_sqrt()</a></th><td><p class="starttd">This function takes 
an array as the input and finds square root of each element in the array, 
returning the resulting array. It requires that all the values are NON-NULL. 
</p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#a761e7ca753a5e1acf26896b37ed8b0bd" title="This 
function takes an array and a float8 as the input and finds power of each 
element in the array...">array_pow()</a></th><td><p class="starttd">This 
function takes an array and a float8 as the input and finds power of each 
element in the array, returning the resulting array. It requires that all the 
values are NON-NULL. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#aff60f4091bed6374683f047c8a70ef9a" title="This 
function takes an array as the input and finds square of each element in the 
array...">array_square()</a></th><td><p class="starttd">This function takes an 
array as the input and finds square of each element in the array, returning the 
resulting array. It requires that all the values are NON-NULL. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#acb57ea4521dcb717f9e3148e0acccc74" title="This 
function normalizes an array as sum of squares to be 1. 
">normalize()</a></th><td><p class="starttd">This function normalizes an array 
as sum of squares to be 1. It requires that the array is 1-D and all the values 
are NON-NULL. </p>
+<p class="endtd"></p>
+</td></tr>
+<tr>
+<th><a class="el" 
href="array__ops_8sql__in.html#af057b589f2a2cb1095caa99feaeb3d70" title="This 
function takes a 2-D array as the input and unnests it by one level. It returns 
a set of 1-D arr...">array_unnest_2d_to_1d()</a></th><td><p 
class="starttd">This function takes a 2-D array as the input and unnests it by 
one level. It returns a set of 1-D arrays that correspond to rows of the input 
array as well as an ID column with values corresponding to row positions 
occupied by those 1-D arrays within the 2-D array. </p>
+<p class="endtd"></p>
+</td></tr>
+</table>
+</dd></dl>
+<p><a class="anchor" id="examples"></a></p><dl class="section 
user"><dt>Examples</dt><dd></dd></dl>
+<ol type="1">
+<li>Create a database table with two integer array columns and add some data. 
<pre class="example">
+CREATE TABLE array_tbl ( id integer,
+                         array1 integer[],
+                         array2 integer[]
+                       );
+INSERT INTO array_tbl VALUES
+                       ( 1, '{1,2,3,4,5,6,7,8,9}', '{9,8,7,6,5,4,3,2,1}' ),
+                       ( 2, '{1,1,0,1,1,2,3,99,8}','{0,0,0,-5,4,1,1,7,6}' );
+</pre></li>
+<li>Find the minimum, maximum, mean, and standard deviation of the 
<code>array1</code> column. <pre class="example">
+SELECT id, madlib.array_min(array1), madlib.array_max(array1),
+           madlib.array_min_index(array1), madlib.array_max_index(array1),
+           madlib.array_mean(array1), madlib.array_stddev(array1)
+FROM array_tbl;
+</pre> Result: <pre class="result">
+id | array_min | array_max | array_min_index | array_max_index |    array_mean 
   |   array_stddev
+----+-----------+-----------+---------------+---------------+------------------+------------------
+  1 |         1 |         9 | {1,1}         | {9,9}         |                5 
| 2.73861278752583
+  2 |         0 |        99 | {0,3}         | {99,8}        | 12.8888888888889 
| 32.3784050118457(2 rows)
+</pre></li>
+<li>Perform array addition and subtraction. <pre class="example">
+SELECT id, madlib.array_add(array1,array2),
+          madlib.array_sub(array1,array2)
+FROM array_tbl;
+</pre> Result: <pre class="result">
+ id |          array_add           |        array_sub
+&#160;---+------------------------------+-------------------------
+  2 | {1,1,0,-4,5,3,4,106,14}      | {1,1,0,6,-3,1,2,92,2}
+  1 | {10,10,10,10,10,10,10,10,10} | {-8,-6,-4,-2,0,2,4,6,8}
+(2 rows)
+</pre></li>
+<li>Perform element-wise array multiplication and division. The row with 
<code>id=2</code> is excluded because the divisor array contains zero, which 
would cause a divide-by-zero error. <pre class="example">
+SELECT id, madlib.array_mult(array1,array2),
+           madlib.array_div(array1,array2)
+FROM array_tbl
+WHERE 0 != ALL(array2);</pre> Result: <pre class="result">
+ id |         array_mult         |      array_div
+&#160;---+----------------------------+---------------------
+  1 | {9,16,21,24,25,24,21,16,9} | {0,0,0,0,1,1,2,4,9}
+(1 row)
+</pre></li>
+<li>Calculate the dot product of the arrays. <pre class="example">
+SELECT id, madlib.array_dot(array1, array2)
+FROM array_tbl;
+</pre> Result: <pre class="result">
+ id | array_dot
+&#160;---+----------
+  2 |       745
+  1 |       165
+(2 rows)
+</pre></li>
+<li>Multiply an array by a scalar 3. <pre class="example">
+SELECT id, madlib.array_scalar_mult(array1,3)
+FROM array_tbl;
+</pre> Result: <pre class="result">
+ id |     array_scalar_mult
+&#160;---+--------------------------
+  1 | {3,6,9,12,15,18,21,24,27}
+  2 | {3,3,0,3,3,6,9,297,24}
+(2 rows)
+</pre></li>
+<li>Construct a nine-element array with each element set to the value 1.3. 
<pre class="example">
+SELECT madlib.array_fill(madlib.array_of_float(9), 1.3::float);
+</pre> Result: <pre class="result">
+              array_fill
+&#160;--------------------------------------
+ {1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3}
+(1 row)
+</pre></li>
+<li>Unnest a column of 2-D arrays into sets of 1-D arrays. <pre 
class="example">
+SELECT id, (madlib.array_unnest_2d_to_1d(val)).*
+FROM (
+  SELECT 1::INT AS id, ARRAY[[1.3,2.0,3.2],[10.3,20.0,32.2]]::FLOAT8[][] AS val
+  UNION ALL
+  SELECT 2, ARRAY[[pi(),pi()/2],[2*pi(),pi()],[pi()/4,4*pi()]]::FLOAT8[][]
+) t
+ORDER BY 1,2;
+</pre> Result: <pre class="result">
+ id | unnest_row_id |            unnest_result
+----+---------------+--------------------------------------
+  1 |             1 | {1.3,2,3.2}
+  1 |             2 | {10.3,20,32.2}
+  2 |             1 | {3.14159265358979,1.5707963267949}
+  2 |             2 | {6.28318530717959,3.14159265358979}
+  2 |             3 | {0.785398163397448,12.5663706143592}
+(5 rows)
+</pre> If the function is called without the .* notation then it will return a 
composite record type with two attributes: the row ID and corresponding 
unnested array result.</li>
+</ol>
+<p><a class="anchor" id="related"></a></p><dl class="section user"><dt>Related 
Topics</dt><dd></dd></dl>
+<p>File <a class="el" href="array__ops_8sql__in.html" title="implementation of 
array operations in SQL ">array_ops.sql_in</a> for list of functions and usage. 
</p>
+</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 Tue May 16 2017 13:24:38 for MADlib by
+    <a href="http://www.doxygen.org/index.html";>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/b5b51c69/docs/v1.11/group__grp__arraysmatrix.html
----------------------------------------------------------------------
diff --git a/docs/v1.11/group__grp__arraysmatrix.html 
b/docs/v1.11/group__grp__arraysmatrix.html
new file mode 100644
index 0000000..33ed74b
--- /dev/null
+++ b/docs/v1.11/group__grp__arraysmatrix.html
@@ -0,0 +1,169 @@
+<!-- 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.13"/>
+<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: Arrays and Matrices</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);
+</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>
+<!-- hack in the navigation tree -->
+<script type="text/javascript" src="eigen_navtree_hacks.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', 'madlib.incubator.apache.org');
+  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.11</span>
+   </div>
+   <div id="projectbrief">User Documentation for MADlib</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.13 -->
+<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('group__grp__arraysmatrix.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="header">
+  <div class="summary">
+<a href="#groups">Modules</a>  </div>
+  <div class="headertitle">
+<div class="title">Arrays and Matrices<div class="ingroups"><a class="el" 
href="group__grp__datatrans.html">Data Types and 
Transformations</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed 
Description</h2>
+<p>These modules provide basic mathematical operations to be run on array and 
matrices.</p>
+<p>For a distributed system, a matrix cannot simply be represented as a 2D 
array of numbers in memory. <b>We provide two forms of distributed 
representation of a matrix</b>:</p>
+<ul>
+<li>Dense: The matrix is represented as a distributed collection of 1-D 
arrays. An example 3x10 matrix would be the below table: <pre>
+ row_id |         row_vec
+--------+-------------------------
+   1    | {9,6,5,8,5,6,6,3,10,8}
+   2    | {8,2,2,6,6,10,2,1,9,9}
+   3    | {3,9,9,9,8,6,3,9,5,6}
+</pre></li>
+<li>Sparse: The matrix is represented using the row and column indices for 
each non-zero entry of the matrix. Example: <pre>
+ row_id | col_id | value
+--------+--------+-------
+      1 |      1 |     9
+      1 |      5 |     6
+      1 |      6 |     6
+      2 |      1 |     8
+      3 |      1 |     3
+      3 |      2 |     9
+      4 |      7 |     0
+(6 rows)
+</pre> &#160; All matrix operations work with either form of 
representation.</li>
+</ul>
+<p>In many cases, a matrix function can be <b>decomposed to vector operations 
applied independently on each row of a matrix (or corresponding rows of two 
matrices)</b>. We have also provided access to these internal vector operations 
(<a class="el" href="group__grp__array.html">Array Operations</a>) for greater 
flexibility. Matrix operations like <em>matrix_add</em> use the corresponding 
vector operation (<em>array_add</em>) and also include additional validation 
and formating. Other functions like <em>matrix_mult</em> are complex and use a 
combination of such vector operations and other SQL operations.</p>
+<p><b>It's important to note</b> that these array functions are only available 
for the dense format representation of the matrix. In general, the scope of a 
single array function invocation is limited to only an array (1-dimensional or 
2-dimensional) that fits in memory. When such function is executed on a table 
of arrays, the function is called multiple times - once for each array (or pair 
of arrays). On contrary, scope of a single matrix function invocation is the 
complete matrix stored as a distributed table. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="groups"></a>
+Modules</h2></td></tr>
+<tr class="memitem:group__grp__array"><td class="memItemLeft" align="right" 
valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__grp__array.html">Array Operations</a></td></tr>
+<tr class="memdesc:group__grp__array"><td class="mdescLeft">&#160;</td><td 
class="mdescRight">Provides fast array operations supporting other MADlib 
modules. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__grp__matrix"><td class="memItemLeft" align="right" 
valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__grp__matrix.html">Matrix Operations</a></td></tr>
+<tr class="memdesc:group__grp__matrix"><td class="mdescLeft">&#160;</td><td 
class="mdescRight">Provides fast matrix operations supporting other MADlib 
modules. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__grp__matrix__factorization"><td class="memItemLeft" 
align="right" valign="top">&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__grp__matrix__factorization.html">Matrix Factorization</a></td></tr>
+<tr class="memdesc:group__grp__matrix__factorization"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Matrix Factorization 
methods including Singular Value Decomposition and Low-rank Matrix 
Factorization. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__grp__linalg"><td class="memItemLeft" align="right" 
valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__grp__linalg.html">Norms and Distance functions</a></td></tr>
+<tr class="memdesc:group__grp__linalg"><td class="mdescLeft">&#160;</td><td 
class="mdescRight">Provides utility functions for basic linear algebra 
operations. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__grp__svec"><td class="memItemLeft" align="right" 
valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__grp__svec.html">Sparse Vectors</a></td></tr>
+<tr class="memdesc:group__grp__svec"><td class="mdescLeft">&#160;</td><td 
class="mdescRight">Implements a sparse vector data type that provides 
compressed storage of vectors that may have many duplicate elements. <br 
/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</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 Tue May 16 2017 13:24:38 for MADlib by
+    <a href="http://www.doxygen.org/index.html";>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/b5b51c69/docs/v1.11/group__grp__arraysmatrix.js
----------------------------------------------------------------------
diff --git a/docs/v1.11/group__grp__arraysmatrix.js 
b/docs/v1.11/group__grp__arraysmatrix.js
new file mode 100644
index 0000000..5e12094
--- /dev/null
+++ b/docs/v1.11/group__grp__arraysmatrix.js
@@ -0,0 +1,8 @@
+var group__grp__arraysmatrix =
+[
+    [ "Array Operations", "group__grp__array.html", null ],
+    [ "Matrix Operations", "group__grp__matrix.html", null ],
+    [ "Matrix Factorization", "group__grp__matrix__factorization.html", 
"group__grp__matrix__factorization" ],
+    [ "Norms and Distance functions", "group__grp__linalg.html", null ],
+    [ "Sparse Vectors", "group__grp__svec.html", null ]
+];
\ No newline at end of file

Reply via email to