Sha256: 0b99017ff79c55136e9ae78b9c382de3c80c21cd975413814b85d03b4da0c303

Contents?: true

Size: 946 Bytes

Versions: 3

Compression:

Stored size: 946 Bytes

Contents

typedef scomplex dtype;
typedef float rtype;
#define cT  numo_cSComplex
#define cRT numo_cSFloat
#define mTM numo_mSComplexMath

#include "complex_macro.h"

static inline bool c_nearly_eq(dtype x, dtype y) {
    return c_abs(c_sub(x,y)) <= (c_abs(x)+c_abs(y))*FLT_EPSILON*2;
}

/* generates a random number on [0,1)-real-interval */
inline static dtype m_rand(dtype max)
{
    dtype z;
    REAL(z) = to_real2(gen_rand32()) * REAL(max);
    IMAG(z) = to_real2(gen_rand32()) * IMAG(max);
    return z;
}

/* generates random numbers from the normal distribution
   using Box-Muller Transformation.
 */
inline static void m_rand_norm(dtype mu, rtype sigma, dtype *a0)
{
    rtype x1, x2, w;
    do {
	x1 = to_real2(gen_rand32());
	x1 = x1*2-1;
	x2 = to_real2(gen_rand32());
	x2 = x2*2-1;
	w = x1 * x1 + x2 * x2;
    } while (w>=1);
    w = sqrt( (-2*log(w)) / w );
    REAL(*a0) = x1*w * sigma + REAL(mu);
    IMAG(*a0) = x2*w * sigma + IMAG(mu);
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
numo-narray-0.9.0.6 ext/numo/narray/numo/types/scomplex.h
numo-narray-0.9.0.5 ext/numo/narray/numo/types/scomplex.h
numo-narray-0.9.0.4 ext/numo/narray/numo/types/scomplex.h