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() {