fixes for 98% of all the warnings/errors reported by OS X gcc on tiger
[ardour.git] / libs / qm-dsp / maths / CosineDistance.cpp
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
2
3 /*
4     QM DSP Library
5
6     Centre for Digital Music, Queen Mary, University of London.
7     This file copyright 2008 Kurt Jacobson.
8
9     This program is free software; you can redistribute it and/or
10     modify it under the terms of the GNU General Public License as
11     published by the Free Software Foundation; either version 2 of the
12     License, or (at your option) any later version.  See the file
13     COPYING included with this distribution for more information.
14 */
15
16 #include "CosineDistance.h"
17
18 #include <iostream>
19 #include <limits>
20
21 using std::cerr;
22
23 double CosineDistance::distance(const vector<double> &v1,
24                                 const vector<double> &v2)
25 {
26     dist = 1.0; dDenTot = 0; dDen1 = 0; dDen2 = 0; dSum1 =0;
27     double small = 1e-20;
28
29     //check if v1, v2 same size
30     if (v1.size() != v2.size())
31     {
32         cerr << "CosineDistance::distance: ERROR: vectors not the same size\n";
33         return 1.0;
34     }
35     else
36     {
37         for(unsigned int i=0; i<v1.size(); i++)
38         {
39             dSum1 += v1[i]*v2[i];
40             dDen1 += v1[i]*v1[i];
41             dDen2 += v2[i]*v2[i];
42         }
43         dDenTot = sqrt(fabs(dDen1*dDen2)) + small;
44         dist = 1-((dSum1)/dDenTot);
45         return dist;
46     }
47 }