示例#1
0
 DYND_CUDA_HOST_DEVICE bool less_nonan(const dynd_float16& rhs) const {
     if (signbit_()) {
         if (rhs.signbit_()) {
             return m_bits > rhs.m_bits;
         } else {
             // Signed zeros are equal, have to check for it
             return (m_bits != 0x8000u) || (rhs.m_bits != 0x0000u);
         }
     } else {
         if (rhs.signbit_()) {
             return false;
         } else {
             return m_bits < rhs.m_bits;
         }
     }
 }
示例#2
0
 DYND_CUDA_HOST_DEVICE bool less_equal_nonan(const dynd_float16& rhs) const {
     if (signbit_()) {
         if (rhs.signbit_()) {
             return m_bits >= rhs.m_bits;
         } else {
             return true;
         }
     } else {
         if (rhs.signbit_()) {
             // Signed zeros are equal, have to check for it
             return (m_bits == 0x0000u) && (rhs.m_bits == 0x8000u);
         } else {
             return m_bits <= rhs.m_bits;
         }
     }
 }
示例#3
0
文件: float128.hpp 项目: Vasyka/hat
 DYND_CUDA_HOST_DEVICE bool less_equal_nonan(const float128 &rhs) const
 {
   if (signbit_()) {
     if (rhs.signbit_()) {
       return m_hi > rhs.m_hi || (m_hi == rhs.m_hi && m_lo >= rhs.m_lo);
     } else {
       return true;
     }
   } else {
     if (rhs.signbit_()) {
       // Signed zeros are equal, have to check for it
       return (m_hi == 0x8000000000000000ULL) && (m_lo == 0LL) &&
              (rhs.m_hi == 0LL) && rhs.m_lo == 0LL;
     } else {
       return m_hi < rhs.m_hi || (m_hi == rhs.m_hi && m_lo <= rhs.m_lo);
     }
   }
 }