1 /*
2 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 #include "squid.h"
10 #include "SquidMath.h"
11
12 int
intPercent(const int a,const int b)13 Math::intPercent(const int a, const int b)
14 {
15 return b ? ((int) (100.0 * a / b + 0.5)) : 0;
16 }
17
18 int64_t
int64Percent(const int64_t a,const int64_t b)19 Math::int64Percent(const int64_t a, const int64_t b)
20 {
21 return b ? ((int64_t) (100.0 * a / b + 0.5)) : 0;
22 }
23
24 double
doublePercent(const double a,const double b)25 Math::doublePercent(const double a, const double b)
26 {
27 return b ? (100.0 * a / b) : 0.0;
28 }
29
30 double
doubleAverage(const double cur,const double newD,int N,const int max)31 Math::doubleAverage(const double cur, const double newD, int N, const int max)
32 {
33 if (N > max)
34 N = max;
35
36 return (cur * (N - 1.0) + newD) / N;
37 }
38
39 int
intAverage(const int cur,const int newI,int n,const int max)40 Math::intAverage(const int cur, const int newI, int n, const int max)
41 {
42 if (n > max)
43 n = max;
44
45 return (cur * (n - 1) + newI) / n;
46 }
47
48