diff options
Diffstat (limited to 'contrib/libg++/libstdc++/std/complext.h')
-rw-r--r-- | contrib/libg++/libstdc++/std/complext.h | 317 |
1 files changed, 0 insertions, 317 deletions
diff --git a/contrib/libg++/libstdc++/std/complext.h b/contrib/libg++/libstdc++/std/complext.h deleted file mode 100644 index db87dd0..0000000 --- a/contrib/libg++/libstdc++/std/complext.h +++ /dev/null @@ -1,317 +0,0 @@ -// The template and inlines for the -*- C++ -*- complex number classes. -// Copyright (C) 1994 Free Software Foundation - -// This file is part of the GNU ANSI C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms of -// the GNU General Public License as published by the Free Software -// Foundation; either version 2, or (at your option) any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -// As a special exception, if you link this library with files compiled -// with a GNU compiler to produce an executable, this does not cause the -// resulting executable to be covered by the GNU General Public License. -// This exception does not however invalidate any other reasons why the -// executable file might be covered by the GNU General Public License. - -// Written by Jason Merrill based upon the specification in the 27 May 1994 -// C++ working paper, ANSI document X3J16/94-0098. - -#ifndef __COMPLEXT__ -#define __COMPLEXT__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include <std/cmath.h> - -#if ! defined (__GNUG__) && ! defined (__attribute__) -#define __attribute__ (foo) /* Ignore. */ -#endif - -extern "C++" { -template <class FLOAT> -class complex -{ -public: - complex (FLOAT r = 0, FLOAT i = 0): re (r), im (i) { } - complex& operator += (const complex&); - complex& operator -= (const complex&); - complex& operator *= (const complex&); - complex& operator /= (const complex&); - FLOAT real () const { return re; } - FLOAT imag () const { return im; } -private: - FLOAT re, im; - - // These functions are specified as friends for purposes of name injection; - // they do not actually reference private members. - friend FLOAT real (const complex&) __attribute__ ((const)); - friend FLOAT imag (const complex&) __attribute__ ((const)); - friend complex operator + (const complex&, const complex&) __attribute__ ((const)); - friend complex operator + (const complex&, FLOAT) __attribute__ ((const)); - friend complex operator + (FLOAT, const complex&) __attribute__ ((const)); - friend complex operator - (const complex&, const complex&) __attribute__ ((const)); - friend complex operator - (const complex&, FLOAT) __attribute__ ((const)); - friend complex operator - (FLOAT, const complex&) __attribute__ ((const)); - friend complex operator * (const complex&, const complex&) __attribute__ ((const)); - friend complex operator * (const complex&, FLOAT) __attribute__ ((const)); - friend complex operator * (FLOAT, const complex&) __attribute__ ((const)); - friend complex operator / (const complex&, const complex&) __attribute__ ((const)); - friend complex operator / (const complex&, FLOAT) __attribute__ ((const)); - friend complex operator / (FLOAT, const complex&) __attribute__ ((const)); - friend bool operator == (const complex&, const complex&) __attribute__ ((const)); - friend bool operator == (const complex&, FLOAT) __attribute__ ((const)); - friend bool operator == (FLOAT, const complex&) __attribute__ ((const)); - friend bool operator != (const complex&, const complex&) __attribute__ ((const)); - friend bool operator != (const complex&, FLOAT) __attribute__ ((const)); - friend bool operator != (FLOAT, const complex&) __attribute__ ((const)); - friend complex polar (FLOAT, FLOAT) __attribute__ ((const)); - friend complex pow (const complex&, const complex&) __attribute__ ((const)); - friend complex pow (const complex&, FLOAT) __attribute__ ((const)); - friend complex pow (const complex&, int) __attribute__ ((const)); - friend complex pow (FLOAT, const complex&) __attribute__ ((const)); - friend istream& operator>> (istream&, complex&); - friend ostream& operator<< (ostream&, const complex&); -}; - -// Declare specializations. -class complex<float>; -class complex<double>; -class complex<long double>; - -template <class FLOAT> -inline complex<FLOAT>& -complex<FLOAT>::operator += (const complex<FLOAT>& r) -{ - re += r.re; - im += r.im; - return *this; -} - -template <class FLOAT> -inline complex<FLOAT>& -complex<FLOAT>::operator -= (const complex<FLOAT>& r) -{ - re -= r.re; - im -= r.im; - return *this; -} - -template <class FLOAT> -inline complex<FLOAT>& -complex<FLOAT>::operator *= (const complex<FLOAT>& r) -{ - FLOAT f = re * r.re - im * r.im; - im = re * r.im + im * r.re; - re = f; - return *this; -} - -template <class FLOAT> inline FLOAT -imag (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return x.imag (); -} - -template <class FLOAT> inline FLOAT -real (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return x.real (); -} - -template <class FLOAT> inline complex<FLOAT> -operator + (const complex<FLOAT>& x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x) + real (y), imag (x) + imag (y)); -} - -template <class FLOAT> inline complex<FLOAT> -operator + (const complex<FLOAT>& x, FLOAT y) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x) + y, imag (x)); -} - -template <class FLOAT> inline complex<FLOAT> -operator + (FLOAT x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return complex<FLOAT> (x + real (y), imag (y)); -} - -template <class FLOAT> inline complex<FLOAT> -operator - (const complex<FLOAT>& x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x) - real (y), imag (x) - imag (y)); -} - -template <class FLOAT> inline complex<FLOAT> -operator - (const complex<FLOAT>& x, FLOAT y) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x) - y, imag (x)); -} - -template <class FLOAT> inline complex<FLOAT> -operator - (FLOAT x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return complex<FLOAT> (x - real (y), - imag (y)); -} - -template <class FLOAT> inline complex<FLOAT> -operator * (const complex<FLOAT>& x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x) * real (y) - imag (x) * imag (y), - real (x) * imag (y) + imag (x) * real (y)); -} - -template <class FLOAT> inline complex<FLOAT> -operator * (const complex<FLOAT>& x, FLOAT y) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x) * y, imag (x) * y); -} - -template <class FLOAT> inline complex<FLOAT> -operator * (FLOAT x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return complex<FLOAT> (x * real (y), x * imag (y)); -} - -template <class FLOAT> complex<FLOAT> -operator / (const complex<FLOAT>& x, FLOAT y) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x) / y, imag (x) / y); -} - -template <class FLOAT> inline complex<FLOAT> -operator + (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return x; -} - -template <class FLOAT> inline complex<FLOAT> -operator - (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return complex<FLOAT> (-real (x), -imag (x)); -} - -template <class FLOAT> inline bool -operator == (const complex<FLOAT>& x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return real (x) == real (y) && imag (x) == imag (y); -} - -template <class FLOAT> inline bool -operator == (const complex<FLOAT>& x, FLOAT y) __attribute__ ((const)) -{ - return real (x) == y && imag (x) == 0; -} - -template <class FLOAT> inline bool -operator == (FLOAT x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return x == real (y) && imag (y) == 0; -} - -template <class FLOAT> inline bool -operator != (const complex<FLOAT>& x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return real (x) != real (y) || imag (x) != imag (y); -} - -template <class FLOAT> inline bool -operator != (const complex<FLOAT>& x, FLOAT y) __attribute__ ((const)) -{ - return real (x) != y || imag (x) != 0; -} - -template <class FLOAT> inline bool -operator != (FLOAT x, const complex<FLOAT>& y) __attribute__ ((const)) -{ - return x != real (y) || imag (y) != 0; -} - -// Some targets don't provide a prototype for hypot when -ansi. -extern "C" double hypot (double, double) __attribute__ ((const)); - -template <class FLOAT> inline FLOAT -abs (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return hypot (real (x), imag (x)); -} - -template <class FLOAT> inline FLOAT -arg (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return atan2 (imag (x), real (x)); -} - -template <class FLOAT> inline complex<FLOAT> -polar (FLOAT r, FLOAT t) __attribute__ ((const)) -{ - return complex<FLOAT> (r * cos (t), r * sin (t)); -} - -template <class FLOAT> inline complex<FLOAT> -conj (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return complex<FLOAT> (real (x), -imag (x)); -} - -template <class FLOAT> inline FLOAT -norm (const complex<FLOAT>& x) __attribute__ ((const)) -{ - return real (x) * real (x) + imag (x) * imag (x); -} - -// Declarations of templates in complext.ccI - -template <class FLOAT> complex<FLOAT> - operator / (const complex<FLOAT>&, const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - operator / (FLOAT, const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - cos (const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - cosh (const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - exp (const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - log (const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - pow (const complex<FLOAT>&, const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - pow (const complex<FLOAT>&, FLOAT) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - pow (const complex<FLOAT>&, int) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - pow (FLOAT, const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - sin (const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - sinh (const complex<FLOAT>&) __attribute__ ((const)); -template <class FLOAT> complex<FLOAT> - sqrt (const complex<FLOAT>&) __attribute__ ((const)); - -class istream; -class ostream; -template <class FLOAT> istream& operator >> (istream&, complex<FLOAT>&); -template <class FLOAT> ostream& operator << (ostream&, const complex<FLOAT>&); -} // extern "C++" - -// Specializations and such - -#include <std/fcomplex.h> -#include <std/dcomplex.h> -#include <std/ldcomplex.h> - -// Declare the instantiations. -#include <std/cinst.h> - -#endif |