Error-free transformation of matrix multiplication with a posteriori validation

Katsuhisa Ozaki, Takeshi Ogita, Shinichi Oishi

    Research output: Contribution to journalArticle

    3 Citations (Scopus)

    Abstract

    In this study, we examine the accurate matrix multiplication in floating-point arithmetic. We demonstrate the error-free transformations of matrix multiplication using high performance basic linear algebra subprograms. These transformations can be applied to accurately compute the product of two matrices using floating-point entries. A key technique for this calculation is error-free splitting in floating-point matrices. In this study, we improve upon our previous method by a posteriori validation using floating-point exception. In the method, we utilize the presence of overflow in a positive manner for detecting whether rounding error occurs. If overflow occurs, the result contains some exceptional values such as ±∞ and NaN, that is, the method fails by necessity. Otherwise, we can confirm that no rounding error occurs in the process. Therefore, reducing the possibility of overflow is important. The numerical results suggest that the proposed algorithm provides more accurate results compared with the original algorithm. Moreover, for the product of n × n matrices, when n ≥5000, the new algorithm reduces the computing time for error-free transformation by an average of 20 % and up to 30 % compared with the original algorithm. Furthermore, the new algorithm can be used when matrix multiplication is performed using divide-and-conquer methods.

    Original languageEnglish
    Pages (from-to)931-946
    Number of pages16
    JournalNumerical Linear Algebra with Applications
    Volume23
    Issue number5
    DOIs
    Publication statusPublished - 2016 Oct 1

      Fingerprint

    Keywords

    • accurate computing
    • floating-point arithmetic
    • interval arithmetic
    • matrix multiplication

    ASJC Scopus subject areas

    • Algebra and Number Theory
    • Applied Mathematics

    Cite this