comparison src/scalar.c @ 225:62e797c2974a

correction to xtract_odd_even_ratio
author Sean Enderby <sean.enderby@gmail.com>
date Mon, 24 Feb 2014 14:32:04 +0000
parents fdbef1474be9
children cabf2f465d1b
comparison
equal deleted inserted replaced
224:5ca682ce3392 225:62e797c2974a
620 return XTRACT_SUCCESS; 620 return XTRACT_SUCCESS;
621 } 621 }
622 622
623 int xtract_spectral_inharmonicity(const double *data, const int N, const void *argv, double *result) 623 int xtract_spectral_inharmonicity(const double *data, const int N, const void *argv, double *result)
624 { 624 {
625
626 int n = N >> 1, h = 0; 625 int n = N >> 1, h = 0;
627 double num = 0.0, den = 0.0, fund; 626 double num = 0.0, den = 0.0, fund;
628 const double *freqs, *amps; 627 const double *freqs, *amps;
629 628
630 fund = *(double *)argv; 629 fund = *(double *)argv;
654 653
655 } 654 }
656 655
657 int xtract_odd_even_ratio(const double *data, const int N, const void *argv, double *result) 656 int xtract_odd_even_ratio(const double *data, const int N, const void *argv, double *result)
658 { 657 {
659 658 int n = N >> 1, h = 0;
660 int M = (N >> 1), n; 659 double odd = 0.0, even = 0.0, fund, temp;
661 660 const double *freqs;
662 double odd = 0.0, even = 0.0, temp; 661
663 662 fund = *(double *)argv;
664 for(n = 0; n < M; n++) 663 freqs = data + n;
664
665 while(n--)
665 { 666 {
666 if((temp = data[n])) 667 if((temp = data[n]))
667 { 668 {
668 if(XTRACT_IS_ODD(n)) 669 h = round(freqs[n] / fund);
670 if(XTRACT_IS_ODD(h))
669 { 671 {
670 odd += temp; 672 odd += temp;
671 } 673 }
672 else 674 else
673 { 675 {