Merge pull request #74248 from Chaosus/randfn_fix
Fix randfn to prevent generating of nan values
This commit is contained in:
commit
2832ef434d
@ -126,10 +126,18 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ double randfn(double p_mean, double p_deviation) {
|
_FORCE_INLINE_ double randfn(double p_mean, double p_deviation) {
|
||||||
return p_mean + p_deviation * (cos(Math_TAU * randd()) * sqrt(-2.0 * log(randd()))); // Box-Muller transform
|
double temp = randd();
|
||||||
|
if (temp < CMP_EPSILON) {
|
||||||
|
temp += CMP_EPSILON; // To prevent generating of INF value in log function, resulting to return NaN value from this function.
|
||||||
|
}
|
||||||
|
return p_mean + p_deviation * (cos(Math_TAU * randd()) * sqrt(-2.0 * log(temp))); // Box-Muller transform.
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ float randfn(float p_mean, float p_deviation) {
|
_FORCE_INLINE_ float randfn(float p_mean, float p_deviation) {
|
||||||
return p_mean + p_deviation * (cos((float)Math_TAU * randf()) * sqrt(-2.0 * log(randf()))); // Box-Muller transform
|
float temp = randf();
|
||||||
|
if (temp < CMP_EPSILON) {
|
||||||
|
temp += CMP_EPSILON; // To prevent generating of INF value in log function, resulting to return NaN value from this function.
|
||||||
|
}
|
||||||
|
return p_mean + p_deviation * (cos((float)Math_TAU * randf()) * sqrt(-2.0 * log(temp))); // Box-Muller transform.
|
||||||
}
|
}
|
||||||
|
|
||||||
double random(double p_from, double p_to);
|
double random(double p_from, double p_to);
|
||||||
|
Loading…
Reference in New Issue
Block a user