[ https://issues.apache.org/jira/browse/MATH-652?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
greg sterijevski updated MATH-652: ---------------------------------- Attachment: tridiagonal > Tridiagonal QR decomposition has a faulty test for zero... > ----------------------------------------------------------- > > Key: MATH-652 > URL: https://issues.apache.org/jira/browse/MATH-652 > Project: Commons Math > Issue Type: Bug > Affects Versions: 3.1 > Environment: JAVA > Reporter: greg sterijevski > Labels: TriDiagonalTransformer > Fix For: 3.1 > > Attachments: tridiagonal > > Original Estimate: 1h > Remaining Estimate: 1h > > In the method getQT() of TriDiagonalTransformer we have: > public RealMatrix getQT() { > if (cachedQt == null) { > final int m = householderVectors.length; > cachedQt = MatrixUtils.createRealMatrix(m, m); > // build up first part of the matrix by applying Householder > transforms > for (int k = m - 1; k >= 1; --k) { > final double[] hK = householderVectors[k - 1]; > cachedQt.setEntry(k, k, 1); > final double inv = 1.0 / (secondary[k - 1] * hK[k]); > if (hK[k] != 0.0) { > double beta = 1.0 / secondary[k - 1]; > The faulty line is : final double inv = 1.0 / (secondary[k - 1] * hK[k]); > It should be put after the test for the zero, eg: > public RealMatrix getQT() { > if (cachedQt == null) { > final int m = householderVectors.length; > cachedQt = MatrixUtils.createRealMatrix(m, m); > // build up first part of the matrix by applying Householder > transforms > for (int k = m - 1; k >= 1; --k) { > final double[] hK = householderVectors[k - 1]; > cachedQt.setEntry(k, k, 1); > if (hK[k] != 0.0) { > final double inv = 1.0 / (secondary[k - 1] * hK[k]); > double beta = 1.0 / secondary[k - 1]; -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira