71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
// Copyright (c) EVAR Lab, IIIS, Tsinghua University.
|
|
//
|
|
// This source code is licensed under the GNU License, Version 3.0
|
|
// found in the LICENSE file in the root directory of this source tree.
|
|
|
|
#include "cminimax.h"
|
|
|
|
namespace tools{
|
|
|
|
CMinMaxStats::CMinMaxStats(){
|
|
this->maximum = FLOAT_MIN;
|
|
this->minimum = FLOAT_MAX;
|
|
this->value_delta_max = 0.;
|
|
}
|
|
|
|
CMinMaxStats::~CMinMaxStats(){}
|
|
|
|
void CMinMaxStats::set_delta(float value_delta_max){
|
|
this->value_delta_max = value_delta_max;
|
|
}
|
|
|
|
void CMinMaxStats::update(float value){
|
|
if(value > this->maximum){
|
|
this->maximum = value;
|
|
}
|
|
if(value < this->minimum){
|
|
this->minimum = value;
|
|
}
|
|
}
|
|
|
|
void CMinMaxStats::clear(){
|
|
this->maximum = FLOAT_MIN;
|
|
this->minimum = FLOAT_MAX;
|
|
}
|
|
|
|
float CMinMaxStats::normalize(float value){
|
|
float norm_value = value;
|
|
float delta = this->maximum - this->minimum;
|
|
if(delta > 0){
|
|
if(delta < this->value_delta_max){
|
|
norm_value = (norm_value - this->minimum) / this->value_delta_max;
|
|
}
|
|
else{
|
|
norm_value = (norm_value - this->minimum) / delta;
|
|
}
|
|
}
|
|
return norm_value;
|
|
}
|
|
|
|
//*********************************************************
|
|
|
|
CMinMaxStatsList::CMinMaxStatsList(){
|
|
this->num = 0;
|
|
}
|
|
|
|
CMinMaxStatsList::CMinMaxStatsList(int num){
|
|
this->num = num;
|
|
for(int i = 0; i < num; ++i){
|
|
this->stats_lst.push_back(CMinMaxStats());
|
|
}
|
|
}
|
|
|
|
CMinMaxStatsList::~CMinMaxStatsList(){}
|
|
|
|
void CMinMaxStatsList::set_delta(float value_delta_max){
|
|
for(int i = 0; i < this->num; ++i){
|
|
this->stats_lst[i].set_delta(value_delta_max);
|
|
}
|
|
}
|
|
|
|
} |