Bug 10024 – product function

Status
NEW
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-05-03T16:41:41Z
Last change time
2024-12-01T16:17:27Z
Assigned to
No Owner
Creator
bearophile_hugs
Moved to GitHub: phobos#9971 →

Comments

Comment #0 by bearophile_hugs — 2013-05-03T16:41:41Z
I suggest to add a product() function to Phobos, similar to sum(). This benchnarking code shows an algorithm better than the naive one when it's used on bigints: import std.stdio, std.bigint, std.algorithm, std.random; T product1(T)(T[] seq) { typeof(return) result = 1; foreach (s; seq) result *= s; return result; } T product2(T)(T[] seq) { // faster if (seq.length < 50) { typeof(return) result = 1; foreach (s; seq) result *= s; return result; } else { immutable mid = seq.length / 2; return product2(seq[0 .. mid]) * product2(seq[mid .. $]); } } void main() { BigInt[2 ^^ 16] items; foreach (i, ref b; items) b = i + 1; items[].randomShuffle; //auto r = items.product1; auto r = items.product2; //r.writeln; } What about T == InputRange?
Comment #1 by robert.schadek — 2024-12-01T16:17:27Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9971 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB