QMCPACK
test_NaNguard.cpp
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2023 QMCPACK developers.
6 //
7 // File developed by: Ye Luo, yeluo@anl.gov, Argonne National Laboratory
8 //
9 // File created by: Ye Luo, yeluo@anl.gov, Argonne National Laboratory
10 //////////////////////////////////////////////////////////////////////////////////////
11 
12 #include "catch.hpp"
13 #include <NaNguard.h>
14 #include <cmath>
15 
16 namespace qmcplusplus
17 {
18 
19 TEST_CASE("NaNguard", "[wavefunction]")
20 {
21  const QMCTraits::ValueType const_nan = std::sqrt(-1.0);
22  CHECK_THROWS_WITH(NaNguard::checkOneParticleRatio(const_nan, "unit test"), Catch::Matchers::Contains("NaNguard::checkOneParticleRatio"));
23  CHECK_NOTHROW(NaNguard::checkOneParticleRatio(0.0, "unit test"));
24  CHECK_THROWS_WITH(NaNguard::checkOneParticleGradients({const_nan, -const_nan, const_nan}, "unit test"), Catch::Matchers::Contains("NaNguard::checkOneParticleGradients"));
25  CHECK_NOTHROW(NaNguard::checkOneParticleGradients({0.0,0.0,0.0}, "unit test"));
26 }
27 }
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
TEST_CASE("complex_helper", "[type_traits]")
QTBase::ValueType ValueType
Definition: Configuration.h:60
static void checkOneParticleRatio(const PsiValue &ratio, const std::string_view info)
check if ratio is NaN and throw an error if yes.
Definition: NaNguard.cpp:18
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
static void checkOneParticleGradients(const GradType &grads, const std::string_view info)
check if any gradient component (x,y,z) is NaN and throw an error if yes.
Definition: NaNguard.cpp:29