summaryrefslogtreecommitdiff
path: root/doc/source/reference/c-api.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/source/reference/c-api.rst')
-rw-r--r--doc/source/reference/c-api.rst47
1 files changed, 47 insertions, 0 deletions
diff --git a/doc/source/reference/c-api.rst b/doc/source/reference/c-api.rst
new file mode 100644
index 000000000..27420a58c
--- /dev/null
+++ b/doc/source/reference/c-api.rst
@@ -0,0 +1,47 @@
+.. _c-api:
+
+###########
+Numpy C-API
+###########
+
+.. sectionauthor:: Travis E. Oliphant
+
+| Beware of the man who won't be bothered with details.
+| --- *William Feather, Sr.*
+
+| The truth is out there.
+| --- *Chris Carter, The X Files*
+
+
+NumPy provides a C-API to enable users to extend the system and get
+access to the array object for use in other routines. The best way to
+truly understand the C-API is to read the source code. If you are
+unfamiliar with (C) source code, however, this can be a daunting
+experience at first. Be assured that the task becomes easier with
+practice, and you may be surprised at how simple the C-code can be to
+understand. Even if you don't think you can write C-code from scratch,
+it is much easier to understand and modify already-written source code
+then create it *de novo*.
+
+Python extensions are especially straightforward to understand because
+they all have a very similar structure. Admittedly, NumPy is not a
+trivial extension to Python, and may take a little more snooping to
+grasp. This is especially true because of the code-generation
+techniques, which simplify maintenance of very similar code, but can
+make the code a little less readable to beginners. Still, with a
+little persistence, the code can be opened to your understanding. It
+is my hope, that this guide to the C-API can assist in the process of
+becoming familiar with the compiled-level work that can be done with
+NumPy in order to squeeze that last bit of necessary speed out of your
+code.
+
+.. currentmodule:: numpy-c-api
+
+.. toctree::
+ :maxdepth: 2
+
+ c-api.types-and-structures
+ c-api.config
+ c-api.dtype
+ c-api.array
+ c-api.ufunc