File size: 1,661 Bytes
c1806e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// C++11

#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);
        }
    }

}