177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* 277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc. 477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev 777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed 977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk. 1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted 1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies. 1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted, 1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was 1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice. 1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_COMPLEX 1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_INTERNAL_COMPLEX 2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// This header declares the template class complex, as described in 2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// in the draft C++ standard. Single-precision complex numbers 2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// are complex<float>, double-precision are complex<double>, and 2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// quad precision are complex<long double>. 2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Note that the template class complex is declared within namespace 2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// std, as called for by the draft C++ standard. 2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_CMATH 3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_cmath.h> 3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstruct complex { 3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _Tp value_type; 3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef complex<_Tp> _Self; 3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Constructors, destructor, assignment operator. 4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex() : _M_re(0), _M_im(0) {} 4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(const value_type& __x) 4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__x), _M_im(0) {} 4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(const value_type& __x, const value_type& __y) 4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__x), _M_im(__y) {} 4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(const _Self& __z) 4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__z._M_re), _M_im(__z._M_im) {} 4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const _Self& __z) { 5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit complex(const complex<_Tp2>& __z) 5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__z._M_re), _M_im(__z._M_im) {} 5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const complex<_Tp2>& __z) { 6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_MEMBER_TEMPLATES */ 6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Element access. 6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type real() const { return _M_re; } 7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type imag() const { return _M_im; } 7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving one real argument. 7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator= (const value_type& __x) { 7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __x; 7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = 0; 7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (const value_type& __x) { 8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __x; 8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (const value_type& __x) { 8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __x; 8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (const value_type& __x) { 8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re *= __x; 8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im *= __x; 9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (const value_type& __x) { 9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re /= __x; 9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im /= __x; 9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving two complex arguments. 9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const value_type& __z1_r, const value_type& __z1_i, 10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const value_type& __z2_r, const value_type& __z2_i, 10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type& __res_r, value_type& __res_i); 10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const value_type& __z1_r, 10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const value_type& __z2_r, const value_type& __z2_i, 10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type& __res_r, value_type& __res_i); 10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) // && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> _Self& operator+= (const complex<_Tp2>& __z) { 11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> _Self& operator-= (const complex<_Tp2>& __z) { 11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> _Self& operator*= (const complex<_Tp2>& __z) { 12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; 12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; 12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> _Self& operator/= (const complex<_Tp2>& __z) { 13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r; 13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i; 13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_MEMBER_TEMPLATES */ 13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (const _Self& __z) { 14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (const _Self& __z) { 14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (const _Self& __z) { 15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; 15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; 15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (const _Self& __z) { 16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r; 16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i; 16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Data members. 17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_re; 17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_im; 17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Explicit specializations for float, double, long double. The only 17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// reason for these specializations is to enable automatic conversions 17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// from complex<float> to complex<double>, and complex<double> to 17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// complex<long double>. 17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstruct _STLP_CLASS_DECLSPEC complex<float> { 18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef float value_type; 18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef complex<float> _Self; 18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Constructors, destructor, assignment operator. 18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(value_type __x = 0.0f, value_type __y = 0.0f) 18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__x), _M_im(__y) {} 18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(const complex<float>& __z) : _M_re(__z._M_re), _M_im(__z._M_im) {} 18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner inline explicit complex(const complex<double>& __z); 19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_NO_LONG_DOUBLE 19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner inline explicit complex(const complex<long double>& __z); 19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Element access. 19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type real() const { return _M_re; } 19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type imag() const { return _M_im; } 19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving one real argument. 19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator= (value_type __x) { 20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __x; 20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = 0.0f; 20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (value_type __x) { 20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __x; 20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (value_type __x) { 21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __x; 21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (value_type __x) { 21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re *= __x; 21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im *= __x; 21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (value_type __x) { 21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re /= __x; 22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im /= __x; 22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving two complex arguments. 22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const float& __z1_r, const float& __z1_i, 22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const float& __z2_r, const float& __z2_i, 22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner float& __res_r, float& __res_i); 22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const float& __z1_r, 23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const float& __z2_r, const float& __z2_i, 23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner float& __res_r, float& __res_i); 23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) 23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<float>& operator=(const complex<_Tp2>& __z) { 23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<float>& operator+= (const complex<_Tp2>& __z) { 24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<float>& operator-= (const complex<_Tp2>& __z) { 25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<float>& operator*= (const complex<_Tp2>& __z) { 25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner float __r = _M_re * __z._M_re - _M_im * __z._M_im; 25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner float __i = _M_re * __z._M_im + _M_im * __z._M_re; 26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<float>& operator/= (const complex<_Tp2>& __z) { 26777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner float __r; 26877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner float __i; 26977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 27077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 27177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 27277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 27377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 27477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_MEMBER_TEMPLATES */ 27677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const _Self& __z) { 27877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 27977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 28077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 28177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 28277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (const _Self& __z) { 28477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 28577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 28677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 28777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 28877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (const _Self& __z) { 29077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 29177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 29277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 29377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 29477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (const _Self& __z) { 29677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; 29777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; 29877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 29977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 30077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 30177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 30277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 30377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (const _Self& __z) { 30477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r; 30577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i; 30677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 30777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 30877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 30977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 31077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 31177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Data members. 31377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_re; 31477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_im; 31577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 31677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 31877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstruct _STLP_CLASS_DECLSPEC complex<double> { 31977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef double value_type; 32077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef complex<double> _Self; 32177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Constructors, destructor, assignment operator. 32377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(value_type __x = 0.0, value_type __y = 0.0) 32577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__x), _M_im(__y) {} 32677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(const complex<double>& __z) 32877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__z._M_re), _M_im(__z._M_im) {} 32977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner inline complex(const complex<float>& __z); 33077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_LONG_DOUBLE) 33177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit inline complex(const complex<long double>& __z); 33277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 33377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Element access. 33477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type real() const { return _M_re; } 33577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type imag() const { return _M_im; } 33677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving one real argument. 33877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator= (value_type __x) { 34077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __x; 34177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = 0.0; 34277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 34377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 34477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (value_type __x) { 34577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __x; 34677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 34777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 34877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (value_type __x) { 34977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __x; 35077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 35177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 35277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (value_type __x) { 35377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re *= __x; 35477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im *= __x; 35577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 35677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 35777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (value_type __x) { 35877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re /= __x; 35977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im /= __x; 36077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 36177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 36277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving two complex arguments. 36477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const double& __z1_r, const double& __z1_i, 36677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const double& __z2_r, const double& __z2_i, 36777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner double& __res_r, double& __res_i); 36877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const double& __z1_r, 36977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const double& __z2_r, const double& __z2_i, 37077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner double& __res_r, double& __res_i); 37177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 37277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 37377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 37477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<double>& operator=(const complex<_Tp2>& __z) { 37577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 37677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 37777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 37877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 37977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 38077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 38177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<double>& operator+= (const complex<_Tp2>& __z) { 38277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 38377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 38477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 38577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 38677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 38777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 38877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<double>& operator-= (const complex<_Tp2>& __z) { 38977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 39077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 39177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 39277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 39377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 39477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 39577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<double>& operator*= (const complex<_Tp2>& __z) { 39677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner double __r = _M_re * __z._M_re - _M_im * __z._M_im; 39777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner double __i = _M_re * __z._M_im + _M_im * __z._M_re; 39877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 39977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 40077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 40177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 40277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 40477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<double>& operator/= (const complex<_Tp2>& __z) { 40577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner double __r; 40677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner double __i; 40777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 40877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 40977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 41077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 41177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 41277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_MEMBER_TEMPLATES */ 41477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const _Self& __z) { 41677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 41777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 41877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 41977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 42077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 42177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (const _Self& __z) { 42277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 42377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 42477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 42577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 42677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 42777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (const _Self& __z) { 42877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 42977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 43077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 43177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 43277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 43377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (const _Self& __z) { 43477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; 43577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; 43677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 43777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 43877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 43977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 44077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 44177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (const _Self& __z) { 44277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r; 44377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i; 44477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 44577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 44677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 44777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 44877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 44977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 45077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Data members. 45177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_re; 45277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_im; 45377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 45477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 45577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_LONG_DOUBLE) 45677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 45777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 45877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstruct _STLP_CLASS_DECLSPEC complex<long double> { 45977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef long double value_type; 46077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef complex<long double> _Self; 46177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 46277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Constructors, destructor, assignment operator. 46377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(value_type __x = 0.0l, value_type __y = 0.0l) 46477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__x), _M_im(__y) {} 46577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 46677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex(const complex<long double>& __z) 46777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__z._M_re), _M_im(__z._M_im) {} 46877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner inline complex(const complex<float>& __z); 46977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner inline complex(const complex<double>& __z); 47077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Element access. 47277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type real() const { return _M_re; } 47377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type imag() const { return _M_im; } 47477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving one real argument. 47677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator= (value_type __x) { 47877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __x; 47977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = 0.0l; 48077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 48177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 48277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (value_type __x) { 48377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __x; 48477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 48577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 48677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (value_type __x) { 48777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __x; 48877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 48977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 49077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (value_type __x) { 49177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re *= __x; 49277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im *= __x; 49377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 49477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 49577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (value_type __x) { 49677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re /= __x; 49777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im /= __x; 49877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 49977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 50077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 50177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Arithmetic op= operations involving two complex arguments. 50277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 50377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const long double& __z1_r, const long double& __z1_i, 50477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const long double& __z2_r, const long double& __z2_i, 50577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner long double& __res_r, long double& __res_i); 50677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 50777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static void _STLP_CALL _div(const long double& __z1_r, 50877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const long double& __z2_r, const long double& __z2_i, 50977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner long double& __res_r, long double& __res_i); 51077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 51277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 51477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<long double>& operator=(const complex<_Tp2>& __z) { 51577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 51677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 51777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 51877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 51977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 52077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 52177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<long double>& operator+= (const complex<_Tp2>& __z) { 52277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 52377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 52477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 52577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 52677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 52777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 52877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<long double>& operator-= (const complex<_Tp2>& __z) { 52977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 53077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 53177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 53277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 53377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 53477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 53577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<long double>& operator*= (const complex<_Tp2>& __z) { 53677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner long double __r = _M_re * __z._M_re - _M_im * __z._M_im; 53777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner long double __i = _M_re * __z._M_im + _M_im * __z._M_re; 53877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 53977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 54077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 54177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 54277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 54377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _Tp2> 54477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<long double>& operator/= (const complex<_Tp2>& __z) { 54577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner long double __r; 54677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner long double __i; 54777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 54877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 54977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 55077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 55177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 55277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 55377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif /* _STLP_MEMBER_TEMPLATES */ 55477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 55577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const _Self& __z) { 55677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __z._M_re; 55777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __z._M_im; 55877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 55977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 56077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 56177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+= (const _Self& __z) { 56277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re += __z._M_re; 56377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im += __z._M_im; 56477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 56577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 56677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 56777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator-= (const _Self& __z) { 56877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re -= __z._M_re; 56977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im -= __z._M_im; 57077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 57177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 57277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 57377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator*= (const _Self& __z) { 57477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; 57577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; 57677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 57777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 57877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 57977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 58077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator/= (const _Self& __z) { 58277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __r; 58377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type __i; 58477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); 58577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_re = __r; 58677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_im = __i; 58777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 58877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 58977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Data members. 59177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_re; 59277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner value_type _M_im; 59377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 59477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_NO_LONG_DOUBLE */ 59677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Converting constructors from one of these three specialized types 59877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// to another. 59977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<float>::complex(const complex<double>& __z) 60177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re((float)__z._M_re), _M_im((float)__z._M_im) {} 60277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<double>::complex(const complex<float>& __z) 60377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__z._M_re), _M_im(__z._M_im) {} 60477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_NO_LONG_DOUBLE 60577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<float>::complex(const complex<long double>& __z) 60677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re((float)__z._M_re), _M_im((float)__z._M_im) {} 60777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<double>::complex(const complex<long double>& __z) 60877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re((double)__z._M_re), _M_im((double)__z._M_im) {} 60977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<long double>::complex(const complex<float>& __z) 61077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__z._M_re), _M_im(__z._M_im) {} 61177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<long double>::complex(const complex<double>& __z) 61277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_re(__z._M_re), _M_im(__z._M_im) {} 61377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 61477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 61577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Unary non-member arithmetic operators. 61677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 61777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 61877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z) 61977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z; } 62077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 62177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 62277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator-(const complex<_Tp>& __z) 62377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(-__z._M_re, -__z._M_im); } 62477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 62577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Non-member arithmetic operations involving one real argument. 62677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 62777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 62877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator+(const _Tp& __x, const complex<_Tp>& __z) 62977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__x + __z._M_re, __z._M_im); } 63077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 63277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z, const _Tp& __x) 63377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__z._M_re + __x, __z._M_im); } 63477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 63677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator-(const _Tp& __x, const complex<_Tp>& __z) 63777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__x - __z._M_re, -__z._M_im); } 63877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 64077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator-(const complex<_Tp>& __z, const _Tp& __x) 64177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__z._M_re - __x, __z._M_im); } 64277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 64377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 64477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator*(const _Tp& __x, const complex<_Tp>& __z) 64577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__x * __z._M_re, __x * __z._M_im); } 64677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 64777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 64877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator*(const complex<_Tp>& __z, const _Tp& __x) 64977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__z._M_re * __x, __z._M_im * __x); } 65077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 65177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 65277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator/(const _Tp& __x, const complex<_Tp>& __z) { 65377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<_Tp> __result; 65477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<_Tp>::_div(__x, 65577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __z._M_re, __z._M_im, 65677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __result._M_re, __result._M_im); 65777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 65877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 65977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 66177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL operator/(const complex<_Tp>& __z, const _Tp& __x) 66277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__z._M_re / __x, __z._M_im / __x); } 66377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Non-member arithmetic operations involving two complex arguments 66577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 66777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL 66877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator+(const complex<_Tp>& __z1, const complex<_Tp>& __z2) 66977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__z1._M_re + __z2._M_re, __z1._M_im + __z2._M_im); } 67077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 67277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL 67377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator-(const complex<_Tp>& __z1, const complex<_Tp>& __z2) 67477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__z1._M_re - __z2._M_re, __z1._M_im - __z2._M_im); } 67577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 67777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL 67877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator*(const complex<_Tp>& __z1, const complex<_Tp>& __z2) { 67977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return complex<_Tp>(__z1._M_re * __z2._M_re - __z1._M_im * __z2._M_im, 68077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __z1._M_re * __z2._M_im + __z1._M_im * __z2._M_re); 68177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 68277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 68477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL 68577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator/(const complex<_Tp>& __z1, const complex<_Tp>& __z2) { 68677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<_Tp> __result; 68777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<_Tp>::_div(__z1._M_re, __z1._M_im, 68877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __z2._M_re, __z2._M_im, 68977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __result._M_re, __result._M_im); 69077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 69177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 69277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Comparison operators. 69477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 69677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL operator==(const complex<_Tp>& __z1, const complex<_Tp>& __z2) 69777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z1._M_re == __z2._M_re && __z1._M_im == __z2._M_im; } 69877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 70077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL operator==(const complex<_Tp>& __z, const _Tp& __x) 70177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z._M_re == __x && __z._M_im == 0; } 70277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 70377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 70477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL operator==(const _Tp& __x, const complex<_Tp>& __z) 70577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __x == __z._M_re && 0 == __z._M_im; } 70677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 70777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//04/27/04 dums: removal of this check, if it is restablish 70877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//please explain why the other operators are not macro guarded 70977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER 71077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 71277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL operator!=(const complex<_Tp>& __z1, const complex<_Tp>& __z2) 71377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z1._M_re != __z2._M_re || __z1._M_im != __z2._M_im; } 71477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */ 71677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 71877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL operator!=(const complex<_Tp>& __z, const _Tp& __x) 71977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z._M_re != __x || __z._M_im != 0; } 72077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 72177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 72277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL operator!=(const _Tp& __x, const complex<_Tp>& __z) 72377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __x != __z._M_re || 0 != __z._M_im; } 72477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 72577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Other basic arithmetic operations 72677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 72777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Tp _STLP_CALL real(const complex<_Tp>& __z) 72877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z._M_re; } 72977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 73077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 73177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Tp _STLP_CALL imag(const complex<_Tp>& __z) 73277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z._M_im; } 73377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 73477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 73577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_Tp _STLP_CALL abs(const complex<_Tp>& __z); 73677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 73777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 73877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_Tp _STLP_CALL arg(const complex<_Tp>& __z); 73977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 74077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 74177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Tp _STLP_CALL norm(const complex<_Tp>& __z) 74277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __z._M_re * __z._M_re + __z._M_im * __z._M_im; } 74377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 74477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 74577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline complex<_Tp> _STLP_CALL conj(const complex<_Tp>& __z) 74677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__z._M_re, -__z._M_im); } 74777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 74877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 74977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercomplex<_Tp> _STLP_CALL polar(const _Tp& __rho) 75077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return complex<_Tp>(__rho, 0); } 75177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 75277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 75377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercomplex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi); 75477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 75577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 75677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC float _STLP_CALL abs(const complex<float>&); 75777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 75877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC double _STLP_CALL abs(const complex<double>&); 75977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 76077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC float _STLP_CALL arg(const complex<float>&); 76177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 76277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC double _STLP_CALL arg(const complex<double>&); 76377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 76477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL polar(const float& __rho, const float& __phi); 76577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 76677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL polar(const double& __rho, const double& __phi); 76777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 76877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 76977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_Tp _STLP_CALL abs(const complex<_Tp>& __z) 77077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return _Tp(abs(complex<double>(double(__z.real()), double(__z.imag())))); } 77177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 77277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 77377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_Tp _STLP_CALL arg(const complex<_Tp>& __z) 77477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return _Tp(arg(complex<double>(double(__z.real()), double(__z.imag())))); } 77577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 77677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 77777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercomplex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi) { 77877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner complex<double> __tmp = polar(double(__rho), double(__phi)); 77977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return complex<_Tp>(_Tp(__tmp.real()), _Tp(__tmp.imag())); 78077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 78177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 78277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_LONG_DOUBLE) 78377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 78477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC long double _STLP_CALL arg(const complex<long double>&); 78577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 78677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC long double _STLP_CALL abs(const complex<long double>&); 78777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 78877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL polar(const long double&, const long double&); 78977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 79077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 79177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 79277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_USE_NO_IOSTREAMS) 79377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 79477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 79577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 79677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# ifndef _STLP_INTERNAL_IOSFWD 79777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_iosfwd.h> 79877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 79977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 80077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 80177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 80277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Complex output, in the form (re,im). We use a two-step process 80377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// involving stringstream so that we get the padding right. 80477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _CharT, class _Traits> 80577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbasic_ostream<_CharT, _Traits>& _STLP_CALL 80677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __z); 80777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 80877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _CharT, class _Traits> 80977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbasic_istream<_CharT, _Traits>& _STLP_CALL 81077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __z); 81177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 81277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Specializations for narrow characters; lets us avoid widen. 81377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 81477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_OPERATOR_TEMPLATE 81577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 81677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator>>(basic_istream<char, char_traits<char> >& __is, complex<float>& __z); 81777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 81877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_OPERATOR_TEMPLATE 81977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 82077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator>>(basic_istream<char, char_traits<char> >& __is, complex<double>& __z); 82177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 82277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_OPERATOR_TEMPLATE 82377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 82477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator<<(basic_ostream<char, char_traits<char> >& __is, const complex<float>& __z); 82577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 82677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_OPERATOR_TEMPLATE 82777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 82877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator<<(basic_ostream<char, char_traits<char> >& __is, const complex<double>& __z); 82977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 83077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (_STLP_NO_LONG_DOUBLE) 83177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_OPERATOR_TEMPLATE 83277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 83377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator>>(basic_istream<char, char_traits<char> >& __is, complex<long double>& __z); 83477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 83577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_OPERATOR_TEMPLATE 83677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 83777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator<<(basic_ostream<char, char_traits<char> >& __is, const complex<long double>& __z); 83877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 83977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 84077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 84177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_USE_TEMPLATE_EXPORT) && ! defined (_STLP_NO_WCHAR_T) 84277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 84377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 84477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<double>&); 84577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 84677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<double>&); 84777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 84877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<float>&); 84977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 85077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<float>&); 85177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 85277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (_STLP_NO_LONG_DOUBLE) 85377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 85477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<long double>&); 85577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 85677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<long double>&); 85777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 85877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 85977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 86077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 86177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 86277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Transcendental functions. These are defined only for float, 86377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// double, and long double. (Sqrt isn't transcendental, of course, 86477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// but it's included in this section anyway.) 86577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 86677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL sqrt(const complex<float>&); 86777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 86877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL exp(const complex<float>&); 86977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL log(const complex<float>&); 87077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL log10(const complex<float>&); 87177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 87277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, int); 87377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, const float&); 87477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL pow(const float&, const complex<float>&); 87577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, const complex<float>&); 87677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 87777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL sin(const complex<float>&); 87877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL cos(const complex<float>&); 87977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL tan(const complex<float>&); 88077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 88177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL sinh(const complex<float>&); 88277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL cosh(const complex<float>&); 88377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<float> _STLP_CALL tanh(const complex<float>&); 88477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 88577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL sqrt(const complex<double>&); 88677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 88777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL exp(const complex<double>&); 88877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL log(const complex<double>&); 88977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL log10(const complex<double>&); 89077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 89177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, int); 89277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, const double&); 89377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL pow(const double&, const complex<double>&); 89477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, const complex<double>&); 89577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 89677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL sin(const complex<double>&); 89777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL cos(const complex<double>&); 89877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL tan(const complex<double>&); 89977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 90077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL sinh(const complex<double>&); 90177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL cosh(const complex<double>&); 90277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<double> _STLP_CALL tanh(const complex<double>&); 90377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 90477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_LONG_DOUBLE) 90577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL sqrt(const complex<long double>&); 90677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL exp(const complex<long double>&); 90777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL log(const complex<long double>&); 90877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL log10(const complex<long double>&); 90977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 91077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&, int); 91177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&, const long double&); 91277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const long double&, const complex<long double>&); 91377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&, 91477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const complex<long double>&); 91577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 91677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL sin(const complex<long double>&); 91777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL cos(const complex<long double>&); 91877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL tan(const complex<long double>&); 91977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 92077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL sinh(const complex<long double>&); 92177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL cosh(const complex<long double>&); 92277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_DECLSPEC complex<long double> _STLP_CALL tanh(const complex<long double>&); 92377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 92477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 92577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 92677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 92777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_LINK_TIME_INSTANTIATION 92877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_complex.c> 92977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 93077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 93177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 93277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 93377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables: 93477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++ 93577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End: 936