diff options
author | Picca Frédéric-Emmanuel <picca@debian.org> | 2017-11-25 16:55:20 +0100 |
---|---|---|
committer | Picca Frédéric-Emmanuel <picca@debian.org> | 2017-11-25 16:55:20 +0100 |
commit | e19c96eff0c310c06c4f268c8b80cb33bd08996f (patch) | |
tree | f2b4a365ed899be04766f3937bcc2d58d22be065 /silx/math/combo.pyx | |
parent | bfa4dba15485b4192f8bbe13345e9658c97ecf76 (diff) |
New upstream version 0.6.1+dfsg
Diffstat (limited to 'silx/math/combo.pyx')
-rw-r--r-- | silx/math/combo.pyx | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/silx/math/combo.pyx b/silx/math/combo.pyx index 9582dcb..95676af 100644 --- a/silx/math/combo.pyx +++ b/silx/math/combo.pyx @@ -30,7 +30,7 @@ of first occurrences (i.e., argmin/argmax) in a single pass. __authors__ = ["T. Vincent"] __license__ = "MIT" -__date__ = "16/08/2017" +__date__ = "18/10/2017" cimport cython @@ -49,9 +49,11 @@ cdef extern from "isnan.h": import numpy +# All supported types ctypedef fused _number: float double + long double signed char signed short signed int @@ -63,6 +65,13 @@ ctypedef fused _number: unsigned long unsigned long long +# All supported floating types: +# cython.floating + long double +ctypedef fused _floating: + float + double + long double + class _MinMaxResult(object): """Object storing result from :func:`min_max`""" @@ -122,7 +131,7 @@ def _min_max(_number[::1] data, bint min_positive=False): See :func:`min_max` for documentation. """ cdef: - _number value, minimum, minpos, maximum + _number value, minimum, min_pos, maximum unsigned int length unsigned int index = 0 unsigned int min_index = 0 @@ -144,7 +153,7 @@ def _min_max(_number[::1] data, bint min_positive=False): else: min_pos = 0 - if _number in cython.floating: + if _number in _floating: # For floating, loop until first not NaN value for index in range(length): value = data[index] @@ -182,7 +191,7 @@ def _min_max(_number[::1] data, bint min_positive=False): break # Loop until the end - for index in range(index+1, length): + for index in range(index + 1, length): value = data[index] if value > maximum: maximum = value @@ -207,13 +216,13 @@ def _min_max(_number[::1] data, bint min_positive=False): @cython.initializedcheck(False) @cython.boundscheck(False) @cython.wraparound(False) -def _finite_min_max(cython.floating[::1] data, bint min_positive=False): +def _finite_min_max(_floating[::1] data, bint min_positive=False): """:func:`min_max` implementation for floats skipping infinite values See :func:`min_max` for documentation. """ cdef: - cython.floating value, minimum, minpos, maximum + _floating value, minimum, min_pos, maximum unsigned int length unsigned int index = 0 unsigned int min_index = 0 |