From 21fd050248099971ff4253d85854cd1a70fb02bf Mon Sep 17 00:00:00 2001 From: acse-lw521 Date: Tue, 26 Oct 2021 21:40:33 +0100 Subject: [PATCH 1/3] Commit to trigger Workflows. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ec0bba..08c1623 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # CI MPM -Toy repo for CI lecture. +Toy repo for with some simple functions for the CI lecture From b9e64d6ce08a3be380859bb12e15b4f1b1456727 Mon Sep 17 00:00:00 2001 From: acse-lw521 Date: Wed, 27 Oct 2021 17:42:21 +0100 Subject: [PATCH 2/3] Add factorial function. --- simple_functions/functions1.py | 8 +++++++- tests/test_simple_functions.py | 12 +++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/simple_functions/functions1.py b/simple_functions/functions1.py index 8c63a4d..964c55e 100644 --- a/simple_functions/functions1.py +++ b/simple_functions/functions1.py @@ -1,9 +1,15 @@ +from functools import cache -__all__ = ['my_sum'] +__all__ = ['my_sum','factorial'] def my_sum(iterable): tot = 0 for i in iterable: tot += i return tot + +@cache +def factorial(n): + return n * factorial(n-1) if n else 1 + diff --git a/tests/test_simple_functions.py b/tests/test_simple_functions.py index 5a03b52..e08a702 100644 --- a/tests/test_simple_functions.py +++ b/tests/test_simple_functions.py @@ -1,6 +1,6 @@ import pytest -from simple_functions import my_sum +from simple_functions import my_sum,factorial class TestSimpleFunctions(object): @@ -14,3 +14,13 @@ def test_my_add(self, iterable, expected): '''Test our add function''' isum = my_sum(iterable) assert isum == expected + + @pytest.mark.parametrize('number, expected', [ + (5, 120), + (3, 6), + (1, 1) + ]) + def test_factorial(self, number, expected): + '''Test our factorial function''' + answer = factorial(number) + assert answer == expected From c377f141774f3efb546b8196377f3bac85da6a28 Mon Sep 17 00:00:00 2001 From: acse-lw521 Date: Wed, 27 Oct 2021 19:33:09 +0100 Subject: [PATCH 3/3] Add new function for pi --- simple_functions/__init__.py | 2 +- simple_functions/constants.py | 15 +++++++++++++++ tests/test_constants.py | 12 ++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 simple_functions/constants.py create mode 100644 tests/test_constants.py diff --git a/simple_functions/__init__.py b/simple_functions/__init__.py index 963db77..61cd915 100644 --- a/simple_functions/__init__.py +++ b/simple_functions/__init__.py @@ -1,5 +1,5 @@ from .functions1 import * # noqa - +from .constants import * # noqa from pkg_resources import get_distribution, DistributionNotFound try: __version__ = get_distribution(__name__).version diff --git a/simple_functions/constants.py b/simple_functions/constants.py new file mode 100644 index 0000000..376e956 --- /dev/null +++ b/simple_functions/constants.py @@ -0,0 +1,15 @@ +from numpy import sqrt +from simple_functions.functions1 import factorial +from functools import cache + +__all__ = ['pi','rsum'] + + +def pi(terms=1): + return 1./(2.*sqrt(2.)/9801.*rsum(terms)) + + +@cache +def rsum(n): + t = factorial(4*n)*(1103+26390*n)/(factorial(n)**4*396**(4*n)) + return t + rsum(n-1) if n else t diff --git a/tests/test_constants.py b/tests/test_constants.py new file mode 100644 index 0000000..d861cbc --- /dev/null +++ b/tests/test_constants.py @@ -0,0 +1,12 @@ +import numpy as np + +from simple_functions import pi + + +class TestPi(object): + '''Class to test our constants are computed correctly''' + + def test_pi(self): + '''Test computation of pi''' + my_pi = pi(2) + assert np.isclose(my_pi, np.pi, atol=1e-12)