--- ./d_mat/gso.c.orig 2015-08-13 10:16:22.000000000 -0600 +++ ./d_mat/gso.c 2015-09-23 21:24:08.367946615 -0600 @@ -84,7 +84,9 @@ d_mat_gso(d_mat_t B, const d_mat_t A) flag = 0; if (s < t) { - if (s * D_EPS == 0) + double u = s * D_EPS; + + if (u > -1.0e-308 && u < 1.0e-308) s = 0; else flag = 1; --- ./d_mat/qr.c.orig 2015-08-13 10:16:22.000000000 -0600 +++ ./d_mat/qr.c 2015-09-23 21:24:16.687286447 -0600 @@ -92,8 +92,10 @@ d_mat_qr(d_mat_t Q, d_mat_t R, const d_m flag = 0; if (s < t) { + double u = s * D_EPS; + orig = 0; - if (s * D_EPS == 0) + if (u > -1.0e-308 && u < 1.0e-308) s = 0; else flag = 1;