static const union { unsigned int i; float f; } float_ulimit = { 0x42b2d4fc }; static const float float_limit = float_ulimit.f; static union { struct { unsigned int h; unsigned int l; } w; double d; } double_ulimit = { 0x408633ce, 0x8fb9f87d }; static const double double_limit = double_ulimit.d; static union { struct { unsigned int h[2]; unsigned int l[2]; } w; long double ld; } ldouble_ulimit = {0x408633ce, 0x8fb9f87e, 0xbd23b659, 0x4e9bd8b1}; # ifndef _STLP_NO_LONG_DOUBLE static const long double ldouble_limit = ldouble_ulimit.ld; # endif #else static const float float_limit = _STLP_LOGF(FLT_MAX); static const double double_limit = _STLP_DO_LOG(double)(DBL_MAX); # ifndef _STLP_NO_LONG_DOUBLE static const long double ldouble_limit = _STLP_LOGL(LDBL_MAX); # endif #endif //---------------------------------------------------------------------- // sin _STLP_DECLSPEC complex<float> _STLP_CALL sin(const complex<float>& z) { return complex<float>(_STLP_SINF(z._M_re) * _STLP_COSHF(z._M_im), _STLP_COSF(z._M_re) * _STLP_SINHF(z._M_im)); }
void complex_trig_limit_init() { get_complex_trig_float_limit() = _STLP_LOGF(FLT_MAX); get_complex_trig_double_limit() = _STLP_DO_LOG(double)(DBL_MAX); }