Skip to content

Commit

Permalink
Update circular_buffer.h
Browse files Browse the repository at this point in the history
Corrected calculations for all types for min/max (negative values as well)
  • Loading branch information
tonton81 committed Apr 19, 2018
1 parent 9287c3a commit 081d531
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions circular_buffer.h
Expand Up @@ -334,20 +334,18 @@ T Circular_Buffer<T,_size,multi>::median(bool override) {
template<typename T, uint16_t _size, uint16_t multi>
T Circular_Buffer<T,_size,multi>::max() {
if ( multi || !_available ) return 0;
T _find = 0;
for ( uint16_t i = 0; i < _available; i++ ) {
if ( _cbuf[(head+i)&(_size-1)] > _find ) _find = _cbuf[(head+i)&(_size-1)];
}
return _find;
T buffer[_available];
for ( uint16_t i = 0; i < _available; i++ ) buffer[i] = _cbuf[(head+i)&(_size-1)];
std::sort(&buffer[0], &buffer[_available]); // sort ascending
return buffer[_available-1];
}
template<typename T, uint16_t _size, uint16_t multi>
T Circular_Buffer<T,_size,multi>::min() {
if ( multi || !_available ) return 0;
T _find = 0;
for ( uint16_t i = 0; i < _available; i++ ) {
if ( !_find || _cbuf[(head+i)&(_size-1)] < _find ) _find = _cbuf[(head+i)&(_size-1)];
}
return _find;
T buffer[_available];
for ( uint16_t i = 0; i < _available; i++ ) buffer[i] = _cbuf[(head+i)&(_size-1)];
std::sort(&buffer[0], &buffer[_available]); // sort ascending
return buffer[0];
}

template<typename T, uint16_t _size, uint16_t multi>
Expand Down

0 comments on commit 081d531

Please sign in to comment.