From d2a2f47ed733130b889eba69c11c9a056aebfdb5 Mon Sep 17 00:00:00 2001
From: Rahil Doshi <rahil.doshi@fau.de>
Date: Fri, 7 Mar 2025 19:04:12 +0100
Subject: [PATCH] Update test_interpolation.cpp

---
 tests/cpp/test_interpolation.cpp | 88 ++++++++++++++++----------------
 1 file changed, 44 insertions(+), 44 deletions(-)

diff --git a/tests/cpp/test_interpolation.cpp b/tests/cpp/test_interpolation.cpp
index ec001f0..a5df714 100644
--- a/tests/cpp/test_interpolation.cpp
+++ b/tests/cpp/test_interpolation.cpp
@@ -1,5 +1,5 @@
-#include "interpolate_binary_search_cpp.h"
-#include "interpolate_double_lookup_cpp.h"
+#include "pymatlib_interpolators/interpolate_binary_search_cpp.h"
+#include "pymatlib_interpolators/interpolate_double_lookup_cpp.h"
 #include <array>
 #include <random>
 #include <chrono>
@@ -10,7 +10,7 @@
 #include "TestArrayContainer.hpp"
 
 // Helper function to compare floating point numbers
-bool is_equal(double a, double b, double tolerance = 1e-10) {
+bool is_equal(const double a, const double b, double tolerance = 1e-10) {
     return std::abs(a - b) < tolerance;
 }
 
@@ -18,24 +18,24 @@ void test_basic_functionality() {
     std::cout << "\nTesting basic functionality..." << std::endl;
 
     // Test middle point interpolation
-    const double test_E = 16950000000.0;
+    constexpr double test_E = 16950000000.0;
 
     // Binary Search Tests
     {
-        BinarySearchTests tests;
-        double result = tests.interpolateBS(test_E);
+        constexpr BinarySearchTests tests;
+        const double result = tests.interpolateBS(test_E);
         // Expected value based on T_bs array
-        double expected_T = 3253.15;
+        constexpr double expected_T = 3253.15;
         assert(is_equal(result, expected_T));
         std::cout << "Basic binary search interpolation passed" << std::endl;
     }
 
     // Double Lookup Tests
     {
-        DoubleLookupTests tests;
-        double result = tests.interpolateDL(test_E);
+        constexpr DoubleLookupTests tests;
+        const double result = tests.interpolateDL(test_E);
         // Expected value based on T_eq array
-        double expected_T = 3258.15;
+        constexpr double expected_T = 3258.15;
         assert(is_equal(result, expected_T));
         std::cout << "Basic double lookup interpolation passed" << std::endl;
     }
@@ -49,11 +49,11 @@ void test_edge_cases_and_errors() {
         BinarySearchTests tests;
 
         // Test below minimum
-        double result_min = tests.interpolateBS(16750000000.0);
+        const double result_min = tests.interpolateBS(16750000000.0);
         assert(is_equal(result_min, 3243.15));
 
         // Test above maximum
-        double result_max = tests.interpolateBS(17150000000.0);
+        const double result_max = tests.interpolateBS(17150000000.0);
         assert(is_equal(result_max, 3278.15));
 
         std::cout << "Edge cases for binary search passed" << std::endl;
@@ -64,11 +64,11 @@ void test_edge_cases_and_errors() {
         DoubleLookupTests tests;
 
         // Test below minimum
-        double result_min = tests.interpolateDL(16750000000.0);
+        const double result_min = tests.interpolateDL(16750000000.0);
         assert(is_equal(result_min, 3243.15));
 
         // Test above maximum
-        double result_max = tests.interpolateDL(17150000000.0);
+        const double result_max = tests.interpolateDL(17150000000.0);
         assert(is_equal(result_max, 3273.15));
 
         std::cout << "Edge cases for double lookup passed" << std::endl;
@@ -100,12 +100,12 @@ void test_interpolation_accuracy() {
     for (const auto& test : test_cases) {
         // Binary Search Tests
         BinarySearchTests bs_tests;
-        double result_bs = bs_tests.interpolateBS(test.input_E);
+        const double result_bs = bs_tests.interpolateBS(test.input_E);
         assert(is_equal(result_bs, test.expected_T_bs, test.tolerance));
 
         // Double Lookup Tests
         DoubleLookupTests dl_tests;
-        double result_dl = dl_tests.interpolateDL(test.input_E);
+        const double result_dl = dl_tests.interpolateDL(test.input_E);
         assert(is_equal(result_dl, test.expected_T_dl, test.tolerance));
 
         std::cout << "Accuracy test passed for " << test.description << std::endl;
@@ -116,17 +116,17 @@ void test_consistency() {
     std::cout << "\nTesting interpolation consistency..." << std::endl;
 
     // Test that small changes in input produce correspondingly small changes in output
-    BinarySearchTests bs_tests;
-    DoubleLookupTests dl_tests;
+    constexpr BinarySearchTests bs_tests;
+    constexpr DoubleLookupTests dl_tests;
 
-    const double base_E = 16900000000.0;
-    const double delta_E = 1000000.0;  // Small change in energy
+    constexpr double base_E = 16900000000.0;
+    constexpr double delta_E = 1000000.0;  // Small change in energy
 
-    double base_T_bs = bs_tests.interpolateBS(base_E);
-    double delta_T_bs = bs_tests.interpolateBS(base_E + delta_E) - base_T_bs;
+    const double base_T_bs = bs_tests.interpolateBS(base_E);
+    const double delta_T_bs = bs_tests.interpolateBS(base_E + delta_E) - base_T_bs;
 
-    double base_T_dl = dl_tests.interpolateDL(base_E);
-    double delta_T_dl = dl_tests.interpolateDL(base_E + delta_E) - base_T_dl;
+    const double base_T_dl = dl_tests.interpolateDL(base_E);
+    const double delta_T_dl = dl_tests.interpolateDL(base_E + delta_E) - base_T_dl;
 
     // Check that changes are reasonable (not too large for small input change)
     assert(std::abs(delta_T_bs) < 1.0);
@@ -138,18 +138,18 @@ void test_consistency() {
 void test_stress() {
     std::cout << "\nPerforming stress testing..." << std::endl;
 
-    BinarySearchTests bs_tests;
-    DoubleLookupTests dl_tests;
+    constexpr BinarySearchTests bs_tests;
+    constexpr DoubleLookupTests dl_tests;
 
     // Test with extremely large values
-    double large_E = 1.0e20;
-    double result_large_bs = bs_tests.interpolateBS(large_E);
-    double result_large_dl = dl_tests.interpolateDL(large_E);
+    constexpr double large_E = 1.0e20;
+    const double result_large_bs = bs_tests.interpolateBS(large_E);
+    const double result_large_dl = dl_tests.interpolateDL(large_E);
 
     // Test with extremely small values
-    double small_E = 1.0e-20;
-    double result_small_bs = bs_tests.interpolateBS(small_E);
-    double result_small_dl = dl_tests.interpolateDL(small_E);
+    constexpr double small_E = 1.0e-20;
+    const double result_small_bs = bs_tests.interpolateBS(small_E);
+    const double result_small_dl = dl_tests.interpolateDL(small_E);
 
     // For extreme values, we should get boundary values
     assert(is_equal(result_large_bs, 3278.15));
@@ -163,19 +163,19 @@ void test_stress() {
 void test_random_validation() {
     std::cout << "\nTesting with random inputs..." << std::endl;
 
-    BinarySearchTests bs_tests;
-    DoubleLookupTests dl_tests;
+    constexpr BinarySearchTests bs_tests;
+    constexpr DoubleLookupTests dl_tests;
 
     std::random_device rd;
     std::mt19937 gen(rd());
     std::uniform_real_distribution<double> dist(16800000000.0, 17100000000.0);
 
-    const int num_tests = 1000;
+    constexpr int num_tests = 1000;
     for (int i = 0; i < num_tests; ++i) {
-        double random_E = dist(gen);
+        const double random_E = dist(gen);
 
-        double result_bs = bs_tests.interpolateBS(random_E);
-        double result_dl = dl_tests.interpolateDL(random_E);
+        const double result_bs = bs_tests.interpolateBS(random_E);
+        const double result_dl = dl_tests.interpolateDL(random_E);
 
         // Results should be within the temperature range
         assert(result_bs >= 3243.15 && result_bs <= 3278.15);
@@ -195,14 +195,14 @@ void test_performance() {
     constexpr int numCells = 64*64*64;
 
     // Setup test data
-    SS316L test;
+    constexpr SS304L test;
     std::vector<double> random_energies(numCells);
 
     // Generate random values
     std::random_device rd;
     std::mt19937 gen(rd());
-    const double E_min = SS316L::E_neq.front() * 0.8;
-    const double E_max = SS316L::E_neq.back() * 1.2;
+    constexpr double E_min = SS304L::E_neq.front() * 0.8;
+    constexpr double E_max = SS304L::E_neq.back() * 1.2;
     std::uniform_real_distribution<double> dist(E_min, E_max);
 
     // Fill random energies
@@ -263,10 +263,10 @@ void test_performance() {
 
     // Calculate and print statistics
     auto calc_stats = [](const std::vector<double>& timings) {
-        double sum = std::accumulate(timings.begin(), timings.end(), 0.0);
+        const double sum = std::accumulate(timings.begin(), timings.end(), 0.0);
         double mean = sum / static_cast<double>(timings.size());
-        double sq_sum = std::inner_product(timings.begin(), timings.end(),
-                                         timings.begin(), 0.0);
+        const double sq_sum = std::inner_product(timings.begin(), timings.end(),
+                                                 timings.begin(), 0.0);
         double stdev = std::sqrt(sq_sum / static_cast<double>(timings.size()) - mean * mean);
         return std::make_pair(mean, stdev);
     };
-- 
GitLab