mirror of
https://github.com/revarbat/BOSL2.git
synced 2025-01-16 13:50:23 +01:00
Added product()
This commit is contained in:
parent
e8e0d8f3d3
commit
ba9b7c5b3b
12
math.scad
12
math.scad
@ -275,6 +275,18 @@ function sum_of_sines(a, sines) =
|
||||
function deltas(v) = len(v)<2? v : [for (p=pair(v)) p.y-p.x];
|
||||
|
||||
|
||||
// Function: product()
|
||||
// Description:
|
||||
// Returns the product of all entries in the given list.
|
||||
// If passed an array of vectors, returns a vector of products of each part.
|
||||
// Arguments:
|
||||
// v = The list to get the product of.
|
||||
// Example:
|
||||
// product([2,3,4]); // returns 24.
|
||||
// product([[1,2,3], [3,4,5], [5,6,7]]); // returns [15, 48, 105]
|
||||
function product(v, i=0, tot=undef) = i>=len(v)? tot : product(v, i+1, ((tot==undef)? v[i] : is_list(v[i])? vmul(tot,v[i]) : tot*v[i]));
|
||||
|
||||
|
||||
// Function: mean()
|
||||
// Description:
|
||||
// Returns the mean of all entries in the given array.
|
||||
|
@ -253,6 +253,20 @@ module test_sum_of_sines() {
|
||||
test_sum_of_sines();
|
||||
|
||||
|
||||
module test_deltas() {
|
||||
assert(deltas([2,5,9,17]) == [3,4,8]);
|
||||
assert(deltas([[1,2,3], [3,6,8], [4,8,11]]) == [[2,4,5], [1,2,3]]);
|
||||
}
|
||||
test_deltas();
|
||||
|
||||
|
||||
module test_product() {
|
||||
assert(product([2,3,4]) == 24);
|
||||
assert(product([[1,2,3], [3,4,5], [5,6,7]]) == [15, 48, 105]);
|
||||
}
|
||||
test_product();
|
||||
|
||||
|
||||
module test_mean() {
|
||||
assert(mean([2,3,4]) == 3);
|
||||
assert(mean([[1,2,3], [3,4,5], [5,6,7]]) == [3,4,5]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user