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 ) with real(8) v(n), w(n), x, y and real(16) q
q = real(x,16) + real(y,16)
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.