From d8a4f7509d0b5937bc56441e77e9343c84a3b38b Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 12 Oct 2011 12:26:11 +0200 Subject: Avoid NaN shifts of divergence --- src/post-refinement.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/post-refinement.c b/src/post-refinement.c index 81ca8c61..97957840 100644 --- a/src/post-refinement.c +++ b/src/post-refinement.c @@ -142,6 +142,7 @@ double gradient(struct image *image, int k, Reflection *refl, double r) den = sqrt(1.0 - cos(image->div/2.0)); gr += (nom/den) * g; } + if ( isnan(gr) ) gr = 0.0; /* FIXME: This isn't true (?) */ return gr / 4.0; /* FIXME: Shameless fudge factor */ case REF_R : @@ -216,8 +217,12 @@ static void apply_shift(struct image *image, int k, double shift) switch ( k ) { case REF_DIV : - image->div += shift; - if ( image->div < 0.0 ) image->div = 0.0; + if ( isnan(shift) ) { + ERROR("NaN divergence shift\n"); + } else { + image->div += shift; + if ( image->div < 0.0 ) image->div = 0.0; + } break; case REF_R : -- cgit v1.2.3