Permalink
Browse files

Rename cmath to not conflict with built-in module

  • Loading branch information...
1 parent bdc9509 commit 158092a921c7c54bee499b0566d2812327659d43 @aidanhs aidanhs committed May 23, 2014
View
@@ -18,7 +18,7 @@ LDLIBS = $(PY_LDLIBS)
TARGETS = nCr python
# List of Cython source files, with main module first.
-CYTHON_SOURCE = combinatorics.pyx cmath.pyx
+CYTHON_SOURCE = combinatorics.pyx lcmath.pyx
CYTHON_SECONDARY = $(CYTHON_SOURCE:.pyx=.c) $(TARGETS:=.c)
View
@@ -42,30 +42,30 @@ EXAMPLE
In the Demos/freeze directory, there exist two Cython modules:
-cmath.pyx
+lcmath.pyx
A module that interfaces with the -lm library.
combinatorics.pyx
- A module that implements n-choose-r using cmath.
+ A module that implements n-choose-r using lcmath.
Both modules have the Python idiom ``if __name__ == "__main__"``, which only
-execute if that module is the "main" module. If run as main, cmath prints the
+execute if that module is the "main" module. If run as main, lcmath prints the
factorial of the argument, while combinatorics prints n-choose-r.
The provided Makefile creates an executable, *nCr*, using combinatorics as the
"main" module. It basically performs the following (ignoring the compiler
flags)::
- $ cython_freeze combinatorics cmath > nCr.c
+ $ cython_freeze combinatorics lcmath > nCr.c
$ cython combinatorics.pyx
- $ cython cmath.pyx
+ $ cython lcmath.pyx
$ gcc -c nCr.c
$ gcc -c combinatorics.c
- $ gcc -c cmath.c
- $ gcc nCr.o combinatorics.o cmath.o -o nCr
+ $ gcc -c lcmath.c
+ $ gcc nCr.o combinatorics.o lcmath.o -o nCr
Because the combinatorics module was listed first, its ``__name__`` is set
-to ``"__main__"``, while cmath's is set to ``"cmath"``. The executable now
+to ``"__main__"``, while lcmath's is set to ``"lcmath"``. The executable now
contains a Python interpreter and both Cython modules. ::
$ ./nCr
@@ -81,19 +81,19 @@ linked so you can profile it with gprof. To do this, add the ``--pymain``
flag to ``cython_freeze``. In the Makefile, the *python* executable is built
like this. ::
- $ cython_freeze --pymain combinatorics cmath -o python.c
+ $ cython_freeze --pymain combinatorics lcmath -o python.c
$ gcc -c python.c
- $ gcc python.o combinatorics.o cmath.o -o python
+ $ gcc python.o combinatorics.o lcmath.o -o python
-Now ``python`` is a normal Python interpreter, but the cmath and combinatorics
+Now ``python`` is a normal Python interpreter, but the lcmath and combinatorics
modules will be built into the executable. ::
$ ./python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:58:18)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
- >>> import cmath
- >>> cmath.factorial(155)
+ >>> import lcmath
+ >>> lcmath.factorial(155)
4.7891429014634364e+273
@@ -1,9 +1,9 @@
-import cmath
+import lcmath
def nCr(n, r):
"""Return the number of ways to choose r elements of a set of n."""
- return cmath.exp( cmath.lfactorial(n) - cmath.lfactorial(r)
- - cmath.lfactorial(n-r) )
+ return lcmath.exp( lcmath.lfactorial(n) - lcmath.lfactorial(r)
+ - lcmath.lfactorial(n-r) )
if __name__ == "__main__":
import sys
File renamed without changes.

0 comments on commit 158092a

Please sign in to comment.