98 } 99 100 double AbsSeq::dsd() const { 101 double var = dvariance(); 102 guarantee( var >= 0.0, "variance should not be negative" ); 103 return sqrt(var); 104 } 105 106 NumberSeq::NumberSeq(double alpha) : 107 AbsSeq(alpha), _maximum(0.0), _last(0.0) { 108 } 109 110 bool NumberSeq::check_nums(NumberSeq *total, int n, NumberSeq **parts) { 111 for (int i = 0; i < n; ++i) { 112 if (parts[i] != NULL && total->num() != parts[i]->num()) 113 return false; 114 } 115 return true; 116 } 117 118 NumberSeq::NumberSeq(NumberSeq *total, int n, NumberSeq **parts) { 119 guarantee(check_nums(total, n, parts), "all seq lengths should match"); 120 double sum = total->sum(); 121 for (int i = 0; i < n; ++i) { 122 if (parts[i] != NULL) 123 sum -= parts[i]->sum(); 124 } 125 126 _num = total->num(); 127 _sum = sum; 128 129 // we do not calculate these... 130 _sum_of_squares = -1.0; 131 _maximum = -1.0; 132 _davg = -1.0; 133 _dvariance = -1.0; 134 } 135 136 void NumberSeq::add(double val) { 137 AbsSeq::add(val); 138 139 _last = val; 140 if (_num == 0) { 141 _maximum = val; 142 } else { 143 if (val > _maximum) 144 _maximum = val; 145 } 146 _sum += val; 147 _sum_of_squares += val * val; 148 ++_num; 149 } 150 151 152 TruncatedSeq::TruncatedSeq(int length, double alpha): 153 AbsSeq(alpha), _length(length), _next(0) { 154 _sequence = NEW_C_HEAP_ARRAY(double, _length); 155 for (int i = 0; i < _length; ++i) | 98 } 99 100 double AbsSeq::dsd() const { 101 double var = dvariance(); 102 guarantee( var >= 0.0, "variance should not be negative" ); 103 return sqrt(var); 104 } 105 106 NumberSeq::NumberSeq(double alpha) : 107 AbsSeq(alpha), _maximum(0.0), _last(0.0) { 108 } 109 110 bool NumberSeq::check_nums(NumberSeq *total, int n, NumberSeq **parts) { 111 for (int i = 0; i < n; ++i) { 112 if (parts[i] != NULL && total->num() != parts[i]->num()) 113 return false; 114 } 115 return true; 116 } 117 118 void NumberSeq::add(double val) { 119 AbsSeq::add(val); 120 121 _last = val; 122 if (_num == 0) { 123 _maximum = val; 124 } else { 125 if (val > _maximum) 126 _maximum = val; 127 } 128 _sum += val; 129 _sum_of_squares += val * val; 130 ++_num; 131 } 132 133 134 TruncatedSeq::TruncatedSeq(int length, double alpha): 135 AbsSeq(alpha), _length(length), _next(0) { 136 _sequence = NEW_C_HEAP_ARRAY(double, _length); 137 for (int i = 0; i < _length; ++i) |