matrix and fibonacci
newcomer[bob]
bob at dontknow.com
Fri Mar 9 01:22:46 PST 2012
On Friday, 9 March 2012 at 05:50:03 UTC, newcomer[bob] wrote:
> The following is a matrix implementation of the fibonacci
> algorithm:
>
> int fib(int n)
> {
> int M[2][2] = {{1,0},{0,1}}
> for (int i = 1; i < n; i++)
> M = M * {{1,1},{1,0}}
> return M[0][0];
> }
>
> problem is I don't really understand how matrix multiplication
> works so i cannot translate it to an equivalent solution in D.
> Thank for you assistance in advance.
>
> newcomer[bob]
I attempted the following but it does not work:
int fib(int n)
ulong[2][2] M = [[1,0], [0,1]];
ulong[2][2] C = [[1,1], [1,0]];
foreach (i; 0 .. n) {
M[0][0] = M[0][0] * C[0][0] + M[0][0] * C[0][1];
M[0][1] = M[0][1] * C[0][1] + M[0][1] * C[1][1];
M[1][0] = M[0][1] * C[0][0] + M[1][1] * C[0][1];
M[1][1] = M[1][1] * C[0][1] + M[1][1] * C[1][1];
}
return M[0][0];
}
any ideas what I'm doing wrong?
Thanks,
Bob
More information about the Digitalmars-d-learn
mailing list