## org.apache.commons.math3.linear
Class Array2DRowFieldMatrix<T extends FieldElement<T>>

    java.lang.Object
      org.apache.commons.math3.linear.AbstractFieldMatrix<T>
          org.apache.commons.math3.linear.Array2DRowFieldMatrix<T>

Type Parameters:
  `T` - the type of the field elements

All Implemented Interfaces:
  Serializable, AnyMatrix, FieldMatrix<T>

    public class Array2DRowFieldMatrix<T extends FieldElement<T>>

extends AbstractFieldMatrix<T>
implements Serializable

Implementation of FieldMatrix<T> using a `FieldElement`[][] array to store entries.

As specified in the `FieldMatrix` interface, matrix element indexing is 0-based -- e.g., `getEntry(0, 0)` returns the element in the first row, first column of the matrix.

Version:
  $Id: Array2DRowFieldMatrix.java 1296536 2012-03-03 00:44:04Z sebb $
See Also:
  Serialized Form

Field Summary
`private T[][]` `data` Entries of the matrix
`private static long` `serialVersionUID` Serializable version identifier

Constructor Summary
`Array2DRowFieldMatrix(Field<T> field)` Creates a matrix with no data
`Array2DRowFieldMatrix(Field<T> field, int rowDimension, int columnDimension)` Create a new `FieldMatrix<T>` with the supplied row and column dimensions.
`Array2DRowFieldMatrix(Field<T> field, T[] v)` Create a new (column) `FieldMatrix<T>` using `v` as the data for the unique column of the created matrix.
`Array2DRowFieldMatrix(Field<T> field, T[][] d)` Create a new `FieldMatrix<T>` using the input array as the underlying data array.
`Array2DRowFieldMatrix(Field<T> field, T[][] d, boolean copyArray)` Create a new `FieldMatrix<T>` using the input array as the underlying data array.
`Array2DRowFieldMatrix(T[] v)` Create a new (column) `FieldMatrix<T>` using `v` as the data for the unique column of the created matrix.
`Array2DRowFieldMatrix(T[][] d)` Create a new `FieldMatrix<T>` using the input array as the underlying data array.
`Array2DRowFieldMatrix(T[][] d, boolean copyArray)` Create a new `FieldMatrix<T>` using the input array as the underlying data array.

Method Summary
`Array2DRowFieldMatrix<T>` `add(Array2DRowFieldMatrix<T> m)` Add `m` to this matrix.
`void` `addToEntry(int row, int column, T increment)` Change an entry in the specified row and column.
`FieldMatrix<T>` `copy()` Make a (deep) copy of this.
`private void` `copyIn(T[][] in)` Replace data with a fresh copy of the input array.
`private T[][]` `copyOut()` Get a fresh copy of the underlying data array.
`FieldMatrix<T>` `createMatrix(int rowDimension, int columnDimension)` Create a new FieldMatrix<T> of the same type as the instance with the supplied row and column dimensions.
`int` `getColumnDimension()` Returns the number of columns in the matrix.
`T[][]` `getData()` Returns matrix entries as a two-dimensional array.
`T[][]` `getDataRef()` Get a reference to the underlying data array.
`T` `getEntry(int row, int column)` Returns the entry in the specified row and column.
`int` `getRowDimension()` Returns the number of rows in the matrix.
`Array2DRowFieldMatrix<T>` `multiply(Array2DRowFieldMatrix<T> m)` Postmultiplying this matrix by `m`.
`void` `multiplyEntry(int row, int column, T factor)` Change an entry in the specified row and column.
`T[]` `operate(T[] v)` Returns the result of multiplying this by the vector `v`.
`T[]` `preMultiply(T[] v)` Returns the (row) vector result of premultiplying this by the vector `v`.
`void` `setEntry(int row, int column, T value)` Set the entry in the specified row and column.
`void` `setSubMatrix(T[][] subMatrix, int row, int column)` Replace the submatrix starting at `(row, column)` using data in the input `subMatrix` array.
`Array2DRowFieldMatrix<T>` `subtract(Array2DRowFieldMatrix<T> m)` Subtract `m` from this matrix.
`T` `walkInColumnOrder(FieldMatrixChangingVisitor<T> visitor)` Visit (and possibly change) all matrix entries in column order.
`T` `walkInColumnOrder(FieldMatrixChangingVisitor<T> visitor, int startRow, int endRow, int startColumn, int endColumn)` Visit (and possibly change) some matrix entries in column order.
`T` `walkInColumnOrder(FieldMatrixPreservingVisitor<T> visitor)` Visit (but don't change) all matrix entries in column order.
`T` `walkInColumnOrder(FieldMatrixPreservingVisitor<T> visitor, int startRow, int endRow, int startColumn, int endColumn)` Visit (but don't change) some matrix entries in column order.
`T` `walkInRowOrder(FieldMatrixChangingVisitor<T> visitor)` Visit (and possibly change) all matrix entries in row order.
`T` `walkInRowOrder(FieldMatrixChangingVisitor<T> visitor, int startRow, int endRow, int startColumn, int endColumn)` Visit (and possibly change) some matrix entries in row order.
`T` `walkInRowOrder(FieldMatrixPreservingVisitor<T> visitor)` Visit (but don't change) all matrix entries in row order.
`T` `walkInRowOrder(FieldMatrixPreservingVisitor<T> visitor, int startRow, int endRow, int startColumn, int endColumn)` Visit (but don't change) some matrix entries in row order.

Methods inherited from class org.apache.commons.math3.linear.AbstractFieldMatrix

`add, buildArray, buildArray, checkAdditionCompatible, checkColumnIndex, checkMultiplicationCompatible, checkRowIndex, checkSubMatrixIndex, checkSubMatrixIndex, checkSubtractionCompatible, copySubMatrix, copySubMatrix, equals, extractField, extractField, getColumn, getColumnMatrix, getColumnVector, getField, getRow, getRowMatrix, getRowVector, getSubMatrix, getSubMatrix, getTrace, hashCode, isSquare, multiply, operate, power, preMultiply, preMultiply, scalarAdd, scalarMultiply, setColumn, setColumnMatrix, setColumnVector, setRow, setRowMatrix, setRowVector, subtract, toString, transpose, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### serialVersionUID

    private static final long serialVersionUID

  Serializable version identifier

  See Also:
    Constant Field Values

### data

    private T extends FieldElement<T>[][] data

  Entries of the matrix

Constructor Detail

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(Field<T> field)

  Creates a matrix with no data

  Parameters:
    `field` - field to which the elements belong

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(Field<T> field,
                                 int rowDimension,
                                 int columnDimension)

  Create a new `FieldMatrix<T>` with the supplied row and column dimensions.

  Parameters:
    `field` - Field to which the elements belong.
    `rowDimension` - Number of rows in the new matrix.
    `columnDimension` - Number of columns in the new matrix.
  Throws:
    `NotStrictlyPositiveException` - if row or column dimension is not positive.

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(T[][] d)

  Create a new `FieldMatrix<T>` using the input array as the underlying data array.

  The input array is copied, not referenced. This constructor has the same effect as calling `Array2DRowFieldMatrix(FieldElement[][], boolean)` with the second argument set to `true`.

  Parameters:
    `d` - Data for the new matrix.
  Throws:
    `DimensionMismatchException` - if `d` is not rectangular.
    `NullArgumentException` - if `d` is `null`.
    `NoDataException` - if there are not at least one row and one column.
  See Also:
    `Array2DRowFieldMatrix(FieldElement[][], boolean)`

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(Field<T> field,
                                 T[][] d)

  Create a new `FieldMatrix<T>` using the input array as the underlying data array.

  The input array is copied, not referenced. This constructor has the same effect as calling `Array2DRowFieldMatrix(FieldElement[][], boolean)` with the second argument set to `true`.

  Parameters:
    `field` - Field to which the elements belong.
    `d` - Data for the new matrix.
  Throws:
    `DimensionMismatchException` - if `d` is not rectangular.
    `NullArgumentException` - if `d` is `null`.
    `NoDataException` - if there are not at least one row and one column.
  See Also:
    `Array2DRowFieldMatrix(FieldElement[][], boolean)`

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(T[][] d,
                                 boolean copyArray)

  Create a new `FieldMatrix<T>` using the input array as the underlying data array.

  If an array is built specially in order to be embedded in a `FieldMatrix<T>` and not used directly, the `copyArray` may be set to `false`. This will prevent the copying and improve performance as no new array will be built and no data will be copied.

  Parameters:
    `d` - Data for the new matrix.
    `copyArray` - Whether to copy or reference the input array.
  Throws:
    `DimensionMismatchException` - if `d` is not rectangular.
    `NoDataException` - if there are not at least one row and one column.
    `NullArgumentException` - if `d` is `null`.
  See Also:
    `Array2DRowFieldMatrix(FieldElement[][])`

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(Field<T> field,
                                 T[][] d,
                                 boolean copyArray)
                          throws DimensionMismatchException,
                                 NoDataException,
                                 NullArgumentException

  Create a new `FieldMatrix<T>` using the input array as the underlying data array.

  If an array is built specially in order to be embedded in a `FieldMatrix<T>` and not used directly, the `copyArray` may be set to `false`. This will prevent the copying and improve performance as no new array will be built and no data will be copied.

  Parameters:
    `field` - Field to which the elements belong.
    `d` - Data for the new matrix.
    `copyArray` - Whether to copy or reference the input array.
  Throws:
    `DimensionMismatchException` - if `d` is not rectangular.
    `NoDataException` - if there are not at least one row and one column.
    `NullArgumentException` - if `d` is `null`.
  See Also:
    `Array2DRowFieldMatrix(FieldElement[][])`

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(T[] v)

  Create a new (column) `FieldMatrix<T>` using `v` as the data for the unique column of the created matrix. The input array is copied.

  Parameters:
    `v` - Column vector holding data for new matrix.

### Array2DRowFieldMatrix

    public Array2DRowFieldMatrix(Field<T> field,
                                 T[] v)

  Create a new (column) `FieldMatrix<T>` using `v` as the data for the unique column of the created matrix. The input array is copied.

  Parameters:
    `field` - Field to which the elements belong.
    `v` - Column vector holding data for new matrix.

Method Detail

### createMatrix

    public FieldMatrix<T> createMatrix(int rowDimension,
                                       int columnDimension)

  Create a new FieldMatrix<T> of the same type as the instance with the supplied row and column dimensions.

  Specified by:
    `createMatrix` in interface `FieldMatrix<T extends FieldElement<T>>`
  Specified by:
    `createMatrix` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `rowDimension` - the number of rows in the new matrix
    `columnDimension` - the number of columns in the new matrix
  Returns:
    a new matrix of the same type as the instance

### copy

    public FieldMatrix<T> copy()

  Make a (deep) copy of this.

  Specified by:
    `copy` in interface `FieldMatrix<T extends FieldElement<T>>`
  Specified by:
    `copy` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Returns:
    a copy of this matrix.

### add

    public Array2DRowFieldMatrix<T> add(Array2DRowFieldMatrix<T> m)

  Add `m` to this matrix.

  Parameters:
    `m` - Matrix to be added.
  Returns:
    `this` + m.
  Throws:
    `MatrixDimensionMismatchException` - if `m` is not the same size as this matrix.

### subtract

    public Array2DRowFieldMatrix<T> subtract(Array2DRowFieldMatrix<T> m)

  Subtract `m` from this matrix.

  Parameters:
    `m` - Matrix to be subtracted.
  Returns:
    `this` + m.
  Throws:
    `MatrixDimensionMismatchException` - if `m` is not the same size as this matrix.

### multiply

    public Array2DRowFieldMatrix<T> multiply(Array2DRowFieldMatrix<T> m)

  Postmultiplying this matrix by `m`.

  Parameters:
    `m` - Matrix to postmultiply by.
  Returns:
    `this` * m.
  Throws:
    `DimensionMismatchException` - if the number of columns of this matrix is not equal to the number of rows of `m`.

### getData

    public T[][] getData()

  Returns matrix entries as a two-dimensional array.

  Specified by:
    `getData` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `getData` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Returns:
    a 2-dimensional array of entries.

### getDataRef

    public T[][] getDataRef()

  Get a reference to the underlying data array. This methods returns internal data, not fresh copy of it.

  Returns:
    the 2-dimensional array of entries.

### setSubMatrix

    public void setSubMatrix(T[][] subMatrix,
                             int row,
                             int column)

  Replace the submatrix starting at `(row, column)` using data in the input `subMatrix` array. Indexes are 0-based.

  Example:
  Starting with

       1  2  3  4
       5  6  7  8
       9  0  1  2

  and `subMatrix = {{3, 4} {5,6}}`, invoking `setSubMatrix(subMatrix,1,1))` will result in

       1  2  3  4
       5  3  4  8
       9  5  6  2

  Specified by:
    `setSubMatrix` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `setSubMatrix` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `subMatrix` - Array containing the submatrix replacement data.
    `row` - Row coordinate of the top-left element to be replaced.
    `column` - Column coordinate of the top-left element to be replaced.

### getEntry

    public T getEntry(int row,
                      int column)

  Returns the entry in the specified row and column.

  Specified by:
    `getEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
  Specified by:
    `getEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `row` - row location of entry to be fetched
    `column` - column location of entry to be fetched
  Returns:
    matrix entry in row,column

### setEntry

    public void setEntry(int row,
                         int column,
                         T value)

  Set the entry in the specified row and column.

  Specified by:
    `setEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
  Specified by:
    `setEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `row` - row location of entry to be set
    `column` - column location of entry to be set
    `value` - matrix entry to be set in row,column

### addToEntry

    public void addToEntry(int row,
                           int column,
                           T increment)

  Change an entry in the specified row and column.

  Specified by:
    `addToEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
  Specified by:
    `addToEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `row` - Row location of entry to be set.
    `column` - Column location of entry to be set.
    `increment` - Value to add to the current matrix entry in `(row, column)`.

### multiplyEntry

    public void multiplyEntry(int row,
                              int column,
                              T factor)

  Change an entry in the specified row and column.

  Specified by:
    `multiplyEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
  Specified by:
    `multiplyEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `row` - Row location of entry to be set.
    `column` - Column location of entry to be set.
    `factor` - Multiplication factor for the current matrix entry in `(row,column)`

### getRowDimension

    public int getRowDimension()

  Returns the number of rows in the matrix.

  Specified by:
    `getRowDimension` in interface `AnyMatrix`
  Specified by:
    `getRowDimension` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Returns:
    rowDimension

### getColumnDimension

    public int getColumnDimension()

  Returns the number of columns in the matrix.

  Specified by:
    `getColumnDimension` in interface `AnyMatrix`
  Specified by:
    `getColumnDimension` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Returns:
    columnDimension

### operate

    public T[] operate(T[] v)

  Returns the result of multiplying this by the vector `v`.

  Specified by:
    `operate` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `operate` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `v` - the vector to operate on
  Returns:
    this*v

### preMultiply

    public T[] preMultiply(T[] v)

  Returns the (row) vector result of premultiplying this by the vector `v`.

  Specified by:
    `preMultiply` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `preMultiply` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `v` - the row vector to premultiply by
  Returns:
    v*this

### walkInRowOrder

    public T walkInRowOrder(FieldMatrixChangingVisitor<T> visitor)

  Visit (and possibly change) all matrix entries in row order.

  Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

  Specified by:
    `walkInRowOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInRowOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
  Returns:
    the value returned by `FieldMatrixChangingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### walkInRowOrder

    public T walkInRowOrder(FieldMatrixPreservingVisitor<T> visitor)

  Visit (but don't change) all matrix entries in row order.

  Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

  Specified by:
    `walkInRowOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInRowOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
  Returns:
    the value returned by `FieldMatrixPreservingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### walkInRowOrder

    public T walkInRowOrder(FieldMatrixChangingVisitor<T> visitor,
                            int startRow,
                            int endRow,
                            int startColumn,
                            int endColumn)

  Visit (and possibly change) some matrix entries in row order.

  Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

  Specified by:
    `walkInRowOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInRowOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
    `startRow` - Initial row index
    `endRow` - Final row index (inclusive)
    `startColumn` - Initial column index
    `endColumn` - Final column index
  Returns:
    the value returned by `FieldMatrixChangingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### walkInRowOrder

    public T walkInRowOrder(FieldMatrixPreservingVisitor<T> visitor,
                            int startRow,
                            int endRow,
                            int startColumn,
                            int endColumn)

  Visit (but don't change) some matrix entries in row order.

  Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

  Specified by:
    `walkInRowOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInRowOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
    `startRow` - Initial row index
    `endRow` - Final row index (inclusive)
    `startColumn` - Initial column index
    `endColumn` - Final column index
  Returns:
    the value returned by `FieldMatrixPreservingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### walkInColumnOrder

    public T walkInColumnOrder(FieldMatrixChangingVisitor<T> visitor)

  Visit (and possibly change) all matrix entries in column order.

  Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

  Specified by:
    `walkInColumnOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInColumnOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
  Returns:
    the value returned by `FieldMatrixChangingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### walkInColumnOrder

    public T walkInColumnOrder(FieldMatrixPreservingVisitor<T> visitor)

  Visit (but don't change) all matrix entries in column order.

  Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

  Specified by:
    `walkInColumnOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInColumnOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
  Returns:
    the value returned by `FieldMatrixPreservingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### walkInColumnOrder

    public T walkInColumnOrder(FieldMatrixChangingVisitor<T> visitor,
                               int startRow,
                               int endRow,
                               int startColumn,
                               int endColumn)

  Visit (and possibly change) some matrix entries in column order.

  Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

  Specified by:
    `walkInColumnOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInColumnOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
    `startRow` - Initial row index
    `endRow` - Final row index (inclusive)
    `startColumn` - Initial column index
    `endColumn` - Final column index
  Returns:
    the value returned by `FieldMatrixChangingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### walkInColumnOrder

    public T walkInColumnOrder(FieldMatrixPreservingVisitor<T> visitor,
                               int startRow,
                               int endRow,
                               int startColumn,
                               int endColumn)

  Visit (but don't change) some matrix entries in column order.

  Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

  Specified by:
    `walkInColumnOrder` in interface `FieldMatrix<T extends FieldElement<T>>`
  Overrides:
    `walkInColumnOrder` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
  Parameters:
    `visitor` - visitor used to process all matrix entries
    `startRow` - Initial row index
    `endRow` - Final row index (inclusive)
    `startColumn` - Initial column index
    `endColumn` - Final column index
  Returns:
    the value returned by `FieldMatrixPreservingVisitor.end()` at the end of the walk
  See Also:
    `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInRowOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInRowOrder(FieldMatrixPreservingVisitor, int, int, int, int)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInColumnOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixChangingVisitor, int, int, int, int)`, `FieldMatrix.walkInOptimizedOrder(FieldMatrixPreservingVisitor, int, int, int, int)`

### copyOut

    private T[][] copyOut()

  Get a fresh copy of the underlying data array.

  Returns:
    a copy of the underlying data array.

### copyIn

    private void copyIn(T[][] in)

  Replace data with a fresh copy of the input array.

  Parameters:
    `in` - Data to copy.
  Throws:
    `NoDataException` - if the input array is empty.
    `DimensionMismatchException` - if the input array is not rectangular.
    `NullArgumentException` - if the input array is `null`.

Copyright (c) 2003-2013 Apache Software Foundation