From cdc91b990809f96144b41a5f419c28d7679d2647 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 27 Jul 2018 17:21:07 +0200 Subject: partialator: Complain about NaN residuals --- src/partialator.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src') diff --git a/src/partialator.c b/src/partialator.c index b3717445..113535e0 100644 --- a/src/partialator.c +++ b/src/partialator.c @@ -708,6 +708,10 @@ static void all_residuals(Crystal **crystals, int n_crystals, RefList *full, { int i; int n_used = 0; + int n_nan_linear = 0; + int n_nan_linear_free = 0; + int n_nan_log = 0; + int n_nan_log_free = 0; *presidual = 0.0; *pfree_residual = 0.0; @@ -726,6 +730,11 @@ static void all_residuals(Crystal **crystals, int n_crystals, RefList *full, log_r = log_residual(crystals[i], full, 0, NULL, NULL); free_log_r = log_residual(crystals[i], full, 1, NULL, NULL); + if ( isnan(r) ) n_nan_linear++; + if ( isnan(free_r) ) n_nan_linear_free++; + if ( isnan(log_r) ) n_nan_log++; + if ( isnan(free_log_r) ) n_nan_log_free++; + if ( isnan(r) || isnan(free_r) || isnan(log_r) || isnan(free_log_r) ) continue; @@ -737,6 +746,23 @@ static void all_residuals(Crystal **crystals, int n_crystals, RefList *full, n_used++; } + if ( n_nan_linear ) { + ERROR("WARNING: %i crystals had NaN linear residuals\n", + n_nan_linear); + } + if ( n_nan_linear_free ) { + ERROR("WARNING: %i crystals had NaN linear free residuals\n", + n_nan_linear_free); + } + if ( n_nan_log ) { + ERROR("WARNING: %i crystals had NaN log residuals\n", + n_nan_log); + } + if ( n_nan_log_free ) { + ERROR("WARNING: %i crystals had NaN log free residuals\n", + n_nan_log_free); + } + *pn_used = n_used; } -- cgit v1.2.3