numpy 1.9.2__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1593) hide show
  1. numpy-1.10.0.post2/INSTALL.txt +200 -0
  2. numpy-1.10.0.post2/LICENSE.txt +30 -0
  3. numpy-1.10.0.post2/MANIFEST.in +31 -0
  4. numpy-1.10.0.post2/PKG-INFO +47 -0
  5. numpy-1.10.0.post2/cnew.txt +117 -0
  6. numpy-1.10.0.post2/cold.txt +44 -0
  7. numpy-1.10.0.post2/committers.txt +160 -0
  8. numpy-1.10.0.post2/cpre.txt +283 -0
  9. numpy-1.10.0.post2/crel.txt +161 -0
  10. numpy-1.10.0.post2/doc/release/1.10.0-notes.rst +439 -0
  11. numpy-1.10.0.post2/doc/scipy-sphinx-theme/.git +1 -0
  12. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  13. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  16. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  17. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  23. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  31. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  32. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  33. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  39. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  41. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  42. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  43. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  45. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  49. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  50. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  51. numpy-1.10.0.post2/doc/sphinxext/.git +1 -0
  52. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  56. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  57. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  58. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  59. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  60. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  61. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  62. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  63. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  64. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  65. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  66. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  70. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  71. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  72. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  73. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  74. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  75. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  82. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  83. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  84. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  85. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  86. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  87. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  88. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  89. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  90. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  91. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  138. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  139. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  142. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  143. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  147. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  148. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  154. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  155. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  165. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  166. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  197. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  198. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  199. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  200. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  204. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  205. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  206. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  210. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  211. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  212. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  213. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  214. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  215. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  216. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  217. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  218. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  219. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  230. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  231. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  232. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  233. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  234. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  235. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  236. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  237. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  238. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  239. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  240. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  241. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  242. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  243. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  244. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  245. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  246. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  247. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  248. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  249. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  250. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  251. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  252. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  253. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  254. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  267. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  268. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  269. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  272. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  273. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  274. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  275. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  276. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  277. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  278. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  279. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  280. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  281. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  282. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  283. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  284. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  285. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  286. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  287. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  288. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  289. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  290. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  291. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  292. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  293. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  313. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  314. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  315. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  316. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  317. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  318. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  319. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  320. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  322. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  323. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  324. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  325. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  326. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  327. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  328. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  329. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  330. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  335. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  336. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  337. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  338. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  339. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  343. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  344. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  345. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  346. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  347. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  348. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  349. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  350. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  351. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  353. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  354. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  355. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  356. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  357. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  358. numpy-1.10.0.post2/numpy/setup.py +29 -0
  359. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  360. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  361. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  362. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  363. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  364. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  365. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  366. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  367. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  368. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  369. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  370. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  371. numpy-1.10.0.post2/numpy/version.py +10 -0
  372. numpy-1.10.0.post2/setup.py +260 -0
  373. numpy-1.10.0.post2/site.cfg.example +193 -0
  374. numpy-1.10.0.post2/tmp.txt +789 -0
  375. numpy-1.10.0.post2/tools/swig/README +145 -0
  376. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  377. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  378. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  379. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  382. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  383. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  384. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  385. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  387. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  388. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  389. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  390. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  391. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  392. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  393. numpy-1.9.2/INSTALL.txt +0 -138
  394. numpy-1.9.2/LICENSE.txt +0 -30
  395. numpy-1.9.2/MANIFEST.in +0 -26
  396. numpy-1.9.2/PKG-INFO +0 -39
  397. numpy-1.9.2/doc/scipy-sphinx-theme/.git +0 -1
  398. numpy-1.9.2/doc/source/conf.py +0 -331
  399. numpy-1.9.2/doc/source/dev/gitwash/branch_list.png +0 -0
  400. numpy-1.9.2/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  401. numpy-1.9.2/doc/source/dev/gitwash/development_workflow.rst +0 -568
  402. numpy-1.9.2/doc/source/dev/gitwash/git_links.inc +0 -88
  403. numpy-1.9.2/doc/source/dev/gitwash/index.rst +0 -14
  404. numpy-1.9.2/doc/source/dev/index.rst +0 -10
  405. numpy-1.9.2/doc/source/reference/arrays.classes.rst +0 -427
  406. numpy-1.9.2/doc/source/reference/arrays.dtypes.rst +0 -534
  407. numpy-1.9.2/doc/source/reference/arrays.indexing.rst +0 -550
  408. numpy-1.9.2/doc/source/reference/arrays.interface.rst +0 -336
  409. numpy-1.9.2/doc/source/reference/arrays.ndarray.rst +0 -609
  410. numpy-1.9.2/doc/source/reference/arrays.scalars.rst +0 -291
  411. numpy-1.9.2/doc/source/reference/c-api.array.rst +0 -3362
  412. numpy-1.9.2/doc/source/reference/c-api.config.rst +0 -103
  413. numpy-1.9.2/doc/source/reference/c-api.coremath.rst +0 -420
  414. numpy-1.9.2/doc/source/reference/c-api.dtype.rst +0 -376
  415. numpy-1.9.2/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  416. numpy-1.9.2/doc/source/reference/c-api.iterator.rst +0 -1298
  417. numpy-1.9.2/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  418. numpy-1.9.2/doc/source/reference/c-api.ufunc.rst +0 -399
  419. numpy-1.9.2/doc/source/reference/index.rst +0 -44
  420. numpy-1.9.2/doc/source/reference/internals.code-explanations.rst +0 -666
  421. numpy-1.9.2/doc/source/reference/routines.array-manipulation.rst +0 -113
  422. numpy-1.9.2/doc/source/reference/routines.io.rst +0 -74
  423. numpy-1.9.2/doc/source/reference/routines.linalg.rst +0 -88
  424. numpy-1.9.2/doc/source/reference/routines.ma.rst +0 -405
  425. numpy-1.9.2/doc/source/reference/routines.sort.rst +0 -42
  426. numpy-1.9.2/doc/source/reference/routines.statistics.rst +0 -55
  427. numpy-1.9.2/doc/source/reference/swig.interface-file.rst +0 -1055
  428. numpy-1.9.2/doc/source/reference/swig.testing.rst +0 -166
  429. numpy-1.9.2/doc/source/reference/ufuncs.rst +0 -651
  430. numpy-1.9.2/doc/source/release.rst +0 -19
  431. numpy-1.9.2/doc/source/user/basics.io.genfromtxt.rst +0 -531
  432. numpy-1.9.2/doc/source/user/basics.rec.rst +0 -7
  433. numpy-1.9.2/doc/source/user/c-info.beyond-basics.rst +0 -560
  434. numpy-1.9.2/doc/source/user/c-info.how-to-extend.rst +0 -642
  435. numpy-1.9.2/doc/source/user/c-info.python-as-glue.rst +0 -1528
  436. numpy-1.9.2/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  437. numpy-1.9.2/doc/source/user/install.rst +0 -180
  438. numpy-1.9.2/doc/sphinxext/.git +0 -1
  439. numpy-1.9.2/numpy/__init__.py +0 -216
  440. numpy-1.9.2/numpy/_import_tools.py +0 -348
  441. numpy-1.9.2/numpy/add_newdocs.py +0 -7518
  442. numpy-1.9.2/numpy/compat/_inspect.py +0 -221
  443. numpy-1.9.2/numpy/compat/py3k.py +0 -89
  444. numpy-1.9.2/numpy/compat/setup.py +0 -12
  445. numpy-1.9.2/numpy/core/__init__.py +0 -78
  446. numpy-1.9.2/numpy/core/_internal.py +0 -570
  447. numpy-1.9.2/numpy/core/_methods.py +0 -134
  448. numpy-1.9.2/numpy/core/arrayprint.py +0 -752
  449. numpy-1.9.2/numpy/core/blasdot/_dotblas.c +0 -1255
  450. numpy-1.9.2/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  451. numpy-1.9.2/numpy/core/blasdot/cblas.h +0 -578
  452. numpy-1.9.2/numpy/core/code_generators/cversions.txt +0 -31
  453. numpy-1.9.2/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  454. numpy-1.9.2/numpy/core/code_generators/generate_umath.py +0 -972
  455. numpy-1.9.2/numpy/core/code_generators/numpy_api.py +0 -412
  456. numpy-1.9.2/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  457. numpy-1.9.2/numpy/core/defchararray.py +0 -2687
  458. numpy-1.9.2/numpy/core/fromnumeric.py +0 -2938
  459. numpy-1.9.2/numpy/core/function_base.py +0 -190
  460. numpy-1.9.2/numpy/core/getlimits.py +0 -306
  461. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.c +0 -38
  462. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.h +0 -224
  463. numpy-1.9.2/numpy/core/include/numpy/ndarrayobject.h +0 -237
  464. numpy-1.9.2/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  465. numpy-1.9.2/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  466. numpy-1.9.2/numpy/core/include/numpy/npy_common.h +0 -1038
  467. numpy-1.9.2/numpy/core/include/numpy/npy_cpu.h +0 -122
  468. numpy-1.9.2/numpy/core/include/numpy/npy_endian.h +0 -49
  469. numpy-1.9.2/numpy/core/include/numpy/npy_math.h +0 -479
  470. numpy-1.9.2/numpy/core/include/numpy/numpyconfig.h +0 -35
  471. numpy-1.9.2/numpy/core/machar.py +0 -338
  472. numpy-1.9.2/numpy/core/memmap.py +0 -308
  473. numpy-1.9.2/numpy/core/numeric.py +0 -2842
  474. numpy-1.9.2/numpy/core/numerictypes.py +0 -1042
  475. numpy-1.9.2/numpy/core/records.py +0 -804
  476. numpy-1.9.2/numpy/core/setup.py +0 -1016
  477. numpy-1.9.2/numpy/core/setup_common.py +0 -321
  478. numpy-1.9.2/numpy/core/shape_base.py +0 -277
  479. numpy-1.9.2/numpy/core/src/multiarray/alloc.c +0 -241
  480. numpy-1.9.2/numpy/core/src/multiarray/arrayobject.c +0 -1791
  481. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  482. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.h +0 -13
  483. numpy-1.9.2/numpy/core/src/multiarray/buffer.c +0 -954
  484. numpy-1.9.2/numpy/core/src/multiarray/calculation.c +0 -1229
  485. numpy-1.9.2/numpy/core/src/multiarray/common.c +0 -798
  486. numpy-1.9.2/numpy/core/src/multiarray/common.h +0 -328
  487. numpy-1.9.2/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  488. numpy-1.9.2/numpy/core/src/multiarray/convert.c +0 -589
  489. numpy-1.9.2/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  490. numpy-1.9.2/numpy/core/src/multiarray/ctors.c +0 -3785
  491. numpy-1.9.2/numpy/core/src/multiarray/datetime.c +0 -3823
  492. numpy-1.9.2/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  493. numpy-1.9.2/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  494. numpy-1.9.2/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  495. numpy-1.9.2/numpy/core/src/multiarray/descriptor.c +0 -3658
  496. numpy-1.9.2/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  497. numpy-1.9.2/numpy/core/src/multiarray/einsum.c.src +0 -3013
  498. numpy-1.9.2/numpy/core/src/multiarray/getset.c +0 -984
  499. numpy-1.9.2/numpy/core/src/multiarray/hashdescr.c +0 -319
  500. numpy-1.9.2/numpy/core/src/multiarray/item_selection.c +0 -2711
  501. numpy-1.9.2/numpy/core/src/multiarray/iterators.c +0 -2160
  502. numpy-1.9.2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  503. numpy-1.9.2/numpy/core/src/multiarray/mapping.c +0 -3316
  504. numpy-1.9.2/numpy/core/src/multiarray/mapping.h +0 -73
  505. numpy-1.9.2/numpy/core/src/multiarray/methods.c +0 -2497
  506. numpy-1.9.2/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  507. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.c +0 -4202
  508. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  509. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule_onefile.c +0 -58
  510. numpy-1.9.2/numpy/core/src/multiarray/nditer_api.c +0 -2809
  511. numpy-1.9.2/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  512. numpy-1.9.2/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  513. numpy-1.9.2/numpy/core/src/multiarray/number.c +0 -1057
  514. numpy-1.9.2/numpy/core/src/multiarray/number.h +0 -76
  515. numpy-1.9.2/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  516. numpy-1.9.2/numpy/core/src/multiarray/numpyos.c +0 -683
  517. numpy-1.9.2/numpy/core/src/multiarray/scalarapi.c +0 -861
  518. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  519. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.h +0 -52
  520. numpy-1.9.2/numpy/core/src/multiarray/shape.c +0 -1141
  521. numpy-1.9.2/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  522. numpy-1.9.2/numpy/core/src/npymath/ieee754.c.src +0 -814
  523. numpy-1.9.2/numpy/core/src/npymath/npy_math.c.src +0 -527
  524. numpy-1.9.2/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  525. numpy-1.9.2/numpy/core/src/npymath/npy_math_private.h +0 -539
  526. numpy-1.9.2/numpy/core/src/npysort/heapsort.c.src +0 -341
  527. numpy-1.9.2/numpy/core/src/npysort/mergesort.c.src +0 -428
  528. numpy-1.9.2/numpy/core/src/npysort/npysort_common.h +0 -367
  529. numpy-1.9.2/numpy/core/src/npysort/quicksort.c.src +0 -363
  530. numpy-1.9.2/numpy/core/src/npysort/selection.c.src +0 -474
  531. numpy-1.9.2/numpy/core/src/private/npy_config.h +0 -44
  532. numpy-1.9.2/numpy/core/src/private/npy_partition.h.src +0 -138
  533. numpy-1.9.2/numpy/core/src/private/npy_sort.h +0 -194
  534. numpy-1.9.2/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  535. numpy-1.9.2/numpy/core/src/private/ufunc_override.h +0 -384
  536. numpy-1.9.2/numpy/core/src/scalarmathmodule.c.src +0 -1980
  537. numpy-1.9.2/numpy/core/src/umath/funcs.inc.src +0 -715
  538. numpy-1.9.2/numpy/core/src/umath/loops.c.src +0 -2654
  539. numpy-1.9.2/numpy/core/src/umath/loops.h.src +0 -501
  540. numpy-1.9.2/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  541. numpy-1.9.2/numpy/core/src/umath/simd.inc.src +0 -881
  542. numpy-1.9.2/numpy/core/src/umath/test_rational.c.src +0 -1404
  543. numpy-1.9.2/numpy/core/src/umath/ufunc_object.c +0 -5520
  544. numpy-1.9.2/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  545. numpy-1.9.2/numpy/core/src/umath/umath_tests.c.src +0 -341
  546. numpy-1.9.2/numpy/core/src/umath/umathmodule.c +0 -561
  547. numpy-1.9.2/numpy/core/src/umath/umathmodule_onefile.c +0 -6
  548. numpy-1.9.2/numpy/core/tests/test_abc.py +0 -45
  549. numpy-1.9.2/numpy/core/tests/test_api.py +0 -514
  550. numpy-1.9.2/numpy/core/tests/test_arrayprint.py +0 -167
  551. numpy-1.9.2/numpy/core/tests/test_blasdot.py +0 -249
  552. numpy-1.9.2/numpy/core/tests/test_datetime.py +0 -1781
  553. numpy-1.9.2/numpy/core/tests/test_defchararray.py +0 -642
  554. numpy-1.9.2/numpy/core/tests/test_deprecations.py +0 -512
  555. numpy-1.9.2/numpy/core/tests/test_dtype.py +0 -542
  556. numpy-1.9.2/numpy/core/tests/test_einsum.py +0 -583
  557. numpy-1.9.2/numpy/core/tests/test_errstate.py +0 -51
  558. numpy-1.9.2/numpy/core/tests/test_function_base.py +0 -111
  559. numpy-1.9.2/numpy/core/tests/test_getlimits.py +0 -86
  560. numpy-1.9.2/numpy/core/tests/test_half.py +0 -439
  561. numpy-1.9.2/numpy/core/tests/test_indexerrors.py +0 -127
  562. numpy-1.9.2/numpy/core/tests/test_indexing.py +0 -1014
  563. numpy-1.9.2/numpy/core/tests/test_item_selection.py +0 -70
  564. numpy-1.9.2/numpy/core/tests/test_machar.py +0 -30
  565. numpy-1.9.2/numpy/core/tests/test_memmap.py +0 -127
  566. numpy-1.9.2/numpy/core/tests/test_multiarray.py +0 -4645
  567. numpy-1.9.2/numpy/core/tests/test_multiarray_assignment.py +0 -80
  568. numpy-1.9.2/numpy/core/tests/test_nditer.py +0 -2630
  569. numpy-1.9.2/numpy/core/tests/test_numeric.py +0 -2117
  570. numpy-1.9.2/numpy/core/tests/test_numerictypes.py +0 -377
  571. numpy-1.9.2/numpy/core/tests/test_print.py +0 -245
  572. numpy-1.9.2/numpy/core/tests/test_records.py +0 -185
  573. numpy-1.9.2/numpy/core/tests/test_regression.py +0 -2108
  574. numpy-1.9.2/numpy/core/tests/test_scalarinherit.py +0 -34
  575. numpy-1.9.2/numpy/core/tests/test_scalarmath.py +0 -275
  576. numpy-1.9.2/numpy/core/tests/test_shape_base.py +0 -250
  577. numpy-1.9.2/numpy/core/tests/test_ufunc.py +0 -1153
  578. numpy-1.9.2/numpy/core/tests/test_umath.py +0 -1695
  579. numpy-1.9.2/numpy/core/tests/test_umath_complex.py +0 -537
  580. numpy-1.9.2/numpy/core/tests/test_unicode.py +0 -357
  581. numpy-1.9.2/numpy/distutils/__init__.py +0 -39
  582. numpy-1.9.2/numpy/distutils/ccompiler.py +0 -656
  583. numpy-1.9.2/numpy/distutils/command/autodist.py +0 -43
  584. numpy-1.9.2/numpy/distutils/command/build.py +0 -39
  585. numpy-1.9.2/numpy/distutils/command/build_clib.py +0 -284
  586. numpy-1.9.2/numpy/distutils/command/build_ext.py +0 -503
  587. numpy-1.9.2/numpy/distutils/command/config.py +0 -476
  588. numpy-1.9.2/numpy/distutils/exec_command.py +0 -618
  589. numpy-1.9.2/numpy/distutils/fcompiler/compaq.py +0 -128
  590. numpy-1.9.2/numpy/distutils/fcompiler/gnu.py +0 -390
  591. numpy-1.9.2/numpy/distutils/fcompiler/intel.py +0 -205
  592. numpy-1.9.2/numpy/distutils/fcompiler/pg.py +0 -60
  593. numpy-1.9.2/numpy/distutils/fcompiler/sun.py +0 -52
  594. numpy-1.9.2/numpy/distutils/intelccompiler.py +0 -45
  595. numpy-1.9.2/numpy/distutils/lib2def.py +0 -116
  596. numpy-1.9.2/numpy/distutils/mingw32ccompiler.py +0 -582
  597. numpy-1.9.2/numpy/distutils/misc_util.py +0 -2271
  598. numpy-1.9.2/numpy/distutils/npy_pkg_config.py +0 -464
  599. numpy-1.9.2/numpy/distutils/system_info.py +0 -2319
  600. numpy-1.9.2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  601. numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  602. numpy-1.9.2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  603. numpy-1.9.2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  604. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  605. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  606. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  607. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  608. numpy-1.9.2/numpy/distutils/tests/test_misc_util.py +0 -75
  609. numpy-1.9.2/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  610. numpy-1.9.2/numpy/distutils/unixccompiler.py +0 -113
  611. numpy-1.9.2/numpy/doc/byteswapping.py +0 -147
  612. numpy-1.9.2/numpy/doc/creation.py +0 -144
  613. numpy-1.9.2/numpy/doc/glossary.py +0 -418
  614. numpy-1.9.2/numpy/doc/indexing.py +0 -437
  615. numpy-1.9.2/numpy/doc/structured_arrays.py +0 -223
  616. numpy-1.9.2/numpy/f2py/__init__.py +0 -49
  617. numpy-1.9.2/numpy/f2py/auxfuncs.py +0 -711
  618. numpy-1.9.2/numpy/f2py/capi_maps.py +0 -773
  619. numpy-1.9.2/numpy/f2py/cb_rules.py +0 -539
  620. numpy-1.9.2/numpy/f2py/cfuncs.py +0 -1224
  621. numpy-1.9.2/numpy/f2py/common_rules.py +0 -132
  622. numpy-1.9.2/numpy/f2py/crackfortran.py +0 -2870
  623. numpy-1.9.2/numpy/f2py/diagnose.py +0 -149
  624. numpy-1.9.2/numpy/f2py/f2py2e.py +0 -598
  625. numpy-1.9.2/numpy/f2py/f2py_testing.py +0 -46
  626. numpy-1.9.2/numpy/f2py/f90mod_rules.py +0 -246
  627. numpy-1.9.2/numpy/f2py/func2subr.py +0 -291
  628. numpy-1.9.2/numpy/f2py/rules.py +0 -1448
  629. numpy-1.9.2/numpy/f2py/setup.py +0 -129
  630. numpy-1.9.2/numpy/f2py/src/fortranobject.c +0 -972
  631. numpy-1.9.2/numpy/f2py/src/fortranobject.h +0 -162
  632. numpy-1.9.2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  633. numpy-1.9.2/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  634. numpy-1.9.2/numpy/f2py/tests/test_assumed_shape.py +0 -37
  635. numpy-1.9.2/numpy/f2py/tests/test_callback.py +0 -132
  636. numpy-1.9.2/numpy/f2py/tests/test_kind.py +0 -36
  637. numpy-1.9.2/numpy/f2py/tests/test_mixed.py +0 -41
  638. numpy-1.9.2/numpy/f2py/tests/test_regression.py +0 -32
  639. numpy-1.9.2/numpy/f2py/tests/test_return_character.py +0 -142
  640. numpy-1.9.2/numpy/f2py/tests/test_return_complex.py +0 -169
  641. numpy-1.9.2/numpy/f2py/tests/test_return_integer.py +0 -178
  642. numpy-1.9.2/numpy/f2py/tests/test_return_logical.py +0 -187
  643. numpy-1.9.2/numpy/f2py/tests/test_return_real.py +0 -203
  644. numpy-1.9.2/numpy/f2py/tests/test_size.py +0 -47
  645. numpy-1.9.2/numpy/f2py/tests/util.py +0 -353
  646. numpy-1.9.2/numpy/f2py/use_rules.py +0 -109
  647. numpy-1.9.2/numpy/fft/fftpack.c +0 -1501
  648. numpy-1.9.2/numpy/fft/fftpack.h +0 -28
  649. numpy-1.9.2/numpy/fft/fftpack.py +0 -1169
  650. numpy-1.9.2/numpy/fft/fftpack_litemodule.c +0 -371
  651. numpy-1.9.2/numpy/fft/info.py +0 -179
  652. numpy-1.9.2/numpy/fft/setup.py +0 -20
  653. numpy-1.9.2/numpy/fft/tests/test_fftpack.py +0 -75
  654. numpy-1.9.2/numpy/fft/tests/test_helper.py +0 -78
  655. numpy-1.9.2/numpy/lib/_iotools.py +0 -891
  656. numpy-1.9.2/numpy/lib/arraypad.py +0 -1475
  657. numpy-1.9.2/numpy/lib/arraysetops.py +0 -464
  658. numpy-1.9.2/numpy/lib/arrayterator.py +0 -226
  659. numpy-1.9.2/numpy/lib/financial.py +0 -737
  660. numpy-1.9.2/numpy/lib/format.py +0 -771
  661. numpy-1.9.2/numpy/lib/function_base.py +0 -3884
  662. numpy-1.9.2/numpy/lib/index_tricks.py +0 -869
  663. numpy-1.9.2/numpy/lib/info.py +0 -151
  664. numpy-1.9.2/numpy/lib/nanfunctions.py +0 -1158
  665. numpy-1.9.2/numpy/lib/npyio.py +0 -1918
  666. numpy-1.9.2/numpy/lib/polynomial.py +0 -1271
  667. numpy-1.9.2/numpy/lib/recfunctions.py +0 -1003
  668. numpy-1.9.2/numpy/lib/setup.py +0 -23
  669. numpy-1.9.2/numpy/lib/shape_base.py +0 -865
  670. numpy-1.9.2/numpy/lib/src/_compiled_base.c +0 -1761
  671. numpy-1.9.2/numpy/lib/stride_tricks.py +0 -123
  672. numpy-1.9.2/numpy/lib/tests/test__iotools.py +0 -326
  673. numpy-1.9.2/numpy/lib/tests/test__version.py +0 -57
  674. numpy-1.9.2/numpy/lib/tests/test_arraypad.py +0 -560
  675. numpy-1.9.2/numpy/lib/tests/test_arraysetops.py +0 -301
  676. numpy-1.9.2/numpy/lib/tests/test_financial.py +0 -160
  677. numpy-1.9.2/numpy/lib/tests/test_format.py +0 -716
  678. numpy-1.9.2/numpy/lib/tests/test_function_base.py +0 -2145
  679. numpy-1.9.2/numpy/lib/tests/test_index_tricks.py +0 -289
  680. numpy-1.9.2/numpy/lib/tests/test_io.py +0 -1754
  681. numpy-1.9.2/numpy/lib/tests/test_nanfunctions.py +0 -774
  682. numpy-1.9.2/numpy/lib/tests/test_polynomial.py +0 -177
  683. numpy-1.9.2/numpy/lib/tests/test_recfunctions.py +0 -705
  684. numpy-1.9.2/numpy/lib/tests/test_shape_base.py +0 -368
  685. numpy-1.9.2/numpy/lib/tests/test_stride_tricks.py +0 -238
  686. numpy-1.9.2/numpy/lib/tests/test_twodim_base.py +0 -504
  687. numpy-1.9.2/numpy/lib/tests/test_type_check.py +0 -328
  688. numpy-1.9.2/numpy/lib/twodim_base.py +0 -1003
  689. numpy-1.9.2/numpy/lib/type_check.py +0 -605
  690. numpy-1.9.2/numpy/lib/utils.py +0 -1176
  691. numpy-1.9.2/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  692. numpy-1.9.2/numpy/linalg/lapack_litemodule.c +0 -362
  693. numpy-1.9.2/numpy/linalg/linalg.py +0 -2136
  694. numpy-1.9.2/numpy/linalg/tests/test_build.py +0 -53
  695. numpy-1.9.2/numpy/linalg/tests/test_linalg.py +0 -1156
  696. numpy-1.9.2/numpy/linalg/tests/test_regression.py +0 -90
  697. numpy-1.9.2/numpy/linalg/umath_linalg.c.src +0 -3210
  698. numpy-1.9.2/numpy/ma/__init__.py +0 -58
  699. numpy-1.9.2/numpy/ma/bench.py +0 -166
  700. numpy-1.9.2/numpy/ma/core.py +0 -7374
  701. numpy-1.9.2/numpy/ma/extras.py +0 -1932
  702. numpy-1.9.2/numpy/ma/mrecords.py +0 -734
  703. numpy-1.9.2/numpy/ma/setup.py +0 -20
  704. numpy-1.9.2/numpy/ma/tests/test_core.py +0 -3706
  705. numpy-1.9.2/numpy/ma/tests/test_extras.py +0 -954
  706. numpy-1.9.2/numpy/ma/tests/test_mrecords.py +0 -521
  707. numpy-1.9.2/numpy/ma/tests/test_old_ma.py +0 -869
  708. numpy-1.9.2/numpy/ma/tests/test_regression.py +0 -75
  709. numpy-1.9.2/numpy/ma/tests/test_subclassing.py +0 -236
  710. numpy-1.9.2/numpy/ma/testutils.py +0 -240
  711. numpy-1.9.2/numpy/ma/timer_comparison.py +0 -459
  712. numpy-1.9.2/numpy/matlib.py +0 -358
  713. numpy-1.9.2/numpy/matrixlib/defmatrix.py +0 -1094
  714. numpy-1.9.2/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  715. numpy-1.9.2/numpy/matrixlib/tests/test_multiarray.py +0 -18
  716. numpy-1.9.2/numpy/matrixlib/tests/test_numeric.py +0 -10
  717. numpy-1.9.2/numpy/matrixlib/tests/test_regression.py +0 -34
  718. numpy-1.9.2/numpy/polynomial/_polybase.py +0 -962
  719. numpy-1.9.2/numpy/polynomial/chebyshev.py +0 -2056
  720. numpy-1.9.2/numpy/polynomial/hermite.py +0 -1789
  721. numpy-1.9.2/numpy/polynomial/hermite_e.py +0 -1786
  722. numpy-1.9.2/numpy/polynomial/laguerre.py +0 -1781
  723. numpy-1.9.2/numpy/polynomial/legendre.py +0 -1809
  724. numpy-1.9.2/numpy/polynomial/polytemplate.py +0 -927
  725. numpy-1.9.2/numpy/polynomial/polyutils.py +0 -403
  726. numpy-1.9.2/numpy/random/mtrand/distributions.c +0 -892
  727. numpy-1.9.2/numpy/random/mtrand/mtrand.c +0 -31204
  728. numpy-1.9.2/numpy/random/mtrand/mtrand.pyx +0 -4706
  729. numpy-1.9.2/numpy/random/setup.py +0 -74
  730. numpy-1.9.2/numpy/random/tests/test_random.py +0 -707
  731. numpy-1.9.2/numpy/random/tests/test_regression.py +0 -86
  732. numpy-1.9.2/numpy/setup.py +0 -27
  733. numpy-1.9.2/numpy/testing/__init__.py +0 -16
  734. numpy-1.9.2/numpy/testing/decorators.py +0 -271
  735. numpy-1.9.2/numpy/testing/noseclasses.py +0 -353
  736. numpy-1.9.2/numpy/testing/nosetester.py +0 -504
  737. numpy-1.9.2/numpy/testing/print_coercion_tables.py +0 -89
  738. numpy-1.9.2/numpy/testing/setup.py +0 -20
  739. numpy-1.9.2/numpy/testing/tests/test_decorators.py +0 -185
  740. numpy-1.9.2/numpy/testing/tests/test_utils.py +0 -558
  741. numpy-1.9.2/numpy/testing/utils.py +0 -1715
  742. numpy-1.9.2/numpy/tests/test_ctypeslib.py +0 -102
  743. numpy-1.9.2/numpy/tests/test_matlib.py +0 -55
  744. numpy-1.9.2/numpy/version.py +0 -10
  745. numpy-1.9.2/setup.py +0 -251
  746. numpy-1.9.2/site.cfg.example +0 -157
  747. numpy-1.9.2/tools/swig/README +0 -135
  748. numpy-1.9.2/tools/swig/numpy.i +0 -3085
  749. numpy-1.9.2/tools/swig/test/Array.i +0 -102
  750. numpy-1.9.2/tools/swig/test/Makefile +0 -34
  751. numpy-1.9.2/tools/swig/test/setup.py +0 -64
  752. numpy-1.9.2/tools/swig/test/testArray.py +0 -284
  753. numpy-1.9.2/tools/swig/test/testFarray.py +0 -159
  754. numpy-1.9.2/tools/swig/test/testFortran.py +0 -173
  755. numpy-1.9.2/tools/swig/test/testMatrix.py +0 -362
  756. numpy-1.9.2/tools/swig/test/testSuperTensor.py +0 -388
  757. numpy-1.9.2/tools/swig/test/testTensor.py +0 -402
  758. numpy-1.9.2/tools/swig/test/testVector.py +0 -381
  759. {numpy-1.9.2 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  760. {numpy-1.9.2 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  761. {numpy-1.9.2 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  762. {numpy-1.9.2 → numpy-1.10.0.post2}/README.txt +0 -0
  763. {numpy-1.9.2 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  764. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  765. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  766. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  767. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  768. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  769. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  770. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  771. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  772. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  773. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  774. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  775. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  776. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  777. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  778. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  779. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  780. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  781. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  782. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  783. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  784. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  785. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  786. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  787. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  788. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  789. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  790. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  791. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  792. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  793. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  794. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  795. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  796. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  797. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  798. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  799. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  800. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  801. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  802. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  803. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  804. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  805. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  806. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  807. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  808. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  809. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  810. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  811. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  812. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  813. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  814. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  815. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  816. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  817. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  818. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  819. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  820. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  821. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  822. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  823. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  824. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  825. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  826. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  827. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  828. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  829. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  830. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  831. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  832. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  833. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  834. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  835. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  836. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  837. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  838. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  839. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  840. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  841. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  842. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  843. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  844. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  845. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  846. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  847. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  848. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  849. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  850. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  851. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  852. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  853. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  854. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  855. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  856. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  857. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  858. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  859. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  860. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  861. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  862. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  863. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  864. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  865. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  866. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  867. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  868. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  869. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  870. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  871. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  872. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  873. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  874. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  875. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  876. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  877. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  878. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  879. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  880. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  881. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  882. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  883. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  884. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  885. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  886. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  887. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  888. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  889. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  890. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  891. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  892. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  893. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  894. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  895. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  896. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  897. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  898. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  899. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  900. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  901. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  902. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  903. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  904. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  905. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  906. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  907. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  908. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  909. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  910. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  911. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  912. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  913. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  914. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  915. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  916. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  917. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  918. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  919. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  920. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  921. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  922. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  923. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  924. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  925. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  926. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  927. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  928. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  929. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  930. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  931. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  932. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  933. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  934. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  935. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  936. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  937. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  938. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  939. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  940. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  941. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  942. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  943. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  944. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  945. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  946. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  947. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  948. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  949. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  950. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  951. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  952. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  953. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  954. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  955. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  956. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  957. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  958. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  959. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  960. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  961. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  962. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  963. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  964. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  965. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  966. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  967. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  968. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  969. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  970. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  971. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  972. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  973. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  974. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  975. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  976. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  977. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  978. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  979. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  980. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  981. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  982. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  983. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  984. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  985. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  986. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  987. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  988. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  989. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  990. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  991. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  992. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  993. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  994. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  995. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  996. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  997. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  998. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  999. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  1000. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  1001. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  1002. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  1003. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1004. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1005. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1006. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1007. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1008. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1009. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1010. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1011. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1012. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1013. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1014. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1015. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1016. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1017. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1018. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1019. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1020. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1021. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1022. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1023. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1024. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1025. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1026. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1027. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1028. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1029. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1030. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1031. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1032. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1033. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1034. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1035. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1036. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1037. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1038. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1039. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1040. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1041. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1042. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1043. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1044. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1045. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1046. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1047. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1048. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1049. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1050. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1051. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1052. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1053. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1054. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1055. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1056. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1057. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1058. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1059. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1060. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1061. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1062. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1063. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1064. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1065. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1066. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1067. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1068. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1069. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1070. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1071. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1072. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1073. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1074. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1075. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1076. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1077. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1078. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1079. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1080. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1081. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1082. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1083. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1084. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1085. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1086. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1087. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1088. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1089. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1090. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1091. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1092. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1093. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1094. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1095. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1096. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1097. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1098. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1099. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1100. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1101. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1102. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1103. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1104. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1105. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1106. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1107. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1108. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1109. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1110. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1111. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1112. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1113. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1114. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1115. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1116. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1117. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1118. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1119. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1120. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1121. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1122. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1123. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1124. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1125. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1126. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1127. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1128. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1129. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1130. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1131. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1132. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1133. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1134. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1135. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1136. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1137. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1138. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1139. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1140. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1141. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1142. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1143. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1144. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1145. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1146. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1147. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1148. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1149. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1150. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1151. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1152. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1153. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1154. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1155. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1156. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1157. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1158. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1159. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1160. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1161. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1162. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1163. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1164. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1165. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1166. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1167. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1168. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1169. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1170. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1171. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1172. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1173. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1174. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1175. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1176. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1177. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1178. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1179. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1180. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1181. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1182. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1183. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1184. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1185. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1186. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1187. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1188. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1189. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1190. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1191. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1192. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1193. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1194. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1195. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1196. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1197. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1198. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1199. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1200. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1201. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1202. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1203. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1204. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1205. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1206. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1207. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1208. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1209. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1210. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1211. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1212. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1213. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1214. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1215. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1216. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1217. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1218. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1219. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1220. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1221. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1222. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1223. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1224. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1225. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1226. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1227. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1228. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1229. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1230. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1231. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1232. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1233. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1234. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1235. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1236. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1237. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1238. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1239. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1240. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1241. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1242. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1243. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1244. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1245. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1246. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1247. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1248. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1249. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1250. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1251. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1252. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1253. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1254. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1255. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1256. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1257. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1258. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1259. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1260. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1261. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1262. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1263. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1264. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1265. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1266. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1267. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1268. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1269. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1270. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1271. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1272. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1273. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1274. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1275. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1276. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1277. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1278. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1279. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1280. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1281. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1282. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1283. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1284. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1285. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1286. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1287. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1288. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1289. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1290. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1291. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1292. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1293. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1294. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1295. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1296. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1297. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1298. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1299. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1300. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1301. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1302. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1303. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1304. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1305. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1306. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1307. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1308. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1309. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1310. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1311. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1312. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1313. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1314. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1315. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1316. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1317. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1318. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1319. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1320. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1321. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1322. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1323. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1324. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1325. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1326. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1327. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1328. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1329. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1330. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1331. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1332. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1333. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1334. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1335. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1336. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1337. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1338. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1339. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1340. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1341. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1342. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1343. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1344. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1345. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1346. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1347. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1348. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1349. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1350. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1351. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1352. {numpy-1.9.2/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1353. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1354. {numpy-1.9.2/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1355. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1356. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1357. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1358. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1359. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1360. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1361. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1362. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1363. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1364. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1365. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1366. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1367. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1368. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1369. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1370. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1371. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1372. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1373. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1374. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1375. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1376. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1377. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1378. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1379. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1380. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1381. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1382. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1383. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1384. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1385. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1386. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1387. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1388. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1389. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1390. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1391. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1392. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1393. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1394. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1395. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1396. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1397. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1398. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1399. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1400. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1401. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1402. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1403. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1404. {numpy-1.9.2/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1405. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1406. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1407. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1408. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1409. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1410. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1411. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1412. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1413. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1414. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1415. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1416. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1417. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1418. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1419. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1420. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1421. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1422. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1423. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1424. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1425. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1426. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1427. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1428. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1429. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1430. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1431. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1432. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1433. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1434. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1435. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1436. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1437. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1438. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1439. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1440. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1441. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1442. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1443. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1444. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1445. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1446. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1447. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1448. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1449. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1450. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1451. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1452. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1453. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1454. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1455. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1456. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1457. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1458. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1459. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1460. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1461. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1462. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1463. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1464. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1465. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1466. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1467. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1468. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1469. {numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1470. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1471. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1472. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1473. {numpy-1.9.2/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1474. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1475. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1476. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1477. {numpy-1.9.2/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1478. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1479. {numpy-1.9.2/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1480. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1481. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1482. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1483. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1484. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1485. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1486. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1487. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1488. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1489. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1490. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1491. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1492. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1493. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1494. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1495. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1496. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1497. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1498. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1499. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1500. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1501. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1502. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1503. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1504. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1505. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1506. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1507. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1508. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1509. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1510. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1511. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1512. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1513. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1514. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1515. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1516. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1517. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1518. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1519. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1520. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1521. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1522. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1523. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1524. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1525. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1526. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1527. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1528. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1529. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1530. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1531. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1532. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1533. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1534. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1535. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1536. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1537. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1538. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1539. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1540. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1541. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1542. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1543. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1544. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1545. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1546. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1547. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1548. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1549. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1550. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1551. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1552. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1553. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1554. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1555. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1556. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1557. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1558. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1559. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1560. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1561. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1562. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1563. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1564. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1565. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1566. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1567. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1568. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1569. {numpy-1.9.2 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1570. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1571. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1572. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1573. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1574. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1575. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1576. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1577. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1578. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1579. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1580. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1581. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1582. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1583. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1584. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1585. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1586. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1587. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1588. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1589. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1590. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1591. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1592. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1593. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -0,0 +1,4738 @@
1
+ /* -*- c -*- */
2
+ #define PY_SSIZE_T_CLEAN
3
+ #include "Python.h"
4
+ #include "structmember.h"
5
+
6
+
7
+ #define NPY_NO_DEPRECATED_API NPY_API_VERSION
8
+ #define _MULTIARRAYMODULE
9
+
10
+ #include "numpy/npy_common.h"
11
+ #include "numpy/arrayobject.h"
12
+ #include "numpy/arrayscalars.h"
13
+ #include "npy_pycompat.h"
14
+ #include "numpy/npy_math.h"
15
+ #include "numpy/halffloat.h"
16
+
17
+ #include "npy_config.h"
18
+ #include "npy_sort.h"
19
+ #include "common.h"
20
+ #include "ctors.h"
21
+ #include "usertypes.h"
22
+ #include "_datetime.h"
23
+ #include "arrayobject.h"
24
+ #include "alloc.h"
25
+ #ifdef NPY_HAVE_SSE2_INTRINSICS
26
+ #include <emmintrin.h>
27
+ #endif
28
+
29
+ #include "numpyos.h"
30
+ #include <string.h>
31
+
32
+ #include "cblasfuncs.h"
33
+ #include "npy_cblas.h"
34
+ #include <limits.h>
35
+
36
+
37
+ /*
38
+ *****************************************************************************
39
+ ** PYTHON TYPES TO C TYPES **
40
+ *****************************************************************************
41
+ */
42
+
43
+ static double
44
+ MyPyFloat_AsDouble(PyObject *obj)
45
+ {
46
+ double ret = 0;
47
+ PyObject *num;
48
+
49
+ if (obj == Py_None) {
50
+ return NPY_NAN;
51
+ }
52
+ num = PyNumber_Float(obj);
53
+ if (num == NULL) {
54
+ return NPY_NAN;
55
+ }
56
+ ret = PyFloat_AsDouble(num);
57
+ Py_DECREF(num);
58
+ return ret;
59
+ }
60
+
61
+ static npy_half
62
+ MyPyFloat_AsHalf(PyObject *obj)
63
+ {
64
+ return npy_double_to_half(MyPyFloat_AsDouble(obj));
65
+ }
66
+
67
+ static PyObject *
68
+ MyPyFloat_FromHalf(npy_half h)
69
+ {
70
+ return PyFloat_FromDouble(npy_half_to_double(h));
71
+ }
72
+
73
+
74
+ /**begin repeat
75
+ *
76
+ * #Type = Long, LongLong#
77
+ * #type = npy_long, npy_longlong#
78
+ */
79
+ static @type@
80
+ MyPyLong_As@Type@ (PyObject *obj)
81
+ {
82
+ @type@ ret;
83
+ PyObject *num = PyNumber_Long(obj);
84
+
85
+ if (num == NULL) {
86
+ return -1;
87
+ }
88
+ ret = PyLong_As@Type@(num);
89
+ Py_DECREF(num);
90
+ return ret;
91
+ }
92
+
93
+ /**end repeat**/
94
+
95
+ /**begin repeat
96
+ *
97
+ * #Type = Long, LongLong#
98
+ * #type = npy_ulong, npy_ulonglong#
99
+ */
100
+ static @type@
101
+ MyPyLong_AsUnsigned@Type@ (PyObject *obj)
102
+ {
103
+ @type@ ret;
104
+ PyObject *num = PyNumber_Long(obj);
105
+
106
+ if (num == NULL) {
107
+ return -1;
108
+ }
109
+ ret = PyLong_AsUnsigned@Type@(num);
110
+ if (PyErr_Occurred()) {
111
+ PyErr_Clear();
112
+ ret = PyLong_As@Type@(num);
113
+ }
114
+ Py_DECREF(num);
115
+ return ret;
116
+ }
117
+
118
+ /**end repeat**/
119
+
120
+ static npy_longlong
121
+ npy_strtoll(const char *str, char **endptr, int base)
122
+ {
123
+ #if defined HAVE_STRTOLL
124
+ return strtoll(str, endptr, base);
125
+ #elif defined _MSC_VER
126
+ return _strtoi64(str, endptr, base);
127
+ #else
128
+ /* ok on 64 bit posix */
129
+ return PyOS_strtol(str, endptr, base);
130
+ #endif
131
+ }
132
+
133
+ static npy_ulonglong
134
+ npy_strtoull(const char *str, char **endptr, int base)
135
+ {
136
+ #if defined HAVE_STRTOULL
137
+ return strtoull(str, endptr, base);
138
+ #elif defined _MSC_VER
139
+ return _strtoui64(str, endptr, base);
140
+ #else
141
+ /* ok on 64 bit posix */
142
+ return PyOS_strtoul(str, endptr, base);
143
+ #endif
144
+ }
145
+
146
+ /*
147
+ *****************************************************************************
148
+ ** GETITEM AND SETITEM **
149
+ *****************************************************************************
150
+ */
151
+
152
+
153
+ /**begin repeat
154
+ *
155
+ * #TYPE = BOOL, BYTE, UBYTE, SHORT, USHORT, INT, LONG, UINT, ULONG,
156
+ * LONGLONG, ULONGLONG, HALF, FLOAT, DOUBLE#
157
+ * #func1 = PyBool_FromLong, PyInt_FromLong*6, PyLong_FromUnsignedLong*2,
158
+ * PyLong_FromLongLong, PyLong_FromUnsignedLongLong,
159
+ * MyPyFloat_FromHalf, PyFloat_FromDouble*2#
160
+ * #func2 = PyObject_IsTrue, MyPyLong_AsLong*6, MyPyLong_AsUnsignedLong*2,
161
+ * MyPyLong_AsLongLong, MyPyLong_AsUnsignedLongLong,
162
+ * MyPyFloat_AsHalf, MyPyFloat_AsDouble*2#
163
+ * #type = npy_bool,
164
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int,
165
+ * npy_long, npy_uint, npy_ulong, npy_longlong, npy_ulonglong,
166
+ * npy_half, npy_float, npy_double#
167
+ * #type1 = long*7, npy_ulong*2, npy_longlong, npy_ulonglong,
168
+ * npy_half, npy_float, npy_double#
169
+ * #kind = Bool, Byte, UByte, Short, UShort, Int, Long, UInt, ULong,
170
+ * LongLong, ULongLong, Half, Float, Double#
171
+ */
172
+ static PyObject *
173
+ @TYPE@_getitem(void *input, void *vap)
174
+ {
175
+ PyArrayObject *ap = vap;
176
+ char *ip = input;
177
+ @type@ t1;
178
+
179
+ if ((ap == NULL) || PyArray_ISBEHAVED_RO(ap)) {
180
+ t1 = *((@type@ *)ip);
181
+ return @func1@((@type1@)t1);
182
+ }
183
+ else {
184
+ PyArray_DESCR(ap)->f->copyswap(&t1, ip, !PyArray_ISNOTSWAPPED(ap), ap);
185
+ return @func1@((@type1@)t1);
186
+ }
187
+ }
188
+
189
+ static int
190
+ @TYPE@_setitem(PyObject *op, void *ov, void *vap)
191
+ {
192
+ PyArrayObject *ap = vap;
193
+ @type@ temp; /* ensures alignment */
194
+
195
+ if (PyArray_IsScalar(op, @kind@)) {
196
+ temp = ((Py@kind@ScalarObject *)op)->obval;
197
+ }
198
+ else {
199
+ temp = (@type@)@func2@(op);
200
+ }
201
+ if (PyErr_Occurred()) {
202
+ PyObject *type, *value, *traceback;
203
+ PyErr_Fetch(&type, &value, &traceback);
204
+ if (PySequence_Check(op) && !PyString_Check(op) &&
205
+ !PyUnicode_Check(op)) {
206
+ PyErr_SetString(PyExc_ValueError,
207
+ "setting an array element with a sequence.");
208
+ Py_DECREF(type);
209
+ Py_XDECREF(value);
210
+ Py_XDECREF(traceback);
211
+ }
212
+ else {
213
+ PyErr_Restore(type, value, traceback);
214
+ }
215
+ return -1;
216
+ }
217
+ if (ap == NULL || PyArray_ISBEHAVED(ap))
218
+ *((@type@ *)ov)=temp;
219
+ else {
220
+ PyArray_DESCR(ap)->f->copyswap(ov, &temp, !PyArray_ISNOTSWAPPED(ap), ap);
221
+ }
222
+ return 0;
223
+ }
224
+
225
+ /**end repeat**/
226
+
227
+ /**begin repeat
228
+ *
229
+ * #TYPE = CFLOAT, CDOUBLE#
230
+ * #type = npy_float, npy_double#
231
+ */
232
+ static PyObject *
233
+ @TYPE@_getitem(void *input, void *vap)
234
+ {
235
+ PyArrayObject *ap = vap;
236
+ char *ip = input;
237
+ @type@ t1, t2;
238
+
239
+ if ((ap == NULL) || PyArray_ISBEHAVED_RO(ap)) {
240
+ return PyComplex_FromDoubles((double)((@type@ *)ip)[0],
241
+ (double)((@type@ *)ip)[1]);
242
+ }
243
+ else {
244
+ int size = sizeof(@type@);
245
+
246
+ npy_bool swap = !PyArray_ISNOTSWAPPED(ap);
247
+ copy_and_swap(&t1, ip, size, 1, 0, swap);
248
+ copy_and_swap(&t2, ip + size, size, 1, 0, swap);
249
+ return PyComplex_FromDoubles((double)t1, (double)t2);
250
+ }
251
+ }
252
+
253
+ /**end repeat**/
254
+
255
+
256
+
257
+ /**begin repeat
258
+ *
259
+ * #NAME = CFLOAT, CDOUBLE, CLONGDOUBLE#
260
+ * #type = npy_cfloat, npy_cdouble, npy_clongdouble#
261
+ * #ftype = npy_float, npy_double, npy_longdouble#
262
+ * #kind = CFloat, CDouble, CLongDouble#
263
+ */
264
+ static int
265
+ @NAME@_setitem(PyObject *op, void *ov, void *vap)
266
+ {
267
+ PyArrayObject *ap = vap;
268
+ Py_complex oop;
269
+ PyObject *op2;
270
+ @type@ temp;
271
+ int rsize;
272
+
273
+ if (PyArray_IsScalar(op, @kind@)){
274
+ temp = ((Py@kind@ScalarObject *)op)->obval;
275
+ }
276
+ else {
277
+ if (PyArray_Check(op) && (PyArray_NDIM((PyArrayObject *)op) == 0)) {
278
+ op2 = PyArray_DESCR((PyArrayObject *)op)->f->getitem(
279
+ PyArray_BYTES((PyArrayObject *)op),
280
+ (PyArrayObject *)op);
281
+ }
282
+ else {
283
+ op2 = op;
284
+ Py_INCREF(op);
285
+ }
286
+ if (op2 == Py_None) {
287
+ oop.real = NPY_NAN;
288
+ oop.imag = NPY_NAN;
289
+ }
290
+ else {
291
+ oop = PyComplex_AsCComplex (op2);
292
+ }
293
+ Py_DECREF(op2);
294
+ if (PyErr_Occurred()) {
295
+ return -1;
296
+ }
297
+ temp.real = (@ftype@) oop.real;
298
+ temp.imag = (@ftype@) oop.imag;
299
+ }
300
+
301
+ memcpy(ov, &temp, PyArray_DESCR(ap)->elsize);
302
+ if (!PyArray_ISNOTSWAPPED(ap)) {
303
+ byte_swap_vector(ov, 2, sizeof(@ftype@));
304
+ }
305
+ rsize = sizeof(@ftype@);
306
+ copy_and_swap(ov, &temp, rsize, 2, rsize, !PyArray_ISNOTSWAPPED(ap));
307
+ return 0;
308
+ }
309
+
310
+ /**end repeat**/
311
+
312
+ /*
313
+ * These return array scalars which are different than other date-types.
314
+ */
315
+
316
+ static PyObject *
317
+ LONGDOUBLE_getitem(void *ip, void *ap)
318
+ {
319
+ return PyArray_Scalar(ip, PyArray_DESCR((PyArrayObject *)ap), NULL);
320
+ }
321
+
322
+ static int
323
+ LONGDOUBLE_setitem(PyObject *op, void *ov, void *vap)
324
+ {
325
+ PyArrayObject *ap = vap;
326
+ /* ensure alignment */
327
+ npy_longdouble temp;
328
+
329
+ if (PyArray_IsScalar(op, LongDouble)) {
330
+ temp = ((PyLongDoubleScalarObject *)op)->obval;
331
+ }
332
+ else {
333
+ temp = (npy_longdouble) MyPyFloat_AsDouble(op);
334
+ }
335
+ if (PyErr_Occurred()) {
336
+ return -1;
337
+ }
338
+ if (ap == NULL || PyArray_ISBEHAVED(ap)) {
339
+ *((npy_longdouble *)ov) = temp;
340
+ }
341
+ else {
342
+ copy_and_swap(ov, &temp, PyArray_DESCR(ap)->elsize, 1, 0,
343
+ !PyArray_ISNOTSWAPPED(ap));
344
+ }
345
+ return 0;
346
+ }
347
+
348
+ static PyObject *
349
+ CLONGDOUBLE_getitem(void *ip, void *ap)
350
+ {
351
+ return PyArray_Scalar(ip, PyArray_DESCR((PyArrayObject *)ap), NULL);
352
+ }
353
+
354
+ /* UNICODE */
355
+ static PyObject *
356
+ UNICODE_getitem(void *ip, void *vap)
357
+ {
358
+ PyArrayObject *ap = vap;
359
+ Py_ssize_t size = PyArray_ITEMSIZE(ap);
360
+ int swap = !PyArray_ISNOTSWAPPED(ap);
361
+ int align = !PyArray_ISALIGNED(ap);
362
+
363
+ return (PyObject *)PyUnicode_FromUCS4(ip, size, swap, align);
364
+ }
365
+
366
+ static int
367
+ UNICODE_setitem(PyObject *op, void *ov, void *vap)
368
+ {
369
+ PyArrayObject *ap = vap;
370
+ PyObject *temp;
371
+ Py_UNICODE *ptr;
372
+ int datalen;
373
+ #ifndef Py_UNICODE_WIDE
374
+ char *buffer;
375
+ #endif
376
+
377
+ if (!PyBytes_Check(op) && !PyUnicode_Check(op) &&
378
+ PySequence_Check(op) && PySequence_Size(op) > 0) {
379
+ PyErr_SetString(PyExc_ValueError,
380
+ "setting an array element with a sequence");
381
+ return -1;
382
+ }
383
+ /* Sequence_Size might have returned an error */
384
+ if (PyErr_Occurred()) {
385
+ PyErr_Clear();
386
+ }
387
+ #if defined(NPY_PY3K)
388
+ if (PyBytes_Check(op)) {
389
+ /* Try to decode from ASCII */
390
+ temp = PyUnicode_FromEncodedObject(op, "ASCII", "strict");
391
+ if (temp == NULL) {
392
+ return -1;
393
+ }
394
+ }
395
+ else if ((temp=PyObject_Str(op)) == NULL) {
396
+ #else
397
+ if ((temp=PyObject_Unicode(op)) == NULL) {
398
+ #endif
399
+ return -1;
400
+ }
401
+ ptr = PyUnicode_AS_UNICODE(temp);
402
+ if ((ptr == NULL) || (PyErr_Occurred())) {
403
+ Py_DECREF(temp);
404
+ return -1;
405
+ }
406
+ datalen = PyUnicode_GET_DATA_SIZE(temp);
407
+
408
+ #ifdef Py_UNICODE_WIDE
409
+ memcpy(ov, ptr, PyArray_MIN(PyArray_DESCR(ap)->elsize, datalen));
410
+ #else
411
+ if (!PyArray_ISALIGNED(ap)) {
412
+ buffer = PyArray_malloc(PyArray_DESCR(ap)->elsize);
413
+ if (buffer == NULL) {
414
+ Py_DECREF(temp);
415
+ PyErr_NoMemory();
416
+ return -1;
417
+ }
418
+ }
419
+ else {
420
+ buffer = ov;
421
+ }
422
+ datalen = PyUCS2Buffer_AsUCS4(ptr, (npy_ucs4 *)buffer,
423
+ datalen >> 1, PyArray_DESCR(ap)->elsize >> 2);
424
+ datalen <<= 2;
425
+ if (!PyArray_ISALIGNED(ap)) {
426
+ memcpy(ov, buffer, datalen);
427
+ PyArray_free(buffer);
428
+ }
429
+ #endif
430
+ /* Fill in the rest of the space with 0 */
431
+ if (PyArray_DESCR(ap)->elsize > datalen) {
432
+ memset((char*)ov + datalen, 0, (PyArray_DESCR(ap)->elsize - datalen));
433
+ }
434
+ if (!PyArray_ISNOTSWAPPED(ap)) {
435
+ byte_swap_vector(ov, PyArray_DESCR(ap)->elsize >> 2, 4);
436
+ }
437
+ Py_DECREF(temp);
438
+ return 0;
439
+ }
440
+
441
+ /* STRING
442
+ *
443
+ * can handle both NULL-terminated and not NULL-terminated cases
444
+ * will truncate all ending NULLs in returned string.
445
+ */
446
+ static PyObject *
447
+ STRING_getitem(void *ip, void *vap)
448
+ {
449
+ PyArrayObject *ap = vap;
450
+ /* Will eliminate NULLs at the end */
451
+ char *ptr;
452
+ int size = PyArray_DESCR(ap)->elsize;
453
+
454
+ ptr = (char *)ip + size - 1;
455
+ while (size > 0 && *ptr-- == '\0') {
456
+ size--;
457
+ }
458
+ return PyBytes_FromStringAndSize(ip,size);
459
+ }
460
+
461
+ static int
462
+ STRING_setitem(PyObject *op, void *ov, void *vap)
463
+ {
464
+ PyArrayObject *ap = vap;
465
+ char *ptr;
466
+ Py_ssize_t len;
467
+ PyObject *temp = NULL;
468
+
469
+ /* Handle case of assigning from an array scalar */
470
+ if (PyArray_Check(op) && PyArray_NDIM((PyArrayObject *)op) == 0) {
471
+ temp = PyArray_ToScalar(PyArray_BYTES((PyArrayObject *)op),
472
+ (PyArrayObject *)op);
473
+ if (temp == NULL) {
474
+ return -1;
475
+ }
476
+ else {
477
+ int res = STRING_setitem(temp, ov, ap);
478
+ Py_DECREF(temp);
479
+ return res;
480
+ }
481
+ }
482
+
483
+ if (!PyBytes_Check(op) && !PyUnicode_Check(op)
484
+ && PySequence_Check(op) && PySequence_Size(op) != 0) {
485
+ PyErr_SetString(PyExc_ValueError,
486
+ "cannot set an array element with a sequence");
487
+ return -1;
488
+ }
489
+ #if defined(NPY_PY3K)
490
+ if (PyUnicode_Check(op)) {
491
+ /* Assume ASCII codec -- function similarly as Python 2 */
492
+ temp = PyUnicode_AsASCIIString(op);
493
+ if (temp == NULL) {
494
+ return -1;
495
+ }
496
+ }
497
+ else if (PyBytes_Check(op) || PyMemoryView_Check(op)) {
498
+ temp = PyObject_Bytes(op);
499
+ if (temp == NULL) {
500
+ return -1;
501
+ }
502
+ }
503
+ else {
504
+ /* Emulate similar casting behavior as on Python 2 */
505
+ PyObject *str;
506
+ str = PyObject_Str(op);
507
+ if (str == NULL) {
508
+ return -1;
509
+ }
510
+ temp = PyUnicode_AsASCIIString(str);
511
+ Py_DECREF(str);
512
+ if (temp == NULL) {
513
+ return -1;
514
+ }
515
+ }
516
+ #else
517
+ if ((temp = PyObject_Str(op)) == NULL) {
518
+ return -1;
519
+ }
520
+ #endif
521
+ if (PyBytes_AsStringAndSize(temp, &ptr, &len) < 0) {
522
+ Py_DECREF(temp);
523
+ return -1;
524
+ }
525
+ memcpy(ov, ptr, PyArray_MIN(PyArray_DESCR(ap)->elsize,len));
526
+ /*
527
+ * If string lenth is smaller than room in array
528
+ * Then fill the rest of the element size with NULL
529
+ */
530
+ if (PyArray_DESCR(ap)->elsize > len) {
531
+ memset((char *)ov + len, 0, (PyArray_DESCR(ap)->elsize - len));
532
+ }
533
+ Py_DECREF(temp);
534
+ return 0;
535
+ }
536
+
537
+ /* OBJECT */
538
+
539
+ #define __ALIGNED(obj, sz) ((((size_t) obj) % (sz))==0)
540
+
541
+ static PyObject *
542
+ OBJECT_getitem(void *ip, void *NPY_UNUSED(ap))
543
+ {
544
+ PyObject *obj;
545
+ NPY_COPY_PYOBJECT_PTR(&obj, ip);
546
+ if (obj == NULL) {
547
+ Py_RETURN_NONE;
548
+ }
549
+ else {
550
+ Py_INCREF(obj);
551
+ return obj;
552
+ }
553
+ }
554
+
555
+
556
+ static int
557
+ OBJECT_setitem(PyObject *op, void *ov, void *NPY_UNUSED(ap))
558
+ {
559
+ PyObject *obj;
560
+
561
+ NPY_COPY_PYOBJECT_PTR(&obj, ov);
562
+
563
+ Py_INCREF(op);
564
+ Py_XDECREF(obj);
565
+
566
+ NPY_COPY_PYOBJECT_PTR(ov, &op);
567
+
568
+ return PyErr_Occurred() ? -1 : 0;
569
+ }
570
+
571
+ /* VOID */
572
+
573
+ /* unpack tuple of dtype->fields (descr, offset, title[not-needed]) */
574
+ static int
575
+ unpack_field(PyObject * value, PyArray_Descr ** descr, npy_intp * offset)
576
+ {
577
+ PyObject * off;
578
+ if (PyTuple_GET_SIZE(value) < 2) {
579
+ return -1;
580
+ }
581
+ *descr = (PyArray_Descr *)PyTuple_GET_ITEM(value, 0);
582
+ off = PyTuple_GET_ITEM(value, 1);
583
+
584
+ if (PyInt_Check(off)) {
585
+ *offset = PyInt_AsSsize_t(off);
586
+ }
587
+ else if (PyLong_Check(off)) {
588
+ *offset = PyLong_AsSsize_t(off);
589
+ }
590
+ else {
591
+ return -1;
592
+ }
593
+
594
+ return 0;
595
+ }
596
+
597
+
598
+ static PyObject *
599
+ VOID_getitem(void *input, void *vap)
600
+ {
601
+ PyArrayObject *ap = vap;
602
+ char *ip = input;
603
+ PyArrayObject *u = NULL;
604
+ PyArray_Descr* descr;
605
+ int itemsize;
606
+
607
+ descr = PyArray_DESCR(ap);
608
+ if (PyDataType_HASFIELDS(descr)) {
609
+ PyObject *key;
610
+ PyObject *names;
611
+ int i, n;
612
+ PyObject *ret;
613
+ PyObject *tup;
614
+ int savedflags;
615
+
616
+ /* get the names from the fields dictionary*/
617
+ names = descr->names;
618
+ n = PyTuple_GET_SIZE(names);
619
+ ret = PyTuple_New(n);
620
+ savedflags = PyArray_FLAGS(ap);
621
+ for (i = 0; i < n; i++) {
622
+ npy_intp offset;
623
+ PyArray_Descr *new;
624
+ key = PyTuple_GET_ITEM(names, i);
625
+ tup = PyDict_GetItem(descr->fields, key);
626
+ if (unpack_field(tup, &new, &offset) < 0) {
627
+ Py_DECREF(ret);
628
+ ((PyArrayObject_fields *)ap)->descr = descr;
629
+ return NULL;
630
+ }
631
+ /*
632
+ * TODO: temporarily modifying the array like this
633
+ * is bad coding style, should be changed.
634
+ */
635
+ ((PyArrayObject_fields *)ap)->descr = new;
636
+ /* update alignment based on offset */
637
+ if ((new->alignment > 1)
638
+ && ((((npy_intp)(ip+offset)) % new->alignment) != 0)) {
639
+ PyArray_CLEARFLAGS(ap, NPY_ARRAY_ALIGNED);
640
+ }
641
+ else {
642
+ PyArray_ENABLEFLAGS(ap, NPY_ARRAY_ALIGNED);
643
+ }
644
+ PyTuple_SET_ITEM(ret, i, new->f->getitem(ip+offset, ap));
645
+ ((PyArrayObject_fields *)ap)->flags = savedflags;
646
+ }
647
+ ((PyArrayObject_fields *)ap)->descr = descr;
648
+ return ret;
649
+ }
650
+
651
+ if (descr->subarray) {
652
+ /* return an array of the basic type */
653
+ PyArray_Dims shape = {NULL, -1};
654
+ PyArrayObject *ret;
655
+
656
+ if (!(PyArray_IntpConverter(descr->subarray->shape, &shape))) {
657
+ PyDimMem_FREE(shape.ptr);
658
+ PyErr_SetString(PyExc_ValueError,
659
+ "invalid shape in fixed-type tuple.");
660
+ return NULL;
661
+ }
662
+ Py_INCREF(descr->subarray->base);
663
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type,
664
+ descr->subarray->base, shape.len, shape.ptr,
665
+ NULL, ip, PyArray_FLAGS(ap)&(~NPY_ARRAY_F_CONTIGUOUS), NULL);
666
+ PyDimMem_FREE(shape.ptr);
667
+ if (!ret) {
668
+ return NULL;
669
+ }
670
+ Py_INCREF(ap);
671
+ if (PyArray_SetBaseObject(ret, (PyObject *)ap) < 0) {
672
+ Py_DECREF(ret);
673
+ return NULL;
674
+ }
675
+ PyArray_UpdateFlags((PyArrayObject *)ret, NPY_ARRAY_UPDATE_ALL);
676
+ return (PyObject *)ret;
677
+ }
678
+
679
+ if (PyDataType_FLAGCHK(descr, NPY_ITEM_HASOBJECT)
680
+ || PyDataType_FLAGCHK(descr, NPY_ITEM_IS_POINTER)) {
681
+ PyErr_SetString(PyExc_ValueError,
682
+ "tried to get void-array with object members as buffer.");
683
+ return NULL;
684
+ }
685
+ itemsize = PyArray_DESCR(ap)->elsize;
686
+
687
+ #if defined(NPY_PY3K)
688
+ /*
689
+ * Return a byte array; there are no plain buffer objects on Py3
690
+ */
691
+ {
692
+ npy_intp dims[1], strides[1];
693
+ dims[0] = itemsize;
694
+ strides[0] = 1;
695
+ descr = PyArray_DescrNewFromType(NPY_BYTE);
696
+ u = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type,
697
+ descr, 1, dims, strides, ip,
698
+ PyArray_ISWRITEABLE(ap) ? NPY_ARRAY_WRITEABLE : 0,
699
+ NULL);
700
+ Py_INCREF(ap);
701
+ if (PyArray_SetBaseObject(u, (PyObject *)ap) < 0) {
702
+ Py_DECREF(u);
703
+ return NULL;
704
+ }
705
+ }
706
+ #else
707
+ /*
708
+ * default is to return buffer object pointing to
709
+ * current item a view of it
710
+ */
711
+ if (PyArray_ISWRITEABLE(ap)) {
712
+ if (array_might_be_written(ap) < 0) {
713
+ return NULL;
714
+ }
715
+ u = (PyArrayObject *)PyBuffer_FromReadWriteMemory(ip, itemsize);
716
+ }
717
+ else {
718
+ u = (PyArrayObject *)PyBuffer_FromMemory(ip, itemsize);
719
+ }
720
+ #endif
721
+
722
+ if (u == NULL) {
723
+ return NULL;
724
+ }
725
+ return (PyObject *)u;
726
+ }
727
+
728
+
729
+ NPY_NO_EXPORT int PyArray_CopyObject(PyArrayObject *, PyObject *);
730
+
731
+ static int
732
+ VOID_setitem(PyObject *op, void *input, void *vap)
733
+ {
734
+ char *ip = input;
735
+ PyArrayObject *ap = vap;
736
+ PyArray_Descr *descr;
737
+ int itemsize=PyArray_DESCR(ap)->elsize;
738
+ int res;
739
+
740
+ descr = PyArray_DESCR(ap);
741
+ if (descr->names && PyTuple_Check(op)) {
742
+ PyObject *key;
743
+ PyObject *names;
744
+ int i, n;
745
+ PyObject *tup;
746
+ int savedflags;
747
+
748
+ res = 0;
749
+ /* get the names from the fields dictionary*/
750
+ names = descr->names;
751
+ n = PyTuple_GET_SIZE(names);
752
+ if (PyTuple_GET_SIZE(op) != n) {
753
+ PyErr_SetString(PyExc_ValueError,
754
+ "size of tuple must match number of fields.");
755
+ return -1;
756
+ }
757
+ savedflags = PyArray_FLAGS(ap);
758
+ for (i = 0; i < n; i++) {
759
+ PyArray_Descr *new;
760
+ npy_intp offset;
761
+ key = PyTuple_GET_ITEM(names, i);
762
+ tup = PyDict_GetItem(descr->fields, key);
763
+ if (unpack_field(tup, &new, &offset) < 0) {
764
+ ((PyArrayObject_fields *)ap)->descr = descr;
765
+ return -1;
766
+ }
767
+ /*
768
+ * TODO: temporarily modifying the array like this
769
+ * is bad coding style, should be changed.
770
+ */
771
+ ((PyArrayObject_fields *)ap)->descr = new;
772
+ /* remember to update alignment flags */
773
+ if ((new->alignment > 1)
774
+ && ((((npy_intp)(ip+offset)) % new->alignment) != 0)) {
775
+ PyArray_CLEARFLAGS(ap, NPY_ARRAY_ALIGNED);
776
+ }
777
+ else {
778
+ PyArray_ENABLEFLAGS(ap, NPY_ARRAY_ALIGNED);
779
+ }
780
+ res = new->f->setitem(PyTuple_GET_ITEM(op, i), ip+offset, ap);
781
+ ((PyArrayObject_fields *)ap)->flags = savedflags;
782
+ if (res < 0) {
783
+ break;
784
+ }
785
+ }
786
+ ((PyArrayObject_fields *)ap)->descr = descr;
787
+ return res;
788
+ }
789
+
790
+ if (descr->subarray) {
791
+ /* copy into an array of the same basic type */
792
+ PyArray_Dims shape = {NULL, -1};
793
+ PyArrayObject *ret;
794
+ if (!(PyArray_IntpConverter(descr->subarray->shape, &shape))) {
795
+ PyDimMem_FREE(shape.ptr);
796
+ PyErr_SetString(PyExc_ValueError,
797
+ "invalid shape in fixed-type tuple.");
798
+ return -1;
799
+ }
800
+ Py_INCREF(descr->subarray->base);
801
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type,
802
+ descr->subarray->base, shape.len, shape.ptr,
803
+ NULL, ip, PyArray_FLAGS(ap), NULL);
804
+ PyDimMem_FREE(shape.ptr);
805
+ if (!ret) {
806
+ return -1;
807
+ }
808
+ Py_INCREF(ap);
809
+ if (PyArray_SetBaseObject(ret, (PyObject *)ap) < 0) {
810
+ Py_DECREF(ret);
811
+ return -1;
812
+ }
813
+ PyArray_UpdateFlags(ret, NPY_ARRAY_UPDATE_ALL);
814
+ res = PyArray_CopyObject(ret, op);
815
+ Py_DECREF(ret);
816
+ return res;
817
+ }
818
+
819
+ /* Default is to use buffer interface to set item */
820
+ {
821
+ const void *buffer;
822
+ Py_ssize_t buflen;
823
+ if (PyDataType_FLAGCHK(descr, NPY_ITEM_HASOBJECT)
824
+ || PyDataType_FLAGCHK(descr, NPY_ITEM_IS_POINTER)) {
825
+ PyErr_SetString(PyExc_ValueError,
826
+ "Setting void-array with object members using buffer.");
827
+ return -1;
828
+ }
829
+ res = PyObject_AsReadBuffer(op, &buffer, &buflen);
830
+ if (res == -1) {
831
+ goto fail;
832
+ }
833
+ memcpy(ip, buffer, PyArray_MIN(buflen, itemsize));
834
+ if (itemsize > buflen) {
835
+ memset(ip + buflen, 0, itemsize - buflen);
836
+ }
837
+ }
838
+ return 0;
839
+
840
+ fail:
841
+ return -1;
842
+ }
843
+
844
+ static PyObject *
845
+ DATETIME_getitem(void *ip, void *vap)
846
+ {
847
+ PyArrayObject *ap = vap;
848
+ npy_datetime dt;
849
+ PyArray_DatetimeMetaData *meta = NULL;
850
+
851
+ /* Get the datetime units metadata */
852
+ meta = get_datetime_metadata_from_dtype(PyArray_DESCR(ap));
853
+ if (meta == NULL) {
854
+ return NULL;
855
+ }
856
+
857
+ if ((ap == NULL) || PyArray_ISBEHAVED_RO(ap)) {
858
+ dt = *((npy_datetime *)ip);
859
+ }
860
+ else {
861
+ PyArray_DESCR(ap)->f->copyswap(&dt, ip, !PyArray_ISNOTSWAPPED(ap), ap);
862
+ }
863
+
864
+ return convert_datetime_to_pyobject(dt, meta);
865
+ }
866
+
867
+
868
+ static PyObject *
869
+ TIMEDELTA_getitem(void *ip, void *vap)
870
+ {
871
+ PyArrayObject *ap = vap;
872
+ npy_timedelta td;
873
+ PyArray_DatetimeMetaData *meta = NULL;
874
+
875
+ /* Get the datetime units metadata */
876
+ meta = get_datetime_metadata_from_dtype(PyArray_DESCR(ap));
877
+ if (meta == NULL) {
878
+ return NULL;
879
+ }
880
+
881
+ if ((ap == NULL) || PyArray_ISBEHAVED_RO(ap)) {
882
+ td = *((npy_timedelta *)ip);
883
+ }
884
+ else {
885
+ PyArray_DESCR(ap)->f->copyswap(&td, ip, !PyArray_ISNOTSWAPPED(ap), ap);
886
+ }
887
+
888
+ return convert_timedelta_to_pyobject(td, meta);
889
+ }
890
+
891
+ static int
892
+ DATETIME_setitem(PyObject *op, void *ov, void *vap)
893
+ {
894
+ PyArrayObject *ap = vap;
895
+ /* ensure alignment */
896
+ npy_datetime temp = 0;
897
+ PyArray_DatetimeMetaData *meta = NULL;
898
+
899
+ /* Get the datetime units metadata */
900
+ meta = get_datetime_metadata_from_dtype(PyArray_DESCR(ap));
901
+ if (meta == NULL) {
902
+ return -1;
903
+ }
904
+
905
+ /* Convert the object into a NumPy datetime */
906
+ if (convert_pyobject_to_datetime(meta, op,
907
+ NPY_SAME_KIND_CASTING, &temp) < 0) {
908
+ return -1;
909
+ }
910
+
911
+ /* Copy the value into the output */
912
+ if (ap == NULL || PyArray_ISBEHAVED(ap)) {
913
+ *((npy_datetime *)ov)=temp;
914
+ }
915
+ else {
916
+ PyArray_DESCR(ap)->f->copyswap(ov, &temp,
917
+ !PyArray_ISNOTSWAPPED(ap), ap);
918
+ }
919
+
920
+ return 0;
921
+ }
922
+
923
+ static int
924
+ TIMEDELTA_setitem(PyObject *op, void *ov, void *vap)
925
+ {
926
+ PyArrayObject *ap = vap;
927
+ /* ensure alignment */
928
+ npy_timedelta temp = 0;
929
+ PyArray_DatetimeMetaData *meta = NULL;
930
+
931
+ /* Get the datetime units metadata */
932
+ meta = get_datetime_metadata_from_dtype(PyArray_DESCR(ap));
933
+ if (meta == NULL) {
934
+ return -1;
935
+ }
936
+
937
+ /* Convert the object into a NumPy datetime */
938
+ if (convert_pyobject_to_timedelta(meta, op,
939
+ NPY_SAME_KIND_CASTING, &temp) < 0) {
940
+ return -1;
941
+ }
942
+
943
+ /* Copy the value into the output */
944
+ if (ap == NULL || PyArray_ISBEHAVED(ap)) {
945
+ *((npy_timedelta *)ov)=temp;
946
+ }
947
+ else {
948
+ PyArray_DESCR(ap)->f->copyswap(ov, &temp, !PyArray_ISNOTSWAPPED(ap), ap);
949
+ }
950
+
951
+ return 0;
952
+ }
953
+
954
+
955
+ /*
956
+ *****************************************************************************
957
+ ** TYPE TO TYPE CONVERSIONS **
958
+ *****************************************************************************
959
+ */
960
+
961
+
962
+ /* Assumes contiguous, and aligned, from and to */
963
+
964
+
965
+ /**begin repeat
966
+ *
967
+ * #TOTYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
968
+ * LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE, DATETIME,
969
+ * TIMEDELTA#
970
+ * #totype = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
971
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
972
+ * npy_float, npy_double, npy_longdouble,
973
+ * npy_datetime, npy_timedelta#
974
+ */
975
+
976
+ /**begin repeat1
977
+ *
978
+ * #FROMTYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
979
+ * LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE, DATETIME,
980
+ * TIMEDELTA#
981
+ * #fromtype = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
982
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
983
+ * npy_float, npy_double, npy_longdouble,
984
+ * npy_datetime, npy_timedelta#
985
+ */
986
+ static void
987
+ @FROMTYPE@_to_@TOTYPE@(void *input, void *output, npy_intp n,
988
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
989
+ {
990
+ const @fromtype@ *ip = input;
991
+ @totype@ *op = output;
992
+
993
+ while (n--) {
994
+ *op++ = (@totype@)*ip++;
995
+ }
996
+ }
997
+ /**end repeat1**/
998
+
999
+ /**begin repeat1
1000
+ *
1001
+ * #FROMTYPE = CFLOAT, CDOUBLE, CLONGDOUBLE#
1002
+ * #fromtype = npy_float, npy_double, npy_longdouble#
1003
+ */
1004
+ static void
1005
+ @FROMTYPE@_to_@TOTYPE@(void *input, void *output, npy_intp n,
1006
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1007
+ {
1008
+ const @fromtype@ *ip = input;
1009
+ @totype@ *op = output;
1010
+
1011
+ while (n--) {
1012
+ *op++ = (@totype@)*ip;
1013
+ ip += 2;
1014
+ }
1015
+ }
1016
+ /**end repeat1**/
1017
+
1018
+ /**end repeat**/
1019
+
1020
+
1021
+ /**begin repeat
1022
+ *
1023
+ * #TYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
1024
+ * LONGLONG, ULONGLONG, LONGDOUBLE, DATETIME,
1025
+ * TIMEDELTA#
1026
+ * #type = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1027
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1028
+ * npy_longdouble,
1029
+ * npy_datetime, npy_timedelta#
1030
+ */
1031
+
1032
+ static void
1033
+ @TYPE@_to_HALF(void *input, void *output, npy_intp n,
1034
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1035
+ {
1036
+ const @type@ *ip = input;
1037
+ npy_half *op = output;
1038
+
1039
+ while (n--) {
1040
+ *op++ = npy_float_to_half((float)(*ip++));
1041
+ }
1042
+ }
1043
+
1044
+ static void
1045
+ HALF_to_@TYPE@(void *input, void *output, npy_intp n,
1046
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1047
+ {
1048
+ const npy_half *ip = input;
1049
+ @type@ *op = output;
1050
+
1051
+ while (n--) {
1052
+ *op++ = (@type@)npy_half_to_float(*ip++);
1053
+ }
1054
+ }
1055
+
1056
+ /**end repeat**/
1057
+ #if NPY_SIZEOF_SHORT == 2
1058
+ #define HALF_to_HALF SHORT_to_SHORT
1059
+ #elif NPY_SIZEOF_INT == 2
1060
+ #define HALF_to_HALF INT_to_INT
1061
+ #endif
1062
+
1063
+ /**begin repeat
1064
+ *
1065
+ * #TYPE = FLOAT, DOUBLE, CFLOAT, CDOUBLE#
1066
+ * #name = float, double, float, double#
1067
+ * #itype = npy_uint32, npy_uint64, npy_uint32, npy_uint64#
1068
+ * #iscomplex = 0, 0, 1, 1#
1069
+ */
1070
+
1071
+ static void
1072
+ @TYPE@_to_HALF(void *input, void *output, npy_intp n,
1073
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1074
+ {
1075
+ const @itype@ *ip = input;
1076
+ npy_half *op = output;
1077
+
1078
+ while (n--) {
1079
+ *op++ = npy_@name@bits_to_halfbits(*ip);
1080
+ #if @iscomplex@
1081
+ ip += 2;
1082
+ #else
1083
+ ip++;
1084
+ #endif
1085
+ }
1086
+ }
1087
+
1088
+ static void
1089
+ HALF_to_@TYPE@(void *input, void *output, npy_intp n,
1090
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1091
+ {
1092
+ const npy_half *ip = input;
1093
+ @itype@ *op = output;
1094
+
1095
+ while (n--) {
1096
+ *op++ = npy_halfbits_to_@name@bits(*ip++);
1097
+ #if @iscomplex@
1098
+ *op++ = 0;
1099
+ #endif
1100
+ }
1101
+ }
1102
+
1103
+ /**end repeat**/
1104
+
1105
+ static void
1106
+ CLONGDOUBLE_to_HALF(void *input, void *output, npy_intp n,
1107
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1108
+ {
1109
+ const npy_longdouble *ip = input;
1110
+ npy_half *op = output;
1111
+
1112
+ while (n--) {
1113
+ *op++ = npy_double_to_half((double) (*ip++));
1114
+ ip += 2;
1115
+ }
1116
+ }
1117
+
1118
+ static void
1119
+ HALF_to_CLONGDOUBLE(void *input, void *output, npy_intp n,
1120
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1121
+ {
1122
+ const npy_half *ip = input;
1123
+ npy_longdouble *op = output;
1124
+
1125
+ while (n--) {
1126
+ *op++ = npy_half_to_double(*ip++);
1127
+ *op++ = 0;
1128
+ }
1129
+ }
1130
+
1131
+ /**begin repeat
1132
+ *
1133
+ * #FROMTYPE = BOOL,
1134
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1135
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1136
+ * FLOAT, DOUBLE, LONGDOUBLE,
1137
+ * DATETIME, TIMEDELTA#
1138
+ * #fromtype = npy_bool,
1139
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1140
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1141
+ * npy_float, npy_double, npy_longdouble,
1142
+ * npy_datetime, npy_timedelta#
1143
+ */
1144
+ static void
1145
+ @FROMTYPE@_to_BOOL(void *input, void *output, npy_intp n,
1146
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1147
+ {
1148
+ const @fromtype@ *ip = input;
1149
+ npy_bool *op = output;
1150
+
1151
+ while (n--) {
1152
+ *op++ = (npy_bool)(*ip++ != NPY_FALSE);
1153
+ }
1154
+ }
1155
+ /**end repeat**/
1156
+
1157
+ static void
1158
+ HALF_to_BOOL(void *input, void *output, npy_intp n,
1159
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1160
+ {
1161
+ const npy_half *ip = input;
1162
+ npy_bool *op = output;
1163
+
1164
+ while (n--) {
1165
+ *op++ = (npy_bool)(!npy_half_iszero(*ip++));
1166
+ }
1167
+ }
1168
+
1169
+ /**begin repeat
1170
+ *
1171
+ * #FROMTYPE = CFLOAT, CDOUBLE, CLONGDOUBLE#
1172
+ * #fromtype = npy_cfloat, npy_cdouble, npy_clongdouble#
1173
+ */
1174
+ static void
1175
+ @FROMTYPE@_to_BOOL(void *input, void *output, npy_intp n,
1176
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1177
+ {
1178
+ const @fromtype@ *ip = input;
1179
+ npy_bool *op = output;
1180
+
1181
+ while (n--) {
1182
+ *op = (npy_bool)((ip->real != NPY_FALSE) ||
1183
+ (ip->imag != NPY_FALSE));
1184
+ op++;
1185
+ ip++;
1186
+ }
1187
+ }
1188
+ /**end repeat**/
1189
+
1190
+ /**begin repeat
1191
+ * #TOTYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1192
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1193
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
1194
+ * DATETIME, TIMEDELTA#
1195
+ * #totype = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1196
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1197
+ * npy_half, npy_float, npy_double, npy_longdouble,
1198
+ * npy_datetime, npy_timedelta#
1199
+ * #one = 1*10, NPY_HALF_ONE, 1*5#
1200
+ * #zero = 0*10, NPY_HALF_ZERO, 0*5#
1201
+ */
1202
+ static void
1203
+ BOOL_to_@TOTYPE@(void *input, void *output, npy_intp n,
1204
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1205
+ {
1206
+ const npy_bool *ip = input;
1207
+ @totype@ *op = output;
1208
+
1209
+ while (n--) {
1210
+ *op++ = (@totype@)((*ip++ != NPY_FALSE) ? @one@ : @zero@);
1211
+ }
1212
+ }
1213
+ /**end repeat**/
1214
+
1215
+ /**begin repeat
1216
+ *
1217
+ * #TOTYPE = CFLOAT, CDOUBLE,CLONGDOUBLE#
1218
+ * #totype = npy_float, npy_double, npy_longdouble#
1219
+ */
1220
+
1221
+ /**begin repeat1
1222
+ * #FROMTYPE = BOOL,
1223
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1224
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1225
+ * FLOAT, DOUBLE, LONGDOUBLE,
1226
+ * DATETIME, TIMEDELTA#
1227
+ * #fromtype = npy_bool,
1228
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1229
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1230
+ * npy_float, npy_double, npy_longdouble,
1231
+ * npy_datetime, npy_timedelta#
1232
+ */
1233
+ static void
1234
+ @FROMTYPE@_to_@TOTYPE@(void *input, void *output, npy_intp n,
1235
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1236
+ {
1237
+ const @fromtype@ *ip = input;
1238
+ @totype@ *op = output;
1239
+
1240
+ while (n--) {
1241
+ *op++ = (@totype@)*ip++;
1242
+ *op++ = 0.0;
1243
+ }
1244
+
1245
+ }
1246
+ /**end repeat1**/
1247
+ /**end repeat**/
1248
+
1249
+ /**begin repeat
1250
+ *
1251
+ * #TOTYPE = CFLOAT,CDOUBLE,CLONGDOUBLE#
1252
+ * #totype = npy_float, npy_double, npy_longdouble#
1253
+ */
1254
+
1255
+ /**begin repeat1
1256
+ * #FROMTYPE = CFLOAT,CDOUBLE,CLONGDOUBLE#
1257
+ * #fromtype = npy_float, npy_double, npy_longdouble#
1258
+ */
1259
+ static void
1260
+ @FROMTYPE@_to_@TOTYPE@(void *input, void *output, npy_intp n,
1261
+ void *NPY_UNUSED(aip), void *NPY_UNUSED(aop))
1262
+ {
1263
+ const @fromtype@ *ip = input;
1264
+ @totype@ *op = output;
1265
+
1266
+ n <<= 1;
1267
+ while (n--) {
1268
+ *op++ = (@totype@)*ip++;
1269
+ }
1270
+ }
1271
+
1272
+ /**end repeat1**/
1273
+ /**end repeat**/
1274
+
1275
+ /**begin repeat
1276
+ *
1277
+ * #FROMTYPE = BOOL,
1278
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1279
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1280
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
1281
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
1282
+ * STRING, UNICODE, VOID, OBJECT,
1283
+ * DATETIME, TIMEDELTA#
1284
+ * #fromtype = npy_bool,
1285
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1286
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1287
+ * npy_half, npy_float, npy_double, npy_longdouble,
1288
+ * npy_cfloat, npy_cdouble, npy_clongdouble,
1289
+ * npy_char, npy_char, npy_char, PyObject *,
1290
+ * npy_datetime, npy_timedelta#
1291
+ * #skip = 1*18, PyArray_DESCR(aip)->elsize*3, 1*3#
1292
+ */
1293
+ static void
1294
+ @FROMTYPE@_to_OBJECT(void *input, void *output, npy_intp n,
1295
+ void *vaip, void *NPY_UNUSED(aop))
1296
+ {
1297
+ @fromtype@ *ip = input;
1298
+ PyObject **op = output;
1299
+ PyArrayObject *aip = vaip;
1300
+
1301
+ npy_intp i;
1302
+ int skip = @skip@;
1303
+ PyObject *tmp;
1304
+ for (i = 0; i < n; i++, ip +=skip, op++) {
1305
+ tmp = *op;
1306
+ *op = @FROMTYPE@_getitem(ip, aip);
1307
+ Py_XDECREF(tmp);
1308
+ }
1309
+ }
1310
+ /**end repeat**/
1311
+
1312
+ #define _NPY_UNUSEDBOOL NPY_UNUSED
1313
+ #define _NPY_UNUSEDBYTE NPY_UNUSED
1314
+ #define _NPY_UNUSEDUBYTE NPY_UNUSED
1315
+ #define _NPY_UNUSEDSHORT NPY_UNUSED
1316
+ #define _NPY_UNUSEDUSHORT NPY_UNUSED
1317
+ #define _NPY_UNUSEDINT NPY_UNUSED
1318
+ #define _NPY_UNUSEDUINT NPY_UNUSED
1319
+ #define _NPY_UNUSEDLONG NPY_UNUSED
1320
+ #define _NPY_UNUSEDULONG NPY_UNUSED
1321
+ #define _NPY_UNUSEDLONGLONG NPY_UNUSED
1322
+ #define _NPY_UNUSEDULONGLONG NPY_UNUSED
1323
+ #define _NPY_UNUSEDHALF NPY_UNUSED
1324
+ #define _NPY_UNUSEDFLOAT NPY_UNUSED
1325
+ #define _NPY_UNUSEDDOUBLE NPY_UNUSED
1326
+ #define _NPY_UNUSEDLONGDOUBLE NPY_UNUSED
1327
+ #define _NPY_UNUSEDCFLOAT NPY_UNUSED
1328
+ #define _NPY_UNUSEDCDOUBLE NPY_UNUSED
1329
+ #define _NPY_UNUSEDCLONGDOUBLE NPY_UNUSED
1330
+ #define _NPY_UNUSEDDATETIME NPY_UNUSED
1331
+ #define _NPY_UNUSEDTIMEDELTA NPY_UNUSED
1332
+ #define _NPY_UNUSEDHALF NPY_UNUSED
1333
+ #define _NPY_UNUSEDSTRING
1334
+ #define _NPY_UNUSEDVOID
1335
+ #define _NPY_UNUSEDUNICODE
1336
+
1337
+ /**begin repeat
1338
+ *
1339
+ * #TOTYPE = BOOL,
1340
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1341
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1342
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
1343
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
1344
+ * STRING, UNICODE, VOID,
1345
+ * DATETIME, TIMEDELTA#
1346
+ * #totype = npy_bool,
1347
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1348
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1349
+ * npy_half, npy_float, npy_double, npy_longdouble,
1350
+ * npy_cfloat, npy_cdouble, npy_clongdouble,
1351
+ * npy_char, npy_char, npy_char,
1352
+ * npy_datetime, npy_timedelta#
1353
+ * #skip = 1*18, PyArray_DESCR(aop)->elsize*3, 1*2#
1354
+ */
1355
+ static void
1356
+ OBJECT_to_@TOTYPE@(void *input, void *output, npy_intp n,
1357
+ void *NPY_UNUSED(aip), void *aop)
1358
+ {
1359
+ PyObject **ip = input;
1360
+ @totype@ *op = output;
1361
+
1362
+ npy_intp i;
1363
+ int skip = @skip@;
1364
+
1365
+ for (i = 0; i < n; i++, ip++, op += skip) {
1366
+ if (*ip == NULL) {
1367
+ @TOTYPE@_setitem(Py_False, op, aop);
1368
+ }
1369
+ else {
1370
+ @TOTYPE@_setitem(*ip, op, aop);
1371
+ }
1372
+ }
1373
+ }
1374
+ /**end repeat**/
1375
+
1376
+
1377
+ /**begin repeat
1378
+ *
1379
+ * #from = STRING*23, UNICODE*23, VOID*23#
1380
+ * #fromtyp = npy_char*69#
1381
+ * #to = (BOOL,
1382
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1383
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1384
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
1385
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
1386
+ * STRING, UNICODE, VOID,
1387
+ * DATETIME, TIMEDELTA)*3#
1388
+ * #totyp = (npy_bool,
1389
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1390
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1391
+ * npy_half, npy_float, npy_double, npy_longdouble,
1392
+ * npy_cfloat, npy_cdouble, npy_clongdouble,
1393
+ * npy_char, npy_char, npy_char,
1394
+ * npy_datetime, npy_timedelta)*3#
1395
+ * #oskip = 1*18,(PyArray_DESCR(aop)->elsize)*3,1*2,
1396
+ * 1*18,(PyArray_DESCR(aop)->elsize)*3,1*2,
1397
+ * 1*18,(PyArray_DESCR(aop)->elsize)*3,1*2#
1398
+ * #convert = 1*18, 0*3, 1*2,
1399
+ * 1*18, 0*3, 1*2,
1400
+ * 0*23#
1401
+ * #convstr = (Int*9, Long*2, Float*4, Complex*3, Tuple*3, Long*2)*3#
1402
+ */
1403
+
1404
+ #if @convert@
1405
+
1406
+ #define IS_@from@
1407
+
1408
+ static void
1409
+ @from@_to_@to@(void *input, void *output, npy_intp n,
1410
+ void *vaip, void *aop)
1411
+ {
1412
+ @fromtyp@ *ip = input;
1413
+ @totyp@ *op = output;
1414
+ PyArrayObject *aip = vaip;
1415
+
1416
+ npy_intp i;
1417
+ PyObject *temp = NULL, *new;
1418
+ int skip = PyArray_DESCR(aip)->elsize;
1419
+ int oskip = @oskip@;
1420
+
1421
+ for (i = 0; i < n; i++, ip+=skip, op+=oskip) {
1422
+ temp = @from@_getitem(ip, aip);
1423
+ if (temp == NULL) {
1424
+ return;
1425
+ }
1426
+
1427
+ #if defined(NPY_PY3K) && defined(IS_STRING)
1428
+ /* Work around some Python 3K */
1429
+ new = PyUnicode_FromEncodedObject(temp, "ascii", "strict");
1430
+ Py_DECREF(temp);
1431
+ temp = new;
1432
+ if (temp == NULL) {
1433
+ return;
1434
+ }
1435
+ #endif
1436
+ /* convert from Python object to needed one */
1437
+ {
1438
+ PyObject *args;
1439
+
1440
+ /* call out to the Python builtin given by convstr */
1441
+ args = Py_BuildValue("(N)", temp);
1442
+ #if defined(NPY_PY3K)
1443
+ #define PyInt_Type PyLong_Type
1444
+ #endif
1445
+ new = Py@convstr@_Type.tp_new(&Py@convstr@_Type, args, NULL);
1446
+ #if defined(NPY_PY3K)
1447
+ #undef PyInt_Type
1448
+ #endif
1449
+ Py_DECREF(args);
1450
+ temp = new;
1451
+ if (temp == NULL) {
1452
+ return;
1453
+ }
1454
+ }
1455
+
1456
+ if (@to@_setitem(temp, op, aop)) {
1457
+ Py_DECREF(temp);
1458
+ return;
1459
+ }
1460
+ Py_DECREF(temp);
1461
+ }
1462
+ }
1463
+
1464
+ #undef IS_@from@
1465
+
1466
+ #else
1467
+
1468
+ static void
1469
+ @from@_to_@to@(void *input, void *output, npy_intp n,
1470
+ void *vaip, void *aop)
1471
+ {
1472
+ @fromtyp@ *ip = input;
1473
+ @totyp@ *op = output;
1474
+ PyArrayObject *aip = vaip;
1475
+
1476
+ npy_intp i;
1477
+ PyObject *temp = NULL;
1478
+ int skip = PyArray_DESCR(aip)->elsize;
1479
+ int oskip = @oskip@;
1480
+
1481
+ for (i = 0; i < n; i++, ip+=skip, op+=oskip) {
1482
+ temp = @from@_getitem(ip, aip);
1483
+ if (temp == NULL) {
1484
+ return;
1485
+ }
1486
+ if (@to@_setitem(temp, op, aop)) {
1487
+ Py_DECREF(temp);
1488
+ return;
1489
+ }
1490
+ Py_DECREF(temp);
1491
+ }
1492
+ }
1493
+
1494
+ #endif
1495
+
1496
+ /**end repeat**/
1497
+
1498
+
1499
+ /**begin repeat
1500
+ *
1501
+ * #to = STRING*20, UNICODE*20, VOID*20#
1502
+ * #totyp = npy_char*20, npy_char*20, npy_char*20#
1503
+ * #from = (BOOL,
1504
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1505
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1506
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
1507
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
1508
+ * DATETIME, TIMEDELTA)*3#
1509
+ * #fromtyp = (npy_bool,
1510
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1511
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1512
+ * npy_half, npy_float, npy_double, npy_longdouble,
1513
+ * npy_cfloat, npy_cdouble, npy_clongdouble,
1514
+ * npy_datetime, npy_timedelta)*3#
1515
+ */
1516
+ static void
1517
+ @from@_to_@to@(void *input, void *output, npy_intp n,
1518
+ void *vaip, void *vaop)
1519
+ {
1520
+ @fromtyp@ *ip = input;
1521
+ @totyp@ *op = output;
1522
+ PyArrayObject *aip = vaip;
1523
+ PyArrayObject *aop = vaop;
1524
+
1525
+ npy_intp i;
1526
+ PyObject *temp = NULL;
1527
+ int skip = 1;
1528
+ int oskip = PyArray_DESCR(aop)->elsize;
1529
+ for (i = 0; i < n; i++, ip += skip, op += oskip) {
1530
+ temp = @from@_getitem(ip, aip);
1531
+ if (temp == NULL) {
1532
+ Py_INCREF(Py_False);
1533
+ temp = Py_False;
1534
+ }
1535
+ if (@to@_setitem(temp, op, aop)) {
1536
+ Py_DECREF(temp);
1537
+ return;
1538
+ }
1539
+ Py_DECREF(temp);
1540
+ }
1541
+ }
1542
+
1543
+ /**end repeat**/
1544
+
1545
+
1546
+ /*
1547
+ *****************************************************************************
1548
+ ** SCAN **
1549
+ *****************************************************************************
1550
+ */
1551
+
1552
+
1553
+ /*
1554
+ * The first ignore argument is for backwards compatibility.
1555
+ * Should be removed when the API version is bumped up.
1556
+ */
1557
+
1558
+ /**begin repeat
1559
+ * #fname = SHORT, USHORT, INT, UINT,
1560
+ * LONG, ULONG, LONGLONG, ULONGLONG#
1561
+ * #type = npy_short, npy_ushort, npy_int, npy_uint,
1562
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong#
1563
+ * #format = "hd", "hu", "d", "u",
1564
+ * "ld", "lu", NPY_LONGLONG_FMT, NPY_ULONGLONG_FMT#
1565
+ */
1566
+ static int
1567
+ @fname@_scan(FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore),
1568
+ PyArray_Descr *NPY_UNUSED(ignored))
1569
+ {
1570
+ return fscanf(fp, "%"@format@, ip);
1571
+ }
1572
+ /**end repeat**/
1573
+
1574
+ /**begin repeat
1575
+ * #fname = FLOAT, DOUBLE, LONGDOUBLE#
1576
+ * #type = npy_float, npy_double, npy_longdouble#
1577
+ */
1578
+ static int
1579
+ @fname@_scan(FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore),
1580
+ PyArray_Descr *NPY_UNUSED(ignored))
1581
+ {
1582
+ double result;
1583
+ int ret;
1584
+
1585
+ ret = NumPyOS_ascii_ftolf(fp, &result);
1586
+ *ip = (@type@) result;
1587
+ return ret;
1588
+ }
1589
+ /**end repeat**/
1590
+
1591
+ static int
1592
+ HALF_scan(FILE *fp, npy_half *ip, void *NPY_UNUSED(ignore),
1593
+ PyArray_Descr *NPY_UNUSED(ignored))
1594
+ {
1595
+ double result;
1596
+ int ret;
1597
+
1598
+ ret = NumPyOS_ascii_ftolf(fp, &result);
1599
+ *ip = npy_double_to_half(result);
1600
+ return ret;
1601
+ }
1602
+
1603
+ /**begin repeat
1604
+ * #fname = BYTE, UBYTE#
1605
+ * #type = npy_byte, npy_ubyte#
1606
+ * #btype = npy_int, npy_uint#
1607
+ * #format = "d", "u"#
1608
+ */
1609
+ static int
1610
+ @fname@_scan(FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore),
1611
+ PyArray_Descr *NPY_UNUSED(ignore2))
1612
+ {
1613
+ @btype@ temp;
1614
+ int num;
1615
+
1616
+ num = fscanf(fp, "%"@format@, &temp);
1617
+ *ip = (@type@) temp;
1618
+ return num;
1619
+ }
1620
+ /**end repeat**/
1621
+
1622
+ static int
1623
+ BOOL_scan(FILE *fp, npy_bool *ip, void *NPY_UNUSED(ignore),
1624
+ PyArray_Descr *NPY_UNUSED(ignore2))
1625
+ {
1626
+ double result;
1627
+ int ret;
1628
+
1629
+ ret = NumPyOS_ascii_ftolf(fp, &result);
1630
+ *ip = (npy_bool) (result != 0.0);
1631
+ return ret;
1632
+ }
1633
+
1634
+ /**begin repeat
1635
+ * #fname = CFLOAT, CDOUBLE, CLONGDOUBLE,
1636
+ * OBJECT, STRING, UNICODE, VOID,
1637
+ * DATETIME, TIMEDELTA#
1638
+ */
1639
+
1640
+ #define @fname@_scan NULL
1641
+
1642
+ /**end repeat**/
1643
+
1644
+
1645
+ /*
1646
+ *****************************************************************************
1647
+ ** FROMSTR **
1648
+ *****************************************************************************
1649
+ */
1650
+
1651
+
1652
+ /**begin repeat
1653
+ * #fname = BYTE, UBYTE, SHORT, USHORT, INT, UINT,
1654
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1655
+ * DATETIME, TIMEDELTA#
1656
+ * #type = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
1657
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1658
+ * npy_datetime, npy_timedelta#
1659
+ * #func = (PyOS_strtol, PyOS_strtoul)*4, npy_strtoll, npy_strtoull,
1660
+ * npy_strtoll*2#
1661
+ * #btype = (npy_long, npy_ulong)*4, npy_longlong, npy_ulonglong,
1662
+ * npy_longlong*2#
1663
+ */
1664
+ static int
1665
+ @fname@_fromstr(char *str, void *ip, char **endptr,
1666
+ PyArray_Descr *NPY_UNUSED(ignore))
1667
+ {
1668
+ @btype@ result;
1669
+
1670
+ result = @func@(str, endptr, 10);
1671
+ *(@type@ *)ip = result;
1672
+ return 0;
1673
+ }
1674
+ /**end repeat**/
1675
+
1676
+ /**begin repeat
1677
+ *
1678
+ * #fname = FLOAT, DOUBLE, LONGDOUBLE#
1679
+ * #type = npy_float, npy_double, npy_longdouble#
1680
+ */
1681
+ static int
1682
+ @fname@_fromstr(char *str, void *ip, char **endptr,
1683
+ PyArray_Descr *NPY_UNUSED(ignore))
1684
+ {
1685
+ double result;
1686
+
1687
+ result = NumPyOS_ascii_strtod(str, endptr);
1688
+ *(@type@ *)ip = result;
1689
+ return 0;
1690
+ }
1691
+ /**end repeat**/
1692
+
1693
+ static int
1694
+ HALF_fromstr(char *str, void *ip, char **endptr,
1695
+ PyArray_Descr *NPY_UNUSED(ignore))
1696
+ {
1697
+ double result;
1698
+
1699
+ result = NumPyOS_ascii_strtod(str, endptr);
1700
+ *(npy_half *)ip = npy_double_to_half(result);
1701
+ return 0;
1702
+ }
1703
+
1704
+ static int
1705
+ BOOL_fromstr(char *str, void *ip, char **endptr,
1706
+ PyArray_Descr *NPY_UNUSED(ignore))
1707
+ {
1708
+ double result;
1709
+
1710
+ result = NumPyOS_ascii_strtod(str, endptr);
1711
+ *(npy_bool *)ip = (result != 0.0);
1712
+ return 0;
1713
+ }
1714
+
1715
+ /**begin repeat
1716
+ * #fname = CFLOAT, CDOUBLE, CLONGDOUBLE,
1717
+ * OBJECT, STRING, UNICODE, VOID#
1718
+ */
1719
+
1720
+ #define @fname@_fromstr NULL
1721
+
1722
+ /**end repeat**/
1723
+
1724
+
1725
+ /*
1726
+ *****************************************************************************
1727
+ ** COPYSWAPN **
1728
+ *****************************************************************************
1729
+ */
1730
+
1731
+
1732
+ /**begin repeat
1733
+ *
1734
+ * #fname = SHORT, USHORT, INT, UINT,
1735
+ * LONG, ULONG, LONGLONG, ULONGLONG,
1736
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
1737
+ * DATETIME, TIMEDELTA#
1738
+ * #fsize = SHORT, SHORT, INT, INT,
1739
+ * LONG, LONG, LONGLONG, LONGLONG,
1740
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
1741
+ * DATETIME, TIMEDELTA#
1742
+ * #type = npy_short, npy_ushort, npy_int, npy_uint,
1743
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
1744
+ * npy_half, npy_float, npy_double, npy_longdouble,
1745
+ * npy_datetime, npy_timedelta#
1746
+ */
1747
+ static void
1748
+ @fname@_copyswapn (void *dst, npy_intp dstride, void *src, npy_intp sstride,
1749
+ npy_intp n, int swap, void *NPY_UNUSED(arr))
1750
+ {
1751
+ if (src != NULL) {
1752
+ if (sstride == sizeof(@type@) && dstride == sizeof(@type@)) {
1753
+ memcpy(dst, src, n*sizeof(@type@));
1754
+ }
1755
+ else {
1756
+ _unaligned_strided_byte_copy(dst, dstride, src, sstride,
1757
+ n, sizeof(@type@));
1758
+ }
1759
+ }
1760
+ if (swap) {
1761
+ _strided_byte_swap(dst, dstride, n, sizeof(@type@));
1762
+ }
1763
+ }
1764
+
1765
+ static void
1766
+ @fname@_copyswap (void *dst, void *src, int swap, void *NPY_UNUSED(arr))
1767
+ {
1768
+
1769
+ if (src != NULL) {
1770
+ /* copy first if needed */
1771
+ memcpy(dst, src, sizeof(@type@));
1772
+ }
1773
+ if (swap) {
1774
+ char *a, *b, c;
1775
+
1776
+ a = (char *)dst;
1777
+ #if NPY_SIZEOF_@fsize@ == 2
1778
+ b = a + 1;
1779
+ c = *a; *a++ = *b; *b = c;
1780
+ #elif NPY_SIZEOF_@fsize@ == 4
1781
+ b = a + 3;
1782
+ c = *a; *a++ = *b; *b-- = c;
1783
+ c = *a; *a++ = *b; *b = c;
1784
+ #elif NPY_SIZEOF_@fsize@ == 8
1785
+ b = a + 7;
1786
+ c = *a; *a++ = *b; *b-- = c;
1787
+ c = *a; *a++ = *b; *b-- = c;
1788
+ c = *a; *a++ = *b; *b-- = c;
1789
+ c = *a; *a++ = *b; *b = c;
1790
+ #elif NPY_SIZEOF_@fsize@ == 10
1791
+ b = a + 9;
1792
+ c = *a; *a++ = *b; *b-- = c;
1793
+ c = *a; *a++ = *b; *b-- = c;
1794
+ c = *a; *a++ = *b; *b-- = c;
1795
+ c = *a; *a++ = *b; *b-- = c;
1796
+ c = *a; *a++ = *b; *b = c;
1797
+ #elif NPY_SIZEOF_@fsize@ == 12
1798
+ b = a + 11;
1799
+ c = *a; *a++ = *b; *b-- = c;
1800
+ c = *a; *a++ = *b; *b-- = c;
1801
+ c = *a; *a++ = *b; *b-- = c;
1802
+ c = *a; *a++ = *b; *b-- = c;
1803
+ c = *a; *a++ = *b; *b-- = c;
1804
+ c = *a; *a++ = *b; *b = c;
1805
+ #elif NPY_SIZEOF_@fsize@ == 16
1806
+ b = a + 15;
1807
+ c = *a; *a++ = *b; *b-- = c;
1808
+ c = *a; *a++ = *b; *b-- = c;
1809
+ c = *a; *a++ = *b; *b-- = c;
1810
+ c = *a; *a++ = *b; *b-- = c;
1811
+ c = *a; *a++ = *b; *b-- = c;
1812
+ c = *a; *a++ = *b; *b-- = c;
1813
+ c = *a; *a++ = *b; *b-- = c;
1814
+ c = *a; *a++ = *b; *b = c;
1815
+ #else
1816
+ {
1817
+ int i, nn;
1818
+
1819
+ b = a + (NPY_SIZEOF_@fsize@-1);
1820
+ nn = NPY_SIZEOF_@fsize@ / 2;
1821
+ for (i = 0; i < nn; i++) {
1822
+ c = *a;
1823
+ *a++ = *b;
1824
+ *b-- = c;
1825
+ }
1826
+ }
1827
+ #endif
1828
+ }
1829
+ }
1830
+
1831
+ /**end repeat**/
1832
+
1833
+ /**begin repeat
1834
+ *
1835
+ * #fname = BOOL,
1836
+ * BYTE, UBYTE#
1837
+ * #type = npy_bool,
1838
+ * npy_byte, npy_ubyte#
1839
+ */
1840
+ static void
1841
+ @fname@_copyswapn (void *dst, npy_intp dstride, void *src, npy_intp sstride,
1842
+ npy_intp n, int NPY_UNUSED(swap), void *NPY_UNUSED(arr))
1843
+ {
1844
+ if (src != NULL) {
1845
+ if (sstride == sizeof(@type@) && dstride == sizeof(@type@)) {
1846
+ memcpy(dst, src, n*sizeof(@type@));
1847
+ }
1848
+ else {
1849
+ _unaligned_strided_byte_copy(dst, dstride, src, sstride,
1850
+ n, sizeof(@type@));
1851
+ }
1852
+ }
1853
+ /* ignore swap */
1854
+ }
1855
+
1856
+ static void
1857
+ @fname@_copyswap (void *dst, void *src, int NPY_UNUSED(swap),
1858
+ void *NPY_UNUSED(arr))
1859
+ {
1860
+ if (src != NULL) {
1861
+ /* copy first if needed */
1862
+ memcpy(dst, src, sizeof(@type@));
1863
+ }
1864
+ /* ignore swap */
1865
+ }
1866
+
1867
+ /**end repeat**/
1868
+
1869
+
1870
+
1871
+ /**begin repeat
1872
+ *
1873
+ * #fname = CFLOAT, CDOUBLE, CLONGDOUBLE#
1874
+ * #fsize = FLOAT, DOUBLE, LONGDOUBLE#
1875
+ * #type = npy_cfloat, npy_cdouble, npy_clongdouble#
1876
+ */
1877
+ static void
1878
+ @fname@_copyswapn (void *dst, npy_intp dstride, void *src, npy_intp sstride,
1879
+ npy_intp n, int swap, void *NPY_UNUSED(arr))
1880
+ {
1881
+
1882
+ if (src != NULL) {
1883
+ /* copy first if needed */
1884
+ if (sstride == sizeof(@type@) && dstride == sizeof(@type@)) {
1885
+ memcpy(dst, src, n*sizeof(@type@));
1886
+ }
1887
+ else {
1888
+ _unaligned_strided_byte_copy(dst, dstride, src, sstride, n,
1889
+ sizeof(@type@));
1890
+ }
1891
+ }
1892
+
1893
+ if (swap) {
1894
+ _strided_byte_swap(dst, dstride, n, NPY_SIZEOF_@fsize@);
1895
+ _strided_byte_swap(((char *)dst + NPY_SIZEOF_@fsize@), dstride,
1896
+ n, NPY_SIZEOF_@fsize@);
1897
+ }
1898
+ }
1899
+
1900
+ static void
1901
+ @fname@_copyswap (void *dst, void *src, int swap, void *NPY_UNUSED(arr))
1902
+ {
1903
+ if (src != NULL) /* copy first if needed */
1904
+ memcpy(dst, src, sizeof(@type@));
1905
+
1906
+ if (swap) {
1907
+ char *a, *b, c;
1908
+ a = (char *)dst;
1909
+ #if NPY_SIZEOF_@fsize@ == 4
1910
+ b = a + 3;
1911
+ c = *a; *a++ = *b; *b-- = c;
1912
+ c = *a; *a++ = *b; *b = c;
1913
+ a += 2;
1914
+ b = a + 3;
1915
+ c = *a; *a++ = *b; *b-- = c;
1916
+ c = *a; *a++ = *b; *b = c;
1917
+ #elif NPY_SIZEOF_@fsize@ == 8
1918
+ b = a + 7;
1919
+ c = *a; *a++ = *b; *b-- = c;
1920
+ c = *a; *a++ = *b; *b-- = c;
1921
+ c = *a; *a++ = *b; *b-- = c;
1922
+ c = *a; *a++ = *b; *b = c;
1923
+ a += 4;
1924
+ b = a + 7;
1925
+ c = *a; *a++ = *b; *b-- = c;
1926
+ c = *a; *a++ = *b; *b-- = c;
1927
+ c = *a; *a++ = *b; *b-- = c;
1928
+ c = *a; *a++ = *b; *b = c;
1929
+ #elif NPY_SIZEOF_@fsize@ == 10
1930
+ b = a + 9;
1931
+ c = *a; *a++ = *b; *b-- = c;
1932
+ c = *a; *a++ = *b; *b-- = c;
1933
+ c = *a; *a++ = *b; *b-- = c;
1934
+ c = *a; *a++ = *b; *b-- = c;
1935
+ c = *a; *a++ = *b; *b = c;
1936
+ a += 5;
1937
+ b = a + 9;
1938
+ c = *a; *a++ = *b; *b-- = c;
1939
+ c = *a; *a++ = *b; *b-- = c;
1940
+ c = *a; *a++ = *b; *b-- = c;
1941
+ c = *a; *a++ = *b; *b-- = c;
1942
+ c = *a; *a++ = *b; *b = c;
1943
+ #elif NPY_SIZEOF_@fsize@ == 12
1944
+ b = a + 11;
1945
+ c = *a; *a++ = *b; *b-- = c;
1946
+ c = *a; *a++ = *b; *b-- = c;
1947
+ c = *a; *a++ = *b; *b-- = c;
1948
+ c = *a; *a++ = *b; *b-- = c;
1949
+ c = *a; *a++ = *b; *b-- = c;
1950
+ c = *a; *a++ = *b; *b = c;
1951
+ a += 6;
1952
+ b = a + 11;
1953
+ c = *a; *a++ = *b; *b-- = c;
1954
+ c = *a; *a++ = *b; *b-- = c;
1955
+ c = *a; *a++ = *b; *b-- = c;
1956
+ c = *a; *a++ = *b; *b-- = c;
1957
+ c = *a; *a++ = *b; *b-- = c;
1958
+ c = *a; *a++ = *b; *b = c;
1959
+ #elif NPY_SIZEOF_@fsize@ == 16
1960
+ b = a + 15;
1961
+ c = *a; *a++ = *b; *b-- = c;
1962
+ c = *a; *a++ = *b; *b-- = c;
1963
+ c = *a; *a++ = *b; *b-- = c;
1964
+ c = *a; *a++ = *b; *b-- = c;
1965
+ c = *a; *a++ = *b; *b-- = c;
1966
+ c = *a; *a++ = *b; *b-- = c;
1967
+ c = *a; *a++ = *b; *b-- = c;
1968
+ c = *a; *a++ = *b; *b = c;
1969
+ a += 8;
1970
+ b = a + 15;
1971
+ c = *a; *a++ = *b; *b-- = c;
1972
+ c = *a; *a++ = *b; *b-- = c;
1973
+ c = *a; *a++ = *b; *b-- = c;
1974
+ c = *a; *a++ = *b; *b-- = c;
1975
+ c = *a; *a++ = *b; *b-- = c;
1976
+ c = *a; *a++ = *b; *b-- = c;
1977
+ c = *a; *a++ = *b; *b-- = c;
1978
+ c = *a; *a++ = *b; *b = c;
1979
+ #else
1980
+ {
1981
+ int i, nn;
1982
+
1983
+ b = a + (NPY_SIZEOF_@fsize@ - 1);
1984
+ nn = NPY_SIZEOF_@fsize@ / 2;
1985
+ for (i = 0; i < nn; i++) {
1986
+ c = *a;
1987
+ *a++ = *b;
1988
+ *b-- = c;
1989
+ }
1990
+ a += nn;
1991
+ b = a + (NPY_SIZEOF_@fsize@ - 1);
1992
+ for (i = 0; i < nn; i++) {
1993
+ c = *a;
1994
+ *a++ = *b;
1995
+ *b-- = c;
1996
+ }
1997
+ }
1998
+ #endif
1999
+ }
2000
+ }
2001
+
2002
+ /**end repeat**/
2003
+
2004
+ static void
2005
+ OBJECT_copyswapn(PyObject **dst, npy_intp dstride, PyObject **src,
2006
+ npy_intp sstride, npy_intp n, int NPY_UNUSED(swap),
2007
+ void *NPY_UNUSED(arr))
2008
+ {
2009
+ npy_intp i;
2010
+ if (src != NULL) {
2011
+ if (__ALIGNED(dst, sizeof(PyObject **))
2012
+ && __ALIGNED(src, sizeof(PyObject **))
2013
+ && __ALIGNED(dstride, sizeof(PyObject **))
2014
+ && __ALIGNED(sstride, sizeof(PyObject **))) {
2015
+ dstride /= sizeof(PyObject **);
2016
+ sstride /= sizeof(PyObject **);
2017
+ for (i = 0; i < n; i++) {
2018
+ Py_XINCREF(*src);
2019
+ Py_XDECREF(*dst);
2020
+ *dst = *src;
2021
+ dst += dstride;
2022
+ src += sstride;
2023
+ }
2024
+ }
2025
+ else {
2026
+ unsigned char *dstp, *srcp;
2027
+ PyObject *tmp;
2028
+ dstp = (unsigned char*)dst;
2029
+ srcp = (unsigned char*)src;
2030
+ for (i = 0; i < n; i++) {
2031
+ NPY_COPY_PYOBJECT_PTR(&tmp, srcp);
2032
+ Py_XINCREF(tmp);
2033
+ NPY_COPY_PYOBJECT_PTR(&tmp, dstp);
2034
+ Py_XDECREF(tmp);
2035
+ NPY_COPY_PYOBJECT_PTR(dstp, srcp);
2036
+ dstp += dstride;
2037
+ srcp += sstride;
2038
+ }
2039
+ }
2040
+ }
2041
+ /* ignore swap */
2042
+ return;
2043
+ }
2044
+
2045
+ static void
2046
+ OBJECT_copyswap(PyObject **dst, PyObject **src, int NPY_UNUSED(swap),
2047
+ void *NPY_UNUSED(arr))
2048
+ {
2049
+
2050
+ if (src != NULL) {
2051
+ if (__ALIGNED(dst,sizeof(PyObject **)) &&
2052
+ __ALIGNED(src,sizeof(PyObject **))) {
2053
+ Py_XINCREF(*src);
2054
+ Py_XDECREF(*dst);
2055
+ *dst = *src;
2056
+ }
2057
+ else {
2058
+ PyObject *tmp;
2059
+ NPY_COPY_PYOBJECT_PTR(&tmp, src);
2060
+ Py_XINCREF(tmp);
2061
+ NPY_COPY_PYOBJECT_PTR(&tmp, dst);
2062
+ Py_XDECREF(tmp);
2063
+ NPY_COPY_PYOBJECT_PTR(dst, src);
2064
+ }
2065
+ }
2066
+ }
2067
+
2068
+ /* ignore swap */
2069
+ static void
2070
+ STRING_copyswapn (char *dst, npy_intp dstride, char *src, npy_intp sstride,
2071
+ npy_intp n, int NPY_UNUSED(swap), PyArrayObject *arr)
2072
+ {
2073
+ if (src != NULL && arr != NULL) {
2074
+ int itemsize = PyArray_DESCR(arr)->elsize;
2075
+
2076
+ if (dstride == itemsize && sstride == itemsize) {
2077
+ memcpy(dst, src, itemsize * n);
2078
+ }
2079
+ else {
2080
+ _unaligned_strided_byte_copy(dst, dstride, src, sstride, n,
2081
+ itemsize);
2082
+ }
2083
+ }
2084
+ return;
2085
+ }
2086
+
2087
+ /* */
2088
+ static void
2089
+ VOID_copyswapn (char *dst, npy_intp dstride, char *src, npy_intp sstride,
2090
+ npy_intp n, int swap, PyArrayObject *arr)
2091
+ {
2092
+ if (arr == NULL) {
2093
+ return;
2094
+ }
2095
+ if (PyArray_HASFIELDS(arr)) {
2096
+ PyObject *key, *value;
2097
+ PyArray_Descr *descr;
2098
+ Py_ssize_t pos = 0;
2099
+
2100
+ descr = PyArray_DESCR(arr);
2101
+ while (PyDict_Next(descr->fields, &pos, &key, &value)) {
2102
+ npy_intp offset;
2103
+ PyArray_Descr * new;
2104
+ if (NPY_TITLE_KEY(key, value)) {
2105
+ continue;
2106
+ }
2107
+ if (unpack_field(value, &new, &offset) < 0) {
2108
+ ((PyArrayObject_fields *)arr)->descr = descr;
2109
+ return;
2110
+ }
2111
+ /*
2112
+ * TODO: temporarily modifying the array like this
2113
+ * is bad coding style, should be changed.
2114
+ */
2115
+ ((PyArrayObject_fields *)arr)->descr = new;
2116
+ new->f->copyswapn(dst+offset, dstride,
2117
+ (src != NULL ? src+offset : NULL),
2118
+ sstride, n, swap, arr);
2119
+ }
2120
+ ((PyArrayObject_fields *)arr)->descr = descr;
2121
+ return;
2122
+ }
2123
+ if (swap && PyArray_DESCR(arr)->subarray != NULL) {
2124
+ PyArray_Descr *descr, *new;
2125
+ npy_intp num;
2126
+ npy_intp i;
2127
+ int subitemsize;
2128
+ char *dstptr, *srcptr;
2129
+
2130
+ descr = PyArray_DESCR(arr);
2131
+ new = descr->subarray->base;
2132
+ /*
2133
+ * TODO: temporarily modifying the array like this
2134
+ * is bad coding style, should be changed.
2135
+ */
2136
+ ((PyArrayObject_fields *)arr)->descr = new;
2137
+ dstptr = dst;
2138
+ srcptr = src;
2139
+ subitemsize = new->elsize;
2140
+ num = descr->elsize / subitemsize;
2141
+ for (i = 0; i < n; i++) {
2142
+ new->f->copyswapn(dstptr, subitemsize, srcptr,
2143
+ subitemsize, num, swap, arr);
2144
+ dstptr += dstride;
2145
+ if (srcptr) {
2146
+ srcptr += sstride;
2147
+ }
2148
+ }
2149
+ ((PyArrayObject_fields *)arr)->descr = descr;
2150
+ return;
2151
+ }
2152
+ if (src != NULL) {
2153
+ memcpy(dst, src, PyArray_DESCR(arr)->elsize * n);
2154
+ }
2155
+ return;
2156
+ }
2157
+
2158
+ static void
2159
+ VOID_copyswap (char *dst, char *src, int swap, PyArrayObject *arr)
2160
+ {
2161
+ if (arr == NULL) {
2162
+ return;
2163
+ }
2164
+ if (PyArray_HASFIELDS(arr)) {
2165
+ PyObject *key, *value;
2166
+ PyArray_Descr *descr;
2167
+ Py_ssize_t pos = 0;
2168
+
2169
+ descr = PyArray_DESCR(arr);
2170
+ while (PyDict_Next(descr->fields, &pos, &key, &value)) {
2171
+ npy_intp offset;
2172
+ PyArray_Descr * new;
2173
+ if (NPY_TITLE_KEY(key, value)) {
2174
+ continue;
2175
+ }
2176
+ if (unpack_field(value, &new, &offset) < 0) {
2177
+ ((PyArrayObject_fields *)arr)->descr = descr;
2178
+ return;
2179
+ }
2180
+ /*
2181
+ * TODO: temporarily modifying the array like this
2182
+ * is bad coding style, should be changed.
2183
+ */
2184
+ ((PyArrayObject_fields *)arr)->descr = new;
2185
+ new->f->copyswap(dst+offset,
2186
+ (src != NULL ? src+offset : NULL),
2187
+ swap, arr);
2188
+ }
2189
+ ((PyArrayObject_fields *)arr)->descr = descr;
2190
+ return;
2191
+ }
2192
+ if (swap && PyArray_DESCR(arr)->subarray != NULL) {
2193
+ PyArray_Descr *descr, *new;
2194
+ npy_intp num;
2195
+ int itemsize;
2196
+
2197
+ descr = PyArray_DESCR(arr);
2198
+ new = descr->subarray->base;
2199
+ /*
2200
+ * TODO: temporarily modifying the array like this
2201
+ * is bad coding style, should be changed.
2202
+ */
2203
+ ((PyArrayObject_fields *)arr)->descr = new;
2204
+ itemsize = new->elsize;
2205
+ num = descr->elsize / itemsize;
2206
+ new->f->copyswapn(dst, itemsize, src,
2207
+ itemsize, num, swap, arr);
2208
+ ((PyArrayObject_fields *)arr)->descr = descr;
2209
+ return;
2210
+ }
2211
+ if (src != NULL) {
2212
+ memcpy(dst, src, PyArray_DESCR(arr)->elsize);
2213
+ }
2214
+ return;
2215
+ }
2216
+
2217
+
2218
+ static void
2219
+ UNICODE_copyswapn (char *dst, npy_intp dstride, char *src, npy_intp sstride,
2220
+ npy_intp n, int swap, PyArrayObject *arr)
2221
+ {
2222
+ int itemsize;
2223
+
2224
+ if (arr == NULL) {
2225
+ return;
2226
+ }
2227
+ itemsize = PyArray_DESCR(arr)->elsize;
2228
+ if (src != NULL) {
2229
+ if (dstride == itemsize && sstride == itemsize) {
2230
+ memcpy(dst, src, n * itemsize);
2231
+ }
2232
+ else {
2233
+ _unaligned_strided_byte_copy(dst, dstride, src,
2234
+ sstride, n, itemsize);
2235
+ }
2236
+ }
2237
+
2238
+ n *= itemsize;
2239
+ if (swap) {
2240
+ char *a, *b, c;
2241
+
2242
+ /* n is the number of unicode characters to swap */
2243
+ n >>= 2;
2244
+ for (a = (char *)dst; n > 0; n--) {
2245
+ b = a + 3;
2246
+ c = *a;
2247
+ *a++ = *b;
2248
+ *b-- = c;
2249
+ c = *a;
2250
+ *a++ = *b;
2251
+ *b-- = c;
2252
+ a += 2;
2253
+ }
2254
+ }
2255
+ }
2256
+
2257
+
2258
+ static void
2259
+ STRING_copyswap(char *dst, char *src, int NPY_UNUSED(swap), PyArrayObject *arr)
2260
+ {
2261
+ if (src != NULL && arr != NULL) {
2262
+ memcpy(dst, src, PyArray_DESCR(arr)->elsize);
2263
+ }
2264
+ }
2265
+
2266
+ static void
2267
+ UNICODE_copyswap (char *dst, char *src, int swap, PyArrayObject *arr)
2268
+ {
2269
+ int itemsize;
2270
+
2271
+ if (arr == NULL) {
2272
+ return;
2273
+ }
2274
+ itemsize = PyArray_DESCR(arr)->elsize;
2275
+ if (src != NULL) {
2276
+ memcpy(dst, src, itemsize);
2277
+ }
2278
+
2279
+ if (swap) {
2280
+ char *a, *b, c;
2281
+ itemsize >>= 2;
2282
+ for (a = (char *)dst; itemsize>0; itemsize--) {
2283
+ b = a + 3;
2284
+ c = *a;
2285
+ *a++ = *b;
2286
+ *b-- = c;
2287
+ c = *a;
2288
+ *a++ = *b;
2289
+ *b-- = c;
2290
+ a += 2;
2291
+ }
2292
+ }
2293
+ }
2294
+
2295
+
2296
+ /*
2297
+ *****************************************************************************
2298
+ ** NONZERO **
2299
+ *****************************************************************************
2300
+ */
2301
+
2302
+ #define _NONZERO(a) ((a) != 0)
2303
+
2304
+ /**begin repeat
2305
+ *
2306
+ * #fname = BOOL,
2307
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
2308
+ * LONG, ULONG, LONGLONG, ULONGLONG,
2309
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
2310
+ * DATETIME, TIMEDELTA#
2311
+ * #type = npy_bool,
2312
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
2313
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
2314
+ * npy_half, npy_float, npy_double, npy_longdouble,
2315
+ * npy_datetime, npy_timedelta#
2316
+ * #isfloat = 0*11, 1*4, 0*2#
2317
+ * #nonzero = _NONZERO*11, !npy_half_iszero, _NONZERO*5#
2318
+ */
2319
+ static npy_bool
2320
+ @fname@_nonzero (char *ip, PyArrayObject *ap)
2321
+ {
2322
+ if (ap == NULL || PyArray_ISBEHAVED_RO(ap)) {
2323
+ @type@ *ptmp = (@type@ *)ip;
2324
+ return (npy_bool) @nonzero@(*ptmp);
2325
+ }
2326
+ else {
2327
+ /*
2328
+ * Don't worry about swapping for integer types,
2329
+ * since we are just testing for equality with 0.
2330
+ * For float types, the signed zeros require us to swap.
2331
+ */
2332
+ @type@ tmp;
2333
+ #if @isfloat@
2334
+ PyArray_DESCR(ap)->f->copyswap(&tmp, ip, !PyArray_ISNOTSWAPPED(ap), ap);
2335
+ #else
2336
+ memcpy(&tmp, ip, sizeof(@type@));
2337
+ #endif
2338
+ return (npy_bool) @nonzero@(tmp);
2339
+ }
2340
+ }
2341
+ /**end repeat**/
2342
+
2343
+ /**begin repeat
2344
+ *
2345
+ * #fname = CFLOAT, CDOUBLE, CLONGDOUBLE#
2346
+ * #type = npy_cfloat, npy_cdouble, npy_clongdouble#
2347
+ */
2348
+ static npy_bool
2349
+ @fname@_nonzero (char *ip, PyArrayObject *ap)
2350
+ {
2351
+ if (ap == NULL || PyArray_ISBEHAVED_RO(ap)) {
2352
+ @type@ *ptmp = (@type@ *)ip;
2353
+ return (npy_bool) ((ptmp->real != 0) || (ptmp->imag != 0));
2354
+ }
2355
+ else {
2356
+ @type@ tmp;
2357
+ PyArray_DESCR(ap)->f->copyswap(&tmp, ip, !PyArray_ISNOTSWAPPED(ap), ap);
2358
+ return (npy_bool) ((tmp.real != 0) || (tmp.imag != 0));
2359
+ }
2360
+ }
2361
+ /**end repeat**/
2362
+
2363
+
2364
+ #define WHITESPACE " \t\n\r\v\f"
2365
+ #define WHITELEN 6
2366
+
2367
+ static npy_bool
2368
+ Py_STRING_ISSPACE(char ch)
2369
+ {
2370
+ char white[] = WHITESPACE;
2371
+ int j;
2372
+ npy_bool space = NPY_FALSE;
2373
+
2374
+ for (j = 0; j < WHITELEN; j++) {
2375
+ if (ch == white[j]) {
2376
+ space = NPY_TRUE;
2377
+ break;
2378
+ }
2379
+ }
2380
+ return space;
2381
+ }
2382
+
2383
+ static npy_bool
2384
+ STRING_nonzero (char *ip, PyArrayObject *ap)
2385
+ {
2386
+ int len = PyArray_DESCR(ap)->elsize;
2387
+ int i;
2388
+ npy_bool nonz = NPY_FALSE;
2389
+ npy_bool seen_null = NPY_FALSE;
2390
+
2391
+ for (i = 0; i < len; i++) {
2392
+ if (*ip == '\0') {
2393
+ seen_null = NPY_TRUE;
2394
+ }
2395
+ else if (seen_null || !Py_STRING_ISSPACE(*ip)) {
2396
+ nonz = NPY_TRUE;
2397
+ break;
2398
+ }
2399
+ ip++;
2400
+ }
2401
+ return nonz;
2402
+ }
2403
+
2404
+ #ifdef Py_UNICODE_WIDE
2405
+ #define PyArray_UCS4_ISSPACE Py_UNICODE_ISSPACE
2406
+ #else
2407
+ #define PyArray_UCS4_ISSPACE(ch) Py_STRING_ISSPACE((char)ch)
2408
+ #endif
2409
+
2410
+ static npy_bool
2411
+ UNICODE_nonzero (npy_ucs4 *ip, PyArrayObject *ap)
2412
+ {
2413
+ int len = PyArray_DESCR(ap)->elsize >> 2;
2414
+ int i;
2415
+ npy_bool nonz = NPY_FALSE;
2416
+ npy_bool seen_null = NPY_FALSE;
2417
+ char *buffer = NULL;
2418
+
2419
+ if ((!PyArray_ISNOTSWAPPED(ap)) || (!PyArray_ISALIGNED(ap))) {
2420
+ buffer = PyArray_malloc(PyArray_DESCR(ap)->elsize);
2421
+ if (buffer == NULL) {
2422
+ return nonz;
2423
+ }
2424
+ memcpy(buffer, ip, PyArray_DESCR(ap)->elsize);
2425
+ if (!PyArray_ISNOTSWAPPED(ap)) {
2426
+ byte_swap_vector(buffer, len, 4);
2427
+ }
2428
+ ip = (npy_ucs4 *)buffer;
2429
+ }
2430
+
2431
+ for (i = 0; i < len; i++) {
2432
+ if (*ip == '\0') {
2433
+ seen_null = NPY_TRUE;
2434
+ }
2435
+ else if (seen_null || !PyArray_UCS4_ISSPACE(*ip)) {
2436
+ nonz = NPY_TRUE;
2437
+ break;
2438
+ }
2439
+ ip++;
2440
+ }
2441
+ PyArray_free(buffer);
2442
+ return nonz;
2443
+ }
2444
+
2445
+ static npy_bool
2446
+ OBJECT_nonzero (PyObject **ip, PyArrayObject *ap)
2447
+ {
2448
+
2449
+ if (PyArray_ISALIGNED(ap)) {
2450
+ if (*ip == NULL) {
2451
+ return NPY_FALSE;
2452
+ }
2453
+ return (npy_bool) PyObject_IsTrue(*ip);
2454
+ }
2455
+ else {
2456
+ PyObject *obj;
2457
+ NPY_COPY_PYOBJECT_PTR(&obj, ip);
2458
+ if (obj == NULL) {
2459
+ return NPY_FALSE;
2460
+ }
2461
+ return (npy_bool) PyObject_IsTrue(obj);
2462
+ }
2463
+ }
2464
+
2465
+ /*
2466
+ * if we have fields, then nonzero only if all sub-fields are nonzero.
2467
+ */
2468
+ static npy_bool
2469
+ VOID_nonzero (char *ip, PyArrayObject *ap)
2470
+ {
2471
+ int i;
2472
+ int len;
2473
+ npy_bool nonz = NPY_FALSE;
2474
+
2475
+ if (PyArray_HASFIELDS(ap)) {
2476
+ PyArray_Descr *descr;
2477
+ PyObject *key, *value;
2478
+ int savedflags;
2479
+ Py_ssize_t pos = 0;
2480
+
2481
+ descr = PyArray_DESCR(ap);
2482
+ savedflags = PyArray_FLAGS(ap);
2483
+ while (PyDict_Next(descr->fields, &pos, &key, &value)) {
2484
+ PyArray_Descr * new;
2485
+ npy_intp offset;
2486
+ if (NPY_TITLE_KEY(key, value)) {
2487
+ continue;
2488
+ }
2489
+ if (unpack_field(value, &new, &offset) < 0) {
2490
+ PyErr_Clear();
2491
+ continue;
2492
+ }
2493
+ /*
2494
+ * TODO: temporarily modifying the array like this
2495
+ * is bad coding style, should be changed.
2496
+ */
2497
+ ((PyArrayObject_fields *)ap)->descr = new;
2498
+ ((PyArrayObject_fields *)ap)->flags = savedflags;
2499
+ if ((new->alignment > 1) && !__ALIGNED(ip + offset,
2500
+ new->alignment)) {
2501
+ PyArray_CLEARFLAGS(ap, NPY_ARRAY_ALIGNED);
2502
+ }
2503
+ else {
2504
+ PyArray_ENABLEFLAGS(ap, NPY_ARRAY_ALIGNED);
2505
+ }
2506
+ if (new->f->nonzero(ip+offset, ap)) {
2507
+ nonz = NPY_TRUE;
2508
+ break;
2509
+ }
2510
+ }
2511
+ ((PyArrayObject_fields *)ap)->descr = descr;
2512
+ ((PyArrayObject_fields *)ap)->flags = savedflags;
2513
+ return nonz;
2514
+ }
2515
+ len = PyArray_DESCR(ap)->elsize;
2516
+ for (i = 0; i < len; i++) {
2517
+ if (*ip != '\0') {
2518
+ nonz = NPY_TRUE;
2519
+ break;
2520
+ }
2521
+ ip++;
2522
+ }
2523
+ return nonz;
2524
+ }
2525
+
2526
+ #undef __ALIGNED
2527
+
2528
+
2529
+ /*
2530
+ *****************************************************************************
2531
+ ** COMPARE **
2532
+ *****************************************************************************
2533
+ */
2534
+
2535
+
2536
+ /* boolean type */
2537
+
2538
+ static int
2539
+ BOOL_compare(npy_bool *ip1, npy_bool *ip2, PyArrayObject *NPY_UNUSED(ap))
2540
+ {
2541
+ return (*ip1 ? (*ip2 ? 0 : 1) : (*ip2 ? -1 : 0));
2542
+ }
2543
+
2544
+
2545
+ /* integer types */
2546
+
2547
+ /**begin repeat
2548
+ * #TYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT,
2549
+ * LONG, ULONG, LONGLONG, ULONGLONG,
2550
+ * DATETIME, TIMEDELTA#
2551
+ * #type = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
2552
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
2553
+ * npy_datetime, npy_timedelta#
2554
+ */
2555
+
2556
+ static int
2557
+ @TYPE@_compare (@type@ *pa, @type@ *pb, PyArrayObject *NPY_UNUSED(ap))
2558
+ {
2559
+ const @type@ a = *pa;
2560
+ const @type@ b = *pb;
2561
+
2562
+ return a < b ? -1 : a == b ? 0 : 1;
2563
+ }
2564
+
2565
+ /**end repeat**/
2566
+
2567
+
2568
+ /* float types */
2569
+
2570
+ /*
2571
+ * The real/complex comparison functions are compatible with the new sort
2572
+ * order for nans introduced in numpy 1.4.0. All nan values now compare
2573
+ * larger than non-nan values and are sorted to the end. The comparison
2574
+ * order is:
2575
+ *
2576
+ * Real: [R, nan]
2577
+ * Complex: [R + Rj, R + nanj, nan + Rj, nan + nanj]
2578
+ *
2579
+ * where complex values with the same nan placements are sorted according
2580
+ * to the non-nan part if it exists. If both the real and imaginary parts
2581
+ * of complex types are non-nan the order is the same as the real parts
2582
+ * unless they happen to be equal, in which case the order is that of the
2583
+ * imaginary parts.
2584
+ */
2585
+
2586
+ /**begin repeat
2587
+ *
2588
+ * #TYPE = FLOAT, DOUBLE, LONGDOUBLE#
2589
+ * #type = npy_float, npy_double, npy_longdouble#
2590
+ */
2591
+
2592
+ #define LT(a,b) ((a) < (b) || ((b) != (b) && (a) ==(a)))
2593
+
2594
+ static int
2595
+ @TYPE@_compare(@type@ *pa, @type@ *pb)
2596
+ {
2597
+ const @type@ a = *pa;
2598
+ const @type@ b = *pb;
2599
+ int ret;
2600
+
2601
+ if (LT(a,b)) {
2602
+ ret = -1;
2603
+ }
2604
+ else if (LT(b,a)) {
2605
+ ret = 1;
2606
+ }
2607
+ else {
2608
+ ret = 0;
2609
+ }
2610
+ return ret;
2611
+ }
2612
+
2613
+
2614
+ static int
2615
+ C@TYPE@_compare(@type@ *pa, @type@ *pb)
2616
+ {
2617
+ const @type@ ar = pa[0];
2618
+ const @type@ ai = pa[1];
2619
+ const @type@ br = pb[0];
2620
+ const @type@ bi = pb[1];
2621
+ int ret;
2622
+
2623
+ if (ar < br) {
2624
+ if (ai == ai || bi != bi) {
2625
+ ret = -1;
2626
+ }
2627
+ else {
2628
+ ret = 1;
2629
+ }
2630
+ }
2631
+ else if (br < ar) {
2632
+ if (bi == bi || ai != ai) {
2633
+ ret = 1;
2634
+ }
2635
+ else {
2636
+ ret = -1;
2637
+ }
2638
+ }
2639
+ else if (ar == br || (ar != ar && br != br)) {
2640
+ if (LT(ai,bi)) {
2641
+ ret = -1;
2642
+ }
2643
+ else if (LT(bi,ai)) {
2644
+ ret = 1;
2645
+ }
2646
+ else {
2647
+ ret = 0;
2648
+ }
2649
+ }
2650
+ else if (ar == ar) {
2651
+ ret = -1;
2652
+ }
2653
+ else {
2654
+ ret = 1;
2655
+ }
2656
+
2657
+ return ret;
2658
+ }
2659
+
2660
+ #undef LT
2661
+
2662
+ /**end repeat**/
2663
+
2664
+ static int
2665
+ HALF_compare (npy_half *pa, npy_half *pb, PyArrayObject *NPY_UNUSED(ap))
2666
+ {
2667
+ npy_half a = *pa, b = *pb;
2668
+ npy_bool a_isnan, b_isnan;
2669
+ int ret;
2670
+
2671
+ a_isnan = npy_half_isnan(a);
2672
+ b_isnan = npy_half_isnan(b);
2673
+
2674
+ if (a_isnan) {
2675
+ ret = b_isnan ? 0 : -1;
2676
+ }
2677
+ else if (b_isnan) {
2678
+ ret = 1;
2679
+ }
2680
+ else if(npy_half_lt_nonan(a, b)) {
2681
+ ret = -1;
2682
+ }
2683
+ else if(npy_half_lt_nonan(b, a)) {
2684
+ ret = 1;
2685
+ }
2686
+ else {
2687
+ ret = 0;
2688
+ }
2689
+
2690
+ return ret;
2691
+ }
2692
+
2693
+
2694
+ /* object type */
2695
+
2696
+ static int
2697
+ OBJECT_compare(PyObject **ip1, PyObject **ip2, PyArrayObject *NPY_UNUSED(ap))
2698
+ {
2699
+ /*
2700
+ * ALIGNMENT NOTE: It seems that PyArray_Sort is already handling
2701
+ * the alignment of pointers, so it doesn't need to be handled
2702
+ * here.
2703
+ */
2704
+ if ((*ip1 == NULL) || (*ip2 == NULL)) {
2705
+ if (ip1 == ip2) {
2706
+ return 1;
2707
+ }
2708
+ if (ip1 == NULL) {
2709
+ return -1;
2710
+ }
2711
+ return 1;
2712
+ }
2713
+ #if defined(NPY_PY3K)
2714
+ if (PyObject_RichCompareBool(*ip1, *ip2, Py_LT) == 1) {
2715
+ return -1;
2716
+ }
2717
+ else if (PyObject_RichCompareBool(*ip1, *ip2, Py_GT) == 1) {
2718
+ return 1;
2719
+ }
2720
+ else {
2721
+ return 0;
2722
+ }
2723
+ #else
2724
+ return PyObject_Compare(*ip1, *ip2);
2725
+ #endif
2726
+ }
2727
+
2728
+
2729
+ /* string type */
2730
+
2731
+ static int
2732
+ STRING_compare(char *ip1, char *ip2, PyArrayObject *ap)
2733
+ {
2734
+ const unsigned char *c1 = (unsigned char *)ip1;
2735
+ const unsigned char *c2 = (unsigned char *)ip2;
2736
+ const size_t len = PyArray_DESCR(ap)->elsize;
2737
+ int i;
2738
+
2739
+ i = memcmp(c1, c2, len);
2740
+ if (i > 0) {
2741
+ return 1;
2742
+ }
2743
+ else if (i < 0) {
2744
+ return -1;
2745
+ }
2746
+ return 0;
2747
+ }
2748
+
2749
+
2750
+ /* unicode type */
2751
+
2752
+ static int
2753
+ UNICODE_compare(npy_ucs4 *ip1, npy_ucs4 *ip2,
2754
+ PyArrayObject *ap)
2755
+ {
2756
+ int itemsize = PyArray_DESCR(ap)->elsize;
2757
+
2758
+ if (itemsize < 0) {
2759
+ return 0;
2760
+ }
2761
+ itemsize /= sizeof(npy_ucs4);
2762
+ while (itemsize-- > 0) {
2763
+ npy_ucs4 c1 = *ip1++;
2764
+ npy_ucs4 c2 = *ip2++;
2765
+ if (c1 != c2) {
2766
+ return (c1 < c2) ? -1 : 1;
2767
+ }
2768
+ }
2769
+ return 0;
2770
+ }
2771
+
2772
+
2773
+ /* void type */
2774
+
2775
+ /*
2776
+ * If fields are defined, then compare on first field and if equal
2777
+ * compare on second field. Continue until done or comparison results
2778
+ * in not_equal.
2779
+ *
2780
+ * Must align data passed on to sub-comparisons.
2781
+ * Also must swap data based on to sub-comparisons.
2782
+ */
2783
+ static int
2784
+ VOID_compare(char *ip1, char *ip2, PyArrayObject *ap)
2785
+ {
2786
+ PyArray_Descr *descr;
2787
+ PyObject *names, *key;
2788
+ PyObject *tup;
2789
+ PyArrayObject_fields dummy_struct;
2790
+ PyArrayObject *dummy = (PyArrayObject *)&dummy_struct;
2791
+ char *nip1, *nip2;
2792
+ int i, res = 0, swap = 0;
2793
+
2794
+ if (!PyArray_HASFIELDS(ap)) {
2795
+ return STRING_compare(ip1, ip2, ap);
2796
+ }
2797
+ descr = PyArray_DESCR(ap);
2798
+ /*
2799
+ * Compare on the first-field. If equal, then
2800
+ * compare on the second-field, etc.
2801
+ */
2802
+ names = descr->names;
2803
+ for (i = 0; i < PyTuple_GET_SIZE(names); i++) {
2804
+ PyArray_Descr *new;
2805
+ npy_intp offset;
2806
+ key = PyTuple_GET_ITEM(names, i);
2807
+ tup = PyDict_GetItem(descr->fields, key);
2808
+ if (unpack_field(tup, &new, &offset) < 0) {
2809
+ goto finish;
2810
+ }
2811
+ /* descr is the only field checked by compare or copyswap */
2812
+ dummy_struct.descr = new;
2813
+ swap = PyArray_ISBYTESWAPPED(dummy);
2814
+ nip1 = ip1 + offset;
2815
+ nip2 = ip2 + offset;
2816
+ if (swap || new->alignment > 1) {
2817
+ if (swap || !npy_is_aligned(nip1, new->alignment)) {
2818
+ /* create buffer and copy */
2819
+ nip1 = npy_alloc_cache(new->elsize);
2820
+ if (nip1 == NULL) {
2821
+ goto finish;
2822
+ }
2823
+ new->f->copyswap(nip1, ip1 + offset, swap, dummy);
2824
+ }
2825
+ if (swap || !npy_is_aligned(nip2, new->alignment)) {
2826
+ /* create buffer and copy */
2827
+ nip2 = npy_alloc_cache(new->elsize);
2828
+ if (nip2 == NULL) {
2829
+ if (nip1 != ip1 + offset) {
2830
+ npy_free_cache(nip1, new->elsize);
2831
+ }
2832
+ goto finish;
2833
+ }
2834
+ new->f->copyswap(nip2, ip2 + offset, swap, dummy);
2835
+ }
2836
+ }
2837
+ res = new->f->compare(nip1, nip2, dummy);
2838
+ if (swap || new->alignment > 1) {
2839
+ if (nip1 != ip1 + offset) {
2840
+ npy_free_cache(nip1, new->elsize);
2841
+ }
2842
+ if (nip2 != ip2 + offset) {
2843
+ npy_free_cache(nip2, new->elsize);
2844
+ }
2845
+ }
2846
+ if (res != 0) {
2847
+ break;
2848
+ }
2849
+ }
2850
+
2851
+ finish:
2852
+ return res;
2853
+ }
2854
+
2855
+
2856
+ /*
2857
+ *****************************************************************************
2858
+ ** ARGFUNC **
2859
+ *****************************************************************************
2860
+ */
2861
+
2862
+ #define _LESS_THAN_OR_EQUAL(a,b) ((a) <= (b))
2863
+
2864
+ static int
2865
+ BOOL_argmax(npy_bool *ip, npy_intp n, npy_intp *max_ind,
2866
+ PyArrayObject *NPY_UNUSED(aip))
2867
+
2868
+ {
2869
+ npy_intp i = 0;
2870
+ /* memcmp like logical_and on i386 is maybe slower for small arrays */
2871
+ #ifdef NPY_HAVE_SSE2_INTRINSICS
2872
+ const __m128i zero = _mm_setzero_si128();
2873
+ for (; i < n - (n % 32); i+=32) {
2874
+ __m128i d1 = _mm_loadu_si128((__m128i*)&ip[i]);
2875
+ __m128i d2 = _mm_loadu_si128((__m128i*)&ip[i + 16]);
2876
+ d1 = _mm_cmpeq_epi8(d1, zero);
2877
+ d2 = _mm_cmpeq_epi8(d2, zero);
2878
+ if (_mm_movemask_epi8(_mm_min_epu8(d1, d2)) != 0xFFFF) {
2879
+ break;
2880
+ }
2881
+ }
2882
+ #endif
2883
+ for (; i < n; i++) {
2884
+ if (ip[i]) {
2885
+ *max_ind = i;
2886
+ return 0;
2887
+ }
2888
+ }
2889
+ *max_ind = 0;
2890
+ return 0;
2891
+ }
2892
+
2893
+ /**begin repeat
2894
+ *
2895
+ * #fname = BYTE, UBYTE, SHORT, USHORT, INT, UINT,
2896
+ * LONG, ULONG, LONGLONG, ULONGLONG,
2897
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
2898
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
2899
+ * DATETIME, TIMEDELTA#
2900
+ * #type = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
2901
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
2902
+ * npy_half, npy_float, npy_double, npy_longdouble,
2903
+ * npy_float, npy_double, npy_longdouble,
2904
+ * npy_datetime, npy_timedelta#
2905
+ * #isfloat = 0*10, 1*7, 0*2#
2906
+ * #isnan = nop*10, npy_half_isnan, npy_isnan*6, nop*2#
2907
+ * #le = _LESS_THAN_OR_EQUAL*10, npy_half_le, _LESS_THAN_OR_EQUAL*8#
2908
+ * #iscomplex = 0*14, 1*3, 0*2#
2909
+ * #incr = ip++*14, ip+=2*3, ip++*2#
2910
+ */
2911
+ static int
2912
+ @fname@_argmax(@type@ *ip, npy_intp n, npy_intp *max_ind,
2913
+ PyArrayObject *NPY_UNUSED(aip))
2914
+ {
2915
+ npy_intp i;
2916
+ @type@ mp = *ip;
2917
+ #if @iscomplex@
2918
+ @type@ mp_im = ip[1];
2919
+ #endif
2920
+
2921
+ *max_ind = 0;
2922
+
2923
+ #if @isfloat@
2924
+ if (@isnan@(mp)) {
2925
+ /* nan encountered; it's maximal */
2926
+ return 0;
2927
+ }
2928
+ #endif
2929
+ #if @iscomplex@
2930
+ if (@isnan@(mp_im)) {
2931
+ /* nan encountered; it's maximal */
2932
+ return 0;
2933
+ }
2934
+ #endif
2935
+
2936
+ for (i = 1; i < n; i++) {
2937
+ @incr@;
2938
+ /*
2939
+ * Propagate nans, similarly as max() and min()
2940
+ */
2941
+ #if @iscomplex@
2942
+ /* Lexical order for complex numbers */
2943
+ if ((ip[0] > mp) || ((ip[0] == mp) && (ip[1] > mp_im))
2944
+ || @isnan@(ip[0]) || @isnan@(ip[1])) {
2945
+ mp = ip[0];
2946
+ mp_im = ip[1];
2947
+ *max_ind = i;
2948
+ if (@isnan@(mp) || @isnan@(mp_im)) {
2949
+ /* nan encountered, it's maximal */
2950
+ break;
2951
+ }
2952
+ }
2953
+ #else
2954
+ if (!@le@(*ip, mp)) { /* negated, for correct nan handling */
2955
+ mp = *ip;
2956
+ *max_ind = i;
2957
+ #if @isfloat@
2958
+ if (@isnan@(mp)) {
2959
+ /* nan encountered, it's maximal */
2960
+ break;
2961
+ }
2962
+ #endif
2963
+ }
2964
+ #endif
2965
+ }
2966
+ return 0;
2967
+ }
2968
+
2969
+ /**end repeat**/
2970
+
2971
+ static int
2972
+ BOOL_argmin(npy_bool *ip, npy_intp n, npy_intp *min_ind,
2973
+ PyArrayObject *NPY_UNUSED(aip))
2974
+
2975
+ {
2976
+ npy_bool * p = memchr(ip, 0, n * sizeof(*ip));
2977
+ if (p == NULL) {
2978
+ *min_ind = 0;
2979
+ return 0;
2980
+ }
2981
+ *min_ind = p - ip;
2982
+ return 0;
2983
+ }
2984
+
2985
+ /**begin repeat
2986
+ *
2987
+ * #fname = BYTE, UBYTE, SHORT, USHORT, INT, UINT,
2988
+ * LONG, ULONG, LONGLONG, ULONGLONG,
2989
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
2990
+ * CFLOAT, CDOUBLE, CLONGDOUBLE#
2991
+ * #type = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
2992
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
2993
+ * npy_half, npy_float, npy_double, npy_longdouble,
2994
+ * npy_float, npy_double, npy_longdouble#
2995
+ * #isfloat = 0*10, 1*7#
2996
+ * #isnan = nop*10, npy_half_isnan, npy_isnan*6#
2997
+ * #le = _LESS_THAN_OR_EQUAL*10, npy_half_le, _LESS_THAN_OR_EQUAL*6#
2998
+ * #iscomplex = 0*14, 1*3#
2999
+ * #incr = ip++*14, ip+=2*3#
3000
+ */
3001
+ static int
3002
+ @fname@_argmin(@type@ *ip, npy_intp n, npy_intp *min_ind,
3003
+ PyArrayObject *NPY_UNUSED(aip))
3004
+ {
3005
+ npy_intp i;
3006
+ @type@ mp = *ip;
3007
+ #if @iscomplex@
3008
+ @type@ mp_im = ip[1];
3009
+ #endif
3010
+
3011
+ *min_ind = 0;
3012
+
3013
+ #if @isfloat@
3014
+ if (@isnan@(mp)) {
3015
+ /* nan encountered; it's minimal */
3016
+ return 0;
3017
+ }
3018
+ #endif
3019
+ #if @iscomplex@
3020
+ if (@isnan@(mp_im)) {
3021
+ /* nan encountered; it's minimal */
3022
+ return 0;
3023
+ }
3024
+ #endif
3025
+
3026
+ for (i = 1; i < n; i++) {
3027
+ @incr@;
3028
+ /*
3029
+ * Propagate nans, similarly as max() and min()
3030
+ */
3031
+ #if @iscomplex@
3032
+ /* Lexical order for complex numbers */
3033
+ if ((mp > ip[0]) || ((ip[0] == mp) && (mp_im > ip[1]))
3034
+ || @isnan@(ip[0]) || @isnan@(ip[1])) {
3035
+ mp = ip[0];
3036
+ mp_im = ip[1];
3037
+ *min_ind = i;
3038
+ if (@isnan@(mp) || @isnan@(mp_im)) {
3039
+ /* nan encountered, it's minimal */
3040
+ break;
3041
+ }
3042
+ }
3043
+ #else
3044
+ if (!@le@(mp, *ip)) { /* negated, for correct nan handling */
3045
+ mp = *ip;
3046
+ *min_ind = i;
3047
+ #if @isfloat@
3048
+ if (@isnan@(mp)) {
3049
+ /* nan encountered, it's minimal */
3050
+ break;
3051
+ }
3052
+ #endif
3053
+ }
3054
+ #endif
3055
+ }
3056
+ return 0;
3057
+ }
3058
+
3059
+ /**end repeat**/
3060
+
3061
+ #undef _LESS_THAN_OR_EQUAL
3062
+
3063
+ /**begin repeat
3064
+ *
3065
+ * #fname = DATETIME, TIMEDELTA#
3066
+ * #type = npy_datetime, npy_timedelta#
3067
+ */
3068
+ static int
3069
+ @fname@_argmin(@type@ *ip, npy_intp n, npy_intp *min_ind,
3070
+ PyArrayObject *NPY_UNUSED(aip))
3071
+ {
3072
+ /* NPY_DATETIME_NAT is smaller than every other value, we skip
3073
+ * it for consistency with min().
3074
+ */
3075
+ npy_intp i;
3076
+ @type@ mp = NPY_DATETIME_NAT;
3077
+
3078
+ i = 0;
3079
+ while (i < n && mp == NPY_DATETIME_NAT) {
3080
+ mp = ip[i];
3081
+ i++;
3082
+ }
3083
+ if (i == n) {
3084
+ /* All NaTs: return 0 */
3085
+ *min_ind = 0;
3086
+ return 0;
3087
+ }
3088
+ *min_ind = i - 1;
3089
+ for (; i < n; i++) {
3090
+ if (mp > ip[i] && ip[i] != NPY_DATETIME_NAT) {
3091
+ mp = ip[i];
3092
+ *min_ind = i;
3093
+ }
3094
+ }
3095
+ return 0;
3096
+ }
3097
+
3098
+ /**end repeat**/
3099
+
3100
+ static int
3101
+ OBJECT_argmax(PyObject **ip, npy_intp n, npy_intp *max_ind,
3102
+ PyArrayObject *NPY_UNUSED(aip))
3103
+ {
3104
+ npy_intp i;
3105
+ PyObject *mp = ip[0];
3106
+
3107
+ *max_ind = 0;
3108
+ i = 1;
3109
+ while (i < n && mp == NULL) {
3110
+ mp = ip[i];
3111
+ i++;
3112
+ }
3113
+ for (; i < n; i++) {
3114
+ ip++;
3115
+ #if defined(NPY_PY3K)
3116
+ if (*ip != NULL && PyObject_RichCompareBool(*ip, mp, Py_GT) == 1) {
3117
+ #else
3118
+ if (*ip != NULL && PyObject_Compare(*ip, mp) > 0) {
3119
+ #endif
3120
+ mp = *ip;
3121
+ *max_ind = i;
3122
+ }
3123
+ }
3124
+ return 0;
3125
+ }
3126
+
3127
+ /**begin repeat
3128
+ *
3129
+ * #fname = STRING, UNICODE#
3130
+ * #type = npy_char, npy_ucs4#
3131
+ */
3132
+ static int
3133
+ @fname@_argmax(@type@ *ip, npy_intp n, npy_intp *max_ind, PyArrayObject *aip)
3134
+ {
3135
+ npy_intp i;
3136
+ int elsize = PyArray_DESCR(aip)->elsize;
3137
+ @type@ *mp = (@type@ *)PyArray_malloc(elsize);
3138
+
3139
+ if (mp == NULL) {
3140
+ return 0;
3141
+ }
3142
+ memcpy(mp, ip, elsize);
3143
+ *max_ind = 0;
3144
+ for (i = 1; i < n; i++) {
3145
+ ip += elsize / sizeof(@type@);
3146
+ if (@fname@_compare(ip, mp, aip) > 0) {
3147
+ memcpy(mp, ip, elsize);
3148
+ *max_ind = i;
3149
+ }
3150
+ }
3151
+ PyArray_free(mp);
3152
+ return 0;
3153
+ }
3154
+
3155
+ /**end repeat**/
3156
+
3157
+ #define VOID_argmax NULL
3158
+
3159
+ static int
3160
+ OBJECT_argmin(PyObject **ip, npy_intp n, npy_intp *min_ind,
3161
+ PyArrayObject *NPY_UNUSED(aip))
3162
+ {
3163
+ npy_intp i;
3164
+ PyObject *mp = ip[0];
3165
+
3166
+ *min_ind = 0;
3167
+ i = 1;
3168
+ while (i < n && mp == NULL) {
3169
+ mp = ip[i];
3170
+ i++;
3171
+ }
3172
+ for (; i < n; i++) {
3173
+ ip++;
3174
+ #if defined(NPY_PY3K)
3175
+ if (*ip != NULL && PyObject_RichCompareBool(mp, *ip, Py_GT) == 1) {
3176
+ #else
3177
+ if (*ip != NULL && PyObject_Compare(mp, *ip) > 0) {
3178
+ #endif
3179
+ mp = *ip;
3180
+ *min_ind = i;
3181
+ }
3182
+ }
3183
+ return 0;
3184
+ }
3185
+
3186
+ /**begin repeat
3187
+ *
3188
+ * #fname = STRING, UNICODE#
3189
+ * #type = npy_char, npy_ucs4#
3190
+ */
3191
+ static int
3192
+ @fname@_argmin(@type@ *ip, npy_intp n, npy_intp *min_ind, PyArrayObject *aip)
3193
+ {
3194
+ npy_intp i;
3195
+ int elsize = PyArray_DESCR(aip)->elsize;
3196
+ @type@ *mp = (@type@ *)PyArray_malloc(elsize);
3197
+
3198
+ if (mp==NULL) return 0;
3199
+ memcpy(mp, ip, elsize);
3200
+ *min_ind = 0;
3201
+ for(i=1; i<n; i++) {
3202
+ ip += elsize / sizeof(@type@);
3203
+ if (@fname@_compare(mp,ip,aip) > 0) {
3204
+ memcpy(mp, ip, elsize);
3205
+ *min_ind=i;
3206
+ }
3207
+ }
3208
+ PyArray_free(mp);
3209
+ return 0;
3210
+ }
3211
+
3212
+ /**end repeat**/
3213
+
3214
+
3215
+ #define VOID_argmin NULL
3216
+
3217
+
3218
+ /*
3219
+ *****************************************************************************
3220
+ ** DOT **
3221
+ *****************************************************************************
3222
+ */
3223
+
3224
+ /*
3225
+ * dot means inner product
3226
+ */
3227
+
3228
+ /************************** MAYBE USE CBLAS *********************************/
3229
+
3230
+
3231
+ /**begin repeat
3232
+ *
3233
+ * #name = FLOAT, DOUBLE#
3234
+ * #type = npy_float, npy_double#
3235
+ * #prefix = s, d#
3236
+ */
3237
+ NPY_NO_EXPORT void
3238
+ @name@_dot(char *ip1, npy_intp is1, char *ip2, npy_intp is2, char *op,
3239
+ npy_intp n, void *NPY_UNUSED(ignore))
3240
+ {
3241
+ #if defined(HAVE_CBLAS)
3242
+ int is1b = blas_stride(is1, sizeof(@type@));
3243
+ int is2b = blas_stride(is2, sizeof(@type@));
3244
+
3245
+ if (is1b && is2b)
3246
+ {
3247
+ double sum = 0.; /* double for stability */
3248
+
3249
+ while (n > 0) {
3250
+ int chunk = n < NPY_CBLAS_CHUNK ? n : NPY_CBLAS_CHUNK;
3251
+
3252
+ sum += cblas_@prefix@dot(chunk,
3253
+ (@type@ *) ip1, is1b,
3254
+ (@type@ *) ip2, is2b);
3255
+ /* use char strides here */
3256
+ ip1 += chunk * is1;
3257
+ ip2 += chunk * is2;
3258
+ n -= chunk;
3259
+ }
3260
+ *((@type@ *)op) = (@type@)sum;
3261
+ }
3262
+ else
3263
+ #endif
3264
+ {
3265
+ @type@ sum = (@type@)0; /* could make this double */
3266
+ npy_intp i;
3267
+
3268
+ for (i = 0; i < n; i++, ip1 += is1, ip2 += is2) {
3269
+ const @type@ ip1r = *((@type@ *)ip1);
3270
+ const @type@ ip2r = *((@type@ *)ip2);
3271
+
3272
+ sum += ip1r * ip2r;
3273
+ }
3274
+ *((@type@ *)op) = sum;
3275
+ }
3276
+ }
3277
+ /**end repeat**/
3278
+
3279
+ /**begin repeat
3280
+ *
3281
+ * #name = CFLOAT, CDOUBLE#
3282
+ * #ctype = npy_cfloat, npy_cdouble#
3283
+ * #type = npy_float, npy_double#
3284
+ * #prefix = c, z#
3285
+ */
3286
+ NPY_NO_EXPORT void
3287
+ @name@_dot(char *ip1, npy_intp is1, char *ip2, npy_intp is2,
3288
+ char *op, npy_intp n, void *NPY_UNUSED(ignore))
3289
+ {
3290
+ #if defined(HAVE_CBLAS)
3291
+ int is1b = blas_stride(is1, sizeof(@ctype@));
3292
+ int is2b = blas_stride(is2, sizeof(@ctype@));
3293
+
3294
+ if (is1b && is2b) {
3295
+ double sum[2] = {0., 0.}; /* double for stability */
3296
+
3297
+ while (n > 0) {
3298
+ int chunk = n < NPY_CBLAS_CHUNK ? n : NPY_CBLAS_CHUNK;
3299
+ @type@ tmp[2];
3300
+
3301
+ cblas_@prefix@dotu_sub((int)n, ip1, is1b, ip2, is2b, tmp);
3302
+ sum[0] += (double)tmp[0];
3303
+ sum[1] += (double)tmp[1];
3304
+ /* use char strides here */
3305
+ ip1 += chunk * is1;
3306
+ ip2 += chunk * is2;
3307
+ n -= chunk;
3308
+ }
3309
+ ((@type@ *)op)[0] = (@type@)sum[0];
3310
+ ((@type@ *)op)[1] = (@type@)sum[1];
3311
+ }
3312
+ else
3313
+ #endif
3314
+ {
3315
+ @type@ sumr = (@type@)0.0;
3316
+ @type@ sumi = (@type@)0.0;
3317
+ npy_intp i;
3318
+
3319
+ for (i = 0; i < n; i++, ip1 += is1, ip2 += is2) {
3320
+ const @type@ ip1r = ((@type@ *)ip1)[0];
3321
+ const @type@ ip1i = ((@type@ *)ip1)[1];
3322
+ const @type@ ip2r = ((@type@ *)ip2)[0];
3323
+ const @type@ ip2i = ((@type@ *)ip2)[1];
3324
+
3325
+ sumr += ip1r * ip2r - ip1i * ip2i;
3326
+ sumi += ip1r * ip2i + ip1i * ip2r;
3327
+ }
3328
+ ((@type@ *)op)[0] = sumr;
3329
+ ((@type@ *)op)[1] = sumi;
3330
+ }
3331
+ }
3332
+
3333
+ /**end repeat**/
3334
+
3335
+ /**************************** NO CBLAS VERSIONS *****************************/
3336
+
3337
+ static void
3338
+ BOOL_dot(char *ip1, npy_intp is1, char *ip2, npy_intp is2, char *op, npy_intp n,
3339
+ void *NPY_UNUSED(ignore))
3340
+ {
3341
+ npy_bool tmp = NPY_FALSE;
3342
+ npy_intp i;
3343
+
3344
+ for (i = 0; i < n; i++, ip1 += is1, ip2 += is2) {
3345
+ if ((*((npy_bool *)ip1) != 0) && (*((npy_bool *)ip2) != 0)) {
3346
+ tmp = NPY_TRUE;
3347
+ break;
3348
+ }
3349
+ }
3350
+ *((npy_bool *)op) = tmp;
3351
+ }
3352
+
3353
+ /**begin repeat
3354
+ *
3355
+ * #name = BYTE, UBYTE, SHORT, USHORT, INT, UINT,
3356
+ * LONG, ULONG, LONGLONG, ULONGLONG,
3357
+ * LONGDOUBLE, DATETIME, TIMEDELTA#
3358
+ * #type = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
3359
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
3360
+ * npy_longdouble, npy_datetime, npy_timedelta#
3361
+ * #out = npy_long, npy_ulong, npy_long, npy_ulong, npy_long, npy_ulong,
3362
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
3363
+ * npy_longdouble, npy_datetime, npy_timedelta#
3364
+ */
3365
+ static void
3366
+ @name@_dot(char *ip1, npy_intp is1, char *ip2, npy_intp is2, char *op, npy_intp n,
3367
+ void *NPY_UNUSED(ignore))
3368
+ {
3369
+ @out@ tmp = (@out@)0;
3370
+ npy_intp i;
3371
+
3372
+ for (i = 0; i < n; i++, ip1 += is1, ip2 += is2) {
3373
+ tmp += (@out@)(*((@type@ *)ip1)) *
3374
+ (@out@)(*((@type@ *)ip2));
3375
+ }
3376
+ *((@type@ *)op) = (@type@) tmp;
3377
+ }
3378
+ /**end repeat**/
3379
+
3380
+ static void
3381
+ HALF_dot(char *ip1, npy_intp is1, char *ip2, npy_intp is2, char *op,
3382
+ npy_intp n, void *NPY_UNUSED(ignore))
3383
+ {
3384
+ float tmp = 0.0f;
3385
+ npy_intp i;
3386
+
3387
+ for (i = 0; i < n; i++, ip1 += is1, ip2 += is2) {
3388
+ tmp += npy_half_to_float(*((npy_half *)ip1)) *
3389
+ npy_half_to_float(*((npy_half *)ip2));
3390
+ }
3391
+ *((npy_half *)op) = npy_float_to_half(tmp);
3392
+ }
3393
+
3394
+ static void
3395
+ CLONGDOUBLE_dot(char *ip1, npy_intp is1, char *ip2, npy_intp is2,
3396
+ char *op, npy_intp n, void *NPY_UNUSED(ignore))
3397
+ {
3398
+ npy_longdouble tmpr = 0.0L;
3399
+ npy_longdouble tmpi = 0.0L;
3400
+ npy_intp i;
3401
+
3402
+ for (i = 0; i < n; i++, ip1 += is1, ip2 += is2) {
3403
+ const npy_longdouble ip1r = ((npy_longdouble *)ip1)[0];
3404
+ const npy_longdouble ip1i = ((npy_longdouble *)ip1)[1];
3405
+ const npy_longdouble ip2r = ((npy_longdouble *)ip2)[0];
3406
+ const npy_longdouble ip2i = ((npy_longdouble *)ip2)[1];
3407
+
3408
+ tmpr += ip1r * ip2r - ip1i * ip2i;
3409
+ tmpi += ip1r * ip2i + ip1i * ip2r;
3410
+ }
3411
+ ((npy_longdouble *)op)[0] = tmpr;
3412
+ ((npy_longdouble *)op)[1] = tmpi;
3413
+ }
3414
+
3415
+ static void
3416
+ OBJECT_dot(char *ip1, npy_intp is1, char *ip2, npy_intp is2, char *op, npy_intp n,
3417
+ void *NPY_UNUSED(ignore))
3418
+ {
3419
+ /*
3420
+ * ALIGNMENT NOTE: np.dot, np.inner etc. enforce that the array is
3421
+ * BEHAVED before getting to this point, so unaligned pointers aren't
3422
+ * handled here.
3423
+ */
3424
+ npy_intp i;
3425
+ PyObject *tmp1, *tmp2, *tmp = NULL;
3426
+ PyObject **tmp3;
3427
+ for (i = 0; i < n; i++, ip1 += is1, ip2 += is2) {
3428
+ if ((*((PyObject **)ip1) == NULL) || (*((PyObject **)ip2) == NULL)) {
3429
+ tmp1 = Py_False;
3430
+ Py_INCREF(Py_False);
3431
+ }
3432
+ else {
3433
+ tmp1 = PyNumber_Multiply(*((PyObject **)ip1), *((PyObject **)ip2));
3434
+ if (!tmp1) {
3435
+ Py_XDECREF(tmp);
3436
+ return;
3437
+ }
3438
+ }
3439
+ if (i == 0) {
3440
+ tmp = tmp1;
3441
+ }
3442
+ else {
3443
+ tmp2 = PyNumber_Add(tmp, tmp1);
3444
+ Py_XDECREF(tmp);
3445
+ Py_XDECREF(tmp1);
3446
+ if (!tmp2) {
3447
+ return;
3448
+ }
3449
+ tmp = tmp2;
3450
+ }
3451
+ }
3452
+ tmp3 = (PyObject**) op;
3453
+ tmp2 = *tmp3;
3454
+ *((PyObject **)op) = tmp;
3455
+ Py_XDECREF(tmp2);
3456
+ }
3457
+
3458
+
3459
+ /*
3460
+ *****************************************************************************
3461
+ ** FILL **
3462
+ *****************************************************************************
3463
+ */
3464
+
3465
+
3466
+ #define BOOL_fill NULL
3467
+
3468
+ /* this requires buffer to be filled with objects or NULL */
3469
+ static void
3470
+ OBJECT_fill(PyObject **buffer, npy_intp length, void *NPY_UNUSED(ignored))
3471
+ {
3472
+ npy_intp i;
3473
+ PyObject *start = buffer[0];
3474
+ PyObject *delta = buffer[1];
3475
+ PyObject *second;
3476
+
3477
+ delta = PyNumber_Subtract(delta, start);
3478
+ if (!delta) {
3479
+ return;
3480
+ }
3481
+ second = start = PyNumber_Add(start, delta);
3482
+ if (!start) {
3483
+ goto finish;
3484
+ }
3485
+ buffer += 2;
3486
+
3487
+ for (i = 2; i < length; i++, buffer++) {
3488
+ start = PyNumber_Add(start, delta);
3489
+ if (!start) {
3490
+ goto finish;
3491
+ }
3492
+ Py_XDECREF(*buffer);
3493
+ *buffer = start;
3494
+ }
3495
+
3496
+ finish:
3497
+ Py_XDECREF(second);
3498
+ Py_DECREF(delta);
3499
+ return;
3500
+ }
3501
+
3502
+ /**begin repeat
3503
+ *
3504
+ * #NAME = BYTE, UBYTE, SHORT, USHORT, INT, UINT,
3505
+ * LONG, ULONG, LONGLONG, ULONGLONG,
3506
+ * FLOAT, DOUBLE, LONGDOUBLE,
3507
+ * DATETIME, TIMEDELTA#
3508
+ * #type = npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
3509
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
3510
+ * npy_float, npy_double, npy_longdouble,
3511
+ * npy_datetime, npy_timedelta#
3512
+ */
3513
+ static void
3514
+ @NAME@_fill(@type@ *buffer, npy_intp length, void *NPY_UNUSED(ignored))
3515
+ {
3516
+ npy_intp i;
3517
+ @type@ start = buffer[0];
3518
+ @type@ delta = buffer[1];
3519
+
3520
+ delta -= start;
3521
+ for (i = 2; i < length; ++i) {
3522
+ buffer[i] = start + i*delta;
3523
+ }
3524
+ }
3525
+ /**end repeat**/
3526
+
3527
+ static void
3528
+ HALF_fill(npy_half *buffer, npy_intp length, void *NPY_UNUSED(ignored))
3529
+ {
3530
+ npy_intp i;
3531
+ float start = npy_half_to_float(buffer[0]);
3532
+ float delta = npy_half_to_float(buffer[1]);
3533
+
3534
+ delta -= start;
3535
+ for (i = 2; i < length; ++i) {
3536
+ buffer[i] = npy_float_to_half(start + i*delta);
3537
+ }
3538
+ }
3539
+
3540
+ /**begin repeat
3541
+ *
3542
+ * #NAME = CFLOAT, CDOUBLE, CLONGDOUBLE#
3543
+ * #type = npy_cfloat, npy_cdouble, npy_clongdouble#
3544
+ */
3545
+ static void
3546
+ @NAME@_fill(@type@ *buffer, npy_intp length, void *NPY_UNUSED(ignore))
3547
+ {
3548
+ npy_intp i;
3549
+ @type@ start;
3550
+ @type@ delta;
3551
+
3552
+ start.real = buffer->real;
3553
+ start.imag = buffer->imag;
3554
+ delta.real = buffer[1].real;
3555
+ delta.imag = buffer[1].imag;
3556
+ delta.real -= start.real;
3557
+ delta.imag -= start.imag;
3558
+ buffer += 2;
3559
+ for (i = 2; i < length; i++, buffer++) {
3560
+ buffer->real = start.real + i*delta.real;
3561
+ buffer->imag = start.imag + i*delta.imag;
3562
+ }
3563
+ }
3564
+ /**end repeat**/
3565
+
3566
+
3567
+ /* this requires buffer to be filled with objects or NULL */
3568
+ static void
3569
+ OBJECT_fillwithscalar(PyObject **buffer, npy_intp length, PyObject **value,
3570
+ void *NPY_UNUSED(ignored))
3571
+ {
3572
+ npy_intp i;
3573
+ PyObject *val = *value;
3574
+ for (i = 0; i < length; i++) {
3575
+ Py_XINCREF(val);
3576
+ Py_XDECREF(buffer[i]);
3577
+ buffer[i] = val;
3578
+ }
3579
+ }
3580
+ /**begin repeat
3581
+ *
3582
+ * #NAME = BOOL, BYTE, UBYTE#
3583
+ * #type = npy_bool, npy_byte, npy_ubyte#
3584
+ */
3585
+ static void
3586
+ @NAME@_fillwithscalar(@type@ *buffer, npy_intp length, @type@ *value,
3587
+ void *NPY_UNUSED(ignored))
3588
+ {
3589
+ memset(buffer, *value, length);
3590
+ }
3591
+ /**end repeat**/
3592
+
3593
+ /**begin repeat
3594
+ *
3595
+ * #NAME = SHORT, USHORT, INT, UINT,
3596
+ * LONG, ULONG, LONGLONG, ULONGLONG,
3597
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
3598
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
3599
+ * DATETIME, TIMEDELTA#
3600
+ * #type = npy_short, npy_ushort, npy_int, npy_uint,
3601
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
3602
+ * npy_half, npy_float, npy_double, npy_longdouble,
3603
+ * npy_cfloat, npy_cdouble, npy_clongdouble,
3604
+ * npy_datetime, npy_timedelta#
3605
+ */
3606
+ static void
3607
+ @NAME@_fillwithscalar(@type@ *buffer, npy_intp length, @type@ *value,
3608
+ void *NPY_UNUSED(ignored))
3609
+ {
3610
+ npy_intp i;
3611
+ @type@ val = *value;
3612
+
3613
+ for (i = 0; i < length; ++i) {
3614
+ buffer[i] = val;
3615
+ }
3616
+ }
3617
+ /**end repeat**/
3618
+
3619
+
3620
+ /*
3621
+ *****************************************************************************
3622
+ ** FASTCLIP **
3623
+ *****************************************************************************
3624
+ */
3625
+
3626
+ #define _LESS_THAN(a, b) ((a) < (b))
3627
+ #define _GREATER_THAN(a, b) ((a) > (b))
3628
+
3629
+ /*
3630
+ * In fastclip, 'b' was already checked for NaN, so the half comparison
3631
+ * only needs to check 'a' for NaN.
3632
+ */
3633
+
3634
+ #define _HALF_LESS_THAN(a, b) (!npy_half_isnan(a) && npy_half_lt_nonan(a, b))
3635
+ #define _HALF_GREATER_THAN(a, b) (!npy_half_isnan(a) && npy_half_lt_nonan(b, a))
3636
+
3637
+ /**begin repeat
3638
+ *
3639
+ * #name = BOOL,
3640
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
3641
+ * LONG, ULONG, LONGLONG, ULONGLONG,
3642
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
3643
+ * DATETIME, TIMEDELTA#
3644
+ * #type = npy_bool,
3645
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
3646
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
3647
+ * npy_half, npy_float, npy_double, npy_longdouble,
3648
+ * npy_datetime, npy_timedelta#
3649
+ * #isfloat = 0*11, 1*4, 0*2#
3650
+ * #isnan = nop*11, npy_half_isnan, npy_isnan*3, nop*2#
3651
+ * #lt = _LESS_THAN*11, _HALF_LESS_THAN, _LESS_THAN*5#
3652
+ * #gt = _GREATER_THAN*11, _HALF_GREATER_THAN, _GREATER_THAN*5#
3653
+ */
3654
+ static void
3655
+ @name@_fastclip(@type@ *in, npy_intp ni, @type@ *min, @type@ *max, @type@ *out)
3656
+ {
3657
+ npy_intp i;
3658
+ @type@ max_val = 0, min_val = 0;
3659
+
3660
+ if (max != NULL) {
3661
+ max_val = *max;
3662
+ #if @isfloat@
3663
+ /* NaNs result in no clipping, so optimize the case away */
3664
+ if (@isnan@(max_val)) {
3665
+ if (min == NULL) {
3666
+ memmove(out, in, ni * sizeof(@type@));
3667
+ return;
3668
+ }
3669
+ max = NULL;
3670
+ }
3671
+ #endif
3672
+ }
3673
+ if (min != NULL) {
3674
+ min_val = *min;
3675
+ #if @isfloat@
3676
+ if (@isnan@(min_val)) {
3677
+ if (max == NULL) {
3678
+ memmove(out, in, ni * sizeof(@type@));
3679
+ return;
3680
+ }
3681
+ min = NULL;
3682
+ }
3683
+ #endif
3684
+ }
3685
+ if (max == NULL) {
3686
+ for (i = 0; i < ni; i++) {
3687
+ if (@lt@(in[i], min_val)) {
3688
+ out[i] = min_val;
3689
+ }
3690
+ else {
3691
+ out[i] = in[i];
3692
+ }
3693
+ }
3694
+ }
3695
+ else if (min == NULL) {
3696
+ for (i = 0; i < ni; i++) {
3697
+ if (@gt@(in[i], max_val)) {
3698
+ out[i] = max_val;
3699
+ }
3700
+ else {
3701
+ out[i] = in[i];
3702
+ }
3703
+ }
3704
+ }
3705
+ else {
3706
+ for (i = 0; i < ni; i++) {
3707
+ if (@lt@(in[i], min_val)) {
3708
+ out[i] = min_val;
3709
+ }
3710
+ else if (@gt@(in[i], max_val)) {
3711
+ out[i] = max_val;
3712
+ }
3713
+ else {
3714
+ out[i] = in[i];
3715
+ }
3716
+ }
3717
+ }
3718
+ }
3719
+ /**end repeat**/
3720
+
3721
+ #undef _LESS_THAN
3722
+ #undef _GREATER_THAN
3723
+ #undef _HALF_LESS_THAN
3724
+ #undef _HALF_GREATER_THAN
3725
+
3726
+ /**begin repeat
3727
+ *
3728
+ * #name = CFLOAT, CDOUBLE, CLONGDOUBLE#
3729
+ * #type = npy_cfloat, npy_cdouble, npy_clongdouble#
3730
+ */
3731
+ static void
3732
+ @name@_fastclip(@type@ *in, npy_intp ni, @type@ *min, @type@ *max, @type@ *out)
3733
+ {
3734
+ npy_intp i;
3735
+ @type@ max_val, min_val;
3736
+
3737
+ if (max != NULL) {
3738
+ max_val = *max;
3739
+ }
3740
+ if (min != NULL) {
3741
+ min_val = *min;
3742
+ }
3743
+ if (max == NULL) {
3744
+ for (i = 0; i < ni; i++) {
3745
+ if (PyArray_CLT(in[i],min_val)) {
3746
+ out[i] = min_val;
3747
+ }
3748
+ else {
3749
+ out[i] = in[i];
3750
+ }
3751
+ }
3752
+ }
3753
+ else if (min == NULL) {
3754
+ for (i = 0; i < ni; i++) {
3755
+ if (PyArray_CGT(in[i], max_val)) {
3756
+ out[i] = max_val;
3757
+ }
3758
+ else {
3759
+ out[i] = in[i];
3760
+ }
3761
+ }
3762
+ }
3763
+ else {
3764
+ for (i = 0; i < ni; i++) {
3765
+ if (PyArray_CLT(in[i], min_val)) {
3766
+ out[i] = min_val;
3767
+ }
3768
+ else if (PyArray_CGT(in[i], max_val)) {
3769
+ out[i] = max_val;
3770
+ }
3771
+ else {
3772
+ out[i] = in[i];
3773
+ }
3774
+ }
3775
+ }
3776
+ }
3777
+
3778
+ /**end repeat**/
3779
+
3780
+ #define OBJECT_fastclip NULL
3781
+
3782
+
3783
+ /*
3784
+ *****************************************************************************
3785
+ ** FASTPUTMASK **
3786
+ *****************************************************************************
3787
+ */
3788
+
3789
+
3790
+ /**begin repeat
3791
+ *
3792
+ * #name = BOOL,
3793
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
3794
+ * LONG, ULONG, LONGLONG, ULONGLONG,
3795
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
3796
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
3797
+ * DATETIME, TIMEDELTA#
3798
+ * #type = npy_bool, npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
3799
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
3800
+ * npy_half, npy_float, npy_double, npy_longdouble,
3801
+ * npy_cfloat, npy_cdouble, npy_clongdouble,
3802
+ * npy_datetime, npy_timedelta#
3803
+ */
3804
+ static void
3805
+ @name@_fastputmask(@type@ *in, npy_bool *mask, npy_intp ni, @type@ *vals,
3806
+ npy_intp nv)
3807
+ {
3808
+ npy_intp i, j;
3809
+
3810
+ if (nv == 1) {
3811
+ @type@ s_val = *vals;
3812
+ for (i = 0; i < ni; i++) {
3813
+ if (mask[i]) {
3814
+ in[i] = s_val;
3815
+ }
3816
+ }
3817
+ }
3818
+ else {
3819
+ for (i = 0, j = 0; i < ni; i++, j++) {
3820
+ if (j >= nv) {
3821
+ j = 0;
3822
+ }
3823
+ if (mask[i]) {
3824
+ in[i] = vals[j];
3825
+ }
3826
+ }
3827
+ }
3828
+ return;
3829
+ }
3830
+ /**end repeat**/
3831
+
3832
+ #define OBJECT_fastputmask NULL
3833
+
3834
+
3835
+ /*
3836
+ *****************************************************************************
3837
+ ** FASTTAKE **
3838
+ *****************************************************************************
3839
+ */
3840
+
3841
+
3842
+ /**begin repeat
3843
+ *
3844
+ * #name = BOOL,
3845
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
3846
+ * LONG, ULONG, LONGLONG, ULONGLONG,
3847
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
3848
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
3849
+ * DATETIME, TIMEDELTA#
3850
+ * #type = npy_bool,
3851
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
3852
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
3853
+ * npy_half, npy_float, npy_double, npy_longdouble,
3854
+ * npy_cfloat, npy_cdouble, npy_clongdouble,
3855
+ * npy_datetime, npy_timedelta#
3856
+ */
3857
+ static int
3858
+ @name@_fasttake(@type@ *dest, @type@ *src, npy_intp *indarray,
3859
+ npy_intp nindarray, npy_intp n_outer,
3860
+ npy_intp m_middle, npy_intp nelem,
3861
+ NPY_CLIPMODE clipmode)
3862
+ {
3863
+ npy_intp i, j, k, tmp;
3864
+ NPY_BEGIN_THREADS_DEF;
3865
+
3866
+ NPY_BEGIN_THREADS;
3867
+
3868
+ switch(clipmode) {
3869
+ case NPY_RAISE:
3870
+ for (i = 0; i < n_outer; i++) {
3871
+ for (j = 0; j < m_middle; j++) {
3872
+ tmp = indarray[j];
3873
+ /*
3874
+ * We don't know what axis we're operating on,
3875
+ * so don't report it in case of an error.
3876
+ */
3877
+ if (check_and_adjust_index(&tmp, nindarray, -1, _save) < 0) {
3878
+ return 1;
3879
+ }
3880
+ if (NPY_LIKELY(nelem == 1)) {
3881
+ *dest++ = *(src + tmp);
3882
+ }
3883
+ else {
3884
+ for (k = 0; k < nelem; k++) {
3885
+ *dest++ = *(src + tmp*nelem + k);
3886
+ }
3887
+ }
3888
+ }
3889
+ src += nelem*nindarray;
3890
+ }
3891
+ break;
3892
+ case NPY_WRAP:
3893
+ for (i = 0; i < n_outer; i++) {
3894
+ for (j = 0; j < m_middle; j++) {
3895
+ tmp = indarray[j];
3896
+ if (tmp < 0) {
3897
+ while (tmp < 0) {
3898
+ tmp += nindarray;
3899
+ }
3900
+ }
3901
+ else if (tmp >= nindarray) {
3902
+ while (tmp >= nindarray) {
3903
+ tmp -= nindarray;
3904
+ }
3905
+ }
3906
+ if (NPY_LIKELY(nelem == 1)) {
3907
+ *dest++ = *(src+tmp);
3908
+ }
3909
+ else {
3910
+ for (k = 0; k < nelem; k++) {
3911
+ *dest++ = *(src+tmp*nelem+k);
3912
+ }
3913
+ }
3914
+ }
3915
+ src += nelem*nindarray;
3916
+ }
3917
+ break;
3918
+ case NPY_CLIP:
3919
+ for (i = 0; i < n_outer; i++) {
3920
+ for (j = 0; j < m_middle; j++) {
3921
+ tmp = indarray[j];
3922
+ if (tmp < 0) {
3923
+ tmp = 0;
3924
+ }
3925
+ else if (tmp >= nindarray) {
3926
+ tmp = nindarray - 1;
3927
+ }
3928
+ if (NPY_LIKELY(nelem == 1)) {
3929
+ *dest++ = *(src + tmp);
3930
+ }
3931
+ else {
3932
+ for (k = 0; k < nelem; k++) {
3933
+ *dest++ = *(src + tmp*nelem + k);
3934
+ }
3935
+ }
3936
+ }
3937
+ src += nelem*nindarray;
3938
+ }
3939
+ break;
3940
+ }
3941
+
3942
+ NPY_END_THREADS;
3943
+ return 0;
3944
+ }
3945
+ /**end repeat**/
3946
+
3947
+ #define OBJECT_fasttake NULL
3948
+
3949
+ /*
3950
+ *****************************************************************************
3951
+ ** small correlate **
3952
+ *****************************************************************************
3953
+ */
3954
+
3955
+ /*
3956
+ * Compute correlation of data with with small kernels
3957
+ * Calling a BLAS dot product for the inner loop of the correlation is overkill
3958
+ * for small kernels. It is faster to compute it directly.
3959
+ * Intended to be used by _pyarray_correlate so no input verifications is done
3960
+ * especially it does not handle the boundaries, they should be handled by the
3961
+ * caller.
3962
+ * Returns 0 if kernel is considered too large or types are not supported, then
3963
+ * the regular array dot should be used to process the data.
3964
+ *
3965
+ * d_, dstride, nd, dtype: data pointer, its stride in bytes, number of
3966
+ * elements and type of data
3967
+ * k_, kstride, nk, ktype: kernel pointer, its stride in bytes, number of
3968
+ * elements and type of data
3969
+ * out_, ostride: output data pointer and its stride in bytes
3970
+ */
3971
+ NPY_NO_EXPORT int
3972
+ small_correlate(const char * d_, npy_intp dstride,
3973
+ npy_intp nd, enum NPY_TYPES dtype,
3974
+ const char * k_, npy_intp kstride,
3975
+ npy_intp nk, enum NPY_TYPES ktype,
3976
+ char * out_, npy_intp ostride)
3977
+ {
3978
+ /* only handle small kernels and uniform types */
3979
+ if (nk > 11 || dtype != ktype) {
3980
+ return 0;
3981
+ }
3982
+
3983
+ switch (dtype) {
3984
+ /**begin repeat
3985
+ * Float types
3986
+ * #type = npy_float, npy_double#
3987
+ * #TYPE = NPY_FLOAT, NPY_DOUBLE#
3988
+ */
3989
+ case @TYPE@:
3990
+ {
3991
+ npy_intp i;
3992
+ const @type@ * d = (@type@*)d_;
3993
+ const @type@ * k = (@type@*)k_;
3994
+ @type@ * out = (@type@*)out_;
3995
+ dstride /= sizeof(@type@);
3996
+ kstride /= sizeof(@type@);
3997
+ ostride /= sizeof(@type@);
3998
+ /* unroll inner loop to optimize register usage of the kernel*/
3999
+ switch (nk) {
4000
+ /**begin repeat1
4001
+ * #ksz_outer = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11# */
4002
+ case @ksz_outer@:
4003
+ {
4004
+ /**begin repeat2
4005
+ * #ksz = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11# */
4006
+ #if @ksz@ <= @ksz_outer@
4007
+ /* load kernel */
4008
+ const @type@ k@ksz@ = k[(@ksz@ - 1) * kstride];
4009
+ #endif
4010
+ /**end repeat2**/
4011
+ for (i = 0; i < nd; i++) {
4012
+ @type@ s = 0;
4013
+ /**begin repeat2
4014
+ * #ksz = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11# */
4015
+ #if @ksz@ <= @ksz_outer@
4016
+ s += d[(i + @ksz@ - 1) * dstride] * k@ksz@;
4017
+ #endif
4018
+ /**end repeat2**/
4019
+ out[i * ostride] = s;
4020
+ }
4021
+ return 1;
4022
+ }
4023
+ /**end repeat1**/
4024
+ default:
4025
+ return 0;
4026
+ }
4027
+ }
4028
+ /**end repeat**/
4029
+ default:
4030
+ return 0;
4031
+ }
4032
+ }
4033
+
4034
+ /*
4035
+ *****************************************************************************
4036
+ ** SETUP FUNCTION POINTERS **
4037
+ *****************************************************************************
4038
+ */
4039
+
4040
+
4041
+ #define _ALIGN(type) offsetof(struct {char c; type v;}, v)
4042
+ /*
4043
+ * Disable harmless compiler warning "4116: unnamed type definition in
4044
+ * parentheses" which is caused by the _ALIGN macro.
4045
+ */
4046
+ #if defined(_MSC_VER)
4047
+ #pragma warning(disable:4116)
4048
+ #endif
4049
+
4050
+
4051
+ /**begin repeat
4052
+ *
4053
+ * #from = VOID, STRING, UNICODE#
4054
+ * #suff = void, string, unicode#
4055
+ * #sort = 0, 1, 1#
4056
+ * #align = char, char, npy_ucs4#
4057
+ * #NAME = Void, String, Unicode#
4058
+ * #endian = |, |, =#
4059
+ * #flags = 0, 0, NPY_NEEDS_INIT#
4060
+ */
4061
+ static PyArray_ArrFuncs _Py@NAME@_ArrFuncs = {
4062
+ {
4063
+ @from@_to_BOOL,
4064
+ @from@_to_BYTE,
4065
+ @from@_to_UBYTE,
4066
+ @from@_to_SHORT,
4067
+ @from@_to_USHORT,
4068
+ @from@_to_INT,
4069
+ @from@_to_UINT,
4070
+ @from@_to_LONG,
4071
+ @from@_to_ULONG,
4072
+ @from@_to_LONGLONG,
4073
+ @from@_to_ULONGLONG,
4074
+ @from@_to_FLOAT,
4075
+ @from@_to_DOUBLE,
4076
+ @from@_to_LONGDOUBLE,
4077
+ @from@_to_CFLOAT,
4078
+ @from@_to_CDOUBLE,
4079
+ @from@_to_CLONGDOUBLE,
4080
+ @from@_to_OBJECT,
4081
+ @from@_to_STRING,
4082
+ @from@_to_UNICODE,
4083
+ @from@_to_VOID
4084
+ },
4085
+ @from@_getitem,
4086
+ @from@_setitem,
4087
+ (PyArray_CopySwapNFunc*)@from@_copyswapn,
4088
+ (PyArray_CopySwapFunc*)@from@_copyswap,
4089
+ (PyArray_CompareFunc*)@from@_compare,
4090
+ (PyArray_ArgFunc*)@from@_argmax,
4091
+ (PyArray_DotFunc*)NULL,
4092
+ (PyArray_ScanFunc*)@from@_scan,
4093
+ @from@_fromstr,
4094
+ (PyArray_NonzeroFunc*)@from@_nonzero,
4095
+ (PyArray_FillFunc*)NULL,
4096
+ (PyArray_FillWithScalarFunc*)NULL,
4097
+ #if @sort@
4098
+ {
4099
+ quicksort_@suff@,
4100
+ heapsort_@suff@,
4101
+ mergesort_@suff@
4102
+ },
4103
+ {
4104
+ aquicksort_@suff@,
4105
+ aheapsort_@suff@,
4106
+ amergesort_@suff@
4107
+ },
4108
+ #else
4109
+ {
4110
+ NULL, NULL, NULL
4111
+ },
4112
+ {
4113
+ NULL, NULL, NULL
4114
+ },
4115
+ #endif
4116
+ NULL,
4117
+ (PyArray_ScalarKindFunc*)NULL,
4118
+ NULL,
4119
+ NULL,
4120
+ (PyArray_FastClipFunc *)NULL,
4121
+ (PyArray_FastPutmaskFunc *)NULL,
4122
+ (PyArray_FastTakeFunc *)NULL,
4123
+ (PyArray_ArgFunc*)@from@_argmin
4124
+ };
4125
+
4126
+ /*
4127
+ * FIXME: check for PY3K
4128
+ */
4129
+ static PyArray_Descr @from@_Descr = {
4130
+ PyObject_HEAD_INIT(&PyArrayDescr_Type)
4131
+ /* typeobj */
4132
+ &Py@NAME@ArrType_Type,
4133
+ /* kind */
4134
+ NPY_@from@LTR,
4135
+ /* type */
4136
+ NPY_@from@LTR,
4137
+ /* byteorder */
4138
+ '@endian@',
4139
+ /* flags, unicode needs init as py3.3 does not like printing garbage */
4140
+ @flags@,
4141
+ /* type_num */
4142
+ NPY_@from@,
4143
+ /* elsize */
4144
+ 0,
4145
+ /* alignment */
4146
+ _ALIGN(@align@),
4147
+ /* subarray */
4148
+ NULL,
4149
+ /* fields */
4150
+ NULL,
4151
+ /* names */
4152
+ NULL,
4153
+ /* f */
4154
+ &_Py@NAME@_ArrFuncs,
4155
+ /* metadata */
4156
+ NULL,
4157
+ /* c_metadata */
4158
+ NULL,
4159
+ /* hash */
4160
+ -1,
4161
+ };
4162
+
4163
+ /**end repeat**/
4164
+
4165
+ /**begin repeat
4166
+ *
4167
+ * #from = BOOL,
4168
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
4169
+ * LONG, ULONG, LONGLONG, ULONGLONG,
4170
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
4171
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
4172
+ * OBJECT, DATETIME, TIMEDELTA#
4173
+ * #suff = bool,
4174
+ * byte, ubyte, short, ushort, int, uint,
4175
+ * long, ulong, longlong, ulonglong,
4176
+ * half, float, double, longdouble,
4177
+ * cfloat, cdouble, clongdouble,
4178
+ * object, datetime, timedelta#
4179
+ * #sort = 1*18, 0*1, 1*2#
4180
+ * #num = 1*15, 2*3, 1*3#
4181
+ * #fromtype = npy_bool,
4182
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
4183
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong,
4184
+ * npy_half, npy_float, npy_double, npy_longdouble,
4185
+ * npy_float, npy_double, npy_longdouble,
4186
+ * PyObject *, npy_datetime, npy_timedelta#
4187
+ * #NAME = Bool,
4188
+ * Byte, UByte, Short, UShort, Int, UInt,
4189
+ * Long, ULong, LongLong, ULongLong,
4190
+ * Half, Float, Double, LongDouble,
4191
+ * CFloat, CDouble, CLongDouble,
4192
+ * Object, Datetime, Timedelta#
4193
+ * #kind = GENBOOL,
4194
+ * SIGNED, UNSIGNED, SIGNED, UNSIGNED, SIGNED, UNSIGNED,
4195
+ * SIGNED, UNSIGNED, SIGNED, UNSIGNED,
4196
+ * FLOATING, FLOATING, FLOATING, FLOATING,
4197
+ * COMPLEX, COMPLEX, COMPLEX,
4198
+ * OBJECT, DATETIME, TIMEDELTA#
4199
+ * #endian = |*3, =*15, |, =*2#
4200
+ * #isobject= 0*18,NPY_OBJECT_DTYPE_FLAGS,0*2#
4201
+ */
4202
+
4203
+ static PyArray_ArrFuncs _Py@NAME@_ArrFuncs = {
4204
+ {
4205
+ @from@_to_BOOL,
4206
+ @from@_to_BYTE,
4207
+ @from@_to_UBYTE,
4208
+ @from@_to_SHORT,
4209
+ @from@_to_USHORT,
4210
+ @from@_to_INT,
4211
+ @from@_to_UINT,
4212
+ @from@_to_LONG,
4213
+ @from@_to_ULONG,
4214
+ @from@_to_LONGLONG,
4215
+ @from@_to_ULONGLONG,
4216
+ @from@_to_FLOAT,
4217
+ @from@_to_DOUBLE,
4218
+ @from@_to_LONGDOUBLE,
4219
+ @from@_to_CFLOAT,
4220
+ @from@_to_CDOUBLE,
4221
+ @from@_to_CLONGDOUBLE,
4222
+ @from@_to_OBJECT,
4223
+ @from@_to_STRING,
4224
+ @from@_to_UNICODE,
4225
+ @from@_to_VOID
4226
+ },
4227
+ @from@_getitem,
4228
+ @from@_setitem,
4229
+ (PyArray_CopySwapNFunc*)@from@_copyswapn,
4230
+ (PyArray_CopySwapFunc*)@from@_copyswap,
4231
+ (PyArray_CompareFunc*)@from@_compare,
4232
+ (PyArray_ArgFunc*)@from@_argmax,
4233
+ (PyArray_DotFunc*)@from@_dot,
4234
+ (PyArray_ScanFunc*)@from@_scan,
4235
+ @from@_fromstr,
4236
+ (PyArray_NonzeroFunc*)@from@_nonzero,
4237
+ (PyArray_FillFunc*)@from@_fill,
4238
+ (PyArray_FillWithScalarFunc*)@from@_fillwithscalar,
4239
+ #if @sort@
4240
+ {
4241
+ quicksort_@suff@,
4242
+ heapsort_@suff@,
4243
+ mergesort_@suff@
4244
+ },
4245
+ {
4246
+ aquicksort_@suff@,
4247
+ aheapsort_@suff@,
4248
+ amergesort_@suff@
4249
+ },
4250
+ #else
4251
+ {
4252
+ NULL, NULL, NULL
4253
+ },
4254
+ {
4255
+ NULL, NULL, NULL
4256
+ },
4257
+ #endif
4258
+ NULL,
4259
+ (PyArray_ScalarKindFunc*)NULL,
4260
+ NULL,
4261
+ NULL,
4262
+ (PyArray_FastClipFunc*)@from@_fastclip,
4263
+ (PyArray_FastPutmaskFunc*)@from@_fastputmask,
4264
+ (PyArray_FastTakeFunc*)@from@_fasttake,
4265
+ (PyArray_ArgFunc*)@from@_argmin
4266
+ };
4267
+
4268
+ /*
4269
+ * FIXME: check for PY3K
4270
+ */
4271
+ NPY_NO_EXPORT PyArray_Descr @from@_Descr = {
4272
+ PyObject_HEAD_INIT(&PyArrayDescr_Type)
4273
+ /* typeobj */
4274
+ &Py@NAME@ArrType_Type,
4275
+ /* kind */
4276
+ NPY_@kind@LTR,
4277
+ /* type */
4278
+ NPY_@from@LTR,
4279
+ /* byteorder */
4280
+ '@endian@',
4281
+ /* flags */
4282
+ @isobject@,
4283
+ /* type_num */
4284
+ NPY_@from@,
4285
+ /* elsize */
4286
+ @num@ * sizeof(@fromtype@),
4287
+ /* alignment */
4288
+ @num@ * _ALIGN(@fromtype@) > NPY_MAX_COPY_ALIGNMENT ?
4289
+ NPY_MAX_COPY_ALIGNMENT : @num@ * _ALIGN(@fromtype@),
4290
+ /* subarray */
4291
+ NULL,
4292
+ /* fields */
4293
+ NULL,
4294
+ /* names */
4295
+ NULL,
4296
+ /* f */
4297
+ &_Py@NAME@_ArrFuncs,
4298
+ /* metadata */
4299
+ NULL,
4300
+ /* c_metadata */
4301
+ NULL,
4302
+ /* hash */
4303
+ -1,
4304
+ };
4305
+
4306
+ /**end repeat**/
4307
+
4308
+ #define _MAX_LETTER 128
4309
+ static char _letter_to_num[_MAX_LETTER];
4310
+
4311
+ static PyArray_Descr *_builtin_descrs[] = {
4312
+ &BOOL_Descr,
4313
+ &BYTE_Descr,
4314
+ &UBYTE_Descr,
4315
+ &SHORT_Descr,
4316
+ &USHORT_Descr,
4317
+ &INT_Descr,
4318
+ &UINT_Descr,
4319
+ &LONG_Descr,
4320
+ &ULONG_Descr,
4321
+ &LONGLONG_Descr,
4322
+ &ULONGLONG_Descr,
4323
+ &FLOAT_Descr,
4324
+ &DOUBLE_Descr,
4325
+ &LONGDOUBLE_Descr,
4326
+ &CFLOAT_Descr,
4327
+ &CDOUBLE_Descr,
4328
+ &CLONGDOUBLE_Descr,
4329
+ &OBJECT_Descr,
4330
+ &STRING_Descr,
4331
+ &UNICODE_Descr,
4332
+ &VOID_Descr,
4333
+ &DATETIME_Descr,
4334
+ &TIMEDELTA_Descr,
4335
+ &HALF_Descr
4336
+ };
4337
+
4338
+ /*NUMPY_API
4339
+ * Get the PyArray_Descr structure for a type.
4340
+ */
4341
+ NPY_NO_EXPORT PyArray_Descr *
4342
+ PyArray_DescrFromType(int type)
4343
+ {
4344
+ PyArray_Descr *ret = NULL;
4345
+
4346
+ if (type < NPY_NTYPES) {
4347
+ ret = _builtin_descrs[type];
4348
+ }
4349
+ else if (type == NPY_NOTYPE) {
4350
+ /*
4351
+ * This needs to not raise an error so
4352
+ * that PyArray_DescrFromType(NPY_NOTYPE)
4353
+ * works for backwards-compatible C-API
4354
+ */
4355
+ return NULL;
4356
+ }
4357
+ else if ((type == NPY_CHAR) || (type == NPY_CHARLTR)) {
4358
+ ret = PyArray_DescrNew(_builtin_descrs[NPY_STRING]);
4359
+ if (ret == NULL) {
4360
+ return NULL;
4361
+ }
4362
+ ret->elsize = 1;
4363
+ ret->type = NPY_CHARLTR;
4364
+ return ret;
4365
+ }
4366
+ else if (PyTypeNum_ISUSERDEF(type)) {
4367
+ ret = userdescrs[type - NPY_USERDEF];
4368
+ }
4369
+ else {
4370
+ int num = NPY_NTYPES;
4371
+ if (type < _MAX_LETTER) {
4372
+ num = (int) _letter_to_num[type];
4373
+ }
4374
+ if (num >= NPY_NTYPES) {
4375
+ ret = NULL;
4376
+ }
4377
+ else {
4378
+ ret = _builtin_descrs[num];
4379
+ }
4380
+ }
4381
+ if (ret == NULL) {
4382
+ PyErr_SetString(PyExc_ValueError,
4383
+ "Invalid data-type for array");
4384
+ }
4385
+ else {
4386
+ Py_INCREF(ret);
4387
+ }
4388
+
4389
+ return ret;
4390
+ }
4391
+
4392
+ /* A clone function for the datetime dtype metadata */
4393
+ static NpyAuxData *
4394
+ datetime_dtype_metadata_clone(NpyAuxData *data)
4395
+ {
4396
+ PyArray_DatetimeDTypeMetaData *newdata =
4397
+ (PyArray_DatetimeDTypeMetaData *)PyArray_malloc(
4398
+ sizeof(PyArray_DatetimeDTypeMetaData));
4399
+ if (newdata == NULL) {
4400
+ return NULL;
4401
+ }
4402
+
4403
+ memcpy(newdata, data, sizeof(PyArray_DatetimeDTypeMetaData));
4404
+
4405
+ return (NpyAuxData *)newdata;
4406
+ }
4407
+
4408
+ /*
4409
+ * Initializes the c_metadata field for the _builtin_descrs DATETIME
4410
+ * and TIMEDELTA.
4411
+ *
4412
+ * must not be static, gcc 4.1.2 on redhat 5 then miscompiles this function
4413
+ * see gh-5163
4414
+ *
4415
+ */
4416
+ NPY_NO_EXPORT int
4417
+ initialize_builtin_datetime_metadata(void)
4418
+ {
4419
+ PyArray_DatetimeDTypeMetaData *data1, *data2;
4420
+
4421
+ /* Allocate memory for the metadata */
4422
+ data1 = PyArray_malloc(sizeof(PyArray_DatetimeDTypeMetaData));
4423
+ if (data1 == NULL) {
4424
+ return -1;
4425
+ }
4426
+ data2 = PyArray_malloc(sizeof(PyArray_DatetimeDTypeMetaData));
4427
+ if (data2 == NULL) {
4428
+ PyArray_free(data1);
4429
+ return -1;
4430
+ }
4431
+
4432
+ /* Initialize the base aux data */
4433
+ memset(data1, 0, sizeof(PyArray_DatetimeDTypeMetaData));
4434
+ memset(data2, 0, sizeof(PyArray_DatetimeDTypeMetaData));
4435
+ data1->base.free = (NpyAuxData_FreeFunc *)PyArray_free;
4436
+ data2->base.free = (NpyAuxData_FreeFunc *)PyArray_free;
4437
+ data1->base.clone = datetime_dtype_metadata_clone;
4438
+ data2->base.clone = datetime_dtype_metadata_clone;
4439
+
4440
+ /* Set to the default metadata */
4441
+ data1->meta.base = NPY_DATETIME_DEFAULTUNIT;
4442
+ data1->meta.num = 1;
4443
+ data2->meta.base = NPY_DATETIME_DEFAULTUNIT;
4444
+ data2->meta.num = 1;
4445
+
4446
+ _builtin_descrs[NPY_DATETIME]->c_metadata = (NpyAuxData *)data1;
4447
+ _builtin_descrs[NPY_TIMEDELTA]->c_metadata = (NpyAuxData *)data2;
4448
+
4449
+ return 0;
4450
+ }
4451
+
4452
+ /*
4453
+ *****************************************************************************
4454
+ ** SETUP TYPE INFO **
4455
+ *****************************************************************************
4456
+ */
4457
+
4458
+
4459
+ /*
4460
+ * This function is called during numpy module initialization,
4461
+ * and is used to initialize internal dtype tables.
4462
+ */
4463
+ NPY_NO_EXPORT int
4464
+ set_typeinfo(PyObject *dict)
4465
+ {
4466
+ PyObject *infodict, *s;
4467
+ int i;
4468
+
4469
+ PyArray_Descr *dtype;
4470
+ PyObject *cobj, *key;
4471
+
4472
+ /*
4473
+ * Add cast functions for the new types
4474
+ */
4475
+
4476
+ /**begin repeat
4477
+ *
4478
+ * #name1 = BOOL,
4479
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
4480
+ * LONG, ULONG, LONGLONG, ULONGLONG,
4481
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
4482
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
4483
+ * OBJECT, STRING, UNICODE, VOID,
4484
+ * DATETIME,TIMEDELTA#
4485
+ */
4486
+
4487
+ /**begin repeat1
4488
+ *
4489
+ * #name2 = HALF, DATETIME, TIMEDELTA#
4490
+ */
4491
+
4492
+ dtype = _builtin_descrs[NPY_@name1@];
4493
+ if (dtype->f->castdict == NULL) {
4494
+ dtype->f->castdict = PyDict_New();
4495
+ if (dtype->f->castdict == NULL) {
4496
+ return -1;
4497
+ }
4498
+ }
4499
+ key = PyInt_FromLong(NPY_@name2@);
4500
+ if (key == NULL) {
4501
+ return -1;
4502
+ }
4503
+ cobj = NpyCapsule_FromVoidPtr((void *)@name1@_to_@name2@, NULL);
4504
+ if (cobj == NULL) {
4505
+ Py_DECREF(key);
4506
+ return -1;
4507
+ }
4508
+ if (PyDict_SetItem(dtype->f->castdict, key, cobj) < 0) {
4509
+ Py_DECREF(key);
4510
+ Py_DECREF(cobj);
4511
+ return -1;
4512
+ }
4513
+ Py_DECREF(key);
4514
+ Py_DECREF(cobj);
4515
+
4516
+ /**end repeat1**/
4517
+
4518
+ /**end repeat**/
4519
+
4520
+ if (initialize_builtin_datetime_metadata() < 0) {
4521
+ return -1;
4522
+ }
4523
+
4524
+ for (i = 0; i < _MAX_LETTER; i++) {
4525
+ _letter_to_num[i] = NPY_NTYPES;
4526
+ }
4527
+
4528
+ /**begin repeat
4529
+ *
4530
+ * #name = BOOL,
4531
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
4532
+ * INTP, UINTP,
4533
+ * LONG, ULONG, LONGLONG, ULONGLONG,
4534
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
4535
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
4536
+ * OBJECT, STRING, UNICODE, VOID,
4537
+ * DATETIME,TIMEDELTA#
4538
+ */
4539
+
4540
+ _letter_to_num[NPY_@name@LTR] = NPY_@name@;
4541
+
4542
+ /**end repeat**/
4543
+
4544
+ _letter_to_num[NPY_STRINGLTR2] = NPY_STRING;
4545
+
4546
+ /**begin repeat
4547
+ * #name = BOOL,
4548
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
4549
+ * LONG, ULONG, LONGLONG, ULONGLONG,
4550
+ * HALF, FLOAT, DOUBLE, LONGDOUBLE,
4551
+ * CFLOAT, CDOUBLE, CLONGDOUBLE,
4552
+ * OBJECT, STRING, UNICODE, VOID,
4553
+ * DATETIME, TIMEDELTA#
4554
+ */
4555
+
4556
+ @name@_Descr.fields = Py_None;
4557
+
4558
+ /**end repeat**/
4559
+
4560
+ /* Set a dictionary with type information */
4561
+ infodict = PyDict_New();
4562
+ if (infodict == NULL) return -1;
4563
+
4564
+
4565
+ /**begin repeat
4566
+ *
4567
+ * #name = BOOL,
4568
+ * BYTE, UBYTE, SHORT, USHORT, INT, UINT,
4569
+ * INTP, UINTP,
4570
+ * LONG, ULONG, LONGLONG, ULONGLONG#
4571
+ * #uname = BOOL,
4572
+ * BYTE*2, SHORT*2, INT*2,
4573
+ * INTP*2,
4574
+ * LONG*2, LONGLONG*2#
4575
+ * #Name = Bool,
4576
+ * Byte, UByte, Short, UShort, Int, UInt,
4577
+ * Intp, UIntp,
4578
+ * Long, ULong, LongLong, ULongLong#
4579
+ * #type = npy_bool,
4580
+ * npy_byte, npy_ubyte, npy_short, npy_ushort, npy_int, npy_uint,
4581
+ * npy_intp, npy_uintp,
4582
+ * npy_long, npy_ulong, npy_longlong, npy_ulonglong#
4583
+ * #max= 1,
4584
+ * NPY_MAX_BYTE, NPY_MAX_UBYTE, NPY_MAX_SHORT,
4585
+ * NPY_MAX_USHORT, NPY_MAX_INT, PyLong_FromUnsignedLong(NPY_MAX_UINT),
4586
+ * PyLong_FromLongLong((npy_longlong) NPY_MAX_INTP),
4587
+ * PyLong_FromUnsignedLongLong((npy_ulonglong) NPY_MAX_UINTP),
4588
+ * NPY_MAX_LONG,
4589
+ * PyLong_FromUnsignedLong((npy_ulong) NPY_MAX_ULONG),
4590
+ * PyLong_FromLongLong((npy_longlong) NPY_MAX_LONGLONG),
4591
+ * PyLong_FromUnsignedLongLong((npy_ulonglong) NPY_MAX_ULONGLONG)#
4592
+ * #min = 0, NPY_MIN_BYTE, 0, NPY_MIN_SHORT, 0, NPY_MIN_INT, 0,
4593
+ * PyLong_FromLongLong((npy_longlong) NPY_MIN_INTP),
4594
+ * 0, NPY_MIN_LONG, 0,
4595
+ * PyLong_FromLongLong((npy_longlong) NPY_MIN_LONGLONG), 0#
4596
+ * #cx = i*6, N, N, N, l, N, N, N#
4597
+ * #cn = i*7, N, i, l, i, N, i#
4598
+ */
4599
+
4600
+ PyDict_SetItemString(infodict, "@name@",
4601
+ #if defined(NPY_PY3K)
4602
+ s = Py_BuildValue("Ciii@cx@@cn@O",
4603
+ #else
4604
+ s = Py_BuildValue("ciii@cx@@cn@O",
4605
+ #endif
4606
+ NPY_@name@LTR,
4607
+ NPY_@name@,
4608
+ NPY_BITSOF_@uname@,
4609
+ _ALIGN(@type@),
4610
+ @max@,
4611
+ @min@,
4612
+ (PyObject *) &Py@Name@ArrType_Type));
4613
+ Py_DECREF(s);
4614
+
4615
+ /**end repeat**/
4616
+
4617
+
4618
+ /**begin repeat
4619
+ *
4620
+ * #type = npy_half, npy_float, npy_double, npy_longdouble,
4621
+ * npy_cfloat, npy_cdouble, npy_clongdouble#
4622
+ * #name = HALF, FLOAT, DOUBLE, LONGDOUBLE,
4623
+ * CFLOAT, CDOUBLE, CLONGDOUBLE#
4624
+ * #Name = Half, Float, Double, LongDouble,
4625
+ * CFloat, CDouble, CLongDouble#
4626
+ * #num = 1, 1, 1, 1, 2, 2, 2#
4627
+ */
4628
+
4629
+ PyDict_SetItemString(infodict, "@name@",
4630
+ #if defined(NPY_PY3K)
4631
+ s = Py_BuildValue("CiiiO", NPY_@name@LTR,
4632
+ #else
4633
+ s = Py_BuildValue("ciiiO", NPY_@name@LTR,
4634
+ #endif
4635
+ NPY_@name@,
4636
+ NPY_BITSOF_@name@,
4637
+ @num@ * _ALIGN(@type@) > NPY_MAX_COPY_ALIGNMENT ?
4638
+ NPY_MAX_COPY_ALIGNMENT : @num@ * _ALIGN(@type@),
4639
+ (PyObject *) &Py@Name@ArrType_Type));
4640
+ Py_DECREF(s);
4641
+
4642
+ /**end repeat**/
4643
+
4644
+ PyDict_SetItemString(infodict, "OBJECT",
4645
+ #if defined(NPY_PY3K)
4646
+ s = Py_BuildValue("CiiiO", NPY_OBJECTLTR,
4647
+ #else
4648
+ s = Py_BuildValue("ciiiO", NPY_OBJECTLTR,
4649
+ #endif
4650
+ NPY_OBJECT,
4651
+ sizeof(PyObject *) * CHAR_BIT,
4652
+ _ALIGN(PyObject *),
4653
+ (PyObject *) &PyObjectArrType_Type));
4654
+ Py_DECREF(s);
4655
+ PyDict_SetItemString(infodict, "STRING",
4656
+ #if defined(NPY_PY3K)
4657
+ s = Py_BuildValue("CiiiO", NPY_STRINGLTR,
4658
+ #else
4659
+ s = Py_BuildValue("ciiiO", NPY_STRINGLTR,
4660
+ #endif
4661
+ NPY_STRING,
4662
+ 0,
4663
+ _ALIGN(char),
4664
+ (PyObject *) &PyStringArrType_Type));
4665
+ Py_DECREF(s);
4666
+ PyDict_SetItemString(infodict, "UNICODE",
4667
+ #if defined(NPY_PY3K)
4668
+ s = Py_BuildValue("CiiiO", NPY_UNICODELTR,
4669
+ #else
4670
+ s = Py_BuildValue("ciiiO", NPY_UNICODELTR,
4671
+ #endif
4672
+ NPY_UNICODE,
4673
+ 0,
4674
+ _ALIGN(npy_ucs4),
4675
+ (PyObject *) &PyUnicodeArrType_Type));
4676
+ Py_DECREF(s);
4677
+ PyDict_SetItemString(infodict, "VOID",
4678
+ #if defined(NPY_PY3K)
4679
+ s = Py_BuildValue("CiiiO", NPY_VOIDLTR,
4680
+ #else
4681
+ s = Py_BuildValue("ciiiO", NPY_VOIDLTR,
4682
+ #endif
4683
+ NPY_VOID,
4684
+ 0,
4685
+ _ALIGN(char),
4686
+ (PyObject *) &PyVoidArrType_Type));
4687
+ Py_DECREF(s);
4688
+ PyDict_SetItemString(infodict, "DATETIME",
4689
+ #if defined(NPY_PY3K)
4690
+ s = Py_BuildValue("CiiiNNO", NPY_DATETIMELTR,
4691
+ #else
4692
+ s = Py_BuildValue("ciiiNNO", NPY_DATETIMELTR,
4693
+ #endif
4694
+ NPY_DATETIME,
4695
+ NPY_BITSOF_DATETIME,
4696
+ _ALIGN(npy_datetime),
4697
+ MyPyLong_FromInt64(NPY_MAX_DATETIME),
4698
+ MyPyLong_FromInt64(NPY_MIN_DATETIME),
4699
+ (PyObject *) &PyDatetimeArrType_Type));
4700
+ Py_DECREF(s);
4701
+ PyDict_SetItemString(infodict, "TIMEDELTA",
4702
+ #if defined(NPY_PY3K)
4703
+ s = Py_BuildValue("CiiiNNO", NPY_TIMEDELTALTR,
4704
+ #else
4705
+ s = Py_BuildValue("ciiiNNO",NPY_TIMEDELTALTR,
4706
+ #endif
4707
+ NPY_TIMEDELTA,
4708
+ NPY_BITSOF_TIMEDELTA,
4709
+ _ALIGN(npy_timedelta),
4710
+ MyPyLong_FromInt64(NPY_MAX_TIMEDELTA),
4711
+ MyPyLong_FromInt64(NPY_MIN_TIMEDELTA),
4712
+ (PyObject *)&PyTimedeltaArrType_Type));
4713
+ Py_DECREF(s);
4714
+
4715
+ #define SETTYPE(name) \
4716
+ Py_INCREF(&Py##name##ArrType_Type); \
4717
+ PyDict_SetItemString(infodict, #name, \
4718
+ (PyObject *)&Py##name##ArrType_Type)
4719
+
4720
+ SETTYPE(Generic);
4721
+ SETTYPE(Number);
4722
+ SETTYPE(Integer);
4723
+ SETTYPE(Inexact);
4724
+ SETTYPE(SignedInteger);
4725
+ SETTYPE(UnsignedInteger);
4726
+ SETTYPE(Floating);
4727
+ SETTYPE(ComplexFloating);
4728
+ SETTYPE(Flexible);
4729
+ SETTYPE(Character);
4730
+
4731
+ #undef SETTYPE
4732
+
4733
+ PyDict_SetItemString(dict, "typeinfo", infodict);
4734
+ Py_DECREF(infodict);
4735
+ return 0;
4736
+ }
4737
+
4738
+ #undef _MAX_LETTER