star-sp

Random number generators and distributions
git clone git://git.meso-star.fr/star-sp.git
Log | Files | Refs | README | LICENSE

commit c9170a62b56126a98aad4c16f65580e546a08a52
parent 0890651988b8145a5d6c1ba21939f20a4b821fef
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Tue, 24 Oct 2017 11:21:42 +0200

Add an ASSERT on Henyey-Greenstein g parameter being in [-1 1].

Diffstat:
Msrc/ssp.h | 9+++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/ssp.h b/src/ssp.h @@ -491,7 +491,7 @@ static INLINE double ssp_ran_sphere_hg_local_pdf(const double g, const double sample[3]) { double epsilon_g, epsilon_mu; - ASSERT(sample && d3_is_normalized(sample)); + ASSERT(fabs(g) <= 1 && sample && d3_is_normalized(sample)); if (g>0) { epsilon_g = 1-g; epsilon_mu = 1-sample[2]; @@ -511,7 +511,7 @@ static INLINE double* ssp_ran_sphere_hg_local(struct ssp_rng* rng, const double g, double sample[4]) { double phi, R, cos_theta, sin_theta; - ASSERT(rng && sample); + ASSERT(fabs(g) <= 1 && rng && sample); phi = 2 * PI * ssp_rng_canonical(rng); R = ssp_rng_canonical(rng); cos_theta = 2*R*(1+g)*(1+g)*(g*(R-1)+1) @@ -533,7 +533,8 @@ ssp_ran_sphere_hg_pdf const double sample[3]) { double epsilon_g, epsilon_mu; - ASSERT(up && sample && d3_is_normalized(up) && d3_is_normalized(sample)); + ASSERT(fabs(g) <= 1 && + up && sample && d3_is_normalized(up) && d3_is_normalized(sample)); if (g>0) { epsilon_g = 1-g; epsilon_mu = 1-d3_dot(sample,up); @@ -555,7 +556,7 @@ ssp_ran_sphere_hg { double sample_local[4]; double basis[9]; - ASSERT(rng && up && sample && d3_is_normalized(up)); + ASSERT(fabs(g) <= 1 && rng && up && sample && d3_is_normalized(up)); ssp_ran_sphere_hg_local(rng, g, sample_local); sample[3] = sample_local[3]; return d33_muld3(sample, d33_basis(basis, up), sample_local);