| 367 | |
| 368 | template< typename InputIterator > |
| 369 | typename traits::enable_if< helpers::decays_to_ctype< typename std::iterator_traits< InputIterator >::value_type >::value, |
| 370 | typename helpers::ctype< typename std::iterator_traits< InputIterator >::value_type >::type >::type |
| 371 | min_nona(InputIterator begin, InputIterator end) { |
| 372 | |
| 373 | typedef typename helpers::ctype< typename std::iterator_traits< InputIterator >::value_type >::type value_type; |
| 374 | typedef typename helpers::rtype< value_type > rtype; |
| 375 | |
| 376 | if (begin != end) { |
| 377 | value_type min = *begin; |
| 378 | |
| 379 | while (begin != end) { |
| 380 | min = std::min(min, *begin++); |
| 381 | } |
| 382 | |
| 383 | return min; |
| 384 | } |
| 385 | |
| 386 | return std::numeric_limits< typename rtype::type >::infinity(); |
| 387 | } |
| 388 | |
| 389 | // for REALSXP |
| 390 | template< typename InputIterator > |
no test coverage detected