@@ -25,13 +25,16 @@ fuzzy_equal(double u, double v, double fuzz) -> bool {
2525template <typename T, typename V>
2626[[nodiscard]] constexpr auto
2727in_range (V value) -> bool {
28- return std::numeric_limits<T>::min () <= value && value <= std::numeric_limits<T>::max ();
28+ if constexpr (std::is_same_v<bool , V>)
29+ return true ;
30+ else
31+ return std::numeric_limits<T>::lowest () <= value && value <= std::numeric_limits<T>::max ();
2932}
3033
3134template <typename T, typename V>
3235[[nodiscard]] constexpr auto
3336in_range () -> bool {
34- return in_range<T>(std::numeric_limits<V>::min ()) && in_range<T>(std::numeric_limits<V>::max ());
37+ return in_range<T>(std::numeric_limits<V>::lowest ()) && in_range<T>(std::numeric_limits<V>::max ());
3538}
3639
3740template <typename T>
@@ -450,19 +453,19 @@ jtccvt(J jt, I tflagged, array w, array *y) -> bool {
450453 }
451454 }
452455 switch (CVCASE (CTTZ (t), CTTZ (wt))) {
453- case CVCASE (INTX, B01X): std::copy_n (pointer_to_values<B>(w), n, static_cast <I *>( yv)); return true ;
456+ case CVCASE (INTX, B01X): return convert< bool , int64_t >(jt, w, yv);
454457 case CVCASE (XNUMX, B01X): return convert<bool , X>(jt, w, yv);
455458 case CVCASE (RATX, B01X):
456459 GATV (d, XNUM, n, r, s);
457460 return convert<bool , X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, Q>(jt, d, yv);
458- case CVCASE (FLX, B01X): std::copy_n (pointer_to_values<B>(w), n, static_cast <D *>( yv)); return true ;
461+ case CVCASE (FLX, B01X): return convert< bool , double >(jt, w, yv);
459462 case CVCASE (CMPXX, B01X): set_real_part (static_cast <Z *>(yv), n, pointer_to_values<B>(w)); return true ;
460463 case CVCASE (B01X, INTX): return convert<I, bool >(jt, w, yv);
461464 case CVCASE (XNUMX, INTX): return convert<I, X>(jt, w, yv);
462465 case CVCASE (RATX, INTX):
463466 GATV (d, XNUM, n, r, s);
464467 return convert<I, X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, Q>(jt, d, yv);
465- case CVCASE (FLX, INTX): std::copy_n (pointer_to_values<I>(w), n, static_cast <D *>( yv)); return true ;
468+ case CVCASE (FLX, INTX): return convert< int64_t , double >(jt, w, yv);
466469 case CVCASE (CMPXX, INTX): set_real_part (static_cast <Z *>(yv), n, pointer_to_values<I>(w)); return true ;
467470 case CVCASE (B01X, FLX): return convert<D, bool >(jt, w, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
468471 case CVCASE (INTX, FLX): return convert<D, I>(jt, w, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
0 commit comments