@@ -130,7 +130,6 @@ void qdwh(
130130 // Estimate the condition number using QR
131131 // This Q factor can be used in the first QR-based iteration
132132 slate::copy (A, W10, opts);
133- // todo: put bound of 1-norm est compared to 2-norm
134133 slate::geqrf (W10, T, opts);
135134 // auto R = TrapezoidMatrix<scalar_t>(
136135 // Uplo::Upper, slate::Diag::NonUnit, W10 );
@@ -157,10 +156,8 @@ void qdwh(
157156 itconv++;
158157
159158 L2 = Liconv * Liconv;
160- if (abs ( L2 - rone) <= 10 *eps)
161- dd = rzero;
162- else
163- dd = pow ( real_t (4.0 ) * ( rone - L2 ) / ( L2 * L2 ), rone / real_t (3.0 ) );
159+ dd = std::pow ( real_t (4.0 ) * ( rone - L2 ), rone / real_t (3.0 ) ) *
160+ std::pow ( L2, real_t (-2.0 ) / real_t (3.0 ) );
164161 sqd = sqrt ( rone + dd );
165162 a1 = sqd + sqrt ( real_t (8.0 ) - real_t (4.0 ) * dd +
166163 real_t (8.0 ) * ( real_t (2.0 ) - L2 ) / ( L2 * sqd ) ) / real_t (2.0 );
@@ -181,13 +178,8 @@ void qdwh(
181178
182179 // Compute parameters L,a,b,c
183180 L2 = Li * Li;
184- // dd = pow( real_t(4.0) * ( rone - L2 ) / ( L2 * L2 ), rone / real_t(3.0) );
185- if (abs ( L2 - rone) <= 10 *eps) {
186- dd = rzero;
187- }
188- else {
189- dd = std::pow ( real_t (4.0 ) * ( rone - L2 ) / ( L2 * L2 ), rone / real_t (3.0 ) );
190- }
181+ dd = std::pow ( real_t (4.0 ) * ( rone - L2 ), rone / real_t (3.0 ) ) *
182+ std::pow ( L2, real_t (-2.0 ) / real_t (3.0 ) );
191183 sqd = sqrt ( rone + dd );
192184 a1 = sqd + sqrt ( real_t (8.0 ) - real_t (4.0 ) * dd +
193185 real_t (8.0 ) * ( real_t (2.0 ) - L2 ) / ( L2 * sqd ) ) / real_t (2.0 );
0 commit comments