protected void updateA( int w )
    {
        final double u[] = dataQR[w];

        for( int j = w+1; j < numCols; j++ ) {

            final double colQ[] = dataQR[j];
            // first element in u is assumed to be 1.0 + 0*i
            double realSum = colQ[w*2];
            double imagSum = colQ[w*2+1];

            for( int k = w+1; k < numRows; k++ ) {
                double realU = u[k*2];
                double imagU = -u[k*2+1];

                double realQ = colQ[k*2];
                double imagQ = colQ[k*2+1];

                realSum += realU*realQ - imagU*imagQ;
                imagSum += imagU*realQ + realU*imagQ;
            }
            realSum *= gamma;
            imagSum *= gamma;

            colQ[w*2  ] -= realSum;
            colQ[w*2+1] -= imagSum;

            for( int i = w+1; i < numRows; i++ ) {
                double realU = u[i*2];
                double imagU = u[i*2+1];

                colQ[i*2]  -= realU*realSum - imagU*imagSum;
                colQ[i*2+1]-= imagU*realSum + realU*imagSum;
            }
        }
    }
protected void updateA ( int w ) { final double u [ ] = dataQR [ w ] ; for ( int j = w + 1 ; j < numCols ; j ++ ) { final double colQ [ ] = dataQR [ j ] ; double realSum = colQ [ w * 2 ] ; double imagSum = colQ [ w * 2 + 1 ] ; for ( int k = w + 1 ; k < numRows ; k ++ ) { double realU = u [ k * 2 ] ; double imagU = - u [ k * 2 + 1 ] ; double realQ = colQ [ k * 2 ] ; double imagQ = colQ [ k * 2 + 1 ] ; realSum += realU * realQ - imagU * imagQ ; imagSum += imagU * realQ + realU * imagQ ; } realSum *= gamma ; imagSum *= gamma ; colQ [ w * 2 ] -= realSum ; colQ [ w * 2 + 1 ] -= imagSum ; for ( int i = w + 1 ; i < numRows ; i ++ ) { double realU = u [ i * 2 ] ; double imagU = u [ i * 2 + 1 ] ; colQ [ i * 2 ] -= realU * realSum - imagU * imagSum ; colQ [ i * 2 + 1 ] -= imagU * realSum + realU * imagSum ; } } }
<p>
Takes the results from the householder computation and updates the 'A' matrix.<br>
<br>
A = (I - &gamma;*u*u<sup>H</sup>)A
</p>

@param w The submatrix.