Improving coverage for matrix_exponentiation.py

This commit is contained in:
Scarfinos 2024-11-20 12:28:43 +01:00
parent 2cdda8a7b6
commit 3136833d4a

View File

@ -39,6 +39,21 @@ def modular_exponentiation(a, b):
def fibonacci_with_matrix_exponentiation(n, f1, f2): def fibonacci_with_matrix_exponentiation(n, f1, f2):
"""
Returns the n number of the Fibonacci sequence that
start with f1 and f2
Use the matrix exponentiation
>>> fibonacci_with_matrix_exponentiation(1, 5, 6)
5
>>> fibonacci_with_matrix_exponentiation(2, 10, 11)
11
>>> fibonacci_with_matrix_exponentiation(13, 0, 1)
144
>>> fibonacci_with_matrix_exponentiation(10, 5, 9)
411
>>> fibonacci_with_matrix_exponentiation(9, 2, 3)
89
"""
# Trivial Cases # Trivial Cases
if n == 1: if n == 1:
return f1 return f1
@ -50,6 +65,21 @@ def fibonacci_with_matrix_exponentiation(n, f1, f2):
def simple_fibonacci(n, f1, f2): def simple_fibonacci(n, f1, f2):
"""
Returns the n number of the Fibonacci sequence that
start with f1 and f2
Use the definition
>>> simple_fibonacci(1, 5, 6)
5
>>> simple_fibonacci(2, 10, 11)
11
>>> simple_fibonacci(13, 0, 1)
144
>>> simple_fibonacci(10, 5, 9)
411
>>> simple_fibonacci(9, 2, 3)
89
"""
# Trivial Cases # Trivial Cases
if n == 1: if n == 1:
return f1 return f1
@ -61,10 +91,10 @@ def simple_fibonacci(n, f1, f2):
n -= 2 n -= 2
while n > 0: while n > 0:
fn_1, fn_2 = fn_1 + fn_2, fn_1 fn_2, fn_1 = fn_1 + fn_2, fn_2
n -= 1 n -= 1
return fn_1 return fn_2
def matrix_exponentiation_time(): def matrix_exponentiation_time():