| Server IP : 217.160.0.212 / Your IP : 216.73.216.141 Web Server : Apache System : Linux www 6.18.51-i1-ampere #1196 SMP Fri Sep 11 20:43:55 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib/python3/dist-packages/pythran/pythonic/numpy/ |
Upload File : |
#ifndef PYTHONIC_NUMPY_COUNT_NONZERO_HPP
#define PYTHONIC_NUMPY_COUNT_NONZERO_HPP
#include "pythonic/include/numpy/count_nonzero.hpp"
#include "pythonic/utils/functor.hpp"
#include "pythonic/types/ndarray.hpp"
PYTHONIC_NS_BEGIN
namespace numpy
{
template <class dtype, class E>
auto _count_nonzero(E begin, E end, long &count, utils::int_<1>) ->
typename std::enable_if<std::is_same<dtype, bool>::value>::type
{
for (; begin != end; ++begin)
// Behaviour defined in the standard
count += *begin;
}
template <class dtype, class E>
auto _count_nonzero(E begin, E end, long &count, utils::int_<1>) ->
typename std::enable_if<!std::is_same<dtype, bool>::value>::type
{
for (; begin != end; ++begin)
if (*begin != static_cast<dtype>(0))
++count;
}
template <class dtype, class E, size_t N>
void _count_nonzero(E begin, E end, long &count, utils::int_<N>)
{
for (; begin != end; ++begin)
_count_nonzero<dtype>((*begin).begin(), (*begin).end(), count,
utils::int_<N - 1>());
}
template <class E>
long count_nonzero(E const &array)
{
long count(0);
_count_nonzero<typename E::dtype>(array.begin(), array.end(), count,
utils::int_<E::value>());
return count;
}
}
PYTHONIC_NS_END
#endif