template<simd-complex V>
constexpr rebind_t<simd-complex-value-type<V>, V> real(const V&) noexcept;
template<simd-complex V>
constexpr rebind_t<simd-complex-value-type<V>, V> imag(const V&) noexcept;
template<simd-complex V>
constexpr rebind_t<simd-complex-value-type<V>, V> abs(const V&);
template<simd-complex V>
constexpr rebind_t<simd-complex-value-type<V>, V> arg(const V&);
template<simd-complex V>
constexpr rebind_t<simd-complex-value-type<V>, V> norm(const V&);
template<simd-complex V> constexpr V conj(const V&);
template<simd-complex V> constexpr V proj(const V&);
template<simd-complex V> constexpr V exp(const V& v);
template<simd-complex V> constexpr V log(const V& v);
template<simd-complex V> constexpr V log10(const V& v);
template<simd-complex V> constexpr V sqrt(const V& v);
template<simd-complex V> constexpr V sin(const V& v);
template<simd-complex V> constexpr V asin(const V& v);
template<simd-complex V> constexpr V cos(const V& v);
template<simd-complex V> constexpr V acos(const V& v);
template<simd-complex V> constexpr V tan(const V& v);
template<simd-complex V> constexpr V atan(const V& v);
template<simd-complex V> constexpr V sinh(const V& v);
template<simd-complex V> constexpr V asinh(const V& v);
template<simd-complex V> constexpr V cosh(const V& v);
template<simd-complex V> constexpr V acosh(const V& v);
template<simd-complex V> constexpr V tanh(const V& v);
template<simd-complex V> constexpr V atanh(const V& v);
template<simd-floating-point V>
rebind_t<complex<typename V::value_type>, V> polar(const V& x, const V& y = {});
template<simd-complex V> constexpr V pow(const V& x, const V& y);