Skip to content

Commit 4d3889a

Browse files
committed
Replace static_cast with functional-style casts in PPCG unit test
Convert the remaining static_cast<Real>/<double>/<unsigned> to the functional-cast style (Real(x), double(x), unsigned(x)) to match the solver and address the review comment about the number of static_casts.
1 parent ce08e33 commit 4d3889a

1 file changed

Lines changed: 41 additions & 41 deletions

File tree

source/source_hsolver/test/diago_ppcg_test.cpp

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class DiagoPPCGTridiagTest : public ::testing::Test
8787
exact.resize(nband);
8888
for (int k = 0; k < nband; ++k)
8989
{
90-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
90+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
9191
}
9292

9393
// Convergence thresholds
@@ -164,7 +164,7 @@ TEST_F(DiagoPPCGTridiagTest, BlockSubspace)
164164
{
165165
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Tridiag BLOCK: eigenvalue[" << i << "] mismatch";
166166
}
167-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "Tridiag BLOCK: too many iterations";
167+
EXPECT_LE(avg_iter, double(100)) << "Tridiag BLOCK: too many iterations";
168168
}
169169

170170
TEST_F(DiagoPPCGTridiagTest, ResidualTraceWritesCsv)
@@ -229,14 +229,14 @@ class DiagoPPCGDiagonalTest : public ::testing::Test
229229
H_mat.assign(n_dim * n_dim, T(0));
230230
for (int i = 0; i < n_dim; ++i)
231231
{
232-
H_mat[i + i * n_dim] = T(static_cast<Real>(i + 1), 0);
232+
H_mat[i + i * n_dim] = T(Real(i + 1), 0);
233233
}
234234

235235
// Preconditioner — diagonal of H
236236
prec.resize(n_dim);
237237
for (int i = 0; i < n_dim; ++i)
238238
{
239-
prec[i] = static_cast<Real>(i + 1);
239+
prec[i] = Real(i + 1);
240240
}
241241

242242
// Lowest 3 eigenvalues: 1, 2, 3
@@ -316,7 +316,7 @@ TEST_F(DiagoPPCGDiagonalTest, BlockSubspace)
316316
{
317317
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Diagonal BLOCK: eigenvalue[" << i << "] mismatch";
318318
}
319-
EXPECT_LE(avg_iter, static_cast<double>(50)) << "Diagonal BLOCK: too many iterations";
319+
EXPECT_LE(avg_iter, double(50)) << "Diagonal BLOCK: too many iterations";
320320
}
321321

322322
TEST_F(DiagoPPCGDiagonalTest, ConjugateGradientFallback)
@@ -341,7 +341,7 @@ TEST_F(DiagoPPCGDiagonalTest, ConjugateGradientFallback)
341341
{
342342
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Diagonal CG fallback: eigenvalue[" << i << "] mismatch";
343343
}
344-
EXPECT_LE(avg_iter, static_cast<double>(80)) << "Diagonal CG fallback: too many iterations";
344+
EXPECT_LE(avg_iter, double(80)) << "Diagonal CG fallback: too many iterations";
345345
}
346346

347347
TEST_F(DiagoPPCGDiagonalTest, EmptyHOperatorThrows)
@@ -397,13 +397,13 @@ TEST(DiagoPPCGLeadingDimensionTest, BlockSubspaceWithPadding)
397397
std::vector<T> H_mat(n_dim * n_dim, T(0));
398398
for (int i = 0; i < n_dim; ++i)
399399
{
400-
H_mat[i + i * n_dim] = T(static_cast<Real>(i + 1), 0);
400+
H_mat[i + i * n_dim] = T(Real(i + 1), 0);
401401
}
402402

403403
std::vector<Real> prec(n_dim);
404404
for (int i = 0; i < n_dim; ++i)
405405
{
406-
prec[i] = static_cast<Real>(i + 1);
406+
prec[i] = Real(i + 1);
407407
}
408408

409409
std::vector<T> psi(ld * nband, T(17.0, -3.0));
@@ -463,7 +463,7 @@ TEST(DiagoPPCGLeadingDimensionTest, BlockSubspaceWithPadding)
463463
{
464464
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Padded ld BLOCK: eigenvalue[" << i << "] mismatch";
465465
}
466-
EXPECT_LE(avg_iter, static_cast<double>(80)) << "Padded ld BLOCK: too many iterations";
466+
EXPECT_LE(avg_iter, double(80)) << "Padded ld BLOCK: too many iterations";
467467
}
468468

469469
// =============================================================================
@@ -563,7 +563,7 @@ TEST_F(DiagoPPCG2x2Test, BlockSubspace)
563563
{
564564
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "2x2 BLOCK: eigenvalue[" << i << "] mismatch";
565565
}
566-
EXPECT_LE(avg_iter, static_cast<double>(50)) << "2x2 BLOCK: too many iterations";
566+
EXPECT_LE(avg_iter, double(50)) << "2x2 BLOCK: too many iterations";
567567
}
568568

569569
TEST(DiagoPPCGComplexHermitianTest, DefaultKeepsImaginaryProjection)
@@ -756,7 +756,7 @@ TEST_F(DiagoPPCGDegenerateTest, BlockSubspace)
756756
{
757757
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Degenerate BLOCK: eigenvalue[" << i << "] mismatch";
758758
}
759-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "Degenerate BLOCK: too many iterations";
759+
EXPECT_LE(avg_iter, double(100)) << "Degenerate BLOCK: too many iterations";
760760
}
761761

762762
// =============================================================================
@@ -791,7 +791,7 @@ class DiagoPPCGLargeTridiagTest : public ::testing::Test
791791
exact.resize(nband);
792792
for (int k = 0; k < nband; ++k)
793793
{
794-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
794+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
795795
}
796796

797797
ethr.assign(nband, 1e-10);
@@ -865,7 +865,7 @@ TEST_F(DiagoPPCGLargeTridiagTest, BlockSubspace)
865865
{
866866
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Large Tridiag BLOCK: eigenvalue[" << i << "] mismatch";
867867
}
868-
EXPECT_LE(avg_iter, static_cast<double>(150)) << "Large Tridiag BLOCK: too many iterations";
868+
EXPECT_LE(avg_iter, double(150)) << "Large Tridiag BLOCK: too many iterations";
869869
}
870870

871871
// =============================================================================
@@ -887,10 +887,10 @@ class DiagoPPCGDenseTest : public ::testing::Test
887887
ld = n_dim;
888888

889889
// Start with diagonal matrix
890-
std::vector<Real> dense(n_dim * n_dim, static_cast<Real>(0));
890+
std::vector<Real> dense(n_dim * n_dim, Real(0));
891891
for (int i = 0; i < n_dim; ++i)
892892
{
893-
dense[i + i * n_dim] = static_cast<Real>(i + 1);
893+
dense[i + i * n_dim] = Real(i + 1);
894894
}
895895

896896
// Apply several Givens rotations to make it dense while preserving
@@ -919,7 +919,7 @@ class DiagoPPCGDenseTest : public ::testing::Test
919919
// Several rotations with different angles to create a genuinely
920920
// dense matrix (all off-diagonals become non-zero)
921921
std::mt19937 rng_dense(111);
922-
std::uniform_real_distribution<Real> angle_dist(static_cast<Real>(0.2), static_cast<Real>(1.3));
922+
std::uniform_real_distribution<Real> angle_dist(Real(0.2), Real(1.3));
923923
for (int k = 0; k < 20; ++k)
924924
{
925925
int p = k % (n_dim - 1);
@@ -1023,7 +1023,7 @@ TEST_F(DiagoPPCGDenseTest, BlockSubspace)
10231023
{
10241024
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Dense BLOCK: eigenvalue[" << i << "] mismatch";
10251025
}
1026-
EXPECT_LE(avg_iter, static_cast<double>(200)) << "Dense BLOCK: too many iterations";
1026+
EXPECT_LE(avg_iter, double(200)) << "Dense BLOCK: too many iterations";
10271027
}
10281028

10291029
// =============================================================================
@@ -1193,7 +1193,7 @@ TEST_F(DiagoPPCGWithSTest, BlockSubspace)
11931193
<< "WithS BLOCK: residual[" << i << "] too large, r=" << res_nrm;
11941194
}
11951195

1196-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "WithS BLOCK: too many iterations";
1196+
EXPECT_LE(avg_iter, double(100)) << "WithS BLOCK: too many iterations";
11971197
}
11981198

11991199
// =============================================================================
@@ -1229,7 +1229,7 @@ class DiagoPPCGGammaG0Test : public ::testing::Test
12291229
exact.resize(nband);
12301230
for (int k = 0; k < nband; ++k)
12311231
{
1232-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
1232+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
12331233
}
12341234

12351235
ethr.assign(nband, 1e-10);
@@ -1313,7 +1313,7 @@ TEST_F(DiagoPPCGGammaG0Test, BlockSubspace)
13131313
}
13141314
EXPECT_LT(max_imag, 1e-12) << "GammaG0 BLOCK: G=0 band has non-zero imaginary part: " << max_imag;
13151315

1316-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "GammaG0 BLOCK: too many iterations";
1316+
EXPECT_LE(avg_iter, double(100)) << "GammaG0 BLOCK: too many iterations";
13171317
}
13181318

13191319
// =============================================================================
@@ -1399,7 +1399,7 @@ TEST_F(DiagoPPCGSingleBandTest, BlockSubspace)
13991399
double avg_iter = solver.diag(h_op, nullptr, ld, nband, n_dim, psi_run.data(), eval.data(), ethr, prec.data());
14001400

14011401
EXPECT_NEAR(eval[0], exact[0], 1e-8) << "SingleBand BLOCK: eigenvalue mismatch";
1402-
EXPECT_LE(avg_iter, static_cast<double>(50)) << "SingleBand BLOCK: too many iterations";
1402+
EXPECT_LE(avg_iter, double(50)) << "SingleBand BLOCK: too many iterations";
14031403
}
14041404

14051405
// =============================================================================
@@ -1436,7 +1436,7 @@ class DiagoPPCGEigenvectorTest : public ::testing::Test
14361436
exact.resize(nband);
14371437
for (int k = 0; k < nband; ++k)
14381438
{
1439-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
1439+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
14401440
}
14411441

14421442
ethr.assign(nband, 1e-8);
@@ -1550,7 +1550,7 @@ TEST_F(DiagoPPCGEigenvectorTest, BlockSubspace)
15501550
}
15511551
}
15521552

1553-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "Eigenvec BLOCK: too many iterations";
1553+
EXPECT_LE(avg_iter, double(100)) << "Eigenvec BLOCK: too many iterations";
15541554
}
15551555

15561556
// =============================================================================
@@ -1586,7 +1586,7 @@ class DiagoPPCGAllBandsTest : public ::testing::Test
15861586
exact.resize(nband);
15871587
for (int k = 0; k < nband; ++k)
15881588
{
1589-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
1589+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
15901590
}
15911591

15921592
ethr.assign(nband, 1e-10);
@@ -1660,7 +1660,7 @@ TEST_F(DiagoPPCGAllBandsTest, BlockSubspace)
16601660
{
16611661
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "AllBands BLOCK: eigenvalue[" << i << "] mismatch";
16621662
}
1663-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "AllBands BLOCK: too many iterations";
1663+
EXPECT_LE(avg_iter, double(100)) << "AllBands BLOCK: too many iterations";
16641664
}
16651665

16661666
// =============================================================================
@@ -1695,7 +1695,7 @@ class DiagoPPCGMediumTridiagTest : public ::testing::Test
16951695
exact.resize(nband);
16961696
for (int k = 0; k < nband; ++k)
16971697
{
1698-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
1698+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
16991699
}
17001700

17011701
ethr.assign(nband, 1e-10);
@@ -1769,7 +1769,7 @@ TEST_F(DiagoPPCGMediumTridiagTest, BlockSubspace)
17691769
{
17701770
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Medium Tridiag BLOCK: eigenvalue[" << i << "] mismatch";
17711771
}
1772-
EXPECT_LE(avg_iter, static_cast<double>(120)) << "Medium Tridiag BLOCK: too many iterations";
1772+
EXPECT_LE(avg_iter, double(120)) << "Medium Tridiag BLOCK: too many iterations";
17731773
}
17741774

17751775
// =============================================================================
@@ -1805,7 +1805,7 @@ class DiagoPPCGGammaG0SmallTest : public ::testing::Test
18051805
exact.resize(nband);
18061806
for (int k = 0; k < nband; ++k)
18071807
{
1808-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
1808+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
18091809
}
18101810

18111811
ethr.assign(nband, 1e-10);
@@ -1891,7 +1891,7 @@ TEST_F(DiagoPPCGGammaG0SmallTest, BlockSubspace)
18911891
EXPECT_LT(max_imag, 1e-12) << "GammaG0Small BLOCK: band[" << j << "] has non-zero imaginary part: " << max_imag;
18921892
}
18931893

1894-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "GammaG0Small BLOCK: too many iterations";
1894+
EXPECT_LE(avg_iter, double(100)) << "GammaG0Small BLOCK: too many iterations";
18951895
}
18961896

18971897
// =============================================================================
@@ -1941,9 +1941,9 @@ class DiagoPPCGPentaTest : public ::testing::Test
19411941
exact.resize(nband);
19421942
for (int k = 0; k < nband; ++k)
19431943
{
1944-
Real theta = static_cast<Real>(k + 1) * M_PI / static_cast<Real>(2 * (n_dim + 1));
1944+
Real theta = Real(k + 1) * M_PI / Real(2 * (n_dim + 1));
19451945
Real s = std::sin(theta);
1946-
exact[k] = static_cast<Real>(16) * s * s * s * s;
1946+
exact[k] = Real(16) * s * s * s * s;
19471947
}
19481948

19491949
ethr.assign(nband, 1e-10);
@@ -2017,7 +2017,7 @@ TEST_F(DiagoPPCGPentaTest, BlockSubspace)
20172017
{
20182018
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Penta BLOCK: eigenvalue[" << i << "] mismatch";
20192019
}
2020-
EXPECT_LE(avg_iter, static_cast<double>(150)) << "Penta BLOCK: too many iterations";
2020+
EXPECT_LE(avg_iter, double(150)) << "Penta BLOCK: too many iterations";
20212021
}
20222022

20232023
// =============================================================================
@@ -2116,7 +2116,7 @@ TEST_F(DiagoPCGGappedSpectrumTest, BlockSubspace)
21162116
{
21172117
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "Gapped BLOCK: eigenvalue[" << i << "] mismatch";
21182118
}
2119-
EXPECT_LE(avg_iter, static_cast<double>(100)) << "Gapped BLOCK: too many iterations";
2119+
EXPECT_LE(avg_iter, double(100)) << "Gapped BLOCK: too many iterations";
21202120
}
21212121

21222122
// =============================================================================
@@ -2154,7 +2154,7 @@ class DiagoPPCGBadPrecTest : public ::testing::Test
21542154
exact.resize(nband);
21552155
for (int k = 0; k < nband; ++k)
21562156
{
2157-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
2157+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
21582158
}
21592159

21602160
ethr.assign(nband, 1e-10);
@@ -2228,7 +2228,7 @@ TEST_F(DiagoPPCGBadPrecTest, BlockSubspace)
22282228
{
22292229
EXPECT_NEAR(eval[i], exact[i], 1e-8) << "BadPrec BLOCK: eigenvalue[" << i << "] mismatch";
22302230
}
2231-
EXPECT_LE(avg_iter, static_cast<double>(200)) << "BadPrec BLOCK: too many iterations";
2231+
EXPECT_LE(avg_iter, double(200)) << "BadPrec BLOCK: too many iterations";
22322232
}
22332233

22342234
// =============================================================================
@@ -2298,7 +2298,7 @@ class DiagoPPCGScaledTest : public ::testing::Test
22982298
exact.resize(nband);
22992299
for (int k = 0; k < nband; ++k)
23002300
{
2301-
exact[k] = 100.0 * (2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1)));
2301+
exact[k] = 100.0 * (2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1)));
23022302
}
23032303
ethr.assign(nband, 1e-8);
23042304
init_psi(808);
@@ -2393,7 +2393,7 @@ class DiagoPPCGManyBandsTest : public ::testing::Test
23932393
exact.resize(nband);
23942394
for (int k = 0; k < nband; ++k)
23952395
{
2396-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
2396+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
23972397
}
23982398
ethr.assign(nband, 1e-10);
23992399
init_psi(909);
@@ -2488,7 +2488,7 @@ class DiagoPPCGRrStep1Test : public ::testing::Test
24882488
exact.resize(nband);
24892489
for (int k = 0; k < nband; ++k)
24902490
{
2491-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
2491+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
24922492
}
24932493
ethr.assign(nband, 1e-10);
24942494
init_psi(111);
@@ -2586,7 +2586,7 @@ class DiagoPPCGNeumannTest : public ::testing::Test
25862586
exact.resize(nband);
25872587
for (int k = 0; k < nband; ++k)
25882588
{
2589-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k) * M_PI / static_cast<Real>(n_dim));
2589+
exact[k] = 2.0 - 2.0 * std::cos(Real(k) * M_PI / Real(n_dim));
25902590
}
25912591
ethr.assign(nband, 1e-10);
25922592
init_psi(222);
@@ -2681,7 +2681,7 @@ class DiagoPPCGTightEthrTest : public ::testing::Test
26812681
exact.resize(nband);
26822682
for (int k = 0; k < nband; ++k)
26832683
{
2684-
exact[k] = 2.0 - 2.0 * std::cos(static_cast<Real>(k + 1) * M_PI / static_cast<Real>(n_dim + 1));
2684+
exact[k] = 2.0 - 2.0 * std::cos(Real(k + 1) * M_PI / Real(n_dim + 1));
26852685
}
26862686
ethr.assign(nband, 1e-14);
26872687
init_psi(333);
@@ -2933,7 +2933,7 @@ class DiagoPPCGBenchmarkTest : public ::testing::Test
29332933
static void make_random_hamilt(int n, int sparsity_pct, std::vector<T>& H, std::vector<Real>& prec)
29342934
{
29352935
H.assign(n * n, T(0));
2936-
std::mt19937 rng(static_cast<unsigned>(n * 100 + sparsity_pct));
2936+
std::mt19937 rng(unsigned(n * 100 + sparsity_pct));
29372937
std::uniform_real_distribution<Real> dist(-1.0, 1.0);
29382938
int nnz = 0;
29392939
for (int i = 0; i < n; ++i)

0 commit comments

Comments
 (0)