#include "cmPrefix.h" #include "cmGlobal.h" #include "cmFloatTypes.h" #include "cmOp.h" void vs_Zero( cmSample_t v[], unsigned vn) { memset(v,0,sizeof(v[0])*vn); } cmReal_t vs_Sine( cmSample_t v[], unsigned vn, cmReal_t hzRad, cmReal_t initPhs ) { const cmSample_t* ep = v + vn; double phs = initPhs; while(v<ep) { *v++ = (cmSample_t)sin( phs ); phs += hzRad; } return (cmReal_t)phs; } void vs_Rand( cmSample_t v[], unsigned vn, cmSample_t min, cmSample_t max ) { const cmSample_t* ep = v + vn; while(v<ep) *v++ = ((cmSample_t)rand()/RAND_MAX) * (max-min) + min; } void vs_MultVVS( cmSample_t d[], const cmSample_t s[], unsigned n, cmReal_t mult ) { const cmSample_t* ep = d + n; while(d<ep) *d++ = *s++ * mult; } void vs_SumMultVVS( cmSample_t d[], const cmSample_t s[], unsigned n, cmReal_t mult ) { const cmSample_t* ep = d + n; while(d<ep) *d++ += *s++ * mult; } void vs_Copy( cmSample_t d[], const cmSample_t s[], unsigned n ) { memcpy(d,s,n*sizeof(d[0])); } cmSample_t vs_SquaredSum( const cmSample_t s[], unsigned n ) { cmSample_t sum = 0; const cmSample_t* ep = s + n; for(;s<ep;++s) sum += *s * *s; return sum; } /* unsigned vs_Interp2( cmSample_t v[], unsigned vn, const cmSample_t[] xx, const cmSample_t y[], unsigned yn ) { unsigned i = 0; for(; i<vn; ++i) { double x = fmod(*xx++,yn); unsigned x0 = floor(x); unsigned x1 = x0 + 1; double d = x - x0; if( x1>=yn || x0>=yn) break; *v++ = y[x0] + (y[x1] - y[x0]) * d; } return i; } */