/
math.go
171 lines (150 loc) · 2.74 KB
/
math.go
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package lib
import (
"math/rand"
"strconv"
)
const (
B uint64 = 1
KB = B << 10
MB = KB << 10
GB = MB << 10
TB = GB << 10
PB = TB << 10
EB = PB << 10
_MaxInt8_ = 1<<7 - 1
_MinInt8_ = -1 << 7
_MaxInt16_ = 1<<15 - 1
_MinInt16_ = -1 << 15
_MaxInt32_ = 1<<31 - 1
_MinInt32_ = -1 << 31
_MaxInt64_ = 1<<63 - 1
_MinInt64_ = -1 << 63
_MaxUint8_ = 1<<8 - 1
_MaxUint16_ = 1<<16 - 1
_MaxUint32_ = 1<<32 - 1
_MaxUint64_ = 1<<64 - 1
)
//RandomBetween Create random number between two ranges
func RandomBetween(min, max int) int {
return rand.Intn(max-min) + min
}
func ParseSafeInt(s string) int {
i, _ := strconv.Atoi(s)
return i
}
func ParseSafeInt64(s string) int64 {
i, _ := strconv.ParseInt(s, 10, 64)
return i
}
func ParseSafeFloat(s string) float64 {
i, _ := strconv.ParseFloat(s, 10)
return i
}
func MaxInt(args ...int) int {
x := _MinInt32_
for _, arg := range args {
if arg > x {
x = arg
}
}
return x
}
func MaxUInt(args ...uint32) uint32 {
var x uint32
for _, arg := range args {
if arg > x {
x = arg
}
}
return x
}
func MaxInt64(args ...int64) int64 {
var x int64
x = _MinInt64_
for _, arg := range args {
if arg > x {
x = arg
}
}
return x
}
func MinInt(args ...int) int {
x := _MaxInt32_
for _, arg := range args {
if arg < x {
x = arg
}
}
return x
}
func MinUInt(args ...uint) uint {
var x uint
x = _MaxUint32_
for _, arg := range args {
if arg < x {
x = arg
}
}
return x
}
func MinInt64(args ...int64) int64 {
var x int64
x = _MaxInt64_
for _, arg := range args {
if arg < x {
x = arg
}
}
return x
}
func MinUInt64(args ...uint64) uint64 {
var x uint64
x = _MaxUint64_
for _, arg := range args {
if arg < x {
x = arg
}
}
return x
}
func AvgInt(args ...int) float64 {
return float64(SumInt(args...)) / float64(len(args))
}
func AvgInt64(args ...int64) float64 {
return float64(SumInt64(args...)) / float64(len(args))
}
func AvgUInt(args ...uint) float64 {
return float64(SumUInt(args...)) / float64(len(args))
}
func AvgUInt64(args ...uint64) float64 {
return float64(SumUInt64(args...)) / float64(len(args))
}
func SumInt(args ...int) int {
var sum int
for _, arg := range args {
sum += arg
}
return sum
}
func SumInt64(args ...int64) int64 {
var sum int64
for _, arg := range args {
sum += arg
}
return sum
}
//SumUInt Sum of uint32
func SumUInt(args ...uint) uint {
var sum uint
for _, arg := range args {
sum += arg
}
return sum
}
func SumUInt64(args ...uint64) uint64 {
var sum uint64
for _, arg := range args {
sum += arg
}
return sum
}