From 88726b9425abbe67ac79472960d4f86a716d241a Mon Sep 17 00:00:00 2001 From: Du Yuanchao Date: Wed, 23 Sep 2020 00:50:00 +0800 Subject: [PATCH] Added math function power (#604) * added power algorithm * updating DIRECTORY.md * make test function static Co-authored-by: David Leal * Update misc/power_recursion.c Co-authored-by: David Leal * Update misc/power_recursion.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: David Leal * Update misc/power_recursion.c Co-authored-by: David Leal * Update misc/power_recursion.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: David Leal * Update misc/power_recursion.c Co-authored-by: David Leal * Update misc/power_recursion.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: David Leal * Update misc/power_recursion.c Co-authored-by: David Leal * Update misc/power.c Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: David Leal --- DIRECTORY.md | 2 ++ misc/power.c | 47 ++++++++++++++++++++++++++++++++++++++++++ misc/power_recursion.c | 40 +++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 misc/power.c create mode 100644 misc/power_recursion.c diff --git a/DIRECTORY.md b/DIRECTORY.md index f54d8fac..74162d49 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -249,6 +249,8 @@ * [Palindrome](https://github.com/TheAlgorithms/C/blob/master/misc/palindrome.c) * [Pid](https://github.com/TheAlgorithms/C/blob/master/misc/pid.c) * [Poly Add](https://github.com/TheAlgorithms/C/blob/master/misc/poly_add.c) + * [Power](https://github.com/TheAlgorithms/C/blob/master/misc/power.c) + * [Power Recursion](https://github.com/TheAlgorithms/C/blob/master/misc/power_recursion.c) * [Prime](https://github.com/TheAlgorithms/C/blob/master/misc/prime.c) * [Prime Factoriziation](https://github.com/TheAlgorithms/C/blob/master/misc/prime_factoriziation.c) * [Quartile](https://github.com/TheAlgorithms/C/blob/master/misc/quartile.c) diff --git a/misc/power.c b/misc/power.c new file mode 100644 index 00000000..d3b1358d --- /dev/null +++ b/misc/power.c @@ -0,0 +1,47 @@ +/** + * @file + * @brief Program to calculate + * [exponentiation](https://en.wikipedia.org/wiki/Exponentiation) + * + * @author [Du Yuanchao](https://github.com/shellhub) + */ +#include + +/** + * @brief Returns the value of the first argument raised to the power of the + * second argument. + * @param a the base. + * @param b the exponent. + * @returns the value {@code a}{@code b}. + */ +long power(int a, int b) +{ + long result = 1; + for (int i = 1; i <= b; ++i) + { + result *= a; + } + return result; +} + +/** + * @brief Test function + * @return void + */ +static void test() +{ + assert(power(0, 2) == 0); + assert(power(2, 3) == 8); + assert(power(2, 10) == 1024); + assert(power(3, 3) == 27); +} + +/** + * @brief Driver Code + * @returns 0 on exit + */ +int main() +{ + test(); + return 0; +} diff --git a/misc/power_recursion.c b/misc/power_recursion.c new file mode 100644 index 00000000..425e5907 --- /dev/null +++ b/misc/power_recursion.c @@ -0,0 +1,40 @@ +/** + * @file + * @brief Program to calculate + * [exponentiation](https://en.wikipedia.org/wiki/Exponentiation) using + * recursion algorithm. + * + * @author [Du Yuanchao](https://github.com/shellhub) + */ +#include + +/** + * @brief Returns the value of the first argument raised to the power of the + * second argument using recursion. + * @param a the base. + * @param b the exponent. + * @returns the value {@code a}{@code b}. + */ +long power(int a, int b) { return b == 0 ? 1 : a * power(a, b - 1); } + +/** + * @brief Test function + * @return void + */ +static void test() +{ + assert(power(0, 2) == 0); + assert(power(2, 3) == 8); + assert(power(2, 10) == 1024); + assert(power(3, 3) == 27); +} + +/** + * @brief Driver Code + * @returns 0 on exit + */ +int main() +{ + test(); + return 0; +}