Documentation
¶
Overview ¶
Package mathutil provides mathematical and statistical operations on numeric slices.
The package uses Go generics to work with any numeric type (int, float64, etc.) through the Number constraint.
Aggregations ¶
Basic mathematical operations on slices:
sum := mathutil.Sum([]int{1, 2, 3, 4, 5}) // 15
product := mathutil.Product([]int{1, 2, 3}) // 6
avg := mathutil.Average([]float64{1, 2, 3}) // 2.0
Statistics ¶
Statistical functions:
median := mathutil.Median([]int{1, 2, 3, 4, 5}) // 3.0
mode := mathutil.Mode([]int{1, 2, 2, 3}) // [2]
stddev := mathutil.StdDev([]float64{1, 2, 3, 4, 5}) // ~1.41
variance := mathutil.Variance(data)
Extremes ¶
Finding minimum and maximum values:
min, max := mathutil.MinMax([]int{3, 1, 4, 1, 5})
minIdx := mathutil.MinIndex(data)
maxIdx := mathutil.MaxIndex(data)
Number Theory ¶
Prime numbers and related functions:
if mathutil.IsPrime(17) { ... }
primes := mathutil.Primes(100)
gcd := mathutil.GCD(12, 18)
lcm := mathutil.LCM(4, 6)
Matrix Operations ¶
Basic matrix operations:
result := mathutil.MatrixMultiply(a, b) transposed := mathutil.MatrixTranspose(m)
All functions are designed to handle edge cases gracefully, returning zero values or errors where appropriate.
Index ¶
- Variables
- func Abs[T Number](x T) T
- func Add[T Number](a, b []T) []T
- func Arange[T Number](start, stop, step T) []T
- func Average[T Number](s []T) float64
- func Clamp[T Number](x, min, max T) T
- func CosineSimilarity[T Number](a, b []T) float64
- func Cumsum[T Number](s []T) []T
- func Diff[T Number](s []T) []T
- func DotProduct[T Number](a, b []T) T
- func EuclideanDistance[T Number](a, b []T) float64
- func Factorial(n int) int64
- func Fibonacci(n int) int64
- func GCD[T Integer](a, b T) T
- func Histogram[T Number](data []T, bins []T) []int
- func IQR[T Number](s []T) float64
- func IsPrime[T Integer](n T) bool
- func LCM[T Integer](a, b T) T
- func LinSpace(start, end float64, n int) []float64
- func Magnitude[T Number](v []T) float64
- func ManhattanDistance[T Number](a, b []T) T
- func Max[T Number](s []T) (T, error)
- func MaxIndex[T Number](s []T) int
- func Median[T Number](s []T) float64
- func Min[T Number](s []T) (T, error)
- func MinIndex[T Number](s []T) int
- func MinMax[T Number](s []T) (min, max T, err error)
- func Mode[T Number](s []T) []T
- func Multiply[T Number](a, b []T) []T
- func Normalize[T Float](v []T) []T
- func Percentile[T Number](s []T, p float64) float64
- func Pow[T Number](x T, n int) T
- func PowFloat(x float64, n int) float64
- func Primes(n int) []int
- func Product[T Number](s []T) T
- func Quartiles[T Number](s []T) (q1, q2, q3 float64)
- func Range[T Number](s []T) (T, error)
- func SampleStdDev[T Number](s []T) float64
- func SampleVariance[T Number](s []T) float64
- func Scale[T Number](s []T, scalar T) []T
- func Sign[T Number](x T) int
- func Sqrt(x float64) float64
- func StdDev[T Number](s []T) float64
- func Subtract[T Number](a, b []T) []T
- func Sum[T Number](s []T) T
- func Variance[T Number](s []T) float64
- type Float
- type Integer
- type Matrix
- type Number
Constants ¶
This section is empty.
Variables ¶
var ( ErrEmptySlice = errors.New("empty slice") ErrDivisionByZero = errors.New("division by zero") ErrInvalidDimensions = errors.New("invalid matrix dimensions") ErrNegativeInput = errors.New("negative input not allowed") )
Errors returned by math operations.
Functions ¶
func Add ¶
func Add[T Number](a, b []T) []T
Add performs element-wise addition of two slices. The shorter slice determines the result length.
func Arange ¶
func Arange[T Number](start, stop, step T) []T
Arange returns values from start to stop (exclusive) with given step.
func Average ¶
Average returns the arithmetic mean of the slice. Returns 0 for empty slices.
Example:
Average([]float64{1, 2, 3, 4, 5}) // 3.0
func Clamp ¶
func Clamp[T Number](x, min, max T) T
Clamp restricts x to the range [min, max].
Example:
Clamp(15, 0, 10) // 10 Clamp(-5, 0, 10) // 0 Clamp(5, 0, 10) // 5
func CosineSimilarity ¶
CosineSimilarity returns the cosine similarity between two vectors. Returns 0 if vectors have different lengths or either is zero vector.
func Cumsum ¶
func Cumsum[T Number](s []T) []T
Cumsum returns the cumulative sum of the slice.
Example:
Cumsum([]int{1, 2, 3, 4}) // [1, 3, 6, 10]
func Diff ¶
func Diff[T Number](s []T) []T
Diff returns the differences between consecutive elements.
Example:
Diff([]int{1, 3, 6, 10}) // [2, 3, 4]
func DotProduct ¶
func DotProduct[T Number](a, b []T) T
DotProduct computes the dot product of two vectors. Returns 0 if vectors have different lengths.
func EuclideanDistance ¶
EuclideanDistance returns the Euclidean distance between two points.
func Factorial ¶
Factorial returns n! (n factorial). Returns 1 for n <= 1. Returns 0 if result would overflow int64.
func Fibonacci ¶
Fibonacci returns the nth Fibonacci number (0-indexed). F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)
Example:
Fibonacci(10) // 55
func GCD ¶
func GCD[T Integer](a, b T) T
GCD returns the greatest common divisor of a and b using Euclidean algorithm.
Example:
GCD(12, 18) // 6
func Histogram ¶
Histogram returns the frequency count of values in bins. bins specifies the bin edges (n+1 edges for n bins).
func IsPrime ¶
IsPrime reports whether n is a prime number. Returns false for n < 2.
Example:
IsPrime(17) // true IsPrime(15) // false
func LCM ¶
func LCM[T Integer](a, b T) T
LCM returns the least common multiple of a and b.
Example:
LCM(4, 6) // 12
func ManhattanDistance ¶
func ManhattanDistance[T Number](a, b []T) T
ManhattanDistance returns the Manhattan (L1) distance between two points.
func Max ¶
Max returns the maximum value in the slice. Returns zero value and ErrEmptySlice for empty slices.
func Median ¶
Median returns the middle value of a sorted slice. For even-length slices, returns the average of the two middle values. Returns 0 for empty slices.
Example:
Median([]int{1, 2, 3, 4, 5}) // 3.0
Median([]int{1, 2, 3, 4}) // 2.5
func Min ¶
Min returns the minimum value in the slice. Returns zero value and ErrEmptySlice for empty slices.
func MinMax ¶
MinMax returns both minimum and maximum values in a single pass. Returns zero values and ErrEmptySlice for empty slices.
func Mode ¶
func Mode[T Number](s []T) []T
Mode returns the most frequently occurring values. Returns nil for empty slices. May return multiple values if there are ties.
Example:
Mode([]int{1, 2, 2, 3, 3, 3}) // [3]
Mode([]int{1, 1, 2, 2}) // [1, 2] (tie)
func Multiply ¶
func Multiply[T Number](a, b []T) []T
Multiply performs element-wise multiplication.
func Normalize ¶
func Normalize[T Float](v []T) []T
Normalize returns a unit vector in the same direction. Returns nil if the input is a zero vector.
func Percentile ¶
Percentile returns the value at the given percentile (0-100). Uses linear interpolation between data points. Returns 0 for empty slices.
Example:
Percentile([]int{1, 2, 3, 4, 5}, 50) // 3.0 (median)
func Pow ¶
Pow returns x raised to the power of n. For negative exponents with integer types, returns 0.
func Primes ¶
Primes returns all prime numbers up to and including n. Uses the Sieve of Eratosthenes.
Example:
Primes(20) // [2, 3, 5, 7, 11, 13, 17, 19]
func Product ¶
func Product[T Number](s []T) T
Product returns the product of all elements in the slice. Returns 1 for empty slices.
Example:
Product([]int{1, 2, 3, 4}) // 24
func Range ¶
Range returns the difference between max and min values. Returns 0 and ErrEmptySlice for empty slices.
func SampleStdDev ¶
SampleStdDev returns the sample standard deviation. Returns 0 for slices with fewer than 2 elements.
func SampleVariance ¶
SampleVariance returns the sample variance (using N-1 denominator). Returns 0 for slices with fewer than 2 elements.
func Scale ¶
func Scale[T Number](s []T, scalar T) []T
Scale multiplies all elements by a scalar and returns a new slice.
func Subtract ¶
func Subtract[T Number](a, b []T) []T
Subtract performs element-wise subtraction (a - b).
Types ¶
type Integer ¶
type Integer interface {
~int | ~int8 | ~int16 | ~int32 | ~int64 |
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
}
Integer is a constraint for all integer types.
type Matrix ¶
type Matrix[T Number] [][]T
Matrix represents a 2D matrix.
func MatrixMultiply ¶
MatrixMultiply multiplies two matrices. Returns nil and ErrInvalidDimensions if dimensions don't match.
Matrix A (m×n) × Matrix B (n×p) = Matrix C (m×p).
func MatrixScalar ¶
MatrixScalar multiplies a matrix by a scalar.
func MatrixTranspose ¶
MatrixTranspose returns the transpose of a matrix.