Optimizing a bigint fibonacci

helxi brucewayneshit at gmail.com
Wed Dec 6 10:16:16 UTC 2017


On Wednesday, 6 December 2017 at 10:00:48 UTC, Biotronic wrote:
> On Wednesday, 6 December 2017 at 09:12:08 UTC, helxi wrote:
>> [...]
>
> Here's my version:, based on fast squaring:
>
> auto fib(ulong n) {
>     import std.bigint : BigInt;
>     import std.meta : AliasSeq;
>     import std.typecons : tuple;
>     BigInt a = 0;
>     BigInt b = 1;
>     auto bit = 63;
>     while (bit > 0) {
>         AliasSeq!(a, b) = tuple(
>             a * (2*b - a),
>             a*a + b*b);
>
> [...]

Nice. But why the AliasSeq?

> That's because the poor compiler isn't as good at optimizing 
> compile-time code as run-time code,

Oh I see. We should definitely be careful with that :D


More information about the Digitalmars-d-learn mailing list