From 081d531256313d4c30713318361a4d4622dc5ee2 Mon Sep 17 00:00:00 2001 From: Antonio Brewer Date: Wed, 18 Apr 2018 20:44:32 -0400 Subject: [PATCH] Update circular_buffer.h Corrected calculations for all types for min/max (negative values as well) --- circular_buffer.h | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/circular_buffer.h b/circular_buffer.h index 572e791..1a9c775 100644 --- a/circular_buffer.h +++ b/circular_buffer.h @@ -334,20 +334,18 @@ T Circular_Buffer::median(bool override) { template T Circular_Buffer::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 T Circular_Buffer::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