aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2018-07-27 17:21:07 +0200
committerThomas White <taw@physics.org>2018-07-27 17:21:07 +0200
commitcdc91b990809f96144b41a5f419c28d7679d2647 (patch)
treea76def1d0f0d6be1d8aaedb09a16058e5cdfe830 /src
parent077165a6b3a7bb5ae6cc9056515c1e75933463b7 (diff)
partialator: Complain about NaN residuals
Diffstat (limited to 'src')
-rw-r--r--src/partialator.c26
1 files changed, 26 insertions, 0 deletions
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;
}