# Do BLAS routines compute their respective operations with minimum error?

Do all BLAS routines compute the respective operation with minimum error ?

i.e. Is the reduction in sdot computed with least error ?

I need to call these routines through gsl/gsl_cblas.h.

BLAS routines do not typically use stable summation algorithms. In the case of gsl, you can look up its source code online - the source of gsl's sdot is contained in gsl/cblas/source_dot_r.h, and contains this loop:

  for (i = 0; i < N; i++) {
r += X[ix] * Y[iy];
ix += incX;
iy += incY;
}


It's just a straightforward sum. The corresponding version in the BLAS library itself is here, and is implemented in essentially the same way.

Unfortunately, the "standard" BLAS implementations does not provide this feature. But due to the goals the scientific community want to achieve with the Exascale Computing serval "reproducible" BLAS implementation are in development. Reproducibility is not the same as minimal error evaluation but it is one necessary part of it. And the reproducible BLAS libraries might provide error bounds for the computed results.

Two libraries focusing on this are: