Error bounds from extra-precise iterative refinement

  • Authors:
  • James Demmel;Yozo Hida;William Kahan;Xiaoye S. Li;Sonil Mukherjee;E. Jason Riedy

  • Affiliations:
  • University of California, Berkeley, CA;University of California, Berkeley, CA;University of California, Berkeley, CA;Lawrence Berkeley National Laboratory, Berkeley, CA;Oracle, Redwood Shores, CA;University of California, Berkeley, CA

  • Venue:
  • ACM Transactions on Mathematical Software (TOMS)
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present the design and testing of an algorithm for iterative refinement of the solution of linear equations where the residual is computed with extra precision. This algorithm was originally proposed in 1948 and analyzed in the 1960s as a means to compute very accurate solutions to all but the most ill-conditioned linear systems. However, two obstacles have until now prevented its adoption in standard subroutine libraries like LAPACK: (1) There was no standard way to access the higher precision arithmetic needed to compute residuals, and (2) it was unclear how to compute a reliable error bound for the computed solution. The completion of the new BLAS Technical Forum Standard has essentially removed the first obstacle. To overcome the second obstacle, we show how the application of iterative refinement can be used to compute an error bound in any norm at small cost and use this to compute both an error bound in the usual infinity norm, and a componentwise relative error bound.We report extensive test results on over 6.2 million matrices of dimensions 5, 10, 100, and 1000. As long as a normwise (componentwise) condition number computed by the algorithm is less than 1/max{10,&nsqrt;}ϵw, the computed normwise (componentwise) error bound is at most 2 max{10, &nsqrt;} · ϵw, and indeed bounds the true error. Here, n is the matrix dimension and ϵw = 2−24 is the working precision. Residuals were computed in double precision (53 bits of precision). In other words, the algorithm always computed a tiny error at negligible extra cost for most linear systems. For worse conditioned problems (which we can detect using condition estimation), we obtained small correct error bounds in over 90% of cases.