44 lines
922 B
Go
44 lines
922 B
Go
|
package stats
|
||
|
|
||
|
import (
|
||
|
"sort"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// float64ToInt rounds a float64 to an int
|
||
|
func float64ToInt(input float64) (output int) {
|
||
|
r, _ := Round(input, 0)
|
||
|
return int(r)
|
||
|
}
|
||
|
|
||
|
// unixnano returns nanoseconds from UTC epoch
|
||
|
func unixnano() int64 {
|
||
|
return time.Now().UTC().UnixNano()
|
||
|
}
|
||
|
|
||
|
// copyslice copies a slice of float64s
|
||
|
func copyslice(input Float64Data) Float64Data {
|
||
|
s := make(Float64Data, input.Len())
|
||
|
copy(s, input)
|
||
|
return s
|
||
|
}
|
||
|
|
||
|
// sortedCopy returns a sorted copy of float64s
|
||
|
func sortedCopy(input Float64Data) (copy Float64Data) {
|
||
|
copy = copyslice(input)
|
||
|
sort.Float64s(copy)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// sortedCopyDif returns a sorted copy of float64s
|
||
|
// only if the original data isn't sorted.
|
||
|
// Only use this if returned slice won't be manipulated!
|
||
|
func sortedCopyDif(input Float64Data) (copy Float64Data) {
|
||
|
if sort.Float64sAreSorted(input) {
|
||
|
return input
|
||
|
}
|
||
|
copy = copyslice(input)
|
||
|
sort.Float64s(copy)
|
||
|
return
|
||
|
}
|