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