comparison libs/commons-math-2.1/docs/apidocs/src-html/org/apache/commons/math/linear/FieldMatrix.html @ 13:cbf34dd4d7e6

commons-math-2.1 added
author dwinter
date Tue, 04 Jan 2011 10:02:07 +0100
parents
children
comparison
equal deleted inserted replaced
12:970d26a94fb7 13:cbf34dd4d7e6
1 <HTML>
2 <BODY BGCOLOR="white">
3 <PRE>
4 <FONT color="green">001</FONT> /*<a name="line.1"></a>
5 <FONT color="green">002</FONT> * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
6 <FONT color="green">003</FONT> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a>
7 <FONT color="green">004</FONT> * this work for additional information regarding copyright ownership.<a name="line.4"></a>
8 <FONT color="green">005</FONT> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a>
9 <FONT color="green">006</FONT> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
10 <FONT color="green">007</FONT> * the License. You may obtain a copy of the License at<a name="line.7"></a>
11 <FONT color="green">008</FONT> *<a name="line.8"></a>
12 <FONT color="green">009</FONT> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
13 <FONT color="green">010</FONT> *<a name="line.10"></a>
14 <FONT color="green">011</FONT> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
15 <FONT color="green">012</FONT> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
16 <FONT color="green">013</FONT> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
17 <FONT color="green">014</FONT> * See the License for the specific language governing permissions and<a name="line.14"></a>
18 <FONT color="green">015</FONT> * limitations under the License.<a name="line.15"></a>
19 <FONT color="green">016</FONT> */<a name="line.16"></a>
20 <FONT color="green">017</FONT> <a name="line.17"></a>
21 <FONT color="green">018</FONT> package org.apache.commons.math.linear;<a name="line.18"></a>
22 <FONT color="green">019</FONT> <a name="line.19"></a>
23 <FONT color="green">020</FONT> <a name="line.20"></a>
24 <FONT color="green">021</FONT> import org.apache.commons.math.Field;<a name="line.21"></a>
25 <FONT color="green">022</FONT> import org.apache.commons.math.FieldElement;<a name="line.22"></a>
26 <FONT color="green">023</FONT> <a name="line.23"></a>
27 <FONT color="green">024</FONT> /**<a name="line.24"></a>
28 <FONT color="green">025</FONT> * Interface defining field-valued matrix with basic algebraic operations.<a name="line.25"></a>
29 <FONT color="green">026</FONT> * &lt;p&gt;<a name="line.26"></a>
30 <FONT color="green">027</FONT> * Matrix element indexing is 0-based -- e.g., &lt;code&gt;getEntry(0, 0)&lt;/code&gt;<a name="line.27"></a>
31 <FONT color="green">028</FONT> * returns the element in the first row, first column of the matrix.&lt;/p&gt;<a name="line.28"></a>
32 <FONT color="green">029</FONT> *<a name="line.29"></a>
33 <FONT color="green">030</FONT> * @param &lt;T&gt; the type of the field elements<a name="line.30"></a>
34 <FONT color="green">031</FONT> * @version $Revision: 811786 $ $Date: 2009-09-06 05:36:08 -0400 (Sun, 06 Sep 2009) $<a name="line.31"></a>
35 <FONT color="green">032</FONT> */<a name="line.32"></a>
36 <FONT color="green">033</FONT> public interface FieldMatrix&lt;T extends FieldElement&lt;T&gt;&gt; extends AnyMatrix {<a name="line.33"></a>
37 <FONT color="green">034</FONT> <a name="line.34"></a>
38 <FONT color="green">035</FONT> /**<a name="line.35"></a>
39 <FONT color="green">036</FONT> * Get the type of field elements of the matrix.<a name="line.36"></a>
40 <FONT color="green">037</FONT> * @return type of field elements of the matrix<a name="line.37"></a>
41 <FONT color="green">038</FONT> */<a name="line.38"></a>
42 <FONT color="green">039</FONT> Field&lt;T&gt; getField();<a name="line.39"></a>
43 <FONT color="green">040</FONT> <a name="line.40"></a>
44 <FONT color="green">041</FONT> /**<a name="line.41"></a>
45 <FONT color="green">042</FONT> * Create a new FieldMatrix&lt;T&gt; of the same type as the instance with the supplied<a name="line.42"></a>
46 <FONT color="green">043</FONT> * row and column dimensions.<a name="line.43"></a>
47 <FONT color="green">044</FONT> *<a name="line.44"></a>
48 <FONT color="green">045</FONT> * @param rowDimension the number of rows in the new matrix<a name="line.45"></a>
49 <FONT color="green">046</FONT> * @param columnDimension the number of columns in the new matrix<a name="line.46"></a>
50 <FONT color="green">047</FONT> * @return a new matrix of the same type as the instance<a name="line.47"></a>
51 <FONT color="green">048</FONT> * @throws IllegalArgumentException if row or column dimension is not positive<a name="line.48"></a>
52 <FONT color="green">049</FONT> * @since 2.0<a name="line.49"></a>
53 <FONT color="green">050</FONT> */<a name="line.50"></a>
54 <FONT color="green">051</FONT> FieldMatrix&lt;T&gt; createMatrix(final int rowDimension, final int columnDimension);<a name="line.51"></a>
55 <FONT color="green">052</FONT> <a name="line.52"></a>
56 <FONT color="green">053</FONT> /**<a name="line.53"></a>
57 <FONT color="green">054</FONT> * Returns a (deep) copy of this.<a name="line.54"></a>
58 <FONT color="green">055</FONT> *<a name="line.55"></a>
59 <FONT color="green">056</FONT> * @return matrix copy<a name="line.56"></a>
60 <FONT color="green">057</FONT> */<a name="line.57"></a>
61 <FONT color="green">058</FONT> FieldMatrix&lt;T&gt; copy();<a name="line.58"></a>
62 <FONT color="green">059</FONT> <a name="line.59"></a>
63 <FONT color="green">060</FONT> /**<a name="line.60"></a>
64 <FONT color="green">061</FONT> * Compute the sum of this and m.<a name="line.61"></a>
65 <FONT color="green">062</FONT> *<a name="line.62"></a>
66 <FONT color="green">063</FONT> * @param m matrix to be added<a name="line.63"></a>
67 <FONT color="green">064</FONT> * @return this + m<a name="line.64"></a>
68 <FONT color="green">065</FONT> * @throws IllegalArgumentException if m is not the same size as this<a name="line.65"></a>
69 <FONT color="green">066</FONT> */<a name="line.66"></a>
70 <FONT color="green">067</FONT> FieldMatrix&lt;T&gt; add(FieldMatrix&lt;T&gt; m) throws IllegalArgumentException;<a name="line.67"></a>
71 <FONT color="green">068</FONT> <a name="line.68"></a>
72 <FONT color="green">069</FONT> /**<a name="line.69"></a>
73 <FONT color="green">070</FONT> * Compute this minus m.<a name="line.70"></a>
74 <FONT color="green">071</FONT> *<a name="line.71"></a>
75 <FONT color="green">072</FONT> * @param m matrix to be subtracted<a name="line.72"></a>
76 <FONT color="green">073</FONT> * @return this + m<a name="line.73"></a>
77 <FONT color="green">074</FONT> * @throws IllegalArgumentException if m is not the same size as this<a name="line.74"></a>
78 <FONT color="green">075</FONT> */<a name="line.75"></a>
79 <FONT color="green">076</FONT> FieldMatrix&lt;T&gt; subtract(FieldMatrix&lt;T&gt; m) throws IllegalArgumentException;<a name="line.76"></a>
80 <FONT color="green">077</FONT> <a name="line.77"></a>
81 <FONT color="green">078</FONT> /**<a name="line.78"></a>
82 <FONT color="green">079</FONT> * Returns the result of adding d to each entry of this.<a name="line.79"></a>
83 <FONT color="green">080</FONT> *<a name="line.80"></a>
84 <FONT color="green">081</FONT> * @param d value to be added to each entry<a name="line.81"></a>
85 <FONT color="green">082</FONT> * @return d + this<a name="line.82"></a>
86 <FONT color="green">083</FONT> */<a name="line.83"></a>
87 <FONT color="green">084</FONT> FieldMatrix&lt;T&gt; scalarAdd(T d);<a name="line.84"></a>
88 <FONT color="green">085</FONT> <a name="line.85"></a>
89 <FONT color="green">086</FONT> /**<a name="line.86"></a>
90 <FONT color="green">087</FONT> * Returns the result multiplying each entry of this by d.<a name="line.87"></a>
91 <FONT color="green">088</FONT> *<a name="line.88"></a>
92 <FONT color="green">089</FONT> * @param d value to multiply all entries by<a name="line.89"></a>
93 <FONT color="green">090</FONT> * @return d * this<a name="line.90"></a>
94 <FONT color="green">091</FONT> */<a name="line.91"></a>
95 <FONT color="green">092</FONT> FieldMatrix&lt;T&gt; scalarMultiply(T d);<a name="line.92"></a>
96 <FONT color="green">093</FONT> <a name="line.93"></a>
97 <FONT color="green">094</FONT> /**<a name="line.94"></a>
98 <FONT color="green">095</FONT> * Returns the result of postmultiplying this by m.<a name="line.95"></a>
99 <FONT color="green">096</FONT> *<a name="line.96"></a>
100 <FONT color="green">097</FONT> * @param m matrix to postmultiply by<a name="line.97"></a>
101 <FONT color="green">098</FONT> * @return this * m<a name="line.98"></a>
102 <FONT color="green">099</FONT> * @throws IllegalArgumentException<a name="line.99"></a>
103 <FONT color="green">100</FONT> * if columnDimension(this) != rowDimension(m)<a name="line.100"></a>
104 <FONT color="green">101</FONT> */<a name="line.101"></a>
105 <FONT color="green">102</FONT> FieldMatrix&lt;T&gt; multiply(FieldMatrix&lt;T&gt; m) throws IllegalArgumentException;<a name="line.102"></a>
106 <FONT color="green">103</FONT> <a name="line.103"></a>
107 <FONT color="green">104</FONT> /**<a name="line.104"></a>
108 <FONT color="green">105</FONT> * Returns the result premultiplying this by &lt;code&gt;m&lt;/code&gt;.<a name="line.105"></a>
109 <FONT color="green">106</FONT> * @param m matrix to premultiply by<a name="line.106"></a>
110 <FONT color="green">107</FONT> * @return m * this<a name="line.107"></a>
111 <FONT color="green">108</FONT> * @throws IllegalArgumentException<a name="line.108"></a>
112 <FONT color="green">109</FONT> * if rowDimension(this) != columnDimension(m)<a name="line.109"></a>
113 <FONT color="green">110</FONT> */<a name="line.110"></a>
114 <FONT color="green">111</FONT> FieldMatrix&lt;T&gt; preMultiply(FieldMatrix&lt;T&gt; m) throws IllegalArgumentException;<a name="line.111"></a>
115 <FONT color="green">112</FONT> <a name="line.112"></a>
116 <FONT color="green">113</FONT> /**<a name="line.113"></a>
117 <FONT color="green">114</FONT> * Returns matrix entries as a two-dimensional array.<a name="line.114"></a>
118 <FONT color="green">115</FONT> *<a name="line.115"></a>
119 <FONT color="green">116</FONT> * @return 2-dimensional array of entries<a name="line.116"></a>
120 <FONT color="green">117</FONT> */<a name="line.117"></a>
121 <FONT color="green">118</FONT> T[][] getData();<a name="line.118"></a>
122 <FONT color="green">119</FONT> <a name="line.119"></a>
123 <FONT color="green">120</FONT> /**<a name="line.120"></a>
124 <FONT color="green">121</FONT> * Gets a submatrix. Rows and columns are indicated<a name="line.121"></a>
125 <FONT color="green">122</FONT> * counting from 0 to n-1.<a name="line.122"></a>
126 <FONT color="green">123</FONT> *<a name="line.123"></a>
127 <FONT color="green">124</FONT> * @param startRow Initial row index<a name="line.124"></a>
128 <FONT color="green">125</FONT> * @param endRow Final row index (inclusive)<a name="line.125"></a>
129 <FONT color="green">126</FONT> * @param startColumn Initial column index<a name="line.126"></a>
130 <FONT color="green">127</FONT> * @param endColumn Final column index (inclusive)<a name="line.127"></a>
131 <FONT color="green">128</FONT> * @return The subMatrix containing the data of the<a name="line.128"></a>
132 <FONT color="green">129</FONT> * specified rows and columns<a name="line.129"></a>
133 <FONT color="green">130</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.130"></a>
134 <FONT color="green">131</FONT> */<a name="line.131"></a>
135 <FONT color="green">132</FONT> FieldMatrix&lt;T&gt; getSubMatrix(int startRow, int endRow, int startColumn, int endColumn)<a name="line.132"></a>
136 <FONT color="green">133</FONT> throws MatrixIndexException;<a name="line.133"></a>
137 <FONT color="green">134</FONT> <a name="line.134"></a>
138 <FONT color="green">135</FONT> /**<a name="line.135"></a>
139 <FONT color="green">136</FONT> * Gets a submatrix. Rows and columns are indicated<a name="line.136"></a>
140 <FONT color="green">137</FONT> * counting from 0 to n-1.<a name="line.137"></a>
141 <FONT color="green">138</FONT> *<a name="line.138"></a>
142 <FONT color="green">139</FONT> * @param selectedRows Array of row indices.<a name="line.139"></a>
143 <FONT color="green">140</FONT> * @param selectedColumns Array of column indices.<a name="line.140"></a>
144 <FONT color="green">141</FONT> * @return The subMatrix containing the data in the<a name="line.141"></a>
145 <FONT color="green">142</FONT> * specified rows and columns<a name="line.142"></a>
146 <FONT color="green">143</FONT> * @exception MatrixIndexException if row or column selections are not valid<a name="line.143"></a>
147 <FONT color="green">144</FONT> */<a name="line.144"></a>
148 <FONT color="green">145</FONT> FieldMatrix&lt;T&gt; getSubMatrix(int[] selectedRows, int[] selectedColumns)<a name="line.145"></a>
149 <FONT color="green">146</FONT> throws MatrixIndexException;<a name="line.146"></a>
150 <FONT color="green">147</FONT> <a name="line.147"></a>
151 <FONT color="green">148</FONT> /**<a name="line.148"></a>
152 <FONT color="green">149</FONT> * Copy a submatrix. Rows and columns are indicated<a name="line.149"></a>
153 <FONT color="green">150</FONT> * counting from 0 to n-1.<a name="line.150"></a>
154 <FONT color="green">151</FONT> *<a name="line.151"></a>
155 <FONT color="green">152</FONT> * @param startRow Initial row index<a name="line.152"></a>
156 <FONT color="green">153</FONT> * @param endRow Final row index (inclusive)<a name="line.153"></a>
157 <FONT color="green">154</FONT> * @param startColumn Initial column index<a name="line.154"></a>
158 <FONT color="green">155</FONT> * @param endColumn Final column index (inclusive)<a name="line.155"></a>
159 <FONT color="green">156</FONT> * @param destination The arrays where the submatrix data should be copied<a name="line.156"></a>
160 <FONT color="green">157</FONT> * (if larger than rows/columns counts, only the upper-left part will be used)<a name="line.157"></a>
161 <FONT color="green">158</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.158"></a>
162 <FONT color="green">159</FONT> * @exception IllegalArgumentException if the destination array is too small<a name="line.159"></a>
163 <FONT color="green">160</FONT> */<a name="line.160"></a>
164 <FONT color="green">161</FONT> void copySubMatrix(int startRow, int endRow, int startColumn, int endColumn,<a name="line.161"></a>
165 <FONT color="green">162</FONT> T[][] destination)<a name="line.162"></a>
166 <FONT color="green">163</FONT> throws MatrixIndexException, IllegalArgumentException;<a name="line.163"></a>
167 <FONT color="green">164</FONT> <a name="line.164"></a>
168 <FONT color="green">165</FONT> /**<a name="line.165"></a>
169 <FONT color="green">166</FONT> * Copy a submatrix. Rows and columns are indicated<a name="line.166"></a>
170 <FONT color="green">167</FONT> * counting from 0 to n-1.<a name="line.167"></a>
171 <FONT color="green">168</FONT> *<a name="line.168"></a>
172 <FONT color="green">169</FONT> * @param selectedRows Array of row indices.<a name="line.169"></a>
173 <FONT color="green">170</FONT> * @param selectedColumns Array of column indices.<a name="line.170"></a>
174 <FONT color="green">171</FONT> * @param destination The arrays where the submatrix data should be copied<a name="line.171"></a>
175 <FONT color="green">172</FONT> * (if larger than rows/columns counts, only the upper-left part will be used)<a name="line.172"></a>
176 <FONT color="green">173</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.173"></a>
177 <FONT color="green">174</FONT> * @exception IllegalArgumentException if the destination array is too small<a name="line.174"></a>
178 <FONT color="green">175</FONT> */<a name="line.175"></a>
179 <FONT color="green">176</FONT> void copySubMatrix(int[] selectedRows, int[] selectedColumns, T[][] destination)<a name="line.176"></a>
180 <FONT color="green">177</FONT> throws MatrixIndexException, IllegalArgumentException;<a name="line.177"></a>
181 <FONT color="green">178</FONT> <a name="line.178"></a>
182 <FONT color="green">179</FONT> /**<a name="line.179"></a>
183 <FONT color="green">180</FONT> * Replace the submatrix starting at &lt;code&gt;row, column&lt;/code&gt; using data in<a name="line.180"></a>
184 <FONT color="green">181</FONT> * the input &lt;code&gt;subMatrix&lt;/code&gt; array. Indexes are 0-based.<a name="line.181"></a>
185 <FONT color="green">182</FONT> * &lt;p&gt;<a name="line.182"></a>
186 <FONT color="green">183</FONT> * Example:&lt;br&gt;<a name="line.183"></a>
187 <FONT color="green">184</FONT> * Starting with &lt;pre&gt;<a name="line.184"></a>
188 <FONT color="green">185</FONT> * 1 2 3 4<a name="line.185"></a>
189 <FONT color="green">186</FONT> * 5 6 7 8<a name="line.186"></a>
190 <FONT color="green">187</FONT> * 9 0 1 2<a name="line.187"></a>
191 <FONT color="green">188</FONT> * &lt;/pre&gt;<a name="line.188"></a>
192 <FONT color="green">189</FONT> * and &lt;code&gt;subMatrix = {{3, 4} {5,6}}&lt;/code&gt;, invoking<a name="line.189"></a>
193 <FONT color="green">190</FONT> * &lt;code&gt;setSubMatrix(subMatrix,1,1))&lt;/code&gt; will result in &lt;pre&gt;<a name="line.190"></a>
194 <FONT color="green">191</FONT> * 1 2 3 4<a name="line.191"></a>
195 <FONT color="green">192</FONT> * 5 3 4 8<a name="line.192"></a>
196 <FONT color="green">193</FONT> * 9 5 6 2<a name="line.193"></a>
197 <FONT color="green">194</FONT> * &lt;/pre&gt;&lt;/p&gt;<a name="line.194"></a>
198 <FONT color="green">195</FONT> *<a name="line.195"></a>
199 <FONT color="green">196</FONT> * @param subMatrix array containing the submatrix replacement data<a name="line.196"></a>
200 <FONT color="green">197</FONT> * @param row row coordinate of the top, left element to be replaced<a name="line.197"></a>
201 <FONT color="green">198</FONT> * @param column column coordinate of the top, left element to be replaced<a name="line.198"></a>
202 <FONT color="green">199</FONT> * @throws MatrixIndexException if subMatrix does not fit into this<a name="line.199"></a>
203 <FONT color="green">200</FONT> * matrix from element in (row, column)<a name="line.200"></a>
204 <FONT color="green">201</FONT> * @throws IllegalArgumentException if &lt;code&gt;subMatrix&lt;/code&gt; is not rectangular<a name="line.201"></a>
205 <FONT color="green">202</FONT> * (not all rows have the same length) or empty<a name="line.202"></a>
206 <FONT color="green">203</FONT> * @throws NullPointerException if &lt;code&gt;subMatrix&lt;/code&gt; is null<a name="line.203"></a>
207 <FONT color="green">204</FONT> * @since 2.0<a name="line.204"></a>
208 <FONT color="green">205</FONT> */<a name="line.205"></a>
209 <FONT color="green">206</FONT> void setSubMatrix(T[][] subMatrix, int row, int column)<a name="line.206"></a>
210 <FONT color="green">207</FONT> throws MatrixIndexException;<a name="line.207"></a>
211 <FONT color="green">208</FONT> <a name="line.208"></a>
212 <FONT color="green">209</FONT> /**<a name="line.209"></a>
213 <FONT color="green">210</FONT> * Returns the entries in row number &lt;code&gt;row&lt;/code&gt;<a name="line.210"></a>
214 <FONT color="green">211</FONT> * as a row matrix. Row indices start at 0.<a name="line.211"></a>
215 <FONT color="green">212</FONT> *<a name="line.212"></a>
216 <FONT color="green">213</FONT> * @param row the row to be fetched<a name="line.213"></a>
217 <FONT color="green">214</FONT> * @return row matrix<a name="line.214"></a>
218 <FONT color="green">215</FONT> * @throws MatrixIndexException if the specified row index is invalid<a name="line.215"></a>
219 <FONT color="green">216</FONT> */<a name="line.216"></a>
220 <FONT color="green">217</FONT> FieldMatrix&lt;T&gt; getRowMatrix(int row) throws MatrixIndexException;<a name="line.217"></a>
221 <FONT color="green">218</FONT> <a name="line.218"></a>
222 <FONT color="green">219</FONT> /**<a name="line.219"></a>
223 <FONT color="green">220</FONT> * Sets the entries in row number &lt;code&gt;row&lt;/code&gt;<a name="line.220"></a>
224 <FONT color="green">221</FONT> * as a row matrix. Row indices start at 0.<a name="line.221"></a>
225 <FONT color="green">222</FONT> *<a name="line.222"></a>
226 <FONT color="green">223</FONT> * @param row the row to be set<a name="line.223"></a>
227 <FONT color="green">224</FONT> * @param matrix row matrix (must have one row and the same number of columns<a name="line.224"></a>
228 <FONT color="green">225</FONT> * as the instance)<a name="line.225"></a>
229 <FONT color="green">226</FONT> * @throws MatrixIndexException if the specified row index is invalid<a name="line.226"></a>
230 <FONT color="green">227</FONT> * @throws InvalidMatrixException if the matrix dimensions do not match one<a name="line.227"></a>
231 <FONT color="green">228</FONT> * instance row<a name="line.228"></a>
232 <FONT color="green">229</FONT> */<a name="line.229"></a>
233 <FONT color="green">230</FONT> void setRowMatrix(int row, FieldMatrix&lt;T&gt; matrix)<a name="line.230"></a>
234 <FONT color="green">231</FONT> throws MatrixIndexException, InvalidMatrixException;<a name="line.231"></a>
235 <FONT color="green">232</FONT> <a name="line.232"></a>
236 <FONT color="green">233</FONT> /**<a name="line.233"></a>
237 <FONT color="green">234</FONT> * Returns the entries in column number &lt;code&gt;column&lt;/code&gt;<a name="line.234"></a>
238 <FONT color="green">235</FONT> * as a column matrix. Column indices start at 0.<a name="line.235"></a>
239 <FONT color="green">236</FONT> *<a name="line.236"></a>
240 <FONT color="green">237</FONT> * @param column the column to be fetched<a name="line.237"></a>
241 <FONT color="green">238</FONT> * @return column matrix<a name="line.238"></a>
242 <FONT color="green">239</FONT> * @throws MatrixIndexException if the specified column index is invalid<a name="line.239"></a>
243 <FONT color="green">240</FONT> */<a name="line.240"></a>
244 <FONT color="green">241</FONT> FieldMatrix&lt;T&gt; getColumnMatrix(int column) throws MatrixIndexException;<a name="line.241"></a>
245 <FONT color="green">242</FONT> <a name="line.242"></a>
246 <FONT color="green">243</FONT> /**<a name="line.243"></a>
247 <FONT color="green">244</FONT> * Sets the entries in column number &lt;code&gt;column&lt;/code&gt;<a name="line.244"></a>
248 <FONT color="green">245</FONT> * as a column matrix. Column indices start at 0.<a name="line.245"></a>
249 <FONT color="green">246</FONT> *<a name="line.246"></a>
250 <FONT color="green">247</FONT> * @param column the column to be set<a name="line.247"></a>
251 <FONT color="green">248</FONT> * @param matrix column matrix (must have one column and the same number of rows<a name="line.248"></a>
252 <FONT color="green">249</FONT> * as the instance)<a name="line.249"></a>
253 <FONT color="green">250</FONT> * @throws MatrixIndexException if the specified column index is invalid<a name="line.250"></a>
254 <FONT color="green">251</FONT> * @throws InvalidMatrixException if the matrix dimensions do not match one<a name="line.251"></a>
255 <FONT color="green">252</FONT> * instance column<a name="line.252"></a>
256 <FONT color="green">253</FONT> */<a name="line.253"></a>
257 <FONT color="green">254</FONT> void setColumnMatrix(int column, FieldMatrix&lt;T&gt; matrix)<a name="line.254"></a>
258 <FONT color="green">255</FONT> throws MatrixIndexException, InvalidMatrixException;<a name="line.255"></a>
259 <FONT color="green">256</FONT> <a name="line.256"></a>
260 <FONT color="green">257</FONT> /**<a name="line.257"></a>
261 <FONT color="green">258</FONT> * Returns the entries in row number &lt;code&gt;row&lt;/code&gt;<a name="line.258"></a>
262 <FONT color="green">259</FONT> * as a vector. Row indices start at 0.<a name="line.259"></a>
263 <FONT color="green">260</FONT> *<a name="line.260"></a>
264 <FONT color="green">261</FONT> * @param row the row to be fetched<a name="line.261"></a>
265 <FONT color="green">262</FONT> * @return row vector<a name="line.262"></a>
266 <FONT color="green">263</FONT> * @throws MatrixIndexException if the specified row index is invalid<a name="line.263"></a>
267 <FONT color="green">264</FONT> */<a name="line.264"></a>
268 <FONT color="green">265</FONT> FieldVector&lt;T&gt; getRowVector(int row) throws MatrixIndexException;<a name="line.265"></a>
269 <FONT color="green">266</FONT> <a name="line.266"></a>
270 <FONT color="green">267</FONT> /**<a name="line.267"></a>
271 <FONT color="green">268</FONT> * Sets the entries in row number &lt;code&gt;row&lt;/code&gt;<a name="line.268"></a>
272 <FONT color="green">269</FONT> * as a vector. Row indices start at 0.<a name="line.269"></a>
273 <FONT color="green">270</FONT> *<a name="line.270"></a>
274 <FONT color="green">271</FONT> * @param row the row to be set<a name="line.271"></a>
275 <FONT color="green">272</FONT> * @param vector row vector (must have the same number of columns<a name="line.272"></a>
276 <FONT color="green">273</FONT> * as the instance)<a name="line.273"></a>
277 <FONT color="green">274</FONT> * @throws MatrixIndexException if the specified row index is invalid<a name="line.274"></a>
278 <FONT color="green">275</FONT> * @throws InvalidMatrixException if the vector dimension does not match one<a name="line.275"></a>
279 <FONT color="green">276</FONT> * instance row<a name="line.276"></a>
280 <FONT color="green">277</FONT> */<a name="line.277"></a>
281 <FONT color="green">278</FONT> void setRowVector(int row, FieldVector&lt;T&gt; vector)<a name="line.278"></a>
282 <FONT color="green">279</FONT> throws MatrixIndexException, InvalidMatrixException;<a name="line.279"></a>
283 <FONT color="green">280</FONT> <a name="line.280"></a>
284 <FONT color="green">281</FONT> /**<a name="line.281"></a>
285 <FONT color="green">282</FONT> * Returns the entries in column number &lt;code&gt;column&lt;/code&gt;<a name="line.282"></a>
286 <FONT color="green">283</FONT> * as a vector. Column indices start at 0.<a name="line.283"></a>
287 <FONT color="green">284</FONT> *<a name="line.284"></a>
288 <FONT color="green">285</FONT> * @param column the column to be fetched<a name="line.285"></a>
289 <FONT color="green">286</FONT> * @return column vector<a name="line.286"></a>
290 <FONT color="green">287</FONT> * @throws MatrixIndexException if the specified column index is invalid<a name="line.287"></a>
291 <FONT color="green">288</FONT> */<a name="line.288"></a>
292 <FONT color="green">289</FONT> FieldVector&lt;T&gt; getColumnVector(int column) throws MatrixIndexException;<a name="line.289"></a>
293 <FONT color="green">290</FONT> <a name="line.290"></a>
294 <FONT color="green">291</FONT> /**<a name="line.291"></a>
295 <FONT color="green">292</FONT> * Sets the entries in column number &lt;code&gt;column&lt;/code&gt;<a name="line.292"></a>
296 <FONT color="green">293</FONT> * as a vector. Column indices start at 0.<a name="line.293"></a>
297 <FONT color="green">294</FONT> *<a name="line.294"></a>
298 <FONT color="green">295</FONT> * @param column the column to be set<a name="line.295"></a>
299 <FONT color="green">296</FONT> * @param vector column vector (must have the same number of rows as the instance)<a name="line.296"></a>
300 <FONT color="green">297</FONT> * @throws MatrixIndexException if the specified column index is invalid<a name="line.297"></a>
301 <FONT color="green">298</FONT> * @throws InvalidMatrixException if the vector dimension does not match one<a name="line.298"></a>
302 <FONT color="green">299</FONT> * instance column<a name="line.299"></a>
303 <FONT color="green">300</FONT> */<a name="line.300"></a>
304 <FONT color="green">301</FONT> void setColumnVector(int column, FieldVector&lt;T&gt; vector)<a name="line.301"></a>
305 <FONT color="green">302</FONT> throws MatrixIndexException, InvalidMatrixException;<a name="line.302"></a>
306 <FONT color="green">303</FONT> <a name="line.303"></a>
307 <FONT color="green">304</FONT> /**<a name="line.304"></a>
308 <FONT color="green">305</FONT> * Returns the entries in row number &lt;code&gt;row&lt;/code&gt; as an array.<a name="line.305"></a>
309 <FONT color="green">306</FONT> * &lt;p&gt;<a name="line.306"></a>
310 <FONT color="green">307</FONT> * Row indices start at 0. A &lt;code&gt;MatrixIndexException&lt;/code&gt; is thrown<a name="line.307"></a>
311 <FONT color="green">308</FONT> * unless &lt;code&gt;0 &lt;= row &lt; rowDimension.&lt;/code&gt;&lt;/p&gt;<a name="line.308"></a>
312 <FONT color="green">309</FONT> *<a name="line.309"></a>
313 <FONT color="green">310</FONT> * @param row the row to be fetched<a name="line.310"></a>
314 <FONT color="green">311</FONT> * @return array of entries in the row<a name="line.311"></a>
315 <FONT color="green">312</FONT> * @throws MatrixIndexException if the specified row index is not valid<a name="line.312"></a>
316 <FONT color="green">313</FONT> */<a name="line.313"></a>
317 <FONT color="green">314</FONT> T[] getRow(int row) throws MatrixIndexException;<a name="line.314"></a>
318 <FONT color="green">315</FONT> <a name="line.315"></a>
319 <FONT color="green">316</FONT> /**<a name="line.316"></a>
320 <FONT color="green">317</FONT> * Sets the entries in row number &lt;code&gt;row&lt;/code&gt;<a name="line.317"></a>
321 <FONT color="green">318</FONT> * as a row matrix. Row indices start at 0.<a name="line.318"></a>
322 <FONT color="green">319</FONT> *<a name="line.319"></a>
323 <FONT color="green">320</FONT> * @param row the row to be set<a name="line.320"></a>
324 <FONT color="green">321</FONT> * @param array row matrix (must have the same number of columns as the instance)<a name="line.321"></a>
325 <FONT color="green">322</FONT> * @throws MatrixIndexException if the specified row index is invalid<a name="line.322"></a>
326 <FONT color="green">323</FONT> * @throws InvalidMatrixException if the array size does not match one<a name="line.323"></a>
327 <FONT color="green">324</FONT> * instance row<a name="line.324"></a>
328 <FONT color="green">325</FONT> */<a name="line.325"></a>
329 <FONT color="green">326</FONT> void setRow(int row, T[] array)<a name="line.326"></a>
330 <FONT color="green">327</FONT> throws MatrixIndexException, InvalidMatrixException;<a name="line.327"></a>
331 <FONT color="green">328</FONT> <a name="line.328"></a>
332 <FONT color="green">329</FONT> /**<a name="line.329"></a>
333 <FONT color="green">330</FONT> * Returns the entries in column number &lt;code&gt;col&lt;/code&gt; as an array.<a name="line.330"></a>
334 <FONT color="green">331</FONT> * &lt;p&gt;<a name="line.331"></a>
335 <FONT color="green">332</FONT> * Column indices start at 0. A &lt;code&gt;MatrixIndexException&lt;/code&gt; is thrown<a name="line.332"></a>
336 <FONT color="green">333</FONT> * unless &lt;code&gt;0 &lt;= column &lt; columnDimension.&lt;/code&gt;&lt;/p&gt;<a name="line.333"></a>
337 <FONT color="green">334</FONT> *<a name="line.334"></a>
338 <FONT color="green">335</FONT> * @param column the column to be fetched<a name="line.335"></a>
339 <FONT color="green">336</FONT> * @return array of entries in the column<a name="line.336"></a>
340 <FONT color="green">337</FONT> * @throws MatrixIndexException if the specified column index is not valid<a name="line.337"></a>
341 <FONT color="green">338</FONT> */<a name="line.338"></a>
342 <FONT color="green">339</FONT> T[] getColumn(int column) throws MatrixIndexException;<a name="line.339"></a>
343 <FONT color="green">340</FONT> <a name="line.340"></a>
344 <FONT color="green">341</FONT> /**<a name="line.341"></a>
345 <FONT color="green">342</FONT> * Sets the entries in column number &lt;code&gt;column&lt;/code&gt;<a name="line.342"></a>
346 <FONT color="green">343</FONT> * as a column matrix. Column indices start at 0.<a name="line.343"></a>
347 <FONT color="green">344</FONT> *<a name="line.344"></a>
348 <FONT color="green">345</FONT> * @param column the column to be set<a name="line.345"></a>
349 <FONT color="green">346</FONT> * @param array column array (must have the same number of rows as the instance)<a name="line.346"></a>
350 <FONT color="green">347</FONT> * @throws MatrixIndexException if the specified column index is invalid<a name="line.347"></a>
351 <FONT color="green">348</FONT> * @throws InvalidMatrixException if the array size does not match one<a name="line.348"></a>
352 <FONT color="green">349</FONT> * instance column<a name="line.349"></a>
353 <FONT color="green">350</FONT> */<a name="line.350"></a>
354 <FONT color="green">351</FONT> void setColumn(int column, T[] array)<a name="line.351"></a>
355 <FONT color="green">352</FONT> throws MatrixIndexException, InvalidMatrixException;<a name="line.352"></a>
356 <FONT color="green">353</FONT> <a name="line.353"></a>
357 <FONT color="green">354</FONT> /**<a name="line.354"></a>
358 <FONT color="green">355</FONT> * Returns the entry in the specified row and column.<a name="line.355"></a>
359 <FONT color="green">356</FONT> * &lt;p&gt;<a name="line.356"></a>
360 <FONT color="green">357</FONT> * Row and column indices start at 0 and must satisfy<a name="line.357"></a>
361 <FONT color="green">358</FONT> * &lt;ul&gt;<a name="line.358"></a>
362 <FONT color="green">359</FONT> * &lt;li&gt;&lt;code&gt;0 &lt;= row &lt; rowDimension&lt;/code&gt;&lt;/li&gt;<a name="line.359"></a>
363 <FONT color="green">360</FONT> * &lt;li&gt;&lt;code&gt; 0 &lt;= column &lt; columnDimension&lt;/code&gt;&lt;/li&gt;<a name="line.360"></a>
364 <FONT color="green">361</FONT> * &lt;/ul&gt;<a name="line.361"></a>
365 <FONT color="green">362</FONT> * otherwise a &lt;code&gt;MatrixIndexException&lt;/code&gt; is thrown.&lt;/p&gt;<a name="line.362"></a>
366 <FONT color="green">363</FONT> *<a name="line.363"></a>
367 <FONT color="green">364</FONT> * @param row row location of entry to be fetched<a name="line.364"></a>
368 <FONT color="green">365</FONT> * @param column column location of entry to be fetched<a name="line.365"></a>
369 <FONT color="green">366</FONT> * @return matrix entry in row,column<a name="line.366"></a>
370 <FONT color="green">367</FONT> * @throws MatrixIndexException if the row or column index is not valid<a name="line.367"></a>
371 <FONT color="green">368</FONT> */<a name="line.368"></a>
372 <FONT color="green">369</FONT> T getEntry(int row, int column) throws MatrixIndexException;<a name="line.369"></a>
373 <FONT color="green">370</FONT> <a name="line.370"></a>
374 <FONT color="green">371</FONT> /**<a name="line.371"></a>
375 <FONT color="green">372</FONT> * Set the entry in the specified row and column.<a name="line.372"></a>
376 <FONT color="green">373</FONT> * &lt;p&gt;<a name="line.373"></a>
377 <FONT color="green">374</FONT> * Row and column indices start at 0 and must satisfy<a name="line.374"></a>
378 <FONT color="green">375</FONT> * &lt;ul&gt;<a name="line.375"></a>
379 <FONT color="green">376</FONT> * &lt;li&gt;&lt;code&gt;0 &lt;= row &lt; rowDimension&lt;/code&gt;&lt;/li&gt;<a name="line.376"></a>
380 <FONT color="green">377</FONT> * &lt;li&gt;&lt;code&gt; 0 &lt;= column &lt; columnDimension&lt;/code&gt;&lt;/li&gt;<a name="line.377"></a>
381 <FONT color="green">378</FONT> * &lt;/ul&gt;<a name="line.378"></a>
382 <FONT color="green">379</FONT> * otherwise a &lt;code&gt;MatrixIndexException&lt;/code&gt; is thrown.&lt;/p&gt;<a name="line.379"></a>
383 <FONT color="green">380</FONT> *<a name="line.380"></a>
384 <FONT color="green">381</FONT> * @param row row location of entry to be set<a name="line.381"></a>
385 <FONT color="green">382</FONT> * @param column column location of entry to be set<a name="line.382"></a>
386 <FONT color="green">383</FONT> * @param value matrix entry to be set in row,column<a name="line.383"></a>
387 <FONT color="green">384</FONT> * @throws MatrixIndexException if the row or column index is not valid<a name="line.384"></a>
388 <FONT color="green">385</FONT> * @since 2.0<a name="line.385"></a>
389 <FONT color="green">386</FONT> */<a name="line.386"></a>
390 <FONT color="green">387</FONT> void setEntry(int row, int column, T value) throws MatrixIndexException;<a name="line.387"></a>
391 <FONT color="green">388</FONT> <a name="line.388"></a>
392 <FONT color="green">389</FONT> /**<a name="line.389"></a>
393 <FONT color="green">390</FONT> * Change an entry in the specified row and column.<a name="line.390"></a>
394 <FONT color="green">391</FONT> * &lt;p&gt;<a name="line.391"></a>
395 <FONT color="green">392</FONT> * Row and column indices start at 0 and must satisfy<a name="line.392"></a>
396 <FONT color="green">393</FONT> * &lt;ul&gt;<a name="line.393"></a>
397 <FONT color="green">394</FONT> * &lt;li&gt;&lt;code&gt;0 &lt;= row &lt; rowDimension&lt;/code&gt;&lt;/li&gt;<a name="line.394"></a>
398 <FONT color="green">395</FONT> * &lt;li&gt;&lt;code&gt; 0 &lt;= column &lt; columnDimension&lt;/code&gt;&lt;/li&gt;<a name="line.395"></a>
399 <FONT color="green">396</FONT> * &lt;/ul&gt;<a name="line.396"></a>
400 <FONT color="green">397</FONT> * otherwise a &lt;code&gt;MatrixIndexException&lt;/code&gt; is thrown.&lt;/p&gt;<a name="line.397"></a>
401 <FONT color="green">398</FONT> *<a name="line.398"></a>
402 <FONT color="green">399</FONT> * @param row row location of entry to be set<a name="line.399"></a>
403 <FONT color="green">400</FONT> * @param column column location of entry to be set<a name="line.400"></a>
404 <FONT color="green">401</FONT> * @param increment value to add to the current matrix entry in row,column<a name="line.401"></a>
405 <FONT color="green">402</FONT> * @throws MatrixIndexException if the row or column index is not valid<a name="line.402"></a>
406 <FONT color="green">403</FONT> * @since 2.0<a name="line.403"></a>
407 <FONT color="green">404</FONT> */<a name="line.404"></a>
408 <FONT color="green">405</FONT> void addToEntry(int row, int column, T increment) throws MatrixIndexException;<a name="line.405"></a>
409 <FONT color="green">406</FONT> <a name="line.406"></a>
410 <FONT color="green">407</FONT> /**<a name="line.407"></a>
411 <FONT color="green">408</FONT> * Change an entry in the specified row and column.<a name="line.408"></a>
412 <FONT color="green">409</FONT> * &lt;p&gt;<a name="line.409"></a>
413 <FONT color="green">410</FONT> * Row and column indices start at 0 and must satisfy<a name="line.410"></a>
414 <FONT color="green">411</FONT> * &lt;ul&gt;<a name="line.411"></a>
415 <FONT color="green">412</FONT> * &lt;li&gt;&lt;code&gt;0 &lt;= row &lt; rowDimension&lt;/code&gt;&lt;/li&gt;<a name="line.412"></a>
416 <FONT color="green">413</FONT> * &lt;li&gt;&lt;code&gt; 0 &lt;= column &lt; columnDimension&lt;/code&gt;&lt;/li&gt;<a name="line.413"></a>
417 <FONT color="green">414</FONT> * &lt;/ul&gt;<a name="line.414"></a>
418 <FONT color="green">415</FONT> * otherwise a &lt;code&gt;MatrixIndexException&lt;/code&gt; is thrown.&lt;/p&gt;<a name="line.415"></a>
419 <FONT color="green">416</FONT> *<a name="line.416"></a>
420 <FONT color="green">417</FONT> * @param row row location of entry to be set<a name="line.417"></a>
421 <FONT color="green">418</FONT> * @param column column location of entry to be set<a name="line.418"></a>
422 <FONT color="green">419</FONT> * @param factor multiplication factor for the current matrix entry in row,column<a name="line.419"></a>
423 <FONT color="green">420</FONT> * @throws MatrixIndexException if the row or column index is not valid<a name="line.420"></a>
424 <FONT color="green">421</FONT> * @since 2.0<a name="line.421"></a>
425 <FONT color="green">422</FONT> */<a name="line.422"></a>
426 <FONT color="green">423</FONT> void multiplyEntry(int row, int column, T factor) throws MatrixIndexException;<a name="line.423"></a>
427 <FONT color="green">424</FONT> <a name="line.424"></a>
428 <FONT color="green">425</FONT> /**<a name="line.425"></a>
429 <FONT color="green">426</FONT> * Returns the transpose of this matrix.<a name="line.426"></a>
430 <FONT color="green">427</FONT> *<a name="line.427"></a>
431 <FONT color="green">428</FONT> * @return transpose matrix<a name="line.428"></a>
432 <FONT color="green">429</FONT> */<a name="line.429"></a>
433 <FONT color="green">430</FONT> FieldMatrix&lt;T&gt; transpose();<a name="line.430"></a>
434 <FONT color="green">431</FONT> <a name="line.431"></a>
435 <FONT color="green">432</FONT> /**<a name="line.432"></a>
436 <FONT color="green">433</FONT> * Returns the &lt;a href="http://mathworld.wolfram.com/MatrixTrace.html"&gt;<a name="line.433"></a>
437 <FONT color="green">434</FONT> * trace&lt;/a&gt; of the matrix (the sum of the elements on the main diagonal).<a name="line.434"></a>
438 <FONT color="green">435</FONT> *<a name="line.435"></a>
439 <FONT color="green">436</FONT> * @return trace<a name="line.436"></a>
440 <FONT color="green">437</FONT> * @throws NonSquareMatrixException if the matrix is not square<a name="line.437"></a>
441 <FONT color="green">438</FONT> */<a name="line.438"></a>
442 <FONT color="green">439</FONT> T getTrace() throws NonSquareMatrixException;<a name="line.439"></a>
443 <FONT color="green">440</FONT> <a name="line.440"></a>
444 <FONT color="green">441</FONT> /**<a name="line.441"></a>
445 <FONT color="green">442</FONT> * Returns the result of multiplying this by the vector &lt;code&gt;v&lt;/code&gt;.<a name="line.442"></a>
446 <FONT color="green">443</FONT> *<a name="line.443"></a>
447 <FONT color="green">444</FONT> * @param v the vector to operate on<a name="line.444"></a>
448 <FONT color="green">445</FONT> * @return this*v<a name="line.445"></a>
449 <FONT color="green">446</FONT> * @throws IllegalArgumentException if columnDimension != v.size()<a name="line.446"></a>
450 <FONT color="green">447</FONT> */<a name="line.447"></a>
451 <FONT color="green">448</FONT> T[] operate(T[] v) throws IllegalArgumentException;<a name="line.448"></a>
452 <FONT color="green">449</FONT> <a name="line.449"></a>
453 <FONT color="green">450</FONT> /**<a name="line.450"></a>
454 <FONT color="green">451</FONT> * Returns the result of multiplying this by the vector &lt;code&gt;v&lt;/code&gt;.<a name="line.451"></a>
455 <FONT color="green">452</FONT> *<a name="line.452"></a>
456 <FONT color="green">453</FONT> * @param v the vector to operate on<a name="line.453"></a>
457 <FONT color="green">454</FONT> * @return this*v<a name="line.454"></a>
458 <FONT color="green">455</FONT> * @throws IllegalArgumentException if columnDimension != v.size()<a name="line.455"></a>
459 <FONT color="green">456</FONT> */<a name="line.456"></a>
460 <FONT color="green">457</FONT> FieldVector&lt;T&gt; operate(FieldVector&lt;T&gt; v) throws IllegalArgumentException;<a name="line.457"></a>
461 <FONT color="green">458</FONT> <a name="line.458"></a>
462 <FONT color="green">459</FONT> /**<a name="line.459"></a>
463 <FONT color="green">460</FONT> * Returns the (row) vector result of premultiplying this by the vector &lt;code&gt;v&lt;/code&gt;.<a name="line.460"></a>
464 <FONT color="green">461</FONT> *<a name="line.461"></a>
465 <FONT color="green">462</FONT> * @param v the row vector to premultiply by<a name="line.462"></a>
466 <FONT color="green">463</FONT> * @return v*this<a name="line.463"></a>
467 <FONT color="green">464</FONT> * @throws IllegalArgumentException if rowDimension != v.size()<a name="line.464"></a>
468 <FONT color="green">465</FONT> */<a name="line.465"></a>
469 <FONT color="green">466</FONT> T[] preMultiply(T[] v) throws IllegalArgumentException;<a name="line.466"></a>
470 <FONT color="green">467</FONT> <a name="line.467"></a>
471 <FONT color="green">468</FONT> /**<a name="line.468"></a>
472 <FONT color="green">469</FONT> * Returns the (row) vector result of premultiplying this by the vector &lt;code&gt;v&lt;/code&gt;.<a name="line.469"></a>
473 <FONT color="green">470</FONT> *<a name="line.470"></a>
474 <FONT color="green">471</FONT> * @param v the row vector to premultiply by<a name="line.471"></a>
475 <FONT color="green">472</FONT> * @return v*this<a name="line.472"></a>
476 <FONT color="green">473</FONT> * @throws IllegalArgumentException if rowDimension != v.size()<a name="line.473"></a>
477 <FONT color="green">474</FONT> */<a name="line.474"></a>
478 <FONT color="green">475</FONT> FieldVector&lt;T&gt; preMultiply(FieldVector&lt;T&gt; v) throws IllegalArgumentException;<a name="line.475"></a>
479 <FONT color="green">476</FONT> <a name="line.476"></a>
480 <FONT color="green">477</FONT> /**<a name="line.477"></a>
481 <FONT color="green">478</FONT> * Visit (and possibly change) all matrix entries in row order.<a name="line.478"></a>
482 <FONT color="green">479</FONT> * &lt;p&gt;Row order starts at upper left and iterating through all elements<a name="line.479"></a>
483 <FONT color="green">480</FONT> * of a row from left to right before going to the leftmost element<a name="line.480"></a>
484 <FONT color="green">481</FONT> * of the next row.&lt;/p&gt;<a name="line.481"></a>
485 <FONT color="green">482</FONT> * @param visitor visitor used to process all matrix entries<a name="line.482"></a>
486 <FONT color="green">483</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.483"></a>
487 <FONT color="green">484</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.484"></a>
488 <FONT color="green">485</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.485"></a>
489 <FONT color="green">486</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.486"></a>
490 <FONT color="green">487</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.487"></a>
491 <FONT color="green">488</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.488"></a>
492 <FONT color="green">489</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.489"></a>
493 <FONT color="green">490</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.490"></a>
494 <FONT color="green">491</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.491"></a>
495 <FONT color="green">492</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.492"></a>
496 <FONT color="green">493</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.493"></a>
497 <FONT color="green">494</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.494"></a>
498 <FONT color="green">495</FONT> * @return the value returned by {@link FieldMatrixChangingVisitor#end()} at the end<a name="line.495"></a>
499 <FONT color="green">496</FONT> * of the walk<a name="line.496"></a>
500 <FONT color="green">497</FONT> */<a name="line.497"></a>
501 <FONT color="green">498</FONT> T walkInRowOrder(FieldMatrixChangingVisitor&lt;T&gt; visitor)<a name="line.498"></a>
502 <FONT color="green">499</FONT> throws MatrixVisitorException;<a name="line.499"></a>
503 <FONT color="green">500</FONT> <a name="line.500"></a>
504 <FONT color="green">501</FONT> /**<a name="line.501"></a>
505 <FONT color="green">502</FONT> * Visit (but don't change) all matrix entries in row order.<a name="line.502"></a>
506 <FONT color="green">503</FONT> * &lt;p&gt;Row order starts at upper left and iterating through all elements<a name="line.503"></a>
507 <FONT color="green">504</FONT> * of a row from left to right before going to the leftmost element<a name="line.504"></a>
508 <FONT color="green">505</FONT> * of the next row.&lt;/p&gt;<a name="line.505"></a>
509 <FONT color="green">506</FONT> * @param visitor visitor used to process all matrix entries<a name="line.506"></a>
510 <FONT color="green">507</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.507"></a>
511 <FONT color="green">508</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.508"></a>
512 <FONT color="green">509</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.509"></a>
513 <FONT color="green">510</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.510"></a>
514 <FONT color="green">511</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.511"></a>
515 <FONT color="green">512</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.512"></a>
516 <FONT color="green">513</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.513"></a>
517 <FONT color="green">514</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.514"></a>
518 <FONT color="green">515</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.515"></a>
519 <FONT color="green">516</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.516"></a>
520 <FONT color="green">517</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.517"></a>
521 <FONT color="green">518</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.518"></a>
522 <FONT color="green">519</FONT> * @return the value returned by {@link FieldMatrixPreservingVisitor#end()} at the end<a name="line.519"></a>
523 <FONT color="green">520</FONT> * of the walk<a name="line.520"></a>
524 <FONT color="green">521</FONT> */<a name="line.521"></a>
525 <FONT color="green">522</FONT> T walkInRowOrder(FieldMatrixPreservingVisitor&lt;T&gt; visitor)<a name="line.522"></a>
526 <FONT color="green">523</FONT> throws MatrixVisitorException;<a name="line.523"></a>
527 <FONT color="green">524</FONT> <a name="line.524"></a>
528 <FONT color="green">525</FONT> /**<a name="line.525"></a>
529 <FONT color="green">526</FONT> * Visit (and possibly change) some matrix entries in row order.<a name="line.526"></a>
530 <FONT color="green">527</FONT> * &lt;p&gt;Row order starts at upper left and iterating through all elements<a name="line.527"></a>
531 <FONT color="green">528</FONT> * of a row from left to right before going to the leftmost element<a name="line.528"></a>
532 <FONT color="green">529</FONT> * of the next row.&lt;/p&gt;<a name="line.529"></a>
533 <FONT color="green">530</FONT> * @param visitor visitor used to process all matrix entries<a name="line.530"></a>
534 <FONT color="green">531</FONT> * @param startRow Initial row index<a name="line.531"></a>
535 <FONT color="green">532</FONT> * @param endRow Final row index (inclusive)<a name="line.532"></a>
536 <FONT color="green">533</FONT> * @param startColumn Initial column index<a name="line.533"></a>
537 <FONT color="green">534</FONT> * @param endColumn Final column index<a name="line.534"></a>
538 <FONT color="green">535</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.535"></a>
539 <FONT color="green">536</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.536"></a>
540 <FONT color="green">537</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.537"></a>
541 <FONT color="green">538</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.538"></a>
542 <FONT color="green">539</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.539"></a>
543 <FONT color="green">540</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.540"></a>
544 <FONT color="green">541</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.541"></a>
545 <FONT color="green">542</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.542"></a>
546 <FONT color="green">543</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.543"></a>
547 <FONT color="green">544</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.544"></a>
548 <FONT color="green">545</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.545"></a>
549 <FONT color="green">546</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.546"></a>
550 <FONT color="green">547</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.547"></a>
551 <FONT color="green">548</FONT> * @return the value returned by {@link FieldMatrixChangingVisitor#end()} at the end<a name="line.548"></a>
552 <FONT color="green">549</FONT> * of the walk<a name="line.549"></a>
553 <FONT color="green">550</FONT> */<a name="line.550"></a>
554 <FONT color="green">551</FONT> T walkInRowOrder(FieldMatrixChangingVisitor&lt;T&gt; visitor,<a name="line.551"></a>
555 <FONT color="green">552</FONT> int startRow, int endRow, int startColumn, int endColumn)<a name="line.552"></a>
556 <FONT color="green">553</FONT> throws MatrixIndexException, MatrixVisitorException;<a name="line.553"></a>
557 <FONT color="green">554</FONT> <a name="line.554"></a>
558 <FONT color="green">555</FONT> /**<a name="line.555"></a>
559 <FONT color="green">556</FONT> * Visit (but don't change) some matrix entries in row order.<a name="line.556"></a>
560 <FONT color="green">557</FONT> * &lt;p&gt;Row order starts at upper left and iterating through all elements<a name="line.557"></a>
561 <FONT color="green">558</FONT> * of a row from left to right before going to the leftmost element<a name="line.558"></a>
562 <FONT color="green">559</FONT> * of the next row.&lt;/p&gt;<a name="line.559"></a>
563 <FONT color="green">560</FONT> * @param visitor visitor used to process all matrix entries<a name="line.560"></a>
564 <FONT color="green">561</FONT> * @param startRow Initial row index<a name="line.561"></a>
565 <FONT color="green">562</FONT> * @param endRow Final row index (inclusive)<a name="line.562"></a>
566 <FONT color="green">563</FONT> * @param startColumn Initial column index<a name="line.563"></a>
567 <FONT color="green">564</FONT> * @param endColumn Final column index<a name="line.564"></a>
568 <FONT color="green">565</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.565"></a>
569 <FONT color="green">566</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.566"></a>
570 <FONT color="green">567</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.567"></a>
571 <FONT color="green">568</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.568"></a>
572 <FONT color="green">569</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.569"></a>
573 <FONT color="green">570</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.570"></a>
574 <FONT color="green">571</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.571"></a>
575 <FONT color="green">572</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.572"></a>
576 <FONT color="green">573</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.573"></a>
577 <FONT color="green">574</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.574"></a>
578 <FONT color="green">575</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.575"></a>
579 <FONT color="green">576</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.576"></a>
580 <FONT color="green">577</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.577"></a>
581 <FONT color="green">578</FONT> * @return the value returned by {@link FieldMatrixPreservingVisitor#end()} at the end<a name="line.578"></a>
582 <FONT color="green">579</FONT> * of the walk<a name="line.579"></a>
583 <FONT color="green">580</FONT> */<a name="line.580"></a>
584 <FONT color="green">581</FONT> T walkInRowOrder(FieldMatrixPreservingVisitor&lt;T&gt; visitor,<a name="line.581"></a>
585 <FONT color="green">582</FONT> int startRow, int endRow, int startColumn, int endColumn)<a name="line.582"></a>
586 <FONT color="green">583</FONT> throws MatrixIndexException, MatrixVisitorException;<a name="line.583"></a>
587 <FONT color="green">584</FONT> <a name="line.584"></a>
588 <FONT color="green">585</FONT> /**<a name="line.585"></a>
589 <FONT color="green">586</FONT> * Visit (and possibly change) all matrix entries in column order.<a name="line.586"></a>
590 <FONT color="green">587</FONT> * &lt;p&gt;Column order starts at upper left and iterating through all elements<a name="line.587"></a>
591 <FONT color="green">588</FONT> * of a column from top to bottom before going to the topmost element<a name="line.588"></a>
592 <FONT color="green">589</FONT> * of the next column.&lt;/p&gt;<a name="line.589"></a>
593 <FONT color="green">590</FONT> * @param visitor visitor used to process all matrix entries<a name="line.590"></a>
594 <FONT color="green">591</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.591"></a>
595 <FONT color="green">592</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.592"></a>
596 <FONT color="green">593</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.593"></a>
597 <FONT color="green">594</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.594"></a>
598 <FONT color="green">595</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.595"></a>
599 <FONT color="green">596</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.596"></a>
600 <FONT color="green">597</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.597"></a>
601 <FONT color="green">598</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.598"></a>
602 <FONT color="green">599</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.599"></a>
603 <FONT color="green">600</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.600"></a>
604 <FONT color="green">601</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.601"></a>
605 <FONT color="green">602</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.602"></a>
606 <FONT color="green">603</FONT> * @return the value returned by {@link FieldMatrixChangingVisitor#end()} at the end<a name="line.603"></a>
607 <FONT color="green">604</FONT> * of the walk<a name="line.604"></a>
608 <FONT color="green">605</FONT> */<a name="line.605"></a>
609 <FONT color="green">606</FONT> T walkInColumnOrder(FieldMatrixChangingVisitor&lt;T&gt; visitor)<a name="line.606"></a>
610 <FONT color="green">607</FONT> throws MatrixVisitorException;<a name="line.607"></a>
611 <FONT color="green">608</FONT> <a name="line.608"></a>
612 <FONT color="green">609</FONT> /**<a name="line.609"></a>
613 <FONT color="green">610</FONT> * Visit (but don't change) all matrix entries in column order.<a name="line.610"></a>
614 <FONT color="green">611</FONT> * &lt;p&gt;Column order starts at upper left and iterating through all elements<a name="line.611"></a>
615 <FONT color="green">612</FONT> * of a column from top to bottom before going to the topmost element<a name="line.612"></a>
616 <FONT color="green">613</FONT> * of the next column.&lt;/p&gt;<a name="line.613"></a>
617 <FONT color="green">614</FONT> * @param visitor visitor used to process all matrix entries<a name="line.614"></a>
618 <FONT color="green">615</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.615"></a>
619 <FONT color="green">616</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.616"></a>
620 <FONT color="green">617</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.617"></a>
621 <FONT color="green">618</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.618"></a>
622 <FONT color="green">619</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.619"></a>
623 <FONT color="green">620</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.620"></a>
624 <FONT color="green">621</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.621"></a>
625 <FONT color="green">622</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.622"></a>
626 <FONT color="green">623</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.623"></a>
627 <FONT color="green">624</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.624"></a>
628 <FONT color="green">625</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.625"></a>
629 <FONT color="green">626</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.626"></a>
630 <FONT color="green">627</FONT> * @return the value returned by {@link FieldMatrixPreservingVisitor#end()} at the end<a name="line.627"></a>
631 <FONT color="green">628</FONT> * of the walk<a name="line.628"></a>
632 <FONT color="green">629</FONT> */<a name="line.629"></a>
633 <FONT color="green">630</FONT> T walkInColumnOrder(FieldMatrixPreservingVisitor&lt;T&gt; visitor)<a name="line.630"></a>
634 <FONT color="green">631</FONT> throws MatrixVisitorException;<a name="line.631"></a>
635 <FONT color="green">632</FONT> <a name="line.632"></a>
636 <FONT color="green">633</FONT> /**<a name="line.633"></a>
637 <FONT color="green">634</FONT> * Visit (and possibly change) some matrix entries in column order.<a name="line.634"></a>
638 <FONT color="green">635</FONT> * &lt;p&gt;Column order starts at upper left and iterating through all elements<a name="line.635"></a>
639 <FONT color="green">636</FONT> * of a column from top to bottom before going to the topmost element<a name="line.636"></a>
640 <FONT color="green">637</FONT> * of the next column.&lt;/p&gt;<a name="line.637"></a>
641 <FONT color="green">638</FONT> * @param visitor visitor used to process all matrix entries<a name="line.638"></a>
642 <FONT color="green">639</FONT> * @param startRow Initial row index<a name="line.639"></a>
643 <FONT color="green">640</FONT> * @param endRow Final row index (inclusive)<a name="line.640"></a>
644 <FONT color="green">641</FONT> * @param startColumn Initial column index<a name="line.641"></a>
645 <FONT color="green">642</FONT> * @param endColumn Final column index<a name="line.642"></a>
646 <FONT color="green">643</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.643"></a>
647 <FONT color="green">644</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.644"></a>
648 <FONT color="green">645</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.645"></a>
649 <FONT color="green">646</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.646"></a>
650 <FONT color="green">647</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.647"></a>
651 <FONT color="green">648</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.648"></a>
652 <FONT color="green">649</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.649"></a>
653 <FONT color="green">650</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.650"></a>
654 <FONT color="green">651</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.651"></a>
655 <FONT color="green">652</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.652"></a>
656 <FONT color="green">653</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.653"></a>
657 <FONT color="green">654</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.654"></a>
658 <FONT color="green">655</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.655"></a>
659 <FONT color="green">656</FONT> * @return the value returned by {@link FieldMatrixChangingVisitor#end()} at the end<a name="line.656"></a>
660 <FONT color="green">657</FONT> * of the walk<a name="line.657"></a>
661 <FONT color="green">658</FONT> */<a name="line.658"></a>
662 <FONT color="green">659</FONT> T walkInColumnOrder(FieldMatrixChangingVisitor&lt;T&gt; visitor,<a name="line.659"></a>
663 <FONT color="green">660</FONT> int startRow, int endRow, int startColumn, int endColumn)<a name="line.660"></a>
664 <FONT color="green">661</FONT> throws MatrixIndexException, MatrixVisitorException;<a name="line.661"></a>
665 <FONT color="green">662</FONT> <a name="line.662"></a>
666 <FONT color="green">663</FONT> /**<a name="line.663"></a>
667 <FONT color="green">664</FONT> * Visit (but don't change) some matrix entries in column order.<a name="line.664"></a>
668 <FONT color="green">665</FONT> * &lt;p&gt;Column order starts at upper left and iterating through all elements<a name="line.665"></a>
669 <FONT color="green">666</FONT> * of a column from top to bottom before going to the topmost element<a name="line.666"></a>
670 <FONT color="green">667</FONT> * of the next column.&lt;/p&gt;<a name="line.667"></a>
671 <FONT color="green">668</FONT> * @param visitor visitor used to process all matrix entries<a name="line.668"></a>
672 <FONT color="green">669</FONT> * @param startRow Initial row index<a name="line.669"></a>
673 <FONT color="green">670</FONT> * @param endRow Final row index (inclusive)<a name="line.670"></a>
674 <FONT color="green">671</FONT> * @param startColumn Initial column index<a name="line.671"></a>
675 <FONT color="green">672</FONT> * @param endColumn Final column index<a name="line.672"></a>
676 <FONT color="green">673</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.673"></a>
677 <FONT color="green">674</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.674"></a>
678 <FONT color="green">675</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.675"></a>
679 <FONT color="green">676</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.676"></a>
680 <FONT color="green">677</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.677"></a>
681 <FONT color="green">678</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.678"></a>
682 <FONT color="green">679</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.679"></a>
683 <FONT color="green">680</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.680"></a>
684 <FONT color="green">681</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.681"></a>
685 <FONT color="green">682</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.682"></a>
686 <FONT color="green">683</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.683"></a>
687 <FONT color="green">684</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.684"></a>
688 <FONT color="green">685</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.685"></a>
689 <FONT color="green">686</FONT> * @return the value returned by {@link FieldMatrixPreservingVisitor#end()} at the end<a name="line.686"></a>
690 <FONT color="green">687</FONT> * of the walk<a name="line.687"></a>
691 <FONT color="green">688</FONT> */<a name="line.688"></a>
692 <FONT color="green">689</FONT> T walkInColumnOrder(FieldMatrixPreservingVisitor&lt;T&gt; visitor,<a name="line.689"></a>
693 <FONT color="green">690</FONT> int startRow, int endRow, int startColumn, int endColumn)<a name="line.690"></a>
694 <FONT color="green">691</FONT> throws MatrixIndexException, MatrixVisitorException;<a name="line.691"></a>
695 <FONT color="green">692</FONT> <a name="line.692"></a>
696 <FONT color="green">693</FONT> /**<a name="line.693"></a>
697 <FONT color="green">694</FONT> * Visit (and possibly change) all matrix entries using the fastest possible order.<a name="line.694"></a>
698 <FONT color="green">695</FONT> * &lt;p&gt;The fastest walking order depends on the exact matrix class. It may be<a name="line.695"></a>
699 <FONT color="green">696</FONT> * different from traditional row or column orders.&lt;/p&gt;<a name="line.696"></a>
700 <FONT color="green">697</FONT> * @param visitor visitor used to process all matrix entries<a name="line.697"></a>
701 <FONT color="green">698</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.698"></a>
702 <FONT color="green">699</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.699"></a>
703 <FONT color="green">700</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.700"></a>
704 <FONT color="green">701</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.701"></a>
705 <FONT color="green">702</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.702"></a>
706 <FONT color="green">703</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.703"></a>
707 <FONT color="green">704</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.704"></a>
708 <FONT color="green">705</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.705"></a>
709 <FONT color="green">706</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.706"></a>
710 <FONT color="green">707</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.707"></a>
711 <FONT color="green">708</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.708"></a>
712 <FONT color="green">709</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.709"></a>
713 <FONT color="green">710</FONT> * @return the value returned by {@link FieldMatrixChangingVisitor#end()} at the end<a name="line.710"></a>
714 <FONT color="green">711</FONT> * of the walk<a name="line.711"></a>
715 <FONT color="green">712</FONT> */<a name="line.712"></a>
716 <FONT color="green">713</FONT> T walkInOptimizedOrder(FieldMatrixChangingVisitor&lt;T&gt; visitor)<a name="line.713"></a>
717 <FONT color="green">714</FONT> throws MatrixVisitorException;<a name="line.714"></a>
718 <FONT color="green">715</FONT> <a name="line.715"></a>
719 <FONT color="green">716</FONT> /**<a name="line.716"></a>
720 <FONT color="green">717</FONT> * Visit (but don't change) all matrix entries using the fastest possible order.<a name="line.717"></a>
721 <FONT color="green">718</FONT> * &lt;p&gt;The fastest walking order depends on the exact matrix class. It may be<a name="line.718"></a>
722 <FONT color="green">719</FONT> * different from traditional row or column orders.&lt;/p&gt;<a name="line.719"></a>
723 <FONT color="green">720</FONT> * @param visitor visitor used to process all matrix entries<a name="line.720"></a>
724 <FONT color="green">721</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.721"></a>
725 <FONT color="green">722</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.722"></a>
726 <FONT color="green">723</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.723"></a>
727 <FONT color="green">724</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.724"></a>
728 <FONT color="green">725</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.725"></a>
729 <FONT color="green">726</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.726"></a>
730 <FONT color="green">727</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.727"></a>
731 <FONT color="green">728</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.728"></a>
732 <FONT color="green">729</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.729"></a>
733 <FONT color="green">730</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.730"></a>
734 <FONT color="green">731</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.731"></a>
735 <FONT color="green">732</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.732"></a>
736 <FONT color="green">733</FONT> * @return the value returned by {@link FieldMatrixPreservingVisitor#end()} at the end<a name="line.733"></a>
737 <FONT color="green">734</FONT> * of the walk<a name="line.734"></a>
738 <FONT color="green">735</FONT> */<a name="line.735"></a>
739 <FONT color="green">736</FONT> T walkInOptimizedOrder(FieldMatrixPreservingVisitor&lt;T&gt; visitor)<a name="line.736"></a>
740 <FONT color="green">737</FONT> throws MatrixVisitorException;<a name="line.737"></a>
741 <FONT color="green">738</FONT> <a name="line.738"></a>
742 <FONT color="green">739</FONT> /**<a name="line.739"></a>
743 <FONT color="green">740</FONT> * Visit (and possibly change) some matrix entries using the fastest possible order.<a name="line.740"></a>
744 <FONT color="green">741</FONT> * &lt;p&gt;The fastest walking order depends on the exact matrix class. It may be<a name="line.741"></a>
745 <FONT color="green">742</FONT> * different from traditional row or column orders.&lt;/p&gt;<a name="line.742"></a>
746 <FONT color="green">743</FONT> * @param visitor visitor used to process all matrix entries<a name="line.743"></a>
747 <FONT color="green">744</FONT> * @param startRow Initial row index<a name="line.744"></a>
748 <FONT color="green">745</FONT> * @param endRow Final row index (inclusive)<a name="line.745"></a>
749 <FONT color="green">746</FONT> * @param startColumn Initial column index<a name="line.746"></a>
750 <FONT color="green">747</FONT> * @param endColumn Final column index (inclusive)<a name="line.747"></a>
751 <FONT color="green">748</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.748"></a>
752 <FONT color="green">749</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.749"></a>
753 <FONT color="green">750</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.750"></a>
754 <FONT color="green">751</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.751"></a>
755 <FONT color="green">752</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.752"></a>
756 <FONT color="green">753</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.753"></a>
757 <FONT color="green">754</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.754"></a>
758 <FONT color="green">755</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.755"></a>
759 <FONT color="green">756</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.756"></a>
760 <FONT color="green">757</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.757"></a>
761 <FONT color="green">758</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.758"></a>
762 <FONT color="green">759</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.759"></a>
763 <FONT color="green">760</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.760"></a>
764 <FONT color="green">761</FONT> * @return the value returned by {@link FieldMatrixChangingVisitor#end()} at the end<a name="line.761"></a>
765 <FONT color="green">762</FONT> * of the walk<a name="line.762"></a>
766 <FONT color="green">763</FONT> */<a name="line.763"></a>
767 <FONT color="green">764</FONT> T walkInOptimizedOrder(FieldMatrixChangingVisitor&lt;T&gt; visitor,<a name="line.764"></a>
768 <FONT color="green">765</FONT> int startRow, int endRow, int startColumn, int endColumn)<a name="line.765"></a>
769 <FONT color="green">766</FONT> throws MatrixIndexException, MatrixVisitorException;<a name="line.766"></a>
770 <FONT color="green">767</FONT> <a name="line.767"></a>
771 <FONT color="green">768</FONT> /**<a name="line.768"></a>
772 <FONT color="green">769</FONT> * Visit (but don't change) some matrix entries using the fastest possible order.<a name="line.769"></a>
773 <FONT color="green">770</FONT> * &lt;p&gt;The fastest walking order depends on the exact matrix class. It may be<a name="line.770"></a>
774 <FONT color="green">771</FONT> * different from traditional row or column orders.&lt;/p&gt;<a name="line.771"></a>
775 <FONT color="green">772</FONT> * @param visitor visitor used to process all matrix entries<a name="line.772"></a>
776 <FONT color="green">773</FONT> * @param startRow Initial row index<a name="line.773"></a>
777 <FONT color="green">774</FONT> * @param endRow Final row index (inclusive)<a name="line.774"></a>
778 <FONT color="green">775</FONT> * @param startColumn Initial column index<a name="line.775"></a>
779 <FONT color="green">776</FONT> * @param endColumn Final column index (inclusive)<a name="line.776"></a>
780 <FONT color="green">777</FONT> * @exception MatrixVisitorException if the visitor cannot process an entry<a name="line.777"></a>
781 <FONT color="green">778</FONT> * @exception MatrixIndexException if the indices are not valid<a name="line.778"></a>
782 <FONT color="green">779</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor)<a name="line.779"></a>
783 <FONT color="green">780</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor)<a name="line.780"></a>
784 <FONT color="green">781</FONT> * @see #walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.781"></a>
785 <FONT color="green">782</FONT> * @see #walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.782"></a>
786 <FONT color="green">783</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor)<a name="line.783"></a>
787 <FONT color="green">784</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor)<a name="line.784"></a>
788 <FONT color="green">785</FONT> * @see #walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.785"></a>
789 <FONT color="green">786</FONT> * @see #walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)<a name="line.786"></a>
790 <FONT color="green">787</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor)<a name="line.787"></a>
791 <FONT color="green">788</FONT> * @see #walkInOptimizedOrder(FieldMatrixPreservingVisitor)<a name="line.788"></a>
792 <FONT color="green">789</FONT> * @see #walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)<a name="line.789"></a>
793 <FONT color="green">790</FONT> * @return the value returned by {@link FieldMatrixPreservingVisitor#end()} at the end<a name="line.790"></a>
794 <FONT color="green">791</FONT> * of the walk<a name="line.791"></a>
795 <FONT color="green">792</FONT> */<a name="line.792"></a>
796 <FONT color="green">793</FONT> T walkInOptimizedOrder(FieldMatrixPreservingVisitor&lt;T&gt; visitor,<a name="line.793"></a>
797 <FONT color="green">794</FONT> int startRow, int endRow, int startColumn, int endColumn)<a name="line.794"></a>
798 <FONT color="green">795</FONT> throws MatrixIndexException, MatrixVisitorException;<a name="line.795"></a>
799 <FONT color="green">796</FONT> <a name="line.796"></a>
800 <FONT color="green">797</FONT> }<a name="line.797"></a>
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861 </PRE>
862 </BODY>
863 </HTML>