Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/mathutils.c

    ree6ca74 r8982328  
    2626#include "musicutils.h"
    2727#include "config.h"
     28
     29#ifdef HAVE_ACCELERATE
     30#include <Accelerate/Accelerate.h>
     31#endif
     32
     33#if !HAVE_AUBIO_DOUBLE
     34#define aubio_cblas_xswap cblas_sswap
     35#define aubio_cblas_dot   cblas_sdot
     36#else
     37#define aubio_cblas_xswap cblas_dswap
     38#define aubio_cblas_dot   cblas_ddot
     39#endif
    2840
    2941/** Window types */
     
    163175  return tmp / (smpl_t) (s->length);
    164176#else
    165   aubio_vDSP_meanv(s->data, 1, &tmp, s->length);
     177#if !HAVE_AUBIO_DOUBLE
     178  vDSP_meanv(s->data, 1, &tmp, s->length);
     179#else /* HAVE_AUBIO_DOUBLE */
     180  vDSP_meanvD(s->data, 1, &tmp, s->length);
     181#endif /* HAVE_AUBIO_DOUBLE */
    166182  return tmp;
    167183#endif /* HAVE_ACCELERATE */
     
    178194  }
    179195#else
    180   aubio_vDSP_sve(s->data, 1, &tmp, s->length);
     196#if !HAVE_AUBIO_DOUBLE
     197  vDSP_sve(s->data, 1, &tmp, s->length);
     198#else /* HAVE_AUBIO_DOUBLE */
     199  vDSP_sveD(s->data, 1, &tmp, s->length);
     200#endif /* HAVE_AUBIO_DOUBLE */
    181201#endif /* HAVE_ACCELERATE */
    182202  return tmp;
     
    194214#else
    195215  smpl_t tmp = 0.;
    196   aubio_vDSP_maxv(s->data, 1, &tmp, s->length);
     216#if !HAVE_AUBIO_DOUBLE
     217  vDSP_maxv(s->data, 1, &tmp, s->length);
     218#else
     219  vDSP_maxvD(s->data, 1, &tmp, s->length);
     220#endif
    197221#endif
    198222  return tmp;
     
    210234#else
    211235  smpl_t tmp = 0.;
    212   aubio_vDSP_minv(s->data, 1, &tmp, s->length);
     236#if !HAVE_AUBIO_DOUBLE
     237  vDSP_minv(s->data, 1, &tmp, s->length);
     238#else
     239  vDSP_minvD(s->data, 1, &tmp, s->length);
     240#endif
    213241#endif
    214242  return tmp;
     
    228256  smpl_t tmp = 0.;
    229257  uint_t pos = 0.;
    230   aubio_vDSP_minvi(s->data, 1, &tmp, (vDSP_Length *)&pos, s->length);
     258#if !HAVE_AUBIO_DOUBLE
     259  vDSP_minvi(s->data, 1, &tmp, (vDSP_Length *)&pos, s->length);
     260#else
     261  vDSP_minviD(s->data, 1, &tmp, (vDSP_Length *)&pos, s->length);
     262#endif
    231263#endif
    232264  return pos;
     
    246278  smpl_t tmp = 0.;
    247279  uint_t pos = 0.;
    248   aubio_vDSP_maxvi(s->data, 1, &tmp, (vDSP_Length *)&pos, s->length);
     280#if !HAVE_AUBIO_DOUBLE
     281  vDSP_maxvi(s->data, 1, &tmp, (vDSP_Length *)&pos, s->length);
     282#else
     283  vDSP_maxviD(s->data, 1, &tmp, (vDSP_Length *)&pos, s->length);
     284#endif
    249285#endif
    250286  return pos;
     
    254290fvec_shift (fvec_t * s)
    255291{
     292#ifndef HAVE_ACCELERATE
    256293  uint_t j;
    257294  for (j = 0; j < s->length / 2; j++) {
    258295    ELEM_SWAP (s->data[j], s->data[j + s->length / 2]);
    259296  }
     297#else
     298  uint_t half = s->length / 2;
     299  aubio_cblas_xswap(half, s->data, 1, s->data + half, 1);
     300#endif
    260301}
    261302
     
    264305{
    265306  smpl_t energy = 0.;
     307#ifndef HAVE_ACCELERATE
    266308  uint_t j;
    267309  for (j = 0; j < f->length; j++) {
    268310    energy += SQR (f->data[j]);
    269311  }
     312#else
     313  energy = aubio_cblas_dot(f->length, f->data, 1, f->data, 1);
     314#endif
    270315  return energy / f->length;
    271316}
Note: See TracChangeset for help on using the changeset viewer.