Skip to main content Skip to secondary navigation

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.


  • REFERENCES:
    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.

  • RELEASE:
    29 Dec 2014: Fortran 90 code posted.

DOWNLOADS