La exponenciación de la matriz de Numpy da un valor negativo

Yo queria usarNumPy en una pregunta de Fibonacci debido a su eficiencia en la multiplicación de matrices. Sabes que hay un método para encontrar números de Fibonacci con la matriz[[1, 1], [1, 0]].

Escribí un código muy simple pero después de aumentarn, la matriz está comenzando a dar números negativos.

import numpy
def fib(n):
    return (numpy.matrix("1 1; 1 0")**n).item(1)

print fib(90)
# Gives -1581614984

¿Cuál podría ser la razón de ésto?

Nota: linalg.matrix_power También da valores negativos.

Nota 2: Intenté números del 0 al 100. Comienza a dar valores negativos después de 47. ¿Es un problema entero grande porque NumPy está codificado en C? Si es así, ¿cómo podría resolver esto?

Editar: Usando Python regularlist matriz conlinalg.matrix_power También dio resultados negativos. También permítanme agregar que no todos los resultados son negativos después de 47, ocurre al azar.

Edit2: Intenté usar el método que sugirió AlbertoGarcia-Raboso. Se resolvió el problema del número negativo, sin embargo, se produjeron otros problemas. Da la respuesta como-5.168070885485832e+19 donde necesito-51680708854858323072L. Entonces intenté usarint(), lo convirtió aL, pero ahora parece que la respuesta es incorrecta debido a una pérdida de precisión.

Respuestas a la pregunta(1)

Su respuesta a la pregunta