From 5939792a9dbef599055b3cc88e9835e6065ce2f2 Mon Sep 17 00:00:00 2001
From: Krishna Vedala <7001608+kvedala@users.noreply.github.com>
Date: Thu, 25 Jun 2020 09:14:21 -0400
Subject: [PATCH 1/4] fix self-tests and unsigned comparision to zero
refer #897 and https://lgtm.com/projects/g/TheAlgorithms/C-Plus-Plus/rev/pr-f6e7cda8faf908e87511f30e782190233bdee68c
---
math/double_factorial.cpp | 35 +++++++++++++++++++++++++++++------
1 file changed, 29 insertions(+), 6 deletions(-)
diff --git a/math/double_factorial.cpp b/math/double_factorial.cpp
index 8e5ffcefa..1d1f7dae4 100644
--- a/math/double_factorial.cpp
+++ b/math/double_factorial.cpp
@@ -32,10 +32,33 @@ uint64_t double_factorial_recursive(uint64_t n) {
return n * double_factorial_recursive(n - 2);
}
-/// main function
-int main() {
- uint64_t n;
- std::cin >> n;
- assert(n >= 0);
- std::cout << double_factorial_iterative(n);
+/** Wrapper to run tests using both recursive and iterative implementations.
+ * The checks are only valid in debug builds due to the use of `assert()`
+ * statements.
+ * \param [in] n number to check double factorial for
+ * \param [in] expected expected result
+ */
+void test(uint64_t n, uint64_t expected) {
+ assert(double_factorial_iterative(n) == expected);
+ assert(double_factorial_recursive(n) == expected);
}
+
+/**
+ * Test implementations
+ */
+void tests() {
+ std::cout << "Test 1:\t n=5\t...";
+ test(5, 15);
+ std::cout << "passed\n";
+
+ std::cout << "Test 2:\t n=15\t...";
+ test(15, 2027025);
+ std::cout << "passed\n";
+
+ std::cout << "Test 3:\t n=0\t...";
+ test(0, 1);
+ std::cout << "passed\n";
+}
+
+/// main function
+int main() { tests(); }
From 66eb05e0daf68fdc43e0da3bf4a7b56038191b45 Mon Sep 17 00:00:00 2001
From: Krishna Vedala <7001608+kvedala@users.noreply.github.com>
Date: Thu, 25 Jun 2020 09:59:36 -0400
Subject: [PATCH 2/4] added wiki link in file brieff
---
math/double_factorial.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/math/double_factorial.cpp b/math/double_factorial.cpp
index 1d1f7dae4..a400ae147 100644
--- a/math/double_factorial.cpp
+++ b/math/double_factorial.cpp
@@ -1,8 +1,9 @@
/**
* @file
- * @brief Compute double factorial: \f$n!!\f$
+ * @brief Compute [double
+ * factorial](https://en.wikipedia.org/wiki/Double_factorial): \f$n!!\f$
*
- * Double factorial of a non-negative integer n, is defined as the product of
+ * Double factorial of a non-negative integer `n`, is defined as the product of
* all the integers from 1 to n that have the same parity (odd or even) as n.
*
It is also called as semifactorial of a number and is denoted by
* \f$n!!\f$
From e1b1c71e7cca268c9fbad41d2d6b315ff63b9756 Mon Sep 17 00:00:00 2001
From: Krishna Vedala <7001608+kvedala@users.noreply.github.com>
Date: Thu, 25 Jun 2020 14:40:47 -0400
Subject: [PATCH 3/4] Apply suggestions from code review
Co-authored-by: David Leal
---
math/double_factorial.cpp | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/math/double_factorial.cpp b/math/double_factorial.cpp
index a400ae147..db22cc672 100644
--- a/math/double_factorial.cpp
+++ b/math/double_factorial.cpp
@@ -61,5 +61,10 @@ void tests() {
std::cout << "passed\n";
}
-/// main function
-int main() { tests(); }
+/**
+ * Main function
+ */
+int main() {
+ tests();
+ return 0;
+}
From b1620ff2f57036bbd81faf57d09268d7b368c1a3 Mon Sep 17 00:00:00 2001
From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
Date: Thu, 25 Jun 2020 18:41:27 +0000
Subject: [PATCH 4/4] formatting source-code for
e1b1c71e7cca268c9fbad41d2d6b315ff63b9756
---
math/double_factorial.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/math/double_factorial.cpp b/math/double_factorial.cpp
index db22cc672..72feda60c 100644
--- a/math/double_factorial.cpp
+++ b/math/double_factorial.cpp
@@ -61,7 +61,7 @@ void tests() {
std::cout << "passed\n";
}
-/**
+/**
* Main function
*/
int main() {