From: Paul Brossier Date: Mon, 28 Sep 2009 19:27:10 +0000 (+0200) Subject: src/vecutils.{c,h}: expand header and add documentation, add cvec_pow, fix SAFE_LOG... X-Git-Tag: bzr2git~263 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=6940b556f248c18d79c4c092a52e5b59ba502476;p=aubio.git src/vecutils.{c,h}: expand header and add documentation, add cvec_pow, fix SAFE_LOG macros --- diff --git a/src/vecutils.c b/src/vecutils.c index 2ac65270..fb181c90 100644 --- a/src/vecutils.c +++ b/src/vecutils.c @@ -25,8 +25,8 @@ AUBIO_OP_C_AND_F(cos, COS) AUBIO_OP_C_AND_F(sin, SIN) AUBIO_OP_C_AND_F(abs, ABS) AUBIO_OP_C_AND_F(sqrt, SQRT) -AUBIO_OP_C_AND_F(log10, SAFELOG10) -AUBIO_OP_C_AND_F(log, SAFELOG) +AUBIO_OP_C_AND_F(log10, SAFE_LOG10) +AUBIO_OP_C_AND_F(log, SAFE_LOG) AUBIO_OP_C_AND_F(floor, FLOOR) AUBIO_OP_C_AND_F(ceil, CEIL) AUBIO_OP_C_AND_F(round, ROUND) @@ -42,3 +42,13 @@ void fvec_pow (fvec_t *s, smpl_t power) } } +void cvec_pow (cvec_t *s, smpl_t power) +{ + uint_t i,j; + for (i = 0; i < s->channels; i++) { + for (j = 0; j < s->length; j++) { + s->norm[i][j] = POW(s->norm[i][j], power); + } + } +} + diff --git a/src/vecutils.h b/src/vecutils.h index ecc69131..37857130 100644 --- a/src/vecutils.h +++ b/src/vecutils.h @@ -30,24 +30,75 @@ extern "C" { #endif -#define AUBIO_OP_PROTO(OPNAME, TYPE) \ -void TYPE ## _ ## OPNAME (TYPE ## _t *o); - -#define AUBIO_OP_C_AND_F_PROTO(OPNAME) \ - AUBIO_OP_PROTO(OPNAME, fvec) \ - AUBIO_OP_PROTO(OPNAME, cvec) - -AUBIO_OP_C_AND_F_PROTO(exp) -AUBIO_OP_C_AND_F_PROTO(cos) -AUBIO_OP_C_AND_F_PROTO(sin) -AUBIO_OP_C_AND_F_PROTO(abs) -//AUBIO_OP_C_AND_F_PROTO(pow) -AUBIO_OP_C_AND_F_PROTO(sqrt) -AUBIO_OP_C_AND_F_PROTO(log10) -AUBIO_OP_C_AND_F_PROTO(log) -AUBIO_OP_C_AND_F_PROTO(floor) -AUBIO_OP_C_AND_F_PROTO(ceil) -AUBIO_OP_C_AND_F_PROTO(round) +/** compute \f$e^x\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_exp (fvec_t *s); + +/** compute \f$cos(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_cos (fvec_t *s); + +/** compute \f$sin(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_sin (fvec_t *s); + +/** compute the \f$abs(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_abs (fvec_t *s); + +/** compute the \f$sqrt(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_sqrt (fvec_t *s); + +/** compute the \f$log10(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_log10 (fvec_t *s); + +/** compute the \f$log(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_log (fvec_t *s); + +/** compute the \f$floor(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_floor (fvec_t *s); + +/** compute the \f$ceil(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_ceil (fvec_t *s); + +/** compute the \f$round(x)\f$ of each vector elements + + \param s vector to modify + +*/ +void fvec_round (fvec_t *s); /** raise each vector elements to the power pow @@ -57,7 +108,83 @@ AUBIO_OP_C_AND_F_PROTO(round) */ void fvec_pow (fvec_t *s, smpl_t pow); -//void fvec_log10 (fvec_t *s); +/** compute \f$e^x\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_exp (cvec_t *s); + +/** compute \f$cos(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_cos (cvec_t *s); + +/** compute \f$sin(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_sin (cvec_t *s); + +/** compute the \f$abs(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_abs (cvec_t *s); + +/** compute the \f$sqrt(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_sqrt (cvec_t *s); + +/** compute the \f$log10(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_log10 (cvec_t *s); + +/** compute the \f$log(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_log (cvec_t *s); + +/** compute the \f$floor(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_floor (cvec_t *s); + +/** compute the \f$ceil(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_ceil (cvec_t *s); + +/** compute the \f$round(x)\f$ of each vector norm elements + + \param s vector to modify + +*/ +void cvec_round (cvec_t *s); + +/** raise each vector norm elements to the power pow + + \param s vector to modify + \param pow power to raise to + +*/ +void cvec_pow (cvec_t *s, smpl_t pow); #ifdef __cplusplus }