Electrical Engineering
      and Computer Sciences

Electrical Engineering and Computer Sciences

COLLEGE OF ENGINEERING

UC Berkeley

A Serial Implementation of Cuppen's Divide and Conquer Algorithm for the Symmetric Eigenvalue Problem

Jeffery D. Rutter

EECS Department
University of California, Berkeley
Technical Report No. UCB/CSD-94-799
February 1994

http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/CSD-94-799.pdf

This report discusses a serial implementation of Cuppen's divide and conquer algorithm for computing all eigenvalues and eigenvectors of a real symmetric matrix T = Q Lambda Q^ T. This method is compared with the LAPACK implementations of QR, bisection/inverse iteration, and root-free QR/inverse iteration to find all of the eigenvalues and eigenvectors.

On a DEC Alpha using optimized Basic Linear Algebra Subroutines (BLAS), divide and conquer was uniformly the fastest algorithm by a large margin for large tridiagonal eigenproblems. When Fortran BLAS were used, bisection/inverse iteration was somewhat faster (up to a factor of 2) for very large matrices (n >= 500) without clustered eigenvalues. When eigenvalues were clustered, divide and conquer was up to 80 times faster. The speedups over QR were so large in the tridiagonal case that the overall problem, including reduction to tridiagonal form, sped up by a factor of 2.5 over QR for n >= 500.

Nearly universally, the matrix of eigenvectors generated by divide and conquer suffered the least loss of orthogonality. The smallest eigensystem residual usually came from the eigensystem generated by bisection/inverse iteration, with divide and conquer coming a close second.


BibTeX citation:

@techreport{Rutter:CSD-94-799,
    Author = {Rutter, Jeffery D.},
    Title = {A Serial Implementation of Cuppen's Divide and Conquer Algorithm for the Symmetric Eigenvalue Problem},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {1994},
    Month = {Feb},
    URL = {http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/6315.html},
    Number = {UCB/CSD-94-799},
    Abstract = {This report discusses a serial implementation of Cuppen's divide and conquer algorithm for computing all eigenvalues and eigenvectors of a real symmetric matrix <i>T</i> = <i>Q</i> Lambda <i>Q</i>^<i>T</i>. This method is compared with the LAPACK implementations of QR, bisection/inverse iteration, and root-free QR/inverse iteration to find all of the eigenvalues and eigenvectors. <p>On a DEC Alpha using optimized Basic Linear Algebra Subroutines (BLAS), divide and conquer was uniformly the fastest algorithm by a large margin for large tridiagonal eigenproblems. When Fortran BLAS were used, bisection/inverse iteration was somewhat faster (up to a factor of 2) for very large matrices (<i>n</i> >= 500) without clustered eigenvalues. When eigenvalues were clustered, divide and conquer was up to 80 times faster. The speedups over QR were so large in the tridiagonal case that the overall problem, including reduction to tridiagonal form, sped up by a factor of 2.5 over QR for <i>n</i> >= 500. <p>Nearly universally, the matrix of eigenvectors generated by divide and conquer suffered the least loss of orthogonality. The smallest eigensystem residual usually came from the eigensystem generated by bisection/inverse iteration, with divide and conquer coming a close second.}
}

EndNote citation:

%0 Report
%A Rutter, Jeffery D.
%T A Serial Implementation of Cuppen's Divide and Conquer Algorithm for the Symmetric Eigenvalue Problem
%I EECS Department, University of California, Berkeley
%D 1994
%@ UCB/CSD-94-799
%U http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/6315.html
%F Rutter:CSD-94-799