From 990737fffb1ab08aff3a952d4023474cabdac55f Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 1 Oct 2023 22:02:05 +0530 Subject: [PATCH 001/130] Create FibonacciNumber.java --- .../thealgorithms/maths/FibonacciNumber.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/com/thealgorithms/maths/FibonacciNumber.java diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java new file mode 100644 index 000000000000..37e269a4b02b --- /dev/null +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -0,0 +1,42 @@ +// Created by Pronay Debnath +// Date:- 1/10/2003 +// Updated FibonnaciNumber.java using golden ratio formula + + +import java.util.*; + +public class FibonacciNumber { + + // Function to find the nth Fibonacci number using the golden ratio formula + public static int nthFibonacci(T n) { + // Calculate the square root of 5 + double sqrt5 = Math.sqrt(5); + + // Calculate the golden ratio (phi) and its conjugate (psi) + double phi = (1 + sqrt5) / 2; + double psi = (1 - sqrt5) / 2; + + // Convert the input value to a double + double result = n.doubleValue(); + + // Calculate the nth Fibonacci number using the golden ratio formula + double fibonacci = (1 / sqrt5) * (Math.pow(phi, result) - Math.pow(psi, result)); + + // Cast the result to an int and return it + return (int) fibonacci; + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + System.out.print("Enter the value of n: "); + + // Read user input for n + int n = scanner.nextInt(); + + // Calculate the nth Fibonacci number using the nthFibonacci method + int nthFib = nthFibonacci(n); + + // Print the result + System.out.println("The " + n + "th Fibonacci number is: " + nthFib); + } +} From 986de5367e130a29aa5065cf74a126f0b723df9e Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 1 Oct 2023 22:07:39 +0530 Subject: [PATCH 002/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 37e269a4b02b..3834f6071158 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,9 +1,7 @@ // Created by Pronay Debnath // Date:- 1/10/2003 // Updated FibonnaciNumber.java using golden ratio formula - - -import java.util.*; +// Explanation:- https://www.quickanddirtytips.com/articles/what-is-the-golden-ratio-and-how-is-it-related-to-the-fibonacci-sequence/ public class FibonacciNumber { From f0cb9619956944f28949e7bbde805dee32a56d23 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 1 Oct 2023 22:12:01 +0530 Subject: [PATCH 003/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 3834f6071158..2973ba8b1dce 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -3,6 +3,8 @@ // Updated FibonnaciNumber.java using golden ratio formula // Explanation:- https://www.quickanddirtytips.com/articles/what-is-the-golden-ratio-and-how-is-it-related-to-the-fibonacci-sequence/ +import java.util.*; + public class FibonacciNumber { // Function to find the nth Fibonacci number using the golden ratio formula @@ -25,11 +27,11 @@ public static int nthFibonacci(T n) { } public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); + Scanner sc = new Scanner(System.in); System.out.print("Enter the value of n: "); // Read user input for n - int n = scanner.nextInt(); + int n = sc.nextInt(); // Calculate the nth Fibonacci number using the nthFibonacci method int nthFib = nthFibonacci(n); From 10b4020a868ff170748414357522697cdfd7761b Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 7 Oct 2023 23:48:52 +0530 Subject: [PATCH 004/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../com/thealgorithms/maths/FibonacciNumber.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 2973ba8b1dce..57413ac2c926 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -26,17 +26,4 @@ public static int nthFibonacci(T n) { return (int) fibonacci; } - public static void main(String[] args) { - Scanner sc = new Scanner(System.in); - System.out.print("Enter the value of n: "); - - // Read user input for n - int n = sc.nextInt(); - - // Calculate the nth Fibonacci number using the nthFibonacci method - int nthFib = nthFibonacci(n); - - // Print the result - System.out.println("The " + n + "th Fibonacci number is: " + nthFib); - } } From 9b591dc313c6000f192a7efdd0f8a3595c824250 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 7 Oct 2023 23:48:59 +0530 Subject: [PATCH 005/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 57413ac2c926..63cc6d4c63b4 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -5,7 +5,9 @@ import java.util.*; -public class FibonacciNumber { +public final class FibonacciNumber { + private FibonacciNumber() { + } // Function to find the nth Fibonacci number using the golden ratio formula public static int nthFibonacci(T n) { From 83b6fd0b96926f97bd75efdda1a9c05c9e21169f Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 7 Oct 2023 23:50:42 +0530 Subject: [PATCH 006/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 63cc6d4c63b4..cdaead1d57d2 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -27,5 +27,4 @@ public static int nthFibonacci(T n) { // Cast the result to an int and return it return (int) fibonacci; } - } From 52d5d489bc02cb1bceaccd2ff15f71a62fc2ed98 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 00:15:26 +0530 Subject: [PATCH 007/130] Update FibonacciNumber.java --- .../com/thealgorithms/maths/FibonacciNumber.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index cdaead1d57d2..402c67e53b95 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -12,19 +12,19 @@ private FibonacciNumber() { // Function to find the nth Fibonacci number using the golden ratio formula public static int nthFibonacci(T n) { // Calculate the square root of 5 - double sqrt5 = Math.sqrt(5); + int sqrt5 = (int) Math.sqrt(5); // Calculate the golden ratio (phi) and its conjugate (psi) - double phi = (1 + sqrt5) / 2; - double psi = (1 - sqrt5) / 2; + int phi = (1 + sqrt5) / 2; + int psi = (1 - sqrt5) / 2; - // Convert the input value to a double - double result = n.doubleValue(); + // Convert the input value to an int + int result = n.intValue(); // Calculate the nth Fibonacci number using the golden ratio formula - double fibonacci = (1 / sqrt5) * (Math.pow(phi, result) - Math.pow(psi, result)); + int fibonacci = (int) ((1.0 / sqrt5) * (Math.pow(phi, result) - Math.pow(psi, result))); - // Cast the result to an int and return it - return (int) fibonacci; + // Return the result + return fibonacci; } } From d923df57fdfd4c15b2037a48051a974b22c7f6b4 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 00:45:06 +0530 Subject: [PATCH 008/130] Update FibonacciNumber.java --- .../thealgorithms/maths/FibonacciNumber.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 402c67e53b95..f72a8513c00e 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -11,12 +11,12 @@ private FibonacciNumber() { // Function to find the nth Fibonacci number using the golden ratio formula public static int nthFibonacci(T n) { - // Calculate the square root of 5 - int sqrt5 = (int) Math.sqrt(5); + // Calculate the square root of 5 as a double + double sqrt5 = Math.sqrt(5); - // Calculate the golden ratio (phi) and its conjugate (psi) - int phi = (1 + sqrt5) / 2; - int psi = (1 - sqrt5) / 2; + // Calculate the golden ratio (phi) and its conjugate (psi) as doubles + double phi = (1 + sqrt5) / 2; + double psi = (1 - sqrt5) / 2; // Convert the input value to an int int result = n.intValue(); @@ -27,4 +27,14 @@ public static int nthFibonacci(T n) { // Return the result return fibonacci; } + + public static void main(String[] args) { + // Example usage: + Scanner sc = new Scanner(System.in); + System.out.print("Enter value of n: "); + int n = sc.nextInt(); + int result = nthFibonacci(n); + System.out.println("The " + n + "th Fibonacci number is: " + result); + sc.close(); + } } From d95ff927c998ac42a207ac76cbf8c13f34da3e59 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:01:19 +0530 Subject: [PATCH 009/130] Update FibonacciNumber.java --- .../java/com/thealgorithms/maths/FibonacciNumber.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index f72a8513c00e..1c9aa716d3f0 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -27,14 +27,4 @@ public static int nthFibonacci(T n) { // Return the result return fibonacci; } - - public static void main(String[] args) { - // Example usage: - Scanner sc = new Scanner(System.in); - System.out.print("Enter value of n: "); - int n = sc.nextInt(); - int result = nthFibonacci(n); - System.out.println("The " + n + "th Fibonacci number is: " + result); - sc.close(); - } } From d79c52728125e5b37778de51ea168b090f135607 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:05:34 +0530 Subject: [PATCH 010/130] Create FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java new file mode 100644 index 000000000000..89e77a9a672f --- /dev/null +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -0,0 +1,32 @@ +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class FibonacciNumberTest { + + @Test + public void testNthFibonacci() { + // Test case 1: Fibonacci number at position 0 + int result1 = FibonacciNumber.nthFibonacci(0); + assertEquals(0, result1); + + // Test case 2: Fibonacci number at position 1 + int result2 = FibonacciNumber.nthFibonacci(1); + assertEquals(1, result2); + + // Test case 3: Fibonacci number at position 2 + int result3 = FibonacciNumber.nthFibonacci(2); + assertEquals(1, result3); + + // Test case 4: Fibonacci number at position 5 + int result4 = FibonacciNumber.nthFibonacci(5); + assertEquals(5, result4); + + // Test case 5: Fibonacci number at a large position (e.g., 10) + int result5 = FibonacciNumber.nthFibonacci(10); + assertEquals(55, result5); + + // Test case 6: Fibonacci number at a negative position (should return -1) + int result6 = FibonacciNumber.nthFibonacci(-3); + assertEquals(-1, result6); + } +} From e03c75ed34fb4625efd61b4b008f55c8be3f731b Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:06:44 +0530 Subject: [PATCH 011/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 89e77a9a672f..994d1a9271ea 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,4 +1,5 @@ import static org.junit.jupiter.api.Assertions.*; + import org.junit.jupiter.api.Test; public class FibonacciNumberTest { From 0c121694e4cdac634b215753122c783a49741754 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:15:42 +0530 Subject: [PATCH 012/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 994d1a9271ea..1144d04cf13a 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -2,32 +2,36 @@ import org.junit.jupiter.api.Test; +import java.math.BigDecimal; + public class FibonacciNumberTest { @Test public void testNthFibonacci() { // Test case 1: Fibonacci number at position 0 - int result1 = FibonacciNumber.nthFibonacci(0); - assertEquals(0, result1); + Integer result1 = FibonacciNumber.nthFibonacci(0); + assertEquals(Integer.valueOf(0), result1); // Test case 2: Fibonacci number at position 1 - int result2 = FibonacciNumber.nthFibonacci(1); - assertEquals(1, result2); + Integer result2 = FibonacciNumber.nthFibonacci(1); + assertEquals(Integer.valueOf(1), result2); // Test case 3: Fibonacci number at position 2 - int result3 = FibonacciNumber.nthFibonacci(2); - assertEquals(1, result3); + Integer result3 = FibonacciNumber.nthFibonacci(2); + assertEquals(Integer.valueOf(1), result3); // Test case 4: Fibonacci number at position 5 - int result4 = FibonacciNumber.nthFibonacci(5); - assertEquals(5, result4); + Integer result4 = FibonacciNumber.nthFibonacci(5); + assertEquals(Integer.valueOf(5), result4); // Test case 5: Fibonacci number at a large position (e.g., 10) - int result5 = FibonacciNumber.nthFibonacci(10); - assertEquals(55, result5); + Integer result5 = FibonacciNumber.nthFibonacci(10); + assertEquals(Integer.valueOf(55), result5); // Test case 6: Fibonacci number at a negative position (should return -1) - int result6 = FibonacciNumber.nthFibonacci(-3); - assertEquals(-1, result6); + assertThrows(IllegalArgumentException.class, () -> { + FibonacciNumber.nthFibonacci(-3); + }); } } + From b8fb3e3e114cab712575eab4df833c3358abb0a3 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:17:18 +0530 Subject: [PATCH 013/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 1144d04cf13a..9804f1331761 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -2,8 +2,6 @@ import org.junit.jupiter.api.Test; -import java.math.BigDecimal; - public class FibonacciNumberTest { @Test @@ -29,9 +27,6 @@ public void testNthFibonacci() { assertEquals(Integer.valueOf(55), result5); // Test case 6: Fibonacci number at a negative position (should return -1) - assertThrows(IllegalArgumentException.class, () -> { - FibonacciNumber.nthFibonacci(-3); - }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonacci(-3); }); } } - From c8fe4278635f3874019aea59802c736568e86240 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:24:35 +0530 Subject: [PATCH 014/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 9804f1331761..7cdb64241e0b 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -6,27 +6,31 @@ public class FibonacciNumberTest { @Test public void testNthFibonacci() { + // Create an instance of GenericFibonacciNumber + FibonacciNumber searcher = new FibonacciNumber<>() + // Test case 1: Fibonacci number at position 0 - Integer result1 = FibonacciNumber.nthFibonacci(0); - assertEquals(Integer.valueOf(0), result1); + int result1 = FibonacciNumber.nthFibonacci(0); + assertEquals(0, result1); // Test case 2: Fibonacci number at position 1 - Integer result2 = FibonacciNumber.nthFibonacci(1); - assertEquals(Integer.valueOf(1), result2); + int result2 = FibonacciNumber.nthFibonacci(1); + assertEquals(1, result2); // Test case 3: Fibonacci number at position 2 - Integer result3 = FibonacciNumber.nthFibonacci(2); - assertEquals(Integer.valueOf(1), result3); + int result3 = FibonacciNumber.nthFibonacci(2); + assertEquals(1, result3); // Test case 4: Fibonacci number at position 5 - Integer result4 = FibonacciNumber.nthFibonacci(5); - assertEquals(Integer.valueOf(5), result4); + int result4 = FibonacciNumber.nthFibonacci(5); + assertEquals(5, result4); // Test case 5: Fibonacci number at a large position (e.g., 10) - Integer result5 = FibonacciNumber.nthFibonacci(10); - assertEquals(Integer.valueOf(55), result5); + int result5 = FibonacciNumber.nthFibonacci(10); + assertEquals(55, result5); // Test case 6: Fibonacci number at a negative position (should return -1) - assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonacci(-3); }); + int result6 = FibonacciNumber.nthFibonacci(-3); + assertEquals(-1, result6); } } From 61c8ae83194d9692461c6f0d1135f57fe59d739c Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:28:46 +0530 Subject: [PATCH 015/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 7cdb64241e0b..740729292072 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -10,27 +10,33 @@ public void testNthFibonacci() { FibonacciNumber searcher = new FibonacciNumber<>() // Test case 1: Fibonacci number at position 0 - int result1 = FibonacciNumber.nthFibonacci(0); + int result1 = + FibonacciNumber.nthFibonacci(0); assertEquals(0, result1); // Test case 2: Fibonacci number at position 1 - int result2 = FibonacciNumber.nthFibonacci(1); + int result2 = + FibonacciNumber.nthFibonacci(1); assertEquals(1, result2); // Test case 3: Fibonacci number at position 2 - int result3 = FibonacciNumber.nthFibonacci(2); + int result3 = + FibonacciNumber.nthFibonacci(2); assertEquals(1, result3); // Test case 4: Fibonacci number at position 5 - int result4 = FibonacciNumber.nthFibonacci(5); + int result4 = + FibonacciNumber.nthFibonacci(5); assertEquals(5, result4); // Test case 5: Fibonacci number at a large position (e.g., 10) - int result5 = FibonacciNumber.nthFibonacci(10); + int result5 = + FibonacciNumber.nthFibonacci(10); assertEquals(55, result5); // Test case 6: Fibonacci number at a negative position (should return -1) - int result6 = FibonacciNumber.nthFibonacci(-3); + int result6 = + FibonacciNumber.nthFibonacci(-3); assertEquals(-1, result6); } } From 3597f5ee020487e02f13c715ca8dc6ca5bc48e41 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:30:26 +0530 Subject: [PATCH 016/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 740729292072..09336f0d3c0e 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -10,33 +10,28 @@ public void testNthFibonacci() { FibonacciNumber searcher = new FibonacciNumber<>() // Test case 1: Fibonacci number at position 0 - int result1 = - FibonacciNumber.nthFibonacci(0); + int result1 + = FibonacciNumber.nthFibonacci(0); assertEquals(0, result1); // Test case 2: Fibonacci number at position 1 - int result2 = - FibonacciNumber.nthFibonacci(1); + int result2 = FibonacciNumber.nthFibonacci(1); assertEquals(1, result2); // Test case 3: Fibonacci number at position 2 - int result3 = - FibonacciNumber.nthFibonacci(2); + int result3 = FibonacciNumber.nthFibonacci(2); assertEquals(1, result3); // Test case 4: Fibonacci number at position 5 - int result4 = - FibonacciNumber.nthFibonacci(5); + int result4 = FibonacciNumber.nthFibonacci(5); assertEquals(5, result4); // Test case 5: Fibonacci number at a large position (e.g., 10) - int result5 = - FibonacciNumber.nthFibonacci(10); + int result5 = FibonacciNumber.nthFibonacci(10); assertEquals(55, result5); // Test case 6: Fibonacci number at a negative position (should return -1) - int result6 = - FibonacciNumber.nthFibonacci(-3); + int result6 = FibonacciNumber.nthFibonacci(-3); assertEquals(-1, result6); } } From 9dc18ba3e8dd404a7e32e7ef91777470739c2717 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:31:42 +0530 Subject: [PATCH 017/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 09336f0d3c0e..8e96ea3bc990 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -10,8 +10,8 @@ public void testNthFibonacci() { FibonacciNumber searcher = new FibonacciNumber<>() // Test case 1: Fibonacci number at position 0 - int result1 - = FibonacciNumber.nthFibonacci(0); + int result1 + = FibonacciNumber.nthFibonacci(0); assertEquals(0, result1); // Test case 2: Fibonacci number at position 1 From cc58ea78652677b2e087337ff0cc9df7c6c3a85c Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:33:08 +0530 Subject: [PATCH 018/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 8e96ea3bc990..33d08a8f12bf 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -9,7 +9,7 @@ public void testNthFibonacci() { // Create an instance of GenericFibonacciNumber FibonacciNumber searcher = new FibonacciNumber<>() - // Test case 1: Fibonacci number at position 0 + // Test case 1: Fibonacci number at position 0 int result1 = FibonacciNumber.nthFibonacci(0); assertEquals(0, result1); From 03e1c1b0a96c3300e9450f419a6a0848b1dad380 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:34:22 +0530 Subject: [PATCH 019/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 33d08a8f12bf..c05880aefb97 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -7,8 +7,7 @@ public class FibonacciNumberTest { @Test public void testNthFibonacci() { // Create an instance of GenericFibonacciNumber - FibonacciNumber searcher = new FibonacciNumber<>() - + FibonacciNumber searcher = new FibonacciNumber<>() // Test case 1: Fibonacci number at position 0 int result1 = FibonacciNumber.nthFibonacci(0); From 673bb541af69b86db286bad91a06375a93040669 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:35:36 +0530 Subject: [PATCH 020/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index c05880aefb97..cc67876de4e0 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -7,6 +7,7 @@ public class FibonacciNumberTest { @Test public void testNthFibonacci() { // Create an instance of GenericFibonacciNumber + FibonacciNumber searcher = new FibonacciNumber<>() // Test case 1: Fibonacci number at position 0 int result1 From 11acae5de5e234f46ef1ec52be5a0f7d8285880e Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:37:23 +0530 Subject: [PATCH 021/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index cc67876de4e0..58c9641efdfa 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -8,7 +8,7 @@ public class FibonacciNumberTest { public void testNthFibonacci() { // Create an instance of GenericFibonacciNumber - FibonacciNumber searcher = new FibonacciNumber<>() + FibonacciNumber searcher = new FibonacciNumber<>(); // Test case 1: Fibonacci number at position 0 int result1 = FibonacciNumber.nthFibonacci(0); From 01834f9c10ca74493ce342f7796c8aafb1f436bb Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:40:03 +0530 Subject: [PATCH 022/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 58c9641efdfa..11ceb9cd760b 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -8,10 +8,9 @@ public class FibonacciNumberTest { public void testNthFibonacci() { // Create an instance of GenericFibonacciNumber - FibonacciNumber searcher = new FibonacciNumber<>(); - // Test case 1: Fibonacci number at position 0 - int result1 - = FibonacciNumber.nthFibonacci(0); + FibonacciNumber searcher = new FibonacciNumber<>(); + // Test case 1: Fibonacci number at position 0 + int result1 = FibonacciNumber.nthFibonacci(0); assertEquals(0, result1); // Test case 2: Fibonacci number at position 1 From 494a5de916e40aeaaab7e236e907b755b1acca98 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:41:26 +0530 Subject: [PATCH 023/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 11ceb9cd760b..d96d1c5808c0 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -6,7 +6,6 @@ public class FibonacciNumberTest { @Test public void testNthFibonacci() { - // Create an instance of GenericFibonacciNumber FibonacciNumber searcher = new FibonacciNumber<>(); // Test case 1: Fibonacci number at position 0 From ba3a9b1251b345dae3fdec9fce575c49d7cbef29 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:45:00 +0530 Subject: [PATCH 024/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index d96d1c5808c0..359994e32053 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -4,9 +4,9 @@ public class FibonacciNumberTest { - @Test - public void testNthFibonacci() { - +@Test +public void testNthFibonacci() { + FibonacciNumber searcher = new FibonacciNumber<>(); // Test case 1: Fibonacci number at position 0 int result1 = FibonacciNumber.nthFibonacci(0); From 01a33ffe1020872fb3749ecae7f372edef265a30 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:46:38 +0530 Subject: [PATCH 025/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 359994e32053..4a36e440ffc6 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -4,8 +4,8 @@ public class FibonacciNumberTest { -@Test -public void testNthFibonacci() { + @Test + public void testNthFibonacci() { FibonacciNumber searcher = new FibonacciNumber<>(); // Test case 1: Fibonacci number at position 0 From 4d6df56b504a1f73d7c1f8d6ce9503835da72ba2 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:50:51 +0530 Subject: [PATCH 026/130] Update FibonacciNumberTest.java --- .../com/thealgorithms/maths/FibonacciNumberTest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 4a36e440ffc6..9662d43aaed0 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -9,27 +9,27 @@ public void testNthFibonacci() { FibonacciNumber searcher = new FibonacciNumber<>(); // Test case 1: Fibonacci number at position 0 - int result1 = FibonacciNumber.nthFibonacci(0); + int result1 = FibonacciNumber.fibonacci(0); assertEquals(0, result1); // Test case 2: Fibonacci number at position 1 - int result2 = FibonacciNumber.nthFibonacci(1); + int result2 = FibonacciNumber.fibonacci(1); assertEquals(1, result2); // Test case 3: Fibonacci number at position 2 - int result3 = FibonacciNumber.nthFibonacci(2); + int result3 = FibonacciNumber.fibonacci(2); assertEquals(1, result3); // Test case 4: Fibonacci number at position 5 - int result4 = FibonacciNumber.nthFibonacci(5); + int result4 = FibonacciNumber.fibonacci(5); assertEquals(5, result4); // Test case 5: Fibonacci number at a large position (e.g., 10) - int result5 = FibonacciNumber.nthFibonacci(10); + int result5 = FibonacciNumber.fibonacci(10); assertEquals(55, result5); // Test case 6: Fibonacci number at a negative position (should return -1) - int result6 = FibonacciNumber.nthFibonacci(-3); + int result6 = FibonacciNumber.fibonacci(-3); assertEquals(-1, result6); } } From 837f30624a84cacc5f1f6b7449d8243edf08d600 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:57:26 +0530 Subject: [PATCH 027/130] Update FibonacciNumber.java --- .../thealgorithms/maths/FibonacciNumber.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 1c9aa716d3f0..9d76e4e607f7 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,8 +1,3 @@ -// Created by Pronay Debnath -// Date:- 1/10/2003 -// Updated FibonnaciNumber.java using golden ratio formula -// Explanation:- https://www.quickanddirtytips.com/articles/what-is-the-golden-ratio-and-how-is-it-related-to-the-fibonacci-sequence/ - import java.util.*; public final class FibonacciNumber { @@ -27,4 +22,22 @@ public static int nthFibonacci(T n) { // Return the result return fibonacci; } + + public static void main(String[] args) { + // Create a Scanner object to read user input + Scanner sc = new Scanner(System.in); + + // Prompt the user for input + System.out.print("Enter the value of n to find the nth Fibonacci number: "); + + // Read the user's input as an integer + int n = sc.nextInt(); + + // Calculate and print the nth Fibonacci number + int result = nthFibonacci(n); + System.out.println("The " + n + "th Fibonacci number is: " + result); + + // Close the scanner + scanner.close(); + } } From 25e22bfea09c51c93b88883730055bd4ccce11f9 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 20:58:51 +0530 Subject: [PATCH 028/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 9662d43aaed0..1201892bbdf8 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -5,31 +5,32 @@ public class FibonacciNumberTest { @Test - public void testNthFibonacci() { - - FibonacciNumber searcher = new FibonacciNumber<>(); - // Test case 1: Fibonacci number at position 0 - int result1 = FibonacciNumber.fibonacci(0); - assertEquals(0, result1); - - // Test case 2: Fibonacci number at position 1 - int result2 = FibonacciNumber.fibonacci(1); - assertEquals(1, result2); + public void testNthFibonacciZero() { + int result = FibonacciNumber.nthFibonacci(0); + assertEquals(0, result); + } - // Test case 3: Fibonacci number at position 2 - int result3 = FibonacciNumber.fibonacci(2); - assertEquals(1, result3); + @Test + public void testNthFibonacciOne() { + int result = FibonacciNumber.nthFibonacci(1); + assertEquals(1, result); + } - // Test case 4: Fibonacci number at position 5 - int result4 = FibonacciNumber.fibonacci(5); - assertEquals(5, result4); + @Test + public void testNthFibonacciTwo() { + int result = FibonacciNumber.nthFibonacci(2); + assertEquals(1, result); + } - // Test case 5: Fibonacci number at a large position (e.g., 10) - int result5 = FibonacciNumber.fibonacci(10); - assertEquals(55, result5); + @Test + public void testNthFibonacciFive() { + int result = FibonacciNumber.nthFibonacci(5); + assertEquals(5, result); + } - // Test case 6: Fibonacci number at a negative position (should return -1) - int result6 = FibonacciNumber.fibonacci(-3); - assertEquals(-1, result6); + @Test + public void testNthFibonacciLarge() { + int result = FibonacciNumber.nthFibonacci(10); + assertEquals(55, result); } } From 565a687985ee4477bde7fa08e66f595aa91603a6 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sun, 8 Oct 2023 21:00:29 +0530 Subject: [PATCH 029/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 1201892bbdf8..a1cd28630403 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,6 +1,6 @@ import static org.junit.jupiter.api.Assertions.*; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Test; // Import the JUnit 5 Test annotation public class FibonacciNumberTest { From aaceb6f8b29931ded83fcc6450118b17d75e7c58 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:23:34 +0530 Subject: [PATCH 030/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../thealgorithms/maths/FibonacciNumber.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 9d76e4e607f7..f68d9f8677e9 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -22,22 +22,4 @@ public static int nthFibonacci(T n) { // Return the result return fibonacci; } - - public static void main(String[] args) { - // Create a Scanner object to read user input - Scanner sc = new Scanner(System.in); - - // Prompt the user for input - System.out.print("Enter the value of n to find the nth Fibonacci number: "); - - // Read the user's input as an integer - int n = sc.nextInt(); - - // Calculate and print the nth Fibonacci number - int result = nthFibonacci(n); - System.out.println("The " + n + "th Fibonacci number is: " + result); - - // Close the scanner - scanner.close(); - } } From 253cda0e881c70bcb141337b0aa8a7ed9db47b88 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:26:28 +0530 Subject: [PATCH 031/130] Update FibonacciNumber.java --- .../java/com/thealgorithms/maths/FibonacciNumber.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index f68d9f8677e9..331da36ef7cd 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,11 +1,9 @@ -import java.util.*; - -public final class FibonacciNumber { +public final class FibonacciNumber { private FibonacciNumber() { } // Function to find the nth Fibonacci number using the golden ratio formula - public static int nthFibonacci(T n) { + public static int nthFibonacci(int n) { // Calculate the square root of 5 as a double double sqrt5 = Math.sqrt(5); @@ -13,11 +11,8 @@ public static int nthFibonacci(T n) { double phi = (1 + sqrt5) / 2; double psi = (1 - sqrt5) / 2; - // Convert the input value to an int - int result = n.intValue(); - // Calculate the nth Fibonacci number using the golden ratio formula - int fibonacci = (int) ((1.0 / sqrt5) * (Math.pow(phi, result) - Math.pow(psi, result))); + int fibonacci = (int) ((1.0 / sqrt5) * (Math.pow(phi, n) - Math.pow(psi, n))); // Return the result return fibonacci; From aa0265e5578a0427ae0bf33aa788921af6b9fab6 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:28:00 +0530 Subject: [PATCH 032/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 55 +++++++++---------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index a1cd28630403..31aaaf8dd4b1 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,36 +1,33 @@ import static org.junit.jupiter.api.Assertions.*; -import org.junit.jupiter.api.Test; // Import the JUnit 5 Test annotation +import org.junit.jupiter.params.ParameterizedTest; -public class FibonacciNumberTest { - - @Test - public void testNthFibonacciZero() { - int result = FibonacciNumber.nthFibonacci(0); - assertEquals(0, result); - } - - @Test - public void testNthFibonacciOne() { - int result = FibonacciNumber.nthFibonacci(1); - assertEquals(1, result); - } +import org.junit.jupiter.params.provider.ValueSource; - @Test - public void testNthFibonacciTwo() { - int result = FibonacciNumber.nthFibonacci(2); - assertEquals(1, result); - } - - @Test - public void testNthFibonacciFive() { - int result = FibonacciNumber.nthFibonacci(5); - assertEquals(5, result); - } +public class FibonacciNumberTest { - @Test - public void testNthFibonacciLarge() { - int result = FibonacciNumber.nthFibonacci(10); - assertEquals(55, result); + @ParameterizedTest + @ValueSource(ints = {0, 1, 2, 5, 10}) + public void testNthFibonacci(int input) { + int result = FibonacciNumber.nthFibonacci(input); + switch (input) { + case 0: + assertEquals(0, result); + break; + case 1: + assertEquals(1, result); + break; + case 2: + assertEquals(1, result); + break; + case 5: + assertEquals(5, result); + break; + case 10: + assertEquals(55, result); + break; + default: + fail("Unexpected input value: " + input); + } } } From 37cf8ee28bd917d0802cf43f22ba39b8d4f8b370 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:31:18 +0530 Subject: [PATCH 033/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 31aaaf8dd4b1..d5e22bdd9d93 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -11,23 +11,23 @@ public class FibonacciNumberTest { public void testNthFibonacci(int input) { int result = FibonacciNumber.nthFibonacci(input); switch (input) { - case 0: - assertEquals(0, result); - break; - case 1: - assertEquals(1, result); - break; - case 2: - assertEquals(1, result); - break; - case 5: - assertEquals(5, result); - break; - case 10: - assertEquals(55, result); - break; - default: - fail("Unexpected input value: " + input); + case 0: + assertEquals(0, result); + break; + case 1: + assertEquals(1, result); + break; + case 2: + assertEquals(1, result); + break; + case 5: + assertEquals(5, result); + break; + case 10: + assertEquals(55, result); + break; + default: + fail("Unexpected input value: " + input); } } } From eb52e31526403b17d4cc167a55bc40d4e8764ad5 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:35:58 +0530 Subject: [PATCH 034/130] Update FibonacciNumber.java --- .../thealgorithms/maths/FibonacciNumber.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 331da36ef7cd..c9661b9c91ce 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -3,18 +3,30 @@ private FibonacciNumber() { } // Function to find the nth Fibonacci number using the golden ratio formula - public static int nthFibonacci(int n) { - // Calculate the square root of 5 as a double - double sqrt5 = Math.sqrt(5); + public static long nthFibonacci(int n) { + // Find the last 'n' for which the nth Fibonacci number fits into a long + int lastFibThatFitsInLong = 0; + long prev = 0; + long current = 1; + while (current <= Long.MAX_VALUE) { + long next = prev + current; + prev = current; + current = next; + lastFibThatFitsInLong++; + } - // Calculate the golden ratio (phi) and its conjugate (psi) as doubles - double phi = (1 + sqrt5) / 2; - double psi = (1 - sqrt5) / 2; + // If 'n' is beyond what fits in a long, use a different method + if (n > lastFibThatFitsInLong) { + throw new IllegalArgumentException("Input 'n' is too large to fit into a long."); + } // Calculate the nth Fibonacci number using the golden ratio formula - int fibonacci = (int) ((1.0 / sqrt5) * (Math.pow(phi, n) - Math.pow(psi, n))); + double sqrt5 = Math.sqrt(5); + double phi = (1 + sqrt5) / 2; + double psi = (1 - sqrt5) / 2; + long fibonacci = (long) ((1.0 / sqrt5) * (Math.pow(phi, n) - Math.pow(psi, n))); - // Return the result + // Return the result as a long return fibonacci; } } From 21684e6e94cc8dda3033c0a09f6eed0f732ef6fa Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:36:25 +0530 Subject: [PATCH 035/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index d5e22bdd9d93..0ed931d5d4d8 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -7,27 +7,24 @@ public class FibonacciNumberTest { @ParameterizedTest - @ValueSource(ints = {0, 1, 2, 5, 10}) - public void testNthFibonacci(int input) { - int result = FibonacciNumber.nthFibonacci(input); - switch (input) { - case 0: - assertEquals(0, result); - break; - case 1: - assertEquals(1, result); - break; - case 2: - assertEquals(1, result); - break; - case 5: - assertEquals(5, result); - break; - case 10: - assertEquals(55, result); - break; - default: - fail("Unexpected input value: " + input); + @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30}) + public void testNthFibonacci(int n) { + long result = FibonacciNumber.nthFibonacci(n); + long expectedResult = calculateFibonacciUsingLoop(n); + assertEquals(expectedResult, result); + } + + private long calculateFibonacciUsingLoop(int n) { + if (n <= 1) { + return n; + } + long prev = 0; + long current = 1; + for (int i = 2; i <= n; i++) { + long next = prev + current; + prev = current; + current = next; } + return current; } } From 75e31ed9c19a172dd808f0901a7e3e155f0fbedd Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:37:54 +0530 Subject: [PATCH 036/130] Update FibonacciNumberTest.java --- src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java index 0ed931d5d4d8..6689ab26a962 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,7 +1,6 @@ import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.params.ParameterizedTest; - import org.junit.jupiter.params.provider.ValueSource; public class FibonacciNumberTest { From 2bff558a6d85fabcb4fc34c995028aa301c0a320 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:43:05 +0530 Subject: [PATCH 037/130] Delete src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 29 ------------------- 1 file changed, 29 deletions(-) delete mode 100644 src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java deleted file mode 100644 index 6689ab26a962..000000000000 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ /dev/null @@ -1,29 +0,0 @@ -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - -public class FibonacciNumberTest { - - @ParameterizedTest - @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30}) - public void testNthFibonacci(int n) { - long result = FibonacciNumber.nthFibonacci(n); - long expectedResult = calculateFibonacciUsingLoop(n); - assertEquals(expectedResult, result); - } - - private long calculateFibonacciUsingLoop(int n) { - if (n <= 1) { - return n; - } - long prev = 0; - long current = 1; - for (int i = 2; i <= n; i++) { - long next = prev + current; - prev = current; - current = next; - } - return current; - } -} From dd6078c6f9cb4ea487cd6bc84f09141ca77258f5 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 00:44:05 +0530 Subject: [PATCH 038/130] Create FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java new file mode 100644 index 000000000000..6689ab26a962 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -0,0 +1,29 @@ +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +public class FibonacciNumberTest { + + @ParameterizedTest + @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30}) + public void testNthFibonacci(int n) { + long result = FibonacciNumber.nthFibonacci(n); + long expectedResult = calculateFibonacciUsingLoop(n); + assertEquals(expectedResult, result); + } + + private long calculateFibonacciUsingLoop(int n) { + if (n <= 1) { + return n; + } + long prev = 0; + long current = 1; + for (int i = 2; i <= n; i++) { + long next = prev + current; + prev = current; + current = next; + } + return current; + } +} From 9bb2b5489351c9cb1a32f432862915e125e85c8b Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 23:09:17 +0530 Subject: [PATCH 039/130] Update FibonacciNumber.java --- .../thealgorithms/maths/FibonacciNumber.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index c9661b9c91ce..f606757f0383 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -2,21 +2,24 @@ public final class FibonacciNumber { private FibonacciNumber() { } - // Function to find the nth Fibonacci number using the golden ratio formula - public static long nthFibonacci(int n) { - // Find the last 'n' for which the nth Fibonacci number fits into a long - int lastFibThatFitsInLong = 0; + // Compute the limit for n that fits in a long + private static final int argLimit; + + static { long prev = 0; long current = 1; + int limit = 0; while (current <= Long.MAX_VALUE) { long next = prev + current; prev = current; current = next; - lastFibThatFitsInLong++; + limit++; } + argLimit = limit; + } - // If 'n' is beyond what fits in a long, use a different method - if (n > lastFibThatFitsInLong) { + public static long nthFibonacci(int n) { + if (n > argLimit) { throw new IllegalArgumentException("Input 'n' is too large to fit into a long."); } @@ -26,7 +29,7 @@ public static long nthFibonacci(int n) { double psi = (1 - sqrt5) / 2; long fibonacci = (long) ((1.0 / sqrt5) * (Math.pow(phi, n) - Math.pow(psi, n))); - // Return the result as a long return fibonacci; } } + From ff21124755f2bcedf3d46c3b21d3a31de4ad3c1a Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 23:13:26 +0530 Subject: [PATCH 040/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 6689ab26a962..e6d7d89ab843 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -9,11 +9,14 @@ public class FibonacciNumberTest { @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30}) public void testNthFibonacci(int n) { long result = FibonacciNumber.nthFibonacci(n); - long expectedResult = calculateFibonacciUsingLoop(n); + long expectedResult = FibonacciCalculator.calculateFibonacciUsingLoop(n); assertEquals(expectedResult, result); } +} + +public class FibonacciCalculator { - private long calculateFibonacciUsingLoop(int n) { + public static long calculateFibonacciUsingLoop(int n) { if (n <= 1) { return n; } From 86f83ab9783c12b0507d771f9a38142daad13939 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 23:18:52 +0530 Subject: [PATCH 041/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index f606757f0383..c91f3fc36fd2 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -9,6 +9,7 @@ private FibonacciNumber() { long prev = 0; long current = 1; int limit = 0; + while (current <= Long.MAX_VALUE) { long next = prev + current; prev = current; From 7c85b7350dbd1490a7d2f1be4cb4f729d4cf7814 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 23:28:56 +0530 Subject: [PATCH 042/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index c91f3fc36fd2..5c46c2db9682 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -4,12 +4,10 @@ private FibonacciNumber() { // Compute the limit for n that fits in a long private static final int argLimit; - static { long prev = 0; long current = 1; - int limit = 0; - + int limit = 0; while (current <= Long.MAX_VALUE) { long next = prev + current; prev = current; @@ -33,4 +31,3 @@ public static long nthFibonacci(int n) { return fibonacci; } } - From e580f0ee3df62e2c7c1949e4ae1b6694a2e4ff45 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 23:33:54 +0530 Subject: [PATCH 043/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 5c46c2db9682..66c02411f37b 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -7,6 +7,7 @@ private FibonacciNumber() { static { long prev = 0; long current = 1; + int limit = 0; while (current <= Long.MAX_VALUE) { long next = prev + current; From 151651f2791ccb4b1de93996544dc4f0abba5faf Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 23:39:42 +0530 Subject: [PATCH 044/130] Update FibonacciNumber.java --- .../com/thealgorithms/maths/FibonacciNumber.java | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 66c02411f37b..ec2f565f2f0e 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -3,20 +3,7 @@ private FibonacciNumber() { } // Compute the limit for n that fits in a long - private static final int argLimit; - static { - long prev = 0; - long current = 1; - - int limit = 0; - while (current <= Long.MAX_VALUE) { - long next = prev + current; - prev = current; - current = next; - limit++; - } - argLimit = limit; - } + private static final int argLimit = 92; public static long nthFibonacci(int n) { if (n > argLimit) { From bf53e854a2dd867de68a008279f5667fff28881c Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Mon, 9 Oct 2023 23:41:24 +0530 Subject: [PATCH 045/130] Update FibonacciNumberTest.java --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index e6d7d89ab843..8b370dee7ac0 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -14,7 +14,7 @@ public void testNthFibonacci(int n) { } } -public class FibonacciCalculator { +class FibonacciCalculator { public static long calculateFibonacciUsingLoop(int n) { if (n <= 1) { From 529d9c5e2eac37a7caefc81d9b345cdc2a4b13a2 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 00:58:41 +0530 Subject: [PATCH 046/130] Update src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 8b370dee7ac0..ac28822b6b81 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,4 +1,4 @@ -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; From ab9942e867132d7fec4b13d3ad72154987761385 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 00:59:05 +0530 Subject: [PATCH 047/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../java/com/thealgorithms/maths/FibonacciNumber.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index ec2f565f2f0e..e34d08194928 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -11,11 +11,9 @@ public static long nthFibonacci(int n) { } // Calculate the nth Fibonacci number using the golden ratio formula - double sqrt5 = Math.sqrt(5); - double phi = (1 + sqrt5) / 2; - double psi = (1 - sqrt5) / 2; - long fibonacci = (long) ((1.0 / sqrt5) * (Math.pow(phi, n) - Math.pow(psi, n))); - - return fibonacci; + final double sqrt5 = Math.sqrt(5); + final double phi = (1 + sqrt5) / 2; + final double psi = (1 - sqrt5) / 2; + return (long) ((Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5); } } From e8000d63193e34f8f722fb0f1da5398b22443943 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 01:05:17 +0530 Subject: [PATCH 048/130] Create FibonacciCalculator.java --- .../thealgorithms/maths/FibonacciCalculator.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/test/java/com/thealgorithms/maths/FibonacciCalculator.java diff --git a/src/test/java/com/thealgorithms/maths/FibonacciCalculator.java b/src/test/java/com/thealgorithms/maths/FibonacciCalculator.java new file mode 100644 index 000000000000..d4bc9044f206 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/FibonacciCalculator.java @@ -0,0 +1,16 @@ +public class FibonacciCalculator { + + public static long calculateFibonacciUsingLoop(int n) { + if (n <= 1) { + return n; + } + long prev = 0; + long current = 1; + for (int i = 2; i <= n; i++) { + long next = prev + current; + prev = current; + current = next; + } + return current; + } +} From 556aa8fe4a7270839f35450f0d69ed06e45fd1ab Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 01:05:56 +0530 Subject: [PATCH 049/130] Update FibonacciNumberTest.java --- .../maths/FibonacciNumberTest.java | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index ac28822b6b81..7d1fc8a1bfcf 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -5,28 +5,13 @@ public class FibonacciNumberTest { + private FibonacciCalculator calculator = new FibonacciCalculator(); + @ParameterizedTest - @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30}) + @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) // Include 92 as the upper limit public void testNthFibonacci(int n) { long result = FibonacciNumber.nthFibonacci(n); - long expectedResult = FibonacciCalculator.calculateFibonacciUsingLoop(n); + long expectedResult = calculator.calculateFibonacciUsingLoop(n); assertEquals(expectedResult, result); } } - -class FibonacciCalculator { - - public static long calculateFibonacciUsingLoop(int n) { - if (n <= 1) { - return n; - } - long prev = 0; - long current = 1; - for (int i = 2; i <= n; i++) { - long next = prev + current; - prev = current; - current = next; - } - return current; - } -} From e34a19b11d3505d5ce99e968c35d408160d146f7 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 01:09:39 +0530 Subject: [PATCH 050/130] Update and rename FibonacciCalculator.java to FibCalc.java --- .../maths/{FibonacciCalculator.java => FibCalc.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/test/java/com/thealgorithms/maths/{FibonacciCalculator.java => FibCalc.java} (90%) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciCalculator.java b/src/test/java/com/thealgorithms/maths/FibCalc.java similarity index 90% rename from src/test/java/com/thealgorithms/maths/FibonacciCalculator.java rename to src/test/java/com/thealgorithms/maths/FibCalc.java index d4bc9044f206..941c582b9f23 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciCalculator.java +++ b/src/test/java/com/thealgorithms/maths/FibCalc.java @@ -1,4 +1,4 @@ -public class FibonacciCalculator { +public class FibC { public static long calculateFibonacciUsingLoop(int n) { if (n <= 1) { From 1a8fef29a8c574a212438a6b7f4146d4d5f3b345 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 01:10:07 +0530 Subject: [PATCH 051/130] Update FibonacciNumberTest.java --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 7d1fc8a1bfcf..da03e2381f13 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -5,7 +5,7 @@ public class FibonacciNumberTest { - private FibonacciCalculator calculator = new FibonacciCalculator(); + private FibCalc calculator = new FibCalc(); @ParameterizedTest @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) // Include 92 as the upper limit From 56465dc9ef0f1e5ec7825a259ec419b6d077288b Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 01:11:59 +0530 Subject: [PATCH 052/130] Update FibCalc.java --- src/test/java/com/thealgorithms/maths/FibCalc.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibCalc.java b/src/test/java/com/thealgorithms/maths/FibCalc.java index 941c582b9f23..8dede4598179 100644 --- a/src/test/java/com/thealgorithms/maths/FibCalc.java +++ b/src/test/java/com/thealgorithms/maths/FibCalc.java @@ -1,4 +1,4 @@ -public class FibC { +public class FibCalc { public static long calculateFibonacciUsingLoop(int n) { if (n <= 1) { From 361fdc927478a1a343e70c319bbfbcaca69ad71d Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 01:16:40 +0530 Subject: [PATCH 053/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index e34d08194928..a83d0c42fc0c 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -3,7 +3,7 @@ private FibonacciNumber() { } // Compute the limit for n that fits in a long - private static final int argLimit = 92; + private static final int argLimit = 100; public static long nthFibonacci(int n) { if (n > argLimit) { From 3cf874b1ee767c87acb72339895f0e7484271073 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 23:47:26 +0530 Subject: [PATCH 054/130] Delete src/test/java/com/thealgorithms/maths/FibCalc.java --- .../java/com/thealgorithms/maths/FibCalc.java | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 src/test/java/com/thealgorithms/maths/FibCalc.java diff --git a/src/test/java/com/thealgorithms/maths/FibCalc.java b/src/test/java/com/thealgorithms/maths/FibCalc.java deleted file mode 100644 index 8dede4598179..000000000000 --- a/src/test/java/com/thealgorithms/maths/FibCalc.java +++ /dev/null @@ -1,16 +0,0 @@ -public class FibCalc { - - public static long calculateFibonacciUsingLoop(int n) { - if (n <= 1) { - return n; - } - long prev = 0; - long current = 1; - for (int i = 2; i <= n; i++) { - long next = prev + current; - prev = current; - current = next; - } - return current; - } -} From bcae36fd3753943f7e8ed48fff779adc93fb2c7c Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 23:48:16 +0530 Subject: [PATCH 055/130] Create FibCalc.java --- .../java/com/thealgorithms/maths/FibCalc.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/com/thealgorithms/maths/FibCalc.java diff --git a/src/main/java/com/thealgorithms/maths/FibCalc.java b/src/main/java/com/thealgorithms/maths/FibCalc.java new file mode 100644 index 000000000000..8dede4598179 --- /dev/null +++ b/src/main/java/com/thealgorithms/maths/FibCalc.java @@ -0,0 +1,16 @@ +public class FibCalc { + + public static long calculateFibonacciUsingLoop(int n) { + if (n <= 1) { + return n; + } + long prev = 0; + long current = 1; + for (int i = 2; i <= n; i++) { + long next = prev + current; + prev = current; + current = next; + } + return current; + } +} From bbb3a6a0af01aea28a57978c3606ad235bb95402 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 23:51:20 +0530 Subject: [PATCH 056/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index da03e2381f13..05d78e185372 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -5,13 +5,11 @@ public class FibonacciNumberTest { - private FibCalc calculator = new FibCalc(); - @ParameterizedTest @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) // Include 92 as the upper limit public void testNthFibonacci(int n) { long result = FibonacciNumber.nthFibonacci(n); - long expectedResult = calculator.calculateFibonacciUsingLoop(n); + long expectedResult = FibCalc.calculateFibonacciUsingLoop(n); // Call the static method directly assertEquals(expectedResult, result); } } From 5fb25f46943a337e7205df4ef8e69619df7ad0fc Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 23:54:09 +0530 Subject: [PATCH 057/130] Update FibCalc.java --- src/main/java/com/thealgorithms/maths/FibCalc.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibCalc.java b/src/main/java/com/thealgorithms/maths/FibCalc.java index 8dede4598179..b99f85a9dc15 100644 --- a/src/main/java/com/thealgorithms/maths/FibCalc.java +++ b/src/main/java/com/thealgorithms/maths/FibCalc.java @@ -1,13 +1,14 @@ -public class FibCalc { +import java.math.BigInteger; - public static long calculateFibonacciUsingLoop(int n) { +public class FibCalc { + public static BigInteger calFib(int n) { if (n <= 1) { - return n; + return BigInteger.valueOf(n); } - long prev = 0; - long current = 1; + BigInteger prev = BigInteger.ZERO; + BigInteger current = BigInteger.ONE; for (int i = 2; i <= n; i++) { - long next = prev + current; + BigInteger next = prev.add(current); prev = current; current = next; } From 6fd2d7663f754cb3718b0c7728e669fbe4d4a26e Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 23:55:19 +0530 Subject: [PATCH 058/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 05d78e185372..a4831fecca86 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -2,14 +2,15 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import java.math.BigInteger; public class FibonacciNumberTest { @ParameterizedTest - @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) // Include 92 as the upper limit + @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) public void testNthFibonacci(int n) { - long result = FibonacciNumber.nthFibonacci(n); - long expectedResult = FibCalc.calculateFibonacciUsingLoop(n); // Call the static method directly + BigInteger result = FibonacciNumber.nthFibonacci(n); + BigInteger expectedResult = FibCalc.calFib(n); // Call the static method directly assertEquals(expectedResult, result); } } From 2805d43cde486b6d85a11fad6f299a97a012a9cb Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Wed, 11 Oct 2023 23:57:42 +0530 Subject: [PATCH 059/130] Update FibonacciNumber.java --- .../java/com/thealgorithms/maths/FibonacciNumber.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index a83d0c42fc0c..3e183f6adfd5 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,11 +1,13 @@ +import java.math.BigInteger; + public final class FibonacciNumber { private FibonacciNumber() { } // Compute the limit for n that fits in a long - private static final int argLimit = 100; + private static final int argLimit = 92; - public static long nthFibonacci(int n) { + public static BigInteger nthFibonacci(int n) { if (n > argLimit) { throw new IllegalArgumentException("Input 'n' is too large to fit into a long."); } @@ -14,6 +16,9 @@ public static long nthFibonacci(int n) { final double sqrt5 = Math.sqrt(5); final double phi = (1 + sqrt5) / 2; final double psi = (1 - sqrt5) / 2; - return (long) ((Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5); + double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; + + // Convert the result to BigInteger, rounding to the nearest integer + return BigInteger.valueOf(Math.round(result)); } } From 7fe6a1ef753871564321bf44e02b42e49fec6e85 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 00:00:08 +0530 Subject: [PATCH 060/130] Update FibonacciNumberTest.java --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index a4831fecca86..ae402ee8bcb0 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,8 +1,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import java.math.BigInteger; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import java.math.BigInteger; public class FibonacciNumberTest { From b666be825e3cefce0e257a53a2567c3a1c69f837 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 00:05:04 +0530 Subject: [PATCH 061/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 3e183f6adfd5..6a4278a3e7ce 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -18,7 +18,7 @@ public static BigInteger nthFibonacci(int n) { final double psi = (1 - sqrt5) / 2; double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; - // Convert the result to BigInteger, rounding to the nearest integer + // Round to the nearest integer and convert to BigInteger return BigInteger.valueOf(Math.round(result)); } } From be514bf4b59e6e11599c415c9c92dc5f9f61bcc6 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 01:00:55 +0530 Subject: [PATCH 062/130] Update FibonacciNumber.java --- .../com/thealgorithms/maths/FibonacciNumber.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 6a4278a3e7ce..66a2e7ca4b55 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -12,13 +12,13 @@ public static BigInteger nthFibonacci(int n) { throw new IllegalArgumentException("Input 'n' is too large to fit into a long."); } - // Calculate the nth Fibonacci number using the golden ratio formula - final double sqrt5 = Math.sqrt(5); - final double phi = (1 + sqrt5) / 2; - final double psi = (1 - sqrt5) / 2; - double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; - - // Round to the nearest integer and convert to BigInteger - return BigInteger.valueOf(Math.round(result)); + BigInteger a = BigInteger.ZERO; + BigInteger b = BigInteger.ONE; + for (int i = 2; i <= n; i++) { + BigInteger next = a.add(b); + a = b; + b = next; + } + return b; } } From d85c849582f8b4f8c4e178bebf56c467379eb4e7 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 19:57:59 +0530 Subject: [PATCH 063/130] Update FibonacciNumber.java --- .../thealgorithms/maths/FibonacciNumber.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 66a2e7ca4b55..916f1ccff283 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -5,20 +5,20 @@ private FibonacciNumber() { } // Compute the limit for n that fits in a long - private static final int argLimit = 92; + private static final int argLimit = 100; public static BigInteger nthFibonacci(int n) { if (n > argLimit) { throw new IllegalArgumentException("Input 'n' is too large to fit into a long."); } - BigInteger a = BigInteger.ZERO; - BigInteger b = BigInteger.ONE; - for (int i = 2; i <= n; i++) { - BigInteger next = a.add(b); - a = b; - b = next; - } - return b; + // Calculate the nth Fibonacci number using the golden ratio formula + final double sqrt5 = Math.sqrt(5); + final double phi = (1 + sqrt5) / 2; + final double psi = (1 - sqrt5) / 2; + double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; + + // Round to the nearest integer and convert to BigInteger + return BigInteger.valueOf(Math.round(result)); } } From 960f0c0afa55fd791357f7eafc49428ddcc31e80 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 20:01:51 +0530 Subject: [PATCH 064/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 916f1ccff283..a1ccb518dabc 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,7 +1,7 @@ import java.math.BigInteger; public final class FibonacciNumber { - private FibonacciNumber() { + private Fibonacci() { } // Compute the limit for n that fits in a long From 66004213aa31f35784a552e4cf723a1f601a57e8 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 20:02:38 +0530 Subject: [PATCH 065/130] Update FibonacciNumberTest.java --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index ae402ee8bcb0..6b46c5bbb706 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -9,7 +9,7 @@ public class FibonacciNumberTest { @ParameterizedTest @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) public void testNthFibonacci(int n) { - BigInteger result = FibonacciNumber.nthFibonacci(n); + BigInteger result = Fibonacci.nthFibonacci(n); BigInteger expectedResult = FibCalc.calFib(n); // Call the static method directly assertEquals(expectedResult, result); } From c005dda3e0f9dbc0910b65b9ba953c025efb150e Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 20:03:34 +0530 Subject: [PATCH 066/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index a1ccb518dabc..0a353d409e71 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -5,7 +5,7 @@ private Fibonacci() { } // Compute the limit for n that fits in a long - private static final int argLimit = 100; + private static final int argLimit = 92; public static BigInteger nthFibonacci(int n) { if (n > argLimit) { From dbd143828c23055495407b43ca8ee13a4c1c0584 Mon Sep 17 00:00:00 2001 From: Piotr Idzik <65706193+vil02@users.noreply.github.com> Date: Thu, 12 Oct 2023 17:53:33 +0200 Subject: [PATCH 067/130] fix: use proper name --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 0a353d409e71..6a4278a3e7ce 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,7 +1,7 @@ import java.math.BigInteger; public final class FibonacciNumber { - private Fibonacci() { + private FibonacciNumber() { } // Compute the limit for n that fits in a long From 35e7f93cd18d6bac8c94a56f988753dde8691547 Mon Sep 17 00:00:00 2001 From: Piotr Idzik <65706193+vil02@users.noreply.github.com> Date: Thu, 12 Oct 2023 17:57:38 +0200 Subject: [PATCH 068/130] fix: use proper class name --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 6b46c5bbb706..d1d312c45cf4 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -9,8 +9,8 @@ public class FibonacciNumberTest { @ParameterizedTest @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) public void testNthFibonacci(int n) { - BigInteger result = Fibonacci.nthFibonacci(n); - BigInteger expectedResult = FibCalc.calFib(n); // Call the static method directly + BigInteger result = FibonacciNumber.nthFibonacci(n); + BigInteger expectedResult = FibCalc.calFib(n); assertEquals(expectedResult, result); } } From 34602ed0afdaea8e4646df2a6d144ad8e316776a Mon Sep 17 00:00:00 2001 From: vil02 Date: Thu, 12 Oct 2023 18:34:15 +0200 Subject: [PATCH 069/130] tests: add `returnsCorrectValues` --- .../com/thealgorithms/maths/FibCalcTest.java | 28 +++++++++++++++++++ .../maths/FibonacciNumberTest.java | 16 ++++++----- 2 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 src/test/java/com/thealgorithms/maths/FibCalcTest.java diff --git a/src/test/java/com/thealgorithms/maths/FibCalcTest.java b/src/test/java/com/thealgorithms/maths/FibCalcTest.java new file mode 100644 index 000000000000..e6372d5ef2ea --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/FibCalcTest.java @@ -0,0 +1,28 @@ +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.math.BigInteger; +import org.junit.jupiter.api.Test; + +public class FibCalcTest { + @Test + public void checkValueAtZero() { + assertEquals(BigInteger.ZERO, FibCalc.calFib(0)); + } + + @Test + public void checkValueAtOne() { + assertEquals(BigInteger.ONE, FibCalc.calFib(1)); + } + + @Test + public void checkValueAtTwo() { + assertEquals(BigInteger.ONE, FibCalc.calFib(2)); + } + + @Test + public void checkRecurenceRelation() { + for (int i = 0; i < 100; ++i) { + assertEquals(FibCalc.calFib(i + 2), FibCalc.calFib(i + 1).add(FibCalc.calFib(i))); + } + } +} diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index d1d312c45cf4..07bcc9b83519 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,16 +1,18 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.math.BigInteger; -import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.provider.ValueSource; public class FibonacciNumberTest { - @ParameterizedTest - @ValueSource(ints = {0, 1, 2, 5, 10, 20, 30, 92}) - public void testNthFibonacci(int n) { - BigInteger result = FibonacciNumber.nthFibonacci(n); - BigInteger expectedResult = FibCalc.calFib(n); - assertEquals(expectedResult, result); + @Test + public void returnsCorrectValues() { + for (int n = 0; n <= 92; ++n) { + final var actual = FibonacciNumber.nthFibonacci(n); + final var expected = FibCalc.calFib(n); + System.out.println("n = " + n); + assertEquals(expected, actual); + } } } From 339c9a93f473a9e044ed9477162266d7b3b20035 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:20:19 +0530 Subject: [PATCH 070/130] Update and rename FibCalc.java to Fibonacci.java --- .../com/thealgorithms/maths/{FibCalc.java => Fibonacci.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/com/thealgorithms/maths/{FibCalc.java => Fibonacci.java} (94%) diff --git a/src/main/java/com/thealgorithms/maths/FibCalc.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java similarity index 94% rename from src/main/java/com/thealgorithms/maths/FibCalc.java rename to src/main/java/com/thealgorithms/maths/Fibonacci.java index b99f85a9dc15..c1f76d24c37b 100644 --- a/src/main/java/com/thealgorithms/maths/FibCalc.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -1,6 +1,6 @@ import java.math.BigInteger; -public class FibCalc { +public class F { public static BigInteger calFib(int n) { if (n <= 1) { return BigInteger.valueOf(n); From 66607ff6572f2959e77314f806ed3e461870fff5 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:20:55 +0530 Subject: [PATCH 071/130] Update Fibonacci.java --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index c1f76d24c37b..cd8306f31f06 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -1,6 +1,6 @@ import java.math.BigInteger; -public class F { +public class Fibonacci { public static BigInteger calFib(int n) { if (n <= 1) { return BigInteger.valueOf(n); From 8969263022bc786790ba7062ebe03315d3cfcf08 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:23:48 +0530 Subject: [PATCH 072/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 6a4278a3e7ce..d3b33b679780 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,11 +1,10 @@ -import java.math.BigInteger; - public final class FibonacciNumber { private FibonacciNumber() { } // Compute the limit for n that fits in a long - private static final int argLimit = 92; + // Reducing the limit to 70 due to incorrect results for larger inputs + private static final int argLimit = 70; public static BigInteger nthFibonacci(int n) { if (n > argLimit) { From 3bc67d50a520e79a64d110c8dc787f0689702d2f Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:24:20 +0530 Subject: [PATCH 073/130] Update FibonacciNumberTest.java --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 07bcc9b83519..25a0f84a47c4 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -10,7 +10,7 @@ public class FibonacciNumberTest { public void returnsCorrectValues() { for (int n = 0; n <= 92; ++n) { final var actual = FibonacciNumber.nthFibonacci(n); - final var expected = FibCalc.calFib(n); + final var expected = Fibonacci.calFib(n); System.out.println("n = " + n); assertEquals(expected, actual); } From 049a818aec553236833f027335f4b878f1c0184b Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:25:04 +0530 Subject: [PATCH 074/130] Update FibonacciNumberTest.java --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 25a0f84a47c4..4f8c56d87e08 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -8,7 +8,7 @@ public class FibonacciNumberTest { @Test public void returnsCorrectValues() { - for (int n = 0; n <= 92; ++n) { + for (int n = 0; n <= 70; ++n) { final var actual = FibonacciNumber.nthFibonacci(n); final var expected = Fibonacci.calFib(n); System.out.println("n = " + n); From ab6b1c3518c60de1902032c71c4dd63dade45b14 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:28:07 +0530 Subject: [PATCH 075/130] Update Fibonacci.java --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index cd8306f31f06..c4da7a9af2d8 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -2,16 +2,23 @@ public class Fibonacci { public static BigInteger calFib(int n) { + if (n < 0) { + throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); + } + if (n <= 1) { return BigInteger.valueOf(n); } + BigInteger prev = BigInteger.ZERO; BigInteger current = BigInteger.ONE; + for (int i = 2; i <= n; i++) { BigInteger next = prev.add(current); prev = current; current = next; } + return current; } } From 859e0bdbc7545c95aac3b9c5c8784e384b12643f Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:29:43 +0530 Subject: [PATCH 076/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index d3b33b679780..1843fce63612 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,3 +1,5 @@ +// Explanation:- https://en.wikipedia.org/wiki/Fibonacci_sequence#Binet's_formula + public final class FibonacciNumber { private FibonacciNumber() { } From 5460411a92e8ad31fc1479253a24fafc3624301b Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:31:11 +0530 Subject: [PATCH 077/130] Update and rename FibCalcTest.java to FibonacciTest.java --- .../maths/{FibCalcTest.java => FibonacciTest.java} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename src/test/java/com/thealgorithms/maths/{FibCalcTest.java => FibonacciTest.java} (56%) diff --git a/src/test/java/com/thealgorithms/maths/FibCalcTest.java b/src/test/java/com/thealgorithms/maths/FibonacciTest.java similarity index 56% rename from src/test/java/com/thealgorithms/maths/FibCalcTest.java rename to src/test/java/com/thealgorithms/maths/FibonacciTest.java index e6372d5ef2ea..5e3bd4e19ec3 100644 --- a/src/test/java/com/thealgorithms/maths/FibCalcTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciTest.java @@ -3,26 +3,26 @@ import java.math.BigInteger; import org.junit.jupiter.api.Test; -public class FibCalcTest { +public class FiboTest { @Test public void checkValueAtZero() { - assertEquals(BigInteger.ZERO, FibCalc.calFib(0)); + assertEquals(BigInteger.ZERO, Fibonacci.calFib(0)); } @Test public void checkValueAtOne() { - assertEquals(BigInteger.ONE, FibCalc.calFib(1)); + assertEquals(BigInteger.ONE, Fibonacci.calFib(1)); } @Test public void checkValueAtTwo() { - assertEquals(BigInteger.ONE, FibCalc.calFib(2)); + assertEquals(BigInteger.ONE, Fibonacci.calFib(2)); } @Test public void checkRecurenceRelation() { for (int i = 0; i < 100; ++i) { - assertEquals(FibCalc.calFib(i + 2), FibCalc.calFib(i + 1).add(FibCalc.calFib(i))); + assertEquals(Fibonacci.calFib(i + 2), Fibonacci.calFib(i + 1).add(Fibonacci.calFib(i))); } } } From b430ff4a5e4a920e7b844b2734356201b5fe3525 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:34:08 +0530 Subject: [PATCH 078/130] Update FibonacciNumber.java --- .../java/com/thealgorithms/maths/FibonacciNumber.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 1843fce63612..d9264bae66e9 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,5 +1,7 @@ // Explanation:- https://en.wikipedia.org/wiki/Fibonacci_sequence#Binet's_formula +import java.math.BigInteger; + public final class FibonacciNumber { private FibonacciNumber() { } @@ -9,10 +11,18 @@ private FibonacciNumber() { private static final int argLimit = 70; public static BigInteger nthFibonacci(int n) { + if (n < 0) { + throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); + } + if (n > argLimit) { throw new IllegalArgumentException("Input 'n' is too large to fit into a long."); } + if (n <= 1) { + return BigInteger.valueOf(n); + } + // Calculate the nth Fibonacci number using the golden ratio formula final double sqrt5 = Math.sqrt(5); final double phi = (1 + sqrt5) / 2; From 89642b108a5c9e5fa76b077346dc67f27ac1c817 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:35:41 +0530 Subject: [PATCH 079/130] Update Fibonacci.java From 4f0b0f4ecf611eb69099fe1cab5d02722a9a21b4 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:38:55 +0530 Subject: [PATCH 080/130] Update Fibonacci.java --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index c4da7a9af2d8..9686860d0afa 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -4,21 +4,17 @@ public class Fibonacci { public static BigInteger calFib(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); - } - + } if (n <= 1) { return BigInteger.valueOf(n); - } - + } BigInteger prev = BigInteger.ZERO; - BigInteger current = BigInteger.ONE; - + BigInteger current = BigInteger.ONE; for (int i = 2; i <= n; i++) { BigInteger next = prev.add(current); prev = current; current = next; - } - + } return current; } } From d2c738fcdf339c25f4d631083633eef157a38082 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:42:01 +0530 Subject: [PATCH 081/130] Update Fibonacci.java --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index 9686860d0afa..bc312086e180 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -4,17 +4,21 @@ public class Fibonacci { public static BigInteger calFib(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); - } + } + if (n <= 1) { return BigInteger.valueOf(n); - } + } + BigInteger prev = BigInteger.ZERO; - BigInteger current = BigInteger.ONE; + BigInteger current = BigInteger.ONE; + for (int i = 2; i <= n; i++) { BigInteger next = prev.add(current); prev = current; current = next; - } + } + return current; } } From 8a9b65c326452ba360e952d4d18f7ac6285fe820 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:45:10 +0530 Subject: [PATCH 082/130] Update FibonacciTest.java --- src/test/java/com/thealgorithms/maths/FibonacciTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciTest.java b/src/test/java/com/thealgorithms/maths/FibonacciTest.java index 5e3bd4e19ec3..ffc579597337 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciTest.java @@ -3,7 +3,7 @@ import java.math.BigInteger; import org.junit.jupiter.api.Test; -public class FiboTest { +public class FibonacciTest { @Test public void checkValueAtZero() { assertEquals(BigInteger.ZERO, Fibonacci.calFib(0)); From 53545a6ad4af07aa41c150db89d49af8a59e0369 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Thu, 12 Oct 2023 22:52:06 +0530 Subject: [PATCH 083/130] Update Fibonacci.java --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index bc312086e180..363880d894ba 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -5,20 +5,20 @@ public static BigInteger calFib(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } - + if (n <= 1) { return BigInteger.valueOf(n); } - + BigInteger prev = BigInteger.ZERO; BigInteger current = BigInteger.ONE; - + for (int i = 2; i <= n; i++) { BigInteger next = prev.add(current); prev = current; current = next; } - + return current; } } From 62cd87ce308662b06da4b041f8e0e5857c6dcd60 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 07:08:04 +0530 Subject: [PATCH 084/130] Update src/main/java/com/thealgorithms/maths/Fibonacci.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index 363880d894ba..1a51328cbf85 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -1,6 +1,8 @@ import java.math.BigInteger; -public class Fibonacci { +public final class Fibonacci { + private Fibonacci() { + } public static BigInteger calFib(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); From 227e08cfa83e776f6dfb98d88137435b388228cb Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 07:08:22 +0530 Subject: [PATCH 085/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index d9264bae66e9..e94e9ee0107c 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -27,7 +27,7 @@ public static BigInteger nthFibonacci(int n) { final double sqrt5 = Math.sqrt(5); final double phi = (1 + sqrt5) / 2; final double psi = (1 - sqrt5) / 2; - double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; + final double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; // Round to the nearest integer and convert to BigInteger return BigInteger.valueOf(Math.round(result)); From 7fc9e742cd277b73f10cc0f030abdd8977bf0d9f Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 07:08:37 +0530 Subject: [PATCH 086/130] Update src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 4f8c56d87e08..2cd19cf93368 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -11,7 +11,6 @@ public void returnsCorrectValues() { for (int n = 0; n <= 70; ++n) { final var actual = FibonacciNumber.nthFibonacci(n); final var expected = Fibonacci.calFib(n); - System.out.println("n = " + n); assertEquals(expected, actual); } } From e629bb3dc96f257a1aa1b42f843a8396e008c174 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 07:08:58 +0530 Subject: [PATCH 087/130] Update src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 2cd19cf93368..1bc3a93da39a 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -2,7 +2,6 @@ import java.math.BigInteger; import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.provider.ValueSource; public class FibonacciNumberTest { From 766b40c82c3c11a3c23600b524d4b5a71a104b86 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 10:19:36 +0530 Subject: [PATCH 088/130] Update FibonacciTest.java --- .../java/com/thealgorithms/maths/FibonacciTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciTest.java b/src/test/java/com/thealgorithms/maths/FibonacciTest.java index ffc579597337..bdb373c2f8b6 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciTest.java @@ -1,4 +1,5 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.math.BigInteger; import org.junit.jupiter.api.Test; @@ -20,9 +21,16 @@ public void checkValueAtTwo() { } @Test - public void checkRecurenceRelation() { + public void checkRecurrenceRelation() { for (int i = 0; i < 100; ++i) { assertEquals(Fibonacci.calFib(i + 2), Fibonacci.calFib(i + 1).add(Fibonacci.calFib(i))); } } + + @Test + public void checkNegativeInput() { + assertThrows(IllegalArgumentException.class, () -> { + Fibonacci.calFib(-1); + }); + } } From a32824098dba7161dbac58bbf4a81e3c6bf7aabe Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 10:21:50 +0530 Subject: [PATCH 089/130] Update FibonacciNumberTest.java --- .../thealgorithms/maths/FibonacciNumberTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 1bc3a93da39a..2b33fa06a509 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,4 +1,5 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.math.BigInteger; import org.junit.jupiter.api.Test; @@ -13,4 +14,19 @@ public void returnsCorrectValues() { assertEquals(expected, actual); } } + + @Test + public void throwsIllegalArgumentExceptionForNegativeInput() { + assertThrows(IllegalArgumentException.class, () -> { + FibonacciNumber.nthFibonacci(-1); + }); + } + + @Test + public void throwsIllegalArgumentExceptionForLargeInput() { + assertThrows(IllegalArgumentException.class, () -> { + // You can choose a large value for n here, e.g., 1000 + FibonacciNumber.nthFibonacci(1000); + }); + } } From e7367b5e4289acf1365d7e7bcf2473e110a9eed4 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 10:25:11 +0530 Subject: [PATCH 090/130] Update FibonacciNumberTest.java --- .../java/com/thealgorithms/maths/FibonacciNumberTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 2b33fa06a509..d0ffae41a128 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -17,9 +17,7 @@ public void returnsCorrectValues() { @Test public void throwsIllegalArgumentExceptionForNegativeInput() { - assertThrows(IllegalArgumentException.class, () -> { - FibonacciNumber.nthFibonacci(-1); - }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonacci(-1); }); } @Test From 106e5b4ef3695e7249e8deb27eb2d14e1891720e Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 10:25:58 +0530 Subject: [PATCH 091/130] Update FibonacciTest.java --- src/test/java/com/thealgorithms/maths/FibonacciTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciTest.java b/src/test/java/com/thealgorithms/maths/FibonacciTest.java index bdb373c2f8b6..8453aeec2ddc 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciTest.java @@ -29,8 +29,6 @@ public void checkRecurrenceRelation() { @Test public void checkNegativeInput() { - assertThrows(IllegalArgumentException.class, () -> { - Fibonacci.calFib(-1); - }); + assertThrows(IllegalArgumentException.class, () -> { Fibonacci.calFib(-1); }); } } From 87894407aaad004a3e01770a4d4d699f184dbd6e Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:25:26 +0530 Subject: [PATCH 092/130] Update src/main/java/com/thealgorithms/maths/Fibonacci.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index 1a51328cbf85..0d80634ab388 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -1,3 +1,5 @@ +package com.thealgorithms.maths; + import java.math.BigInteger; public final class Fibonacci { From ae09b5fcd53244fba8bdc50cc6a49fdd79948143 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:25:37 +0530 Subject: [PATCH 093/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index e94e9ee0107c..c25c8c63c3e3 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,4 +1,5 @@ // Explanation:- https://en.wikipedia.org/wiki/Fibonacci_sequence#Binet's_formula +package com.thealgorithms.maths; import java.math.BigInteger; From bc0112bb9eaef9aa3a1d7f03da6a1fd9c5b619c2 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:25:47 +0530 Subject: [PATCH 094/130] Update src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index d0ffae41a128..55ecc1b17f78 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -1,3 +1,5 @@ +package com.thealgorithms.maths; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; From 567606a9943e0b7e390a82e48c1da111de5e6844 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:25:55 +0530 Subject: [PATCH 095/130] Update src/test/java/com/thealgorithms/maths/FibonacciTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciTest.java b/src/test/java/com/thealgorithms/maths/FibonacciTest.java index 8453aeec2ddc..cbf3d1852903 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciTest.java @@ -1,3 +1,5 @@ +package com.thealgorithms.maths; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; From 191970bf00db2b208a10bc9e19079cd9e599be6c Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:26:07 +0530 Subject: [PATCH 096/130] Update src/main/java/com/thealgorithms/maths/Fibonacci.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index 0d80634ab388..9352b3aafd7f 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -5,7 +5,7 @@ public final class Fibonacci { private Fibonacci() { } - public static BigInteger calFib(int n) { + public static BigInteger calFib(final int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } From 7bc0b100c96bad9ecacda39ceea57a4c6fa873c4 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:26:23 +0530 Subject: [PATCH 097/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index c25c8c63c3e3..9fcbdc0de0c0 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,8 +1,6 @@ // Explanation:- https://en.wikipedia.org/wiki/Fibonacci_sequence#Binet's_formula package com.thealgorithms.maths; -import java.math.BigInteger; - public final class FibonacciNumber { private FibonacciNumber() { } From 8bc8465ad4890b460c071d5a13f0aa97929fbf18 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:26:37 +0530 Subject: [PATCH 098/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 9fcbdc0de0c0..76dc95da85d4 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -7,7 +7,7 @@ private FibonacciNumber() { // Compute the limit for n that fits in a long // Reducing the limit to 70 due to incorrect results for larger inputs - private static final int argLimit = 70; + public static final int MAX_ARG = 70; public static BigInteger nthFibonacci(int n) { if (n < 0) { From 5581ea9016b04f4dd2e047f2e8dfc2347369e67b Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:26:59 +0530 Subject: [PATCH 099/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 76dc95da85d4..bf78b3c11d64 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -9,7 +9,7 @@ private FibonacciNumber() { // Reducing the limit to 70 due to incorrect results for larger inputs public static final int MAX_ARG = 70; - public static BigInteger nthFibonacci(int n) { + public static long nthFibonacci(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } From b22319694ec718316736adf9bdc3852674abd7ff Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:27:08 +0530 Subject: [PATCH 100/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index bf78b3c11d64..530458162c93 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -29,6 +29,6 @@ public static long nthFibonacci(int n) { final double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; // Round to the nearest integer and convert to BigInteger - return BigInteger.valueOf(Math.round(result)); + return Math.round(result); } } From b9ac5423130ed1bea46d84d1229e24a8edd551d1 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:27:17 +0530 Subject: [PATCH 101/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumber.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 530458162c93..c184c2da2c6a 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -19,7 +19,7 @@ public static long nthFibonacci(int n) { } if (n <= 1) { - return BigInteger.valueOf(n); + return n; } // Calculate the nth Fibonacci number using the golden ratio formula From ce069f237e0470fd44cdebd3eec7350de97219f2 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:27:25 +0530 Subject: [PATCH 102/130] Update src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 55ecc1b17f78..fa5b095af231 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -10,7 +10,7 @@ public class FibonacciNumberTest { @Test public void returnsCorrectValues() { - for (int n = 0; n <= 70; ++n) { + for (int n = 0; n <= FibonacciNumber.MAX_ARG; ++n) { final var actual = FibonacciNumber.nthFibonacci(n); final var expected = Fibonacci.calFib(n); assertEquals(expected, actual); From a9434719ef5b94282e6532116295781438d1b15f Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:27:36 +0530 Subject: [PATCH 103/130] Update src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index fa5b095af231..26e60ba35041 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -11,7 +11,7 @@ public class FibonacciNumberTest { @Test public void returnsCorrectValues() { for (int n = 0; n <= FibonacciNumber.MAX_ARG; ++n) { - final var actual = FibonacciNumber.nthFibonacci(n); + final var actual = BigInteger.valueOf(FibonacciNumber.nthFibonacci(n)); final var expected = Fibonacci.calFib(n); assertEquals(expected, actual); } From fd03500abed7a85158a0abb52e359b8a44369930 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:27:46 +0530 Subject: [PATCH 104/130] Update src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java index 26e60ba35041..8964d1968323 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java @@ -25,8 +25,7 @@ public void throwsIllegalArgumentExceptionForNegativeInput() { @Test public void throwsIllegalArgumentExceptionForLargeInput() { assertThrows(IllegalArgumentException.class, () -> { - // You can choose a large value for n here, e.g., 1000 - FibonacciNumber.nthFibonacci(1000); + FibonacciNumber.nthFibonacci(FibonacciNumber.MAX_ARG+1); }); } } From a09b2c3a63e37300937eccbea691ef4cb34a8d8d Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:29:18 +0530 Subject: [PATCH 105/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index c184c2da2c6a..570c1176e0ab 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -5,8 +5,9 @@ public final class FibonacciNumber { private FibonacciNumber() { } - // Compute the limit for n that fits in a long - // Reducing the limit to 70 due to incorrect results for larger inputs + // Compute the limit for 'n' that fits in a long data type. + // Reducing the limit to 70 due to potential floating-point arithmetic errors + // that may result in incorrect results for larger inputs. public static final int MAX_ARG = 70; public static long nthFibonacci(int n) { From 324086a5f83be7e604d4daa53123eef68a00bed5 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:30:24 +0530 Subject: [PATCH 106/130] Update FibonacciNumber.java --- src/main/java/com/thealgorithms/maths/FibonacciNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index 570c1176e0ab..bb16de0f4ee6 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -16,7 +16,7 @@ public static long nthFibonacci(int n) { } if (n > argLimit) { - throw new IllegalArgumentException("Input 'n' is too large to fit into a long."); + throw new IllegalArgumentException("Input 'n' is too large!"); // Check if 'n' exceeds the range that can be accommodated by a long data type. } if (n <= 1) { From 77f46359a4a2957d9a4a5ee597ec03c9db6ccefa Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:32:32 +0530 Subject: [PATCH 107/130] Update Fibonacci.java --- .../java/com/thealgorithms/maths/Fibonacci.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index 9352b3aafd7f..236e22d6fc31 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -2,9 +2,22 @@ import java.math.BigInteger; +/** + * This class provides methods for calculating Fibonacci numbers using BigInteger for large values of 'n'. + */ public final class Fibonacci { + private Fibonacci() { + // Private constructor to prevent instantiation of this utility class. } + + /** + * Calculates the nth Fibonacci number. + * + * @param n The index of the Fibonacci number to calculate. + * @return The nth Fibonacci number as a BigInteger. + * @throws IllegalArgumentException if the input 'n' is a negative integer. + */ public static BigInteger calFib(final int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); @@ -13,7 +26,7 @@ public static BigInteger calFib(final int n) { if (n <= 1) { return BigInteger.valueOf(n); } - + BigInteger prev = BigInteger.ZERO; BigInteger current = BigInteger.ONE; From 044a9c44a57126705529ae7ce1eb1ad4391a2b63 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:33:52 +0530 Subject: [PATCH 108/130] Update FibonacciNumber.java --- .../thealgorithms/maths/FibonacciNumber.java | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java index bb16de0f4ee6..1d6875004da7 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumber.java @@ -1,22 +1,37 @@ -// Explanation:- https://en.wikipedia.org/wiki/Fibonacci_sequence#Binet's_formula package com.thealgorithms.maths; +/** + * This class provides methods for calculating Fibonacci numbers using Binet's formula. + * Binet's formula is based on the golden ratio and allows computing Fibonacci numbers efficiently. + * + * @see Binet's formula on Wikipedia + */ public final class FibonacciNumber { private FibonacciNumber() { + // Private constructor to prevent instantiation of this utility class. } - // Compute the limit for 'n' that fits in a long data type. - // Reducing the limit to 70 due to potential floating-point arithmetic errors - // that may result in incorrect results for larger inputs. + /** + * Compute the limit for 'n' that fits in a long data type. + * Reducing the limit to 70 due to potential floating-point arithmetic errors + * that may result in incorrect results for larger inputs. + */ public static final int MAX_ARG = 70; + /** + * Calculates the nth Fibonacci number using Binet's formula. + * + * @param n The index of the Fibonacci number to calculate. + * @return The nth Fibonacci number as a long. + * @throws IllegalArgumentException if the input 'n' is negative or exceeds the range of a long data type. + */ public static long nthFibonacci(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } - if (n > argLimit) { - throw new IllegalArgumentException("Input 'n' is too large!"); // Check if 'n' exceeds the range that can be accommodated by a long data type. + if (n > MAX_ARG) { + throw new IllegalArgumentException("Input 'n' is too large to fit into a long data type."); } if (n <= 1) { @@ -29,7 +44,7 @@ public static long nthFibonacci(int n) { final double psi = (1 - sqrt5) / 2; final double result = (Math.pow(phi, n) - Math.pow(psi, n)) / sqrt5; - // Round to the nearest integer and convert to BigInteger + // Round to the nearest integer and return as a long return Math.round(result); } } From 04539a05a366f99b6ac4e6b34d3a46939ace377c Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:34:37 +0530 Subject: [PATCH 109/130] Update and rename FibonacciNumber.java to FibonacciNumberGoldenRation.java --- .../{FibonacciNumber.java => FibonacciNumberGoldenRation.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/com/thealgorithms/maths/{FibonacciNumber.java => FibonacciNumberGoldenRation.java} (97%) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java similarity index 97% rename from src/main/java/com/thealgorithms/maths/FibonacciNumber.java rename to src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java index 1d6875004da7..76aac20c8b61 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java @@ -6,7 +6,7 @@ * * @see Binet's formula on Wikipedia */ -public final class FibonacciNumber { +public final class FibonacciNumberGoldenRation { private FibonacciNumber() { // Private constructor to prevent instantiation of this utility class. } From f054ad61e5b33c88fc3bb331baa7c19c435098b4 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:35:43 +0530 Subject: [PATCH 110/130] Update and rename FibonacciNumberTest.java to FibonacciNumberGoldenRationTest.java --- ...acciNumberTest.java => FibonacciNumberGoldenRationTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/test/java/com/thealgorithms/maths/{FibonacciNumberTest.java => FibonacciNumberGoldenRationTest.java} (95%) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java similarity index 95% rename from src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java rename to src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java index 8964d1968323..bfb5b0aaf53b 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java @@ -6,7 +6,7 @@ import java.math.BigInteger; import org.junit.jupiter.api.Test; -public class FibonacciNumberTest { +public class FibonacciNumberGoldenRationTest { @Test public void returnsCorrectValues() { From f34827820aa73dd2fe5b3eb104abf53e8f2331b9 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:39:46 +0530 Subject: [PATCH 111/130] Update Fibonacci.java --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index 236e22d6fc31..8a017f8e79d2 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -18,7 +18,7 @@ private Fibonacci() { * @return The nth Fibonacci number as a BigInteger. * @throws IllegalArgumentException if the input 'n' is a negative integer. */ - public static BigInteger calFib(final int n) { + public static BigInteger calFibcompute(final int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } From 466c4d55179891fe05322170e6955c47318f8c05 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:40:18 +0530 Subject: [PATCH 112/130] Update FibonacciNumberGoldenRation.java --- .../com/thealgorithms/maths/FibonacciNumberGoldenRation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java index 76aac20c8b61..4b85b3ffff79 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java @@ -25,7 +25,7 @@ private FibonacciNumber() { * @return The nth Fibonacci number as a long. * @throws IllegalArgumentException if the input 'n' is negative or exceeds the range of a long data type. */ - public static long nthFibonacci(int n) { + public static long nthFibonaccicompute(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } From 440da9651ccde91e22e37bb5f498b2a694fa8562 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:41:34 +0530 Subject: [PATCH 113/130] Update FibonacciNumberGoldenRationTest.java --- .../maths/FibonacciNumberGoldenRationTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java index bfb5b0aaf53b..63639f241cc9 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java @@ -11,21 +11,21 @@ public class FibonacciNumberGoldenRationTest { @Test public void returnsCorrectValues() { for (int n = 0; n <= FibonacciNumber.MAX_ARG; ++n) { - final var actual = BigInteger.valueOf(FibonacciNumber.nthFibonacci(n)); - final var expected = Fibonacci.calFib(n); + final var actual = BigInteger.valueOf(FibonacciNumber.nthFibonaccicompute(n)); + final var expected = Fibonacci.calFibcompute(n); assertEquals(expected, actual); } } @Test public void throwsIllegalArgumentExceptionForNegativeInput() { - assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonacci(-1); }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonaccicompute(-1); }); } @Test public void throwsIllegalArgumentExceptionForLargeInput() { assertThrows(IllegalArgumentException.class, () -> { - FibonacciNumber.nthFibonacci(FibonacciNumber.MAX_ARG+1); + FibonacciNumber.nthFibonaccicompute(FibonacciNumber.MAX_ARG+1); }); } } From f722307ad6954b3bb7db0fbf0df78e4dc5426772 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:42:25 +0530 Subject: [PATCH 114/130] Update FibonacciTest.java --- .../java/com/thealgorithms/maths/FibonacciTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciTest.java b/src/test/java/com/thealgorithms/maths/FibonacciTest.java index cbf3d1852903..aab61f6a057b 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciTest.java @@ -9,28 +9,28 @@ public class FibonacciTest { @Test public void checkValueAtZero() { - assertEquals(BigInteger.ZERO, Fibonacci.calFib(0)); + assertEquals(BigInteger.ZERO, Fibonacci.calFibcompute(0)); } @Test public void checkValueAtOne() { - assertEquals(BigInteger.ONE, Fibonacci.calFib(1)); + assertEquals(BigInteger.ONE, Fibonacci.calFibcompute(1)); } @Test public void checkValueAtTwo() { - assertEquals(BigInteger.ONE, Fibonacci.calFib(2)); + assertEquals(BigInteger.ONE, Fibonacci.calFibcompute(2)); } @Test public void checkRecurrenceRelation() { for (int i = 0; i < 100; ++i) { - assertEquals(Fibonacci.calFib(i + 2), Fibonacci.calFib(i + 1).add(Fibonacci.calFib(i))); + assertEquals(Fibonacci.calFibcompute(i + 2), Fibonacci.calFibcompute(i + 1).add(Fibonacci.calFibcompute(i))); } } @Test public void checkNegativeInput() { - assertThrows(IllegalArgumentException.class, () -> { Fibonacci.calFib(-1); }); + assertThrows(IllegalArgumentException.class, () -> { Fibonacci.calFibcompute(-1); }); } } From 6f43ecb079bef8ff02b9a8aa09dec2c477abbe70 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:44:46 +0530 Subject: [PATCH 115/130] Update Fibonacci.java --- src/main/java/com/thealgorithms/maths/Fibonacci.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/Fibonacci.java index 8a017f8e79d2..4a4cdbd5b3ca 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/Fibonacci.java @@ -26,7 +26,7 @@ public static BigInteger calFibcompute(final int n) { if (n <= 1) { return BigInteger.valueOf(n); } - + BigInteger prev = BigInteger.ZERO; BigInteger current = BigInteger.ONE; From 798517061996ad2849a2fa7d96fccded7a8d3803 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:45:24 +0530 Subject: [PATCH 116/130] Update FibonacciNumberGoldenRationTest.java From 902ba1a67e5c23db036f4fdda1199e26e15403c1 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:47:11 +0530 Subject: [PATCH 117/130] Update FibonacciNumberGoldenRationTest.java --- .../thealgorithms/maths/FibonacciNumberGoldenRationTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java index 63639f241cc9..263dddf42491 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java @@ -24,8 +24,6 @@ public void throwsIllegalArgumentExceptionForNegativeInput() { @Test public void throwsIllegalArgumentExceptionForLargeInput() { - assertThrows(IllegalArgumentException.class, () -> { - FibonacciNumber.nthFibonaccicompute(FibonacciNumber.MAX_ARG+1); - }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonaccicompute(FibonacciNumber.MAX_ARG + 1); }); } } From c356a1d017a84f856fd0385d51aa9cfedf777089 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:50:47 +0530 Subject: [PATCH 118/130] Update FibonacciNumberGoldenRation.java From a0af07087389e4469ff6cc46cff8b5348b7365e6 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 20:57:00 +0530 Subject: [PATCH 119/130] Update FibonacciNumberGoldenRation.java --- .../com/thealgorithms/maths/FibonacciNumberGoldenRation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java index 4b85b3ffff79..b3b803f4a643 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java @@ -7,7 +7,7 @@ * @see Binet's formula on Wikipedia */ public final class FibonacciNumberGoldenRation { - private FibonacciNumber() { + private FibonacciNumberGoldenRation() { // Private constructor to prevent instantiation of this utility class. } From e6d1bd94dd66783b67981c5ec9710a484e15d979 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 21:03:21 +0530 Subject: [PATCH 120/130] Update FibonacciNumberGoldenRationTest.java --- .../maths/FibonacciNumberGoldenRationTest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java index 263dddf42491..d2ad07783576 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java @@ -10,20 +10,20 @@ public class FibonacciNumberGoldenRationTest { @Test public void returnsCorrectValues() { - for (int n = 0; n <= FibonacciNumber.MAX_ARG; ++n) { - final var actual = BigInteger.valueOf(FibonacciNumber.nthFibonaccicompute(n)); - final var expected = Fibonacci.calFibcompute(n); - assertEquals(expected, actual); + for (int n = 0; n <= FibonacciNumberGoldenRation.MAX_ARG; ++n) { + final var actual = FibonacciNumberGoldenRation.nthFibonaccicompute(n); + final var expected = Fibonacci.calFib(n); + assertEquals(expected, BigInteger.valueOf(actual)); } } @Test public void throwsIllegalArgumentExceptionForNegativeInput() { - assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonaccicompute(-1); }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumberGoldenRation.nthFibonaccicompute(-1); }); } @Test public void throwsIllegalArgumentExceptionForLargeInput() { - assertThrows(IllegalArgumentException.class, () -> { FibonacciNumber.nthFibonaccicompute(FibonacciNumber.MAX_ARG + 1); }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumberGoldenRation.nthFibonaccicompute(FibonacciNumberGoldenRation.MAX_ARG + 1); }); } } From e6da34577cdbc86006bd10285a3db00fb891097e Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Fri, 13 Oct 2023 21:05:44 +0530 Subject: [PATCH 121/130] Update FibonacciNumberGoldenRationTest.java --- .../thealgorithms/maths/FibonacciNumberGoldenRationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java index d2ad07783576..4c598a0eac13 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java @@ -12,7 +12,7 @@ public class FibonacciNumberGoldenRationTest { public void returnsCorrectValues() { for (int n = 0; n <= FibonacciNumberGoldenRation.MAX_ARG; ++n) { final var actual = FibonacciNumberGoldenRation.nthFibonaccicompute(n); - final var expected = Fibonacci.calFib(n); + final var expected = Fibonacci.calFibcompute(n); assertEquals(expected, BigInteger.valueOf(actual)); } } From faca3e10d3414c92d91615bb80e0879f31bac58d Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:14:40 +0530 Subject: [PATCH 122/130] Update src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../com/thealgorithms/maths/FibonacciNumberGoldenRation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java index b3b803f4a643..0de374b5cbe2 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java @@ -31,7 +31,7 @@ public static long nthFibonaccicompute(int n) { } if (n > MAX_ARG) { - throw new IllegalArgumentException("Input 'n' is too large to fit into a long data type."); + throw new IllegalArgumentException("Input 'n' is to big to give accurate result"); } if (n <= 1) { From 6d4f92be8c5577a2afb130458d2288827407e6ae Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:36:29 +0530 Subject: [PATCH 123/130] Update and rename Fibonacci.java to FibonacciLoop.java --- .../maths/{Fibonacci.java => FibonacciLoop.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/main/java/com/thealgorithms/maths/{Fibonacci.java => FibonacciLoop.java} (92%) diff --git a/src/main/java/com/thealgorithms/maths/Fibonacci.java b/src/main/java/com/thealgorithms/maths/FibonacciLoop.java similarity index 92% rename from src/main/java/com/thealgorithms/maths/Fibonacci.java rename to src/main/java/com/thealgorithms/maths/FibonacciLoop.java index 4a4cdbd5b3ca..87ebb67fbc73 100644 --- a/src/main/java/com/thealgorithms/maths/Fibonacci.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciLoop.java @@ -5,7 +5,7 @@ /** * This class provides methods for calculating Fibonacci numbers using BigInteger for large values of 'n'. */ -public final class Fibonacci { +public final class FibonacciL { private Fibonacci() { // Private constructor to prevent instantiation of this utility class. @@ -18,7 +18,7 @@ private Fibonacci() { * @return The nth Fibonacci number as a BigInteger. * @throws IllegalArgumentException if the input 'n' is a negative integer. */ - public static BigInteger calFibcompute(final int n) { + public static BigInteger compute(final int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } From bba6ef8d7125ae1e784025821a6c61775eb4b46f Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:37:11 +0530 Subject: [PATCH 124/130] Update FibonacciNumberGoldenRation.java --- .../com/thealgorithms/maths/FibonacciNumberGoldenRation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java index 0de374b5cbe2..e16a5a1e101f 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java @@ -25,7 +25,7 @@ private FibonacciNumberGoldenRation() { * @return The nth Fibonacci number as a long. * @throws IllegalArgumentException if the input 'n' is negative or exceeds the range of a long data type. */ - public static long nthFibonaccicompute(int n) { + public static long compute(int n) { if (n < 0) { throw new IllegalArgumentException("Input 'n' must be a non-negative integer."); } From ca78d1b18bba9671ce94c27593319fad7465f2f3 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:38:08 +0530 Subject: [PATCH 125/130] Update FibonacciNumberGoldenRationTest.java --- .../maths/FibonacciNumberGoldenRationTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java index 4c598a0eac13..e3f7bf3e0fed 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberGoldenRationTest.java @@ -11,19 +11,19 @@ public class FibonacciNumberGoldenRationTest { @Test public void returnsCorrectValues() { for (int n = 0; n <= FibonacciNumberGoldenRation.MAX_ARG; ++n) { - final var actual = FibonacciNumberGoldenRation.nthFibonaccicompute(n); - final var expected = Fibonacci.calFibcompute(n); + final var actual = FibonacciNumberGoldenRation.compute(n); + final var expected = FibonacciLoop.compute(n); assertEquals(expected, BigInteger.valueOf(actual)); } } @Test public void throwsIllegalArgumentExceptionForNegativeInput() { - assertThrows(IllegalArgumentException.class, () -> { FibonacciNumberGoldenRation.nthFibonaccicompute(-1); }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumberGoldenRation.compute(-1); }); } @Test public void throwsIllegalArgumentExceptionForLargeInput() { - assertThrows(IllegalArgumentException.class, () -> { FibonacciNumberGoldenRation.nthFibonaccicompute(FibonacciNumberGoldenRation.MAX_ARG + 1); }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciNumberGoldenRation.compute(FibonacciNumberGoldenRation.MAX_ARG + 1); }); } } From 397f8c04af6618c9b670c28c167b405212976b17 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:39:22 +0530 Subject: [PATCH 126/130] Update and rename FibonacciTest.java to FibonacciLoopTest.java --- .../{FibonacciTest.java => FibonacciLoopTest.java} | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) rename src/test/java/com/thealgorithms/maths/{FibonacciTest.java => FibonacciLoopTest.java} (61%) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciTest.java b/src/test/java/com/thealgorithms/maths/FibonacciLoopTest.java similarity index 61% rename from src/test/java/com/thealgorithms/maths/FibonacciTest.java rename to src/test/java/com/thealgorithms/maths/FibonacciLoopTest.java index aab61f6a057b..93aec39765d4 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciLoopTest.java @@ -6,31 +6,31 @@ import java.math.BigInteger; import org.junit.jupiter.api.Test; -public class FibonacciTest { +public class FibonacciLoopTest { @Test public void checkValueAtZero() { - assertEquals(BigInteger.ZERO, Fibonacci.calFibcompute(0)); + assertEquals(BigInteger.ZERO, FibonacciLoop.compute(0)); } @Test public void checkValueAtOne() { - assertEquals(BigInteger.ONE, Fibonacci.calFibcompute(1)); + assertEquals(BigInteger.ONE, FibonacciLoop.compute(1)); } @Test public void checkValueAtTwo() { - assertEquals(BigInteger.ONE, Fibonacci.calFibcompute(2)); + assertEquals(BigInteger.ONE, FibonacciLoop.compute(2)); } @Test public void checkRecurrenceRelation() { for (int i = 0; i < 100; ++i) { - assertEquals(Fibonacci.calFibcompute(i + 2), Fibonacci.calFibcompute(i + 1).add(Fibonacci.calFibcompute(i))); + assertEquals(FibonacciLoop.compute(i + 2), FibonacciLoop.compute(i + 1).add(FibonacciLoop.compute(i))); } } @Test public void checkNegativeInput() { - assertThrows(IllegalArgumentException.class, () -> { Fibonacci.calFibcompute(-1); }); + assertThrows(IllegalArgumentException.class, () -> { FibonacciLoop.compute(-1); }); } } From d47ea128995e0ad603ee549b813f9567707b7e87 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:41:11 +0530 Subject: [PATCH 127/130] Update FibonacciLoop.java --- src/main/java/com/thealgorithms/maths/FibonacciLoop.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciLoop.java b/src/main/java/com/thealgorithms/maths/FibonacciLoop.java index 87ebb67fbc73..87cb7cd61d51 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciLoop.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciLoop.java @@ -5,7 +5,7 @@ /** * This class provides methods for calculating Fibonacci numbers using BigInteger for large values of 'n'. */ -public final class FibonacciL { +public final class FibonacciLoop { private Fibonacci() { // Private constructor to prevent instantiation of this utility class. From 21ebd33f987b806f1f243acb29c3e3ee1e90353d Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:43:54 +0530 Subject: [PATCH 128/130] Update FibonacciLoop.java --- src/main/java/com/thealgorithms/maths/FibonacciLoop.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciLoop.java b/src/main/java/com/thealgorithms/maths/FibonacciLoop.java index 87cb7cd61d51..de23a4305c3f 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciLoop.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciLoop.java @@ -7,7 +7,7 @@ */ public final class FibonacciLoop { - private Fibonacci() { + private FibonacciLoop() { // Private constructor to prevent instantiation of this utility class. } From f4f59d627004ec1ea17795374989a35d4226d4e2 Mon Sep 17 00:00:00 2001 From: Pronay Debnath Date: Sat, 14 Oct 2023 00:47:48 +0530 Subject: [PATCH 129/130] Update FibonacciNumberGoldenRation.java --- .../com/thealgorithms/maths/FibonacciNumberGoldenRation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java index e16a5a1e101f..47e629b7059f 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java @@ -31,7 +31,7 @@ public static long compute(int n) { } if (n > MAX_ARG) { - throw new IllegalArgumentException("Input 'n' is to big to give accurate result"); + throw new IllegalArgumentException("Input 'n' is too big to give accurate result"); } if (n <= 1) { From ff5df6a69b1ddb9e9f3e798074798919d0c9ec5b Mon Sep 17 00:00:00 2001 From: Piotr Idzik <65706193+vil02@users.noreply.github.com> Date: Fri, 13 Oct 2023 21:19:46 +0200 Subject: [PATCH 130/130] docs: add missing dot --- .../com/thealgorithms/maths/FibonacciNumberGoldenRation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java index 47e629b7059f..4df37a40f541 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberGoldenRation.java @@ -31,7 +31,7 @@ public static long compute(int n) { } if (n > MAX_ARG) { - throw new IllegalArgumentException("Input 'n' is too big to give accurate result"); + throw new IllegalArgumentException("Input 'n' is too big to give accurate result."); } if (n <= 1) {