Guest
Public paste!

Berzerk

By: a guest | Mar 20th, 2010 | Syntax: None | Size: 0.64 KB | Hits: 66 | Expires: Never
Copy text to clipboard
  1. def matrixsquare(matrix):
  2.     return [[matrix[0][0]**2+matrix[0][1]*matrix[1][0],matrix[0][1]*(matrix[0][0]+matrix[1][1])],[matrix[1][0]*(matrix[0][0]+matrix[1][1]),matrix[1][1]**2+matrix[1][0]*matrix[0][1]]]
  3.  
  4. def matrixmult(a,b):
  5.     return [[a[0][0]*b[0][0]+a[0][1]*b[1][0],a[0][0]*b[0][1]+a[0][1]*b[1][1]],[a[1][0]*b[0][0]+a[1][1]*b[1][0],a[1][0]*b[0][1]+a[1][1]*b[1][1]]]
  6.  
  7. def fibo(b):
  8.     b=bin(b)[3:]
  9.     x=[[1,1],[1,0]]
  10.     y=[[2,1],[1,1]]
  11.     for i in b:
  12.         if i=='0':
  13.             y=matrixmult(x,y)
  14.             x=matrixsquare(x)
  15.         else:
  16.             x=matrixmult(y,x)
  17.             y=matrixsquare(y)
  18.     return x[0][1]