comparison base/LogRange.cpp @ 689:573d45e9487b

Merge from debug-output branch
author Chris Cannam
date Tue, 14 Jun 2011 14:47:59 +0100
parents 06f13a3b9e9e
children 1424aa29ae95
comparison
equal deleted inserted replaced
688:be43b2fe68e8 689:573d45e9487b
24 LogRange::mapRange(float &min, float &max, float logthresh) 24 LogRange::mapRange(float &min, float &max, float logthresh)
25 { 25 {
26 if (min > max) std::swap(min, max); 26 if (min > max) std::swap(min, max);
27 if (max == min) max = min + 1; 27 if (max == min) max = min + 1;
28 28
29 // std::cerr << "LogRange::mapRange: min = " << min << ", max = " << max << std::endl; 29 // DEBUG << "LogRange::mapRange: min = " << min << ", max = " << max << endl;
30 30
31 if (min >= 0.f) { 31 if (min >= 0.f) {
32 32
33 max = log10f(max); // we know max != 0 33 max = log10f(max); // we know max != 0
34 34
35 if (min == 0.f) min = std::min(logthresh, max); 35 if (min == 0.f) min = std::min(logthresh, max);
36 else min = log10f(min); 36 else min = log10f(min);
37 37
38 // std::cerr << "LogRange::mapRange: positive: min = " << min << ", max = " << max << std::endl; 38 // DEBUG << "LogRange::mapRange: positive: min = " << min << ", max = " << max << endl;
39 39
40 } else if (max <= 0.f) { 40 } else if (max <= 0.f) {
41 41
42 min = log10f(-min); // we know min != 0 42 min = log10f(-min); // we know min != 0
43 43
44 if (max == 0.f) max = std::min(logthresh, min); 44 if (max == 0.f) max = std::min(logthresh, min);
45 else max = log10f(-max); 45 else max = log10f(-max);
46 46
47 std::swap(min, max); 47 std::swap(min, max);
48 48
49 // std::cerr << "LogRange::mapRange: negative: min = " << min << ", max = " << max << std::endl; 49 // DEBUG << "LogRange::mapRange: negative: min = " << min << ", max = " << max << endl;
50 50
51 } else { 51 } else {
52 52
53 // min < 0 and max > 0 53 // min < 0 and max > 0
54 54
55 max = log10f(std::max(max, -min)); 55 max = log10f(std::max(max, -min));
56 min = std::min(logthresh, max); 56 min = std::min(logthresh, max);
57 57
58 // std::cerr << "LogRange::mapRange: spanning: min = " << min << ", max = " << max << std::endl; 58 // DEBUG << "LogRange::mapRange: spanning: min = " << min << ", max = " << max << endl;
59 } 59 }
60 60
61 if (min == max) min = max - 1; 61 if (min == max) min = max - 1;
62 } 62 }
63 63
102 size_t mi = values.size() / 2; 102 size_t mi = values.size() / 2;
103 103
104 float sd0 = sd(values, 0, mi); 104 float sd0 = sd(values, 0, mi);
105 float sd1 = sd(values, mi, values.size() - mi); 105 float sd1 = sd(values, mi, values.size() - mi);
106 106
107 std::cerr << "LogRange::useLogScale: sd0 = " 107 DEBUG << "LogRange::useLogScale: sd0 = "
108 << sd0 << ", sd1 = " << sd1 << std::endl; 108 << sd0 << ", sd1 = " << sd1 << endl;
109 109
110 if (sd0 == 0 || sd1 == 0) return false; 110 if (sd0 == 0 || sd1 == 0) return false;
111 111
112 // I wonder what method of determining "one sd much bigger than 112 // I wonder what method of determining "one sd much bigger than
113 // the other" would be appropriate here... 113 // the other" would be appropriate here...