diff --git a/documentation/functions_eval.xhtml b/documentation/functions_eval.xhtml
new file mode 100644
index 0000000..efe7190
--- /dev/null
+++ b/documentation/functions_eval.xhtml
@@ -0,0 +1,153 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!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.11"/>
+<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
+<title>Compute Library: Data Fields - Enumerator</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"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></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">Compute Library
+   &#160;<span id="projectnumber">v17.06</span>
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.11 -->
+<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.xhtml"><span>Main&#160;Page</span></a></li>
+      <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
+      <li><a href="files.xhtml"><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="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
+      <li><a href="classes.xhtml"><span>Data&#160;Structure&#160;Index</span></a></li>
+      <li><a href="inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
+      <li class="current"><a href="functions.xhtml"><span>Data&#160;Fields</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="functions.xhtml"><span>All</span></a></li>
+      <li><a href="functions_func.xhtml"><span>Functions</span></a></li>
+      <li><a href="functions_vars.xhtml"><span>Variables</span></a></li>
+      <li><a href="functions_type.xhtml"><span>Typedefs</span></a></li>
+      <li><a href="functions_enum.xhtml"><span>Enumerations</span></a></li>
+      <li class="current"><a href="functions_eval.xhtml"><span>Enumerator</span></a></li>
+      <li><a href="functions_rela.xhtml"><span>Related&#160;Functions</span></a></li>
+    </ul>
+  </div>
+</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('functions_eval.xhtml','');});
+</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">
+&#160;<ul>
+<li>arity
+: <a class="el" href="classarm__compute_1_1test_1_1_border_modes.xhtml#adf764cbdea00d65edcd07bb9953ad2b7a3e9a21bf74887eff2f2826d1478670b2">BorderModes</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_convert_policies.xhtml#a99fb83031ce9923c84392b4e92f956b5a3e9a21bf74887eff2f2826d1478670b2">ConvertPolicies</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_data_types.xhtml#abc6126af1d45847bc59afa0aa3216b04a3e9a21bf74887eff2f2826d1478670b2">DataTypes&lt; Size &gt;</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_generic_dataset.xhtml#adc29c2ff13d900c2f185ee95427fb06ca3e9a21bf74887eff2f2826d1478670b2">GenericDataset&lt; T, Size &gt;</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_image_dataset.xhtml#a61dadd085c1777f559549e05962b2c9ea3e9a21bf74887eff2f2826d1478670b2">ImageDataset&lt; Size &gt;</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_interpolation_policies.xhtml#a726ca809ffd3d67ab4b8476646f26635a3e9a21bf74887eff2f2826d1478670b2">InterpolationPolicies</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_normalization_types.xhtml#a0411cd49bb5b71852cecd93bcbf0ca2da3e9a21bf74887eff2f2826d1478670b2">NormalizationTypes</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_rounding_policies.xhtml#abed82baf7f470b522273a3e37c24c600a3e9a21bf74887eff2f2826d1478670b2">RoundingPolicies</a>
+, <a class="el" href="classarm__compute_1_1test_1_1_shape_dataset.xhtml#ab04a0655cd1e3bcac5e8f48c18df1a57a3e9a21bf74887eff2f2826d1478670b2">ShapeDataset&lt; Size &gt;</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 Fri Jun 23 2017 15:44:36 for Compute Library by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
+  </ul>
+</div>
+</body>
+</html>
