Skip to content

Commit 516cae6

Browse files
author
Dalal Sukkari
committed
Changed dd to avoid overflow
1 parent 2acf396 commit 516cae6

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

src/qdwh.cc

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)