@Override
    public void solve(ZMatrixRMaj B , ZMatrixRMaj X ) {
        if( B.numCols != X.numCols || B.numRows != n || X.numRows != n) {
            throw new IllegalArgumentException("Unexpected matrix size");
        }

        int numCols = B.numCols;

        double dataB[] = B.data;
        double dataX[] = X.data;

        if(decomposer.isLower()) {
            for( int j = 0; j < numCols; j++ ) {
                for( int i = 0; i < n; i++ ) {
                    vv[i*2]   = dataB[(i*numCols+j)*2];
                    vv[i*2+1] = dataB[(i*numCols+j)*2+1];
                }
                solveInternalL();
                for( int i = 0; i < n; i++ ) {
                    dataX[(i*numCols+j)*2  ] = vv[i*2];
                    dataX[(i*numCols+j)*2+1] = vv[i*2+1];
                }
            }
        } else {
            throw new RuntimeException("Implement");
        }
    }
@ Override public void solve ( ZMatrixRMaj B , ZMatrixRMaj X ) { if ( B . numCols != X . numCols || B . numRows != n || X . numRows != n ) { throw new IllegalArgumentException ( "Unexpected matrix size" ) ; } int numCols = B . numCols ; double dataB [ ] = B . data ; double dataX [ ] = X . data ; if ( decomposer . isLower ( ) ) { for ( int j = 0 ; j < numCols ; j ++ ) { for ( int i = 0 ; i < n ; i ++ ) { vv [ i * 2 ] = dataB [ ( i * numCols + j ) * 2 ] ; vv [ i * 2 + 1 ] = dataB [ ( i * numCols + j ) * 2 + 1 ] ; } solveInternalL ( ) ; for ( int i = 0 ; i < n ; i ++ ) { dataX [ ( i * numCols + j ) * 2 ] = vv [ i * 2 ] ; dataX [ ( i * numCols + j ) * 2 + 1 ] = vv [ i * 2 + 1 ] ; } } } else { throw new RuntimeException ( "Implement" ) ; } }
<p>
Using the decomposition, finds the value of 'X' in the linear equation below:<br>

A*x = b<br>

where A has dimension of n by n, x and b are n by m dimension.
</p>
<p>
*Note* that 'b' and 'x' can be the same matrix instance.
</p>

@param B A matrix that is n by m.  Not modified.
@param X An n by m matrix where the solution is writen to.  Modified.