SOL Logo

Systems Optimization Laboratory

Stanford University
Dept of Management Science and Engineering (MS&E)

Huang Engineering Center

Stanford, CA 94305-4121  USA

qdotdd: Quad-precision dotproduct of double-precision vectors

  • AUTHORS: Ding Ma and Michael Saunders.
  • CONTENTS: qdotdd is a set of Fortran 90 routines for computing the dotproduct \(q = v^T w\) of two double-precision vectors \(v\), \(w\) and obtaining a quad-precision result \(q\) using only double-precision floating point. This operation is commonly known as "dotproduct accumulation". Early machines would have a hardware accumulator to give accurate dotproducts. Here, the gfortran compiler implements real(16) data types in Fortran 90 using the GNU GCC libquadmath software library.

    The code

    call qdotdd( v,w,n,x,y )
    q = real(x,16) + real(y,16)
    with real(8) v(n), w(n), x, y and real(16) q
    gives q to almost quadruple precision using only double-precision floating point.

    Stef Graillat and Valerie Menissier-Morain, Accurate summation, dot product and polynomial evaluation in complex floating point arithmetic, Information and Computation 216 (2012) 57--71.

    Ding Ma and Michael Saunders, Experiments with quad precision for iterative solvers, SIAM Conference on Optimization, San Diego, CA, May 19-22, 2014.

    29 Dec 2014: Fortran 90 code posted.