blob: b69113455bfcd3dd49cdcb32c43093df71cc38eb [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>GaussNewtonOptimizer (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="GaussNewtonOptimizer (Apache Commons Math 3.3 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/GaussNewtonOptimizer.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/AbstractEvaluation.html" title="class in org.apache.commons.math3.fitting.leastsquares"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html" target="_top">Frames</a></li>
<li><a href="GaussNewtonOptimizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.fitting.leastsquares</div>
<h2 title="Class GaussNewtonOptimizer" class="title">Class GaussNewtonOptimizer</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.fitting.leastsquares.GaussNewtonOptimizer</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresOptimizer</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">GaussNewtonOptimizer</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresOptimizer</a></pre>
<div class="block">Gauss-Newton least-squares solver.
<p> This class solve a least-square problem by
solving the normal equations of the linearized problem at each iteration. Either LU
decomposition or Cholesky decomposition can be used to solve the normal equations,
or QR decomposition or SVD decomposition can be used to solve the linear system. LU
decomposition is faster but QR decomposition is more robust for difficult problems,
and SVD can compute a solution for rank-deficient problems.
</p></div>
<dl><dt><span class="strong">Since:</span></dt>
<dd>3.3</dd>
<dt><span class="strong">Version:</span></dt>
<dd>$Id: GaussNewtonOptimizer.java 1573351 2014-03-02 19:54:43Z luc $</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested_class_summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer.Decomposition</a></strong></code>
<div class="block">The decomposition algorithm to use to solve the normal equations.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="nested_classes_inherited_from_class_org.apache.commons.math3.fitting.leastsquares.LeastSquaresOptimizer">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.commons.math3.fitting.leastsquares.<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresOptimizer</a></h3>
<code><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.Optimum.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresOptimizer.Optimum</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html#GaussNewtonOptimizer()">GaussNewtonOptimizer</a></strong>()</code>
<div class="block">Creates a Gauss Newton optimizer.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html#GaussNewtonOptimizer(org.apache.commons.math3.fitting.leastsquares.GaussNewtonOptimizer.Decomposition)">GaussNewtonOptimizer</a></strong>(<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer.Decomposition</a>&nbsp;decomposition)</code>
<div class="block">Create a Gauss Newton optimizer that uses the given decomposition algorithm to
solve the normal equations.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer.Decomposition</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html#getDecomposition()">getDecomposition</a></strong>()</code>
<div class="block">Get the matrix decomposition algorithm used to solve the normal equations.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.Optimum.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresOptimizer.Optimum</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html#optimize(org.apache.commons.math3.fitting.leastsquares.LeastSquaresProblem)">optimize</a></strong>(<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresProblem.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresProblem</a>&nbsp;lsp)</code>
<div class="block">Solve the non-linear least squares problem.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html#toString()">toString</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html" title="class in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html#withDecomposition(org.apache.commons.math3.fitting.leastsquares.GaussNewtonOptimizer.Decomposition)">withDecomposition</a></strong>(<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer.Decomposition</a>&nbsp;newDecomposition)</code>
<div class="block">Configure the decomposition algorithm.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="GaussNewtonOptimizer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>GaussNewtonOptimizer</h4>
<pre>public&nbsp;GaussNewtonOptimizer()</pre>
<div class="block">Creates a Gauss Newton optimizer.
<p/>
The default for the algorithm is to solve the normal equations using QR
decomposition.</div>
</li>
</ul>
<a name="GaussNewtonOptimizer(org.apache.commons.math3.fitting.leastsquares.GaussNewtonOptimizer.Decomposition)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>GaussNewtonOptimizer</h4>
<pre>public&nbsp;GaussNewtonOptimizer(<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer.Decomposition</a>&nbsp;decomposition)</pre>
<div class="block">Create a Gauss Newton optimizer that uses the given decomposition algorithm to
solve the normal equations.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>decomposition</code> - the <a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares"><code>GaussNewtonOptimizer.Decomposition</code></a> algorithm.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getDecomposition()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDecomposition</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer.Decomposition</a>&nbsp;getDecomposition()</pre>
<div class="block">Get the matrix decomposition algorithm used to solve the normal equations.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the matrix <a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares"><code>GaussNewtonOptimizer.Decomposition</code></a> algoritm.</dd></dl>
</li>
</ul>
<a name="withDecomposition(org.apache.commons.math3.fitting.leastsquares.GaussNewtonOptimizer.Decomposition)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withDecomposition</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html" title="class in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer</a>&nbsp;withDecomposition(<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares">GaussNewtonOptimizer.Decomposition</a>&nbsp;newDecomposition)</pre>
<div class="block">Configure the decomposition algorithm.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>newDecomposition</code> - the <a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares"><code>GaussNewtonOptimizer.Decomposition</code></a> algorithm to use.</dd>
<dt><span class="strong">Returns:</span></dt><dd>a new instance.</dd></dl>
</li>
</ul>
<a name="optimize(org.apache.commons.math3.fitting.leastsquares.LeastSquaresProblem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>optimize</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.Optimum.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresOptimizer.Optimum</a>&nbsp;optimize(<a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresProblem.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresProblem</a>&nbsp;lsp)</pre>
<div class="block">Solve the non-linear least squares problem.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.html#optimize(org.apache.commons.math3.fitting.leastsquares.LeastSquaresProblem)">optimize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/LeastSquaresOptimizer.html" title="interface in org.apache.commons.math3.fitting.leastsquares">LeastSquaresOptimizer</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>lsp</code> - the problem definition, including model function and
convergence criteria.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The optimum.</dd></dl>
</li>
</ul>
<a name="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/GaussNewtonOptimizer.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/AbstractEvaluation.html" title="class in org.apache.commons.math3.fitting.leastsquares"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.Decomposition.html" title="enum in org.apache.commons.math3.fitting.leastsquares"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/fitting/leastsquares/GaussNewtonOptimizer.html" target="_top">Frames</a></li>
<li><a href="GaussNewtonOptimizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>