mirror of
https://git.vladimir.cc/vladimir/libfec.git
synced 2026-08-25 17:27:34 +00:00
Fix MinGW random number compatibility
This commit is contained in:
@@ -2,7 +2,14 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "fec.h"
|
#include "fec.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
/* MinGW's C runtime provides rand(), but not the POSIX random(). */
|
||||||
|
#define fec_random rand
|
||||||
|
#define MAX_RANDOM RAND_MAX
|
||||||
|
#else
|
||||||
|
#define fec_random random
|
||||||
#define MAX_RANDOM 0x7fffffff
|
#define MAX_RANDOM 0x7fffffff
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Generate gaussian random double with specified mean and std_dev */
|
/* Generate gaussian random double with specified mean and std_dev */
|
||||||
double normal_rand(double mean, double std_dev)
|
double normal_rand(double mean, double std_dev)
|
||||||
@@ -20,8 +27,8 @@ double normal_rand(double mean, double std_dev)
|
|||||||
* that are inside the unit circle
|
* that are inside the unit circle
|
||||||
*/
|
*/
|
||||||
do {
|
do {
|
||||||
v1 = 2.0 * (double)random() / MAX_RANDOM - 1;
|
v1 = 2.0 * (double)fec_random() / MAX_RANDOM - 1;
|
||||||
v2 = 2.0 * (double)random() / MAX_RANDOM - 1;
|
v2 = 2.0 * (double)fec_random() / MAX_RANDOM - 1;
|
||||||
rsq = v1*v1 + v2*v2;
|
rsq = v1*v1 + v2*v2;
|
||||||
} while(rsq >= 1.0 || rsq == 0.0);
|
} while(rsq >= 1.0 || rsq == 0.0);
|
||||||
fac = sqrt(-2.0*log(rsq)/rsq);
|
fac = sqrt(-2.0*log(rsq)/rsq);
|
||||||
|
|||||||
Reference in New Issue
Block a user