@@ -247,6 +247,7 @@ struct batch<std::complex<T>, A> {
247247 batch (real_batch const & real) : m_real(real), m_imag(0 ) {}
248248 batch (T val) : m_real(val), m_imag(0 ) {}
249249 batch (std::initializer_list<value_type> data) { *this = load_unaligned (data.begin ()); }
250+ explicit batch (batch_bool_type b);
250251
251252 static XSIMD_NO_DISCARD batch load_aligned (const T* real_src, const T* imag_src=nullptr );
252253 static XSIMD_NO_DISCARD batch load_unaligned (const T* real_src, const T* imag_src=nullptr );
@@ -293,6 +294,7 @@ struct batch<std::complex<T>, A> {
293294 }
294295
295296 // unary operators
297+ batch_bool_type operator !() const { return operator ==(batch (0 )); }
296298 batch operator ~() const { return {~m_real, ~m_imag}; }
297299 batch operator -() const { return {-m_real, -m_imag};}
298300 batch operator +() const { return {+m_real, +m_imag}; }
@@ -564,6 +566,13 @@ batch_bool<T, A> batch_bool<T, A>::load_unaligned(bool const* mem) {
564566
565567// batch complex implementation
566568//
569+
570+ template <class T , class A >
571+ batch<std::complex <T>, A>::batch(batch_bool_type b)
572+ : m_real(b), m_imag(0 )
573+ {
574+ }
575+
567576template <class T , class A >
568577batch<std::complex <T>, A> batch<std::complex <T>, A>::load_aligned(const T* real_src, const T* imag_src)
569578{
0 commit comments