<!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>Uses of Interface org.apache.commons.math3.linear.FieldVectorPreservingVisitor (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="Uses of Interface org.apache.commons.math3.linear.FieldVectorPreservingVisitor (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><a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">Class</a></li>
<li class="navBarCell1Rev">Use</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>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/linear/class-use/FieldVectorPreservingVisitor.html" target="_top">Frames</a></li>
<li><a href="FieldVectorPreservingVisitor.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>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h2 title="Uses of Interface org.apache.commons.math3.linear.FieldVectorPreservingVisitor" class="title">Uses of Interface<br>org.apache.commons.math3.linear.FieldVectorPreservingVisitor</h2>
</div>
<div class="classUseContainer">
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
<caption><span>Packages that use <a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="#org.apache.commons.math3.linear">org.apache.commons.math3.linear</a></td>
<td class="colLast">
<div class="block">Linear algebra support.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<ul class="blockList">
<li class="blockList"><a name="org.apache.commons.math3.linear">
<!--   -->
</a>
<h3>Uses of <a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a> in <a href="../../../../../../org/apache/commons/math3/linear/package-summary.html">org.apache.commons.math3.linear</a></h3>
<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
<caption><span>Methods in <a href="../../../../../../org/apache/commons/math3/linear/package-summary.html">org.apache.commons.math3.linear</a> with parameters of type <a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a></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>
<tbody>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">ArrayFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html#walkInDefaultOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor)">walkInDefaultOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a>&gt;&nbsp;visitor)</code>
<div class="block">Visits (but does not alter) all entries of this vector in default order
 (increasing index).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">SparseFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html#walkInDefaultOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor)">walkInDefaultOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a>&gt;&nbsp;visitor)</code>
<div class="block">Visits (but does not alter) all entries of this vector in default order
 (increasing index).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">ArrayFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html#walkInDefaultOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor, int, int)">walkInDefaultOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a>&gt;&nbsp;visitor,
                  int&nbsp;start,
                  int&nbsp;end)</code>
<div class="block">Visits (but does not alter) some entries of this vector in default order
 (increasing index).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">SparseFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html#walkInDefaultOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor, int, int)">walkInDefaultOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a>&gt;&nbsp;visitor,
                  int&nbsp;start,
                  int&nbsp;end)</code>
<div class="block">Visits (but does not alter) some entries of this vector in default order
 (increasing index).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">ArrayFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html#walkInOptimizedOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor)">walkInOptimizedOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a>&gt;&nbsp;visitor)</code>
<div class="block">Visits (but does not alter) all entries of this vector in optimized
 order.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">SparseFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html#walkInOptimizedOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor)">walkInOptimizedOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a>&gt;&nbsp;visitor)</code>
<div class="block">Visits (but does not alter) all entries of this vector in optimized
 order.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">ArrayFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html#walkInOptimizedOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor, int, int)">walkInOptimizedOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/ArrayFieldVector.html" title="type parameter in ArrayFieldVector">T</a>&gt;&nbsp;visitor,
                    int&nbsp;start,
                    int&nbsp;end)</code>
<div class="block">Visits (but does not alter) some entries of this vector in optimized
 order.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a></code></td>
<td class="colLast"><span class="strong">SparseFieldVector.</span><code><strong><a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html#walkInOptimizedOrder(org.apache.commons.math3.linear.FieldVectorPreservingVisitor, int, int)">walkInOptimizedOrder</a></strong>(<a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">FieldVectorPreservingVisitor</a>&lt;<a href="../../../../../../org/apache/commons/math3/linear/SparseFieldVector.html" title="type parameter in SparseFieldVector">T</a>&gt;&nbsp;visitor,
                    int&nbsp;start,
                    int&nbsp;end)</code>
<div class="block">Visits (but does not alter) some entries of this vector in optimized
 order.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</li>
</ul>
</div>
<!-- ======= 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><a href="../../../../../../org/apache/commons/math3/linear/FieldVectorPreservingVisitor.html" title="interface in org.apache.commons.math3.linear">Class</a></li>
<li class="navBarCell1Rev">Use</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>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/linear/class-use/FieldVectorPreservingVisitor.html" target="_top">Frames</a></li>
<li><a href="FieldVectorPreservingVisitor.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>
<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>
