src/vecutils.{c,h}: expand header and add documentation, add cvec_pow, fix SAFE_LOG...
authorPaul Brossier <piem@piem.org>
Mon, 28 Sep 2009 19:27:10 +0000 (21:27 +0200)
committerPaul Brossier <piem@piem.org>
Mon, 28 Sep 2009 19:27:10 +0000 (21:27 +0200)
src/vecutils.c
src/vecutils.h

index 2ac652707332e3d9e6ee4700353429d3e34a335a..fb181c9066c8b6c363effc19a4fd1a0f196ef9d1 100644 (file)
@@ -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);
+    }
+  }
+}
+
index ecc6913134fd01e8447e04ffc80e8a811be434bb..37857130b19634ba60fff6d11d7a91e8b142c65b 100644 (file)
 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
 }