NAME
Sidef::Math::Math
DESCRIPTION
The Math
class implements several useful mathematical functions.
SYNOPSIS
say Math.lcm(3,4,5)
say Math.avg(1,2,3,4)
INHERITS
Inherits methods from:
* Sidef::Object::Object
METHODS
avg
Math.avg(list...)
Returns the arithmetic mean of a list of numbers.
say Math.avg(42, 50, 99, 147) #=> 84.5
Aliases: arithmetic_mean
batch_gcd
Math.batch_gcd(list...)
Efficiently computes the batch-gcd of a list of integers.
say Math.batch_gcd(1909,2923,291,205,989,62,451,1943,1079,2419)
Output:
[1909, 1, 1, 41, 23, 1, 41, 1, 83, 41]
batch_invmod
Math.batch_invmod(array, n)
Efficiently computes the modular multiplicative inverses of a list of integers, modulo n
.
say Math.batch_invmod([33, 42, 99, 103], 2017) #=> [489, 1969, 163, 235]
binsplit
Math.binsplit(block, list...)
Binary splitting algorithm.
var arr = [1,2,3,4,5,6,7]
# Sum of a list using binary splitting
say Math.binsplit({|a,b| a + b }, arr...)
# Product of a list using binary splitting
say Math.binsplit({|a,b| a * b }, arr...)
chinese
Math.chinese(pairs...)
Returns the solution for x
in x ≡ a_k (mod m_k)
, using the Chinese Remainder Theorem (CRT), given a list of pairs [a_k,m_k]
:
say Math.chinese([14,643], [254,419], [87,733]) #=> 87041638
gcd
Math.gcd(list...)
Returns the greast common multiple (GCD) of a list of integers.
geometric_mean
Math.geometric_mean(list...)
Returns the geometric mean of a list of numbers.
say Math.geometric_mean(42, 50, 99, 147) #=> 74.352051512093712...
harmonic_mean
Math.harmonic_mean(list...)
Returns the harmonic mean of a list of numbers.
say Math.harmonic_mean(42, 50, 99, 147) #=> 65.883471411109602...
lcm
Math.lcm(list...)
Returns the least common multiple (LCM) of a list of integers.
map
Math.map(value, in_min, in_max, out_min, out_max)
Return a given value mapped from a given range to another given range.
# Map 25 from 1..100, to 1..10
say Math.map(25, 1, 100, 1, 10) #=> 3.181818181...
max
Math.max(list...)
Returns the largest numerical value from a list of numbers.
min
Math.min(list...)
Returns the smallest numerical value from a list of numbers.
num2percent
Math.num2percent(num, min, max)
Returns a given value as a percentage, given min
and max
of the value range.
# Map the value 25 as a percentage, from a range 1..400
say Math.num2percent(25, 1, 400) #=> 6.01503759398...
prod
Math.prod(list...)
Returns the product of a list of numbers.
Aliases: product
product_tree
Math.product_tree(list...)
Return the product-tree of a list of integers.
say Math.product_tree(10,20,30,40,50,60)
range_map
Math.range_map(amount, from, to)
Returns a RangeNumber object with the amount
value mapped between the values from
and to
.
say Math.range_map(10, 2, 5) #=> RangeNum(2, 5, 3/10)
range_sum
Math.range_sum(from, to, step)
Returns the sum of a given range and an optional given step.
say Math.range_sum(1, 10) #=> 55
say Math.range_sum(1, 10, 2) #=> 30.25
remainders
Math.remainders(n, array)
Efficiently returns the remainders of n
when divided by each integer from the given array.
say Math.remainders(8675309, [11,13,17,19,23]) #=> [5, 6, 5, 4, 8]
smooth_numbers
Math.smooth_numbers(primes...)
It returns an Enumerator object, which generates smooth numbers using the given list of primes.
Example:
var a = Math.smooth_numbers(2,3,5,7) # 7-smooth numbers
var b = Math.smooth_numbers(2,5,7) # 7-smooth numbers not divisible by 3
say a.first(30)
say b.first(30)
# Iteration is also supported
a.each {|k|
if (k > 1e5) {
say k #=> 100352
break
}
}
sum
Math.sum(list...)
Returns the sum of a list of numbers.