typename types::numpy_expr_to_ndarray<E>::T nanmin(E const &expr) { typename types::numpy_expr_to_ndarray<E>::T min = std::numeric_limits< typename types::numpy_expr_to_ndarray<E>::T>::max(); _nanmin(expr.begin(), expr.end(), min, utils::int_<types::numpy_expr_to_ndarray<E>::N>()); return min; }
void _nanmin(E begin, E end, F &min, utils::int_<N>) { for (; begin != end; ++begin) _nanmin((*begin).begin(), (*begin).end(), min, utils::int_<N - 1>()); }
typename E::dtype nanmin(E const &expr) { typename E::dtype min = std::numeric_limits<typename E::dtype>::max(); _nanmin(expr.begin(), expr.end(), min, utils::int_<E::value>()); return min; }