std_complex.h: Tweaks, include cmath for abs overloads.
2000-11-20 Benjamin Kosnik <bkoz@redhat.com> * include/bits/std_complex.h: Tweaks, include cmath for abs overloads. * src/complex.cc: Remove cmath include, formatting tweaks, remove dead code. * include/c/bits/std_cmath.h: Formatting tweaks. * testsuite/26_numerics/complex_value.cc: New file, for catching bits gleaned from libstdc++/106. * testsuite/23_containers/vector_ctor.cc (test02): Add test from libstdc++/102. From-SVN: r37591
This commit is contained in:
parent
250333d0e0
commit
5e90dd7193
|
@ -1,3 +1,17 @@
|
||||||
|
2000-11-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
* include/bits/std_complex.h: Tweaks, include cmath for abs overloads.
|
||||||
|
* src/complex.cc: Remove cmath include, formatting tweaks, remove
|
||||||
|
dead code.
|
||||||
|
* include/c/bits/std_cmath.h: Formatting tweaks.
|
||||||
|
* testsuite/26_numerics/complex_value.cc: New file, for catching
|
||||||
|
bits gleaned from libstdc++/106.
|
||||||
|
|
||||||
|
* testsuite/23_containers/vector_ctor.cc (test02): Add test from
|
||||||
|
libstdc++/102.
|
||||||
|
|
||||||
|
* src/string-inst.cc: Tweaks.
|
||||||
|
|
||||||
2000-11-20 Joseph S. Myers <jsm28@cam.ac.uk>
|
2000-11-20 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||||
|
|
||||||
* include/bits/c++config, include/bits/ios_base.h,
|
* include/bits/c++config, include/bits/ios_base.h,
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -296,7 +296,7 @@ namespace std
|
||||||
abs(double __x) { return __builtin_fabs(__x); }
|
abs(double __x) { return __builtin_fabs(__x); }
|
||||||
#else
|
#else
|
||||||
inline double
|
inline double
|
||||||
abs(double __x) { return fabs (__x); }
|
abs(double __x) { return fabs(__x); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern "C" double floor(double __x);
|
extern "C" double floor(double __x);
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
// invalidate any other reasons why the executable file might be covered by
|
// invalidate any other reasons why the executable file might be covered by
|
||||||
// the GNU General Public License.
|
// the GNU General Public License.
|
||||||
|
|
||||||
#include <bits/std_cmath.h>
|
|
||||||
#include <bits/std_complex.h>
|
#include <bits/std_complex.h>
|
||||||
|
|
||||||
// This is a ISO C 9X header.
|
// This is a ISO C 9X header.
|
||||||
|
@ -45,62 +44,6 @@
|
||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
// template<>
|
|
||||||
// FLT
|
|
||||||
// abs(const complex<FLT>& __x)
|
|
||||||
// {
|
|
||||||
// // We don't use cabs here because some systems (IRIX 6.5, for
|
|
||||||
// // example) define their own incompatible version.
|
|
||||||
// return hypot (__real__ __x._M_value, __imag__ __x._M_value);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// FLT
|
|
||||||
// arg(const complex<FLT>& __x)
|
|
||||||
// { return carg(__x._M_value); }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// polar(const FLT& __rho, const FLT& __theta)
|
|
||||||
// {
|
|
||||||
// #if 0
|
|
||||||
// // XXX
|
|
||||||
// // defined(_GLIBCPP_HAVE_SINCOS) && !defined(__osf__)
|
|
||||||
// // Although sincos does exist on OSF3.2 and OSF4.0 we cannot use it
|
|
||||||
// // since the necessary types are not defined in the headers.
|
|
||||||
// FLT __sinx, __cosx;
|
|
||||||
// sincos(__theta, &__sinx, &__cosx);
|
|
||||||
// return complex<FLT>(__rho * __cosx, __rho * __sinx);
|
|
||||||
// #else
|
|
||||||
// return complex<FLT>(__rho * cos(__theta), __rho * sin(__theta));
|
|
||||||
// #endif
|
|
||||||
// }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// cos(const complex<FLT>& __x)
|
|
||||||
// { return complex<FLT>(ccos(__x._M_value)); }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// cosh(const complex<FLT>& __x)
|
|
||||||
// { return complex<FLT>(ccosh(__x._M_value)); }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// exp(const complex<FLT>& __x)
|
|
||||||
// { return complex<FLT>(cexp(__x._M_value)); }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// log(const complex<FLT>& __x)
|
|
||||||
// { return complex<FLT>(c_log(__x._M_value)); }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// log10(const complex<FLT>& __x)
|
|
||||||
// { return complex<FLT>(clog10(__x._M_value)); }
|
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
complex<FLT>
|
complex<FLT>
|
||||||
pow(const complex<FLT>& __x, int __n)
|
pow(const complex<FLT>& __x, int __n)
|
||||||
|
@ -121,16 +64,6 @@ namespace std
|
||||||
pow(const FLT& __x, const complex<FLT>& __y)
|
pow(const FLT& __x, const complex<FLT>& __y)
|
||||||
{ return complex<FLT>(cexp(__y._M_value * log(__x))); }
|
{ return complex<FLT>(cexp(__y._M_value * log(__x))); }
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// sin(const complex<FLT>& __x)
|
|
||||||
// { return complex<FLT>(csin(__x._M_value)); }
|
|
||||||
|
|
||||||
// template<>
|
|
||||||
// complex<FLT>
|
|
||||||
// sinh(const complex<FLT>& __x)
|
|
||||||
// { return complex<FLT>(csinh(__x._M_value)); }
|
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
complex<FLT>
|
complex<FLT>
|
||||||
sqrt(const complex<FLT>& __x)
|
sqrt(const complex<FLT>& __x)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// 1999-06-29
|
// 1999-06-29
|
||||||
// bkoz
|
// bkoz
|
||||||
|
|
||||||
// Copyright (C) 1999 Free Software Foundation, Inc.
|
// Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
// software; you can redistribute it and/or modify it under the
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
@ -29,7 +29,7 @@ template<typename T>
|
||||||
|
|
||||||
struct B { };
|
struct B { };
|
||||||
|
|
||||||
bool test01()
|
void test01()
|
||||||
{
|
{
|
||||||
|
|
||||||
// 1
|
// 1
|
||||||
|
@ -43,18 +43,25 @@ bool test01()
|
||||||
#ifdef DEBUG_ASSERT
|
#ifdef DEBUG_ASSERT
|
||||||
assert(test);
|
assert(test);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return test;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2
|
// 2
|
||||||
template class std::vector<double>;
|
template class std::vector<double>;
|
||||||
template class std::vector< A<B> >;
|
template class std::vector< A<B> >;
|
||||||
|
|
||||||
|
|
||||||
|
// libstdc++/102
|
||||||
|
void test02
|
||||||
|
{
|
||||||
|
std::vector<int> v1;
|
||||||
|
std::vector<int> v2 (v1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
test01();
|
test01();
|
||||||
|
test02();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
// 2000-11-20
|
||||||
|
// Benjamin Kosnik bkoz@redhat.com
|
||||||
|
|
||||||
|
// Copyright (C) 2000 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO 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.
|
||||||
|
|
||||||
|
#include <complex>
|
||||||
|
#include <debug_assert.h>
|
||||||
|
|
||||||
|
void test01()
|
||||||
|
{
|
||||||
|
using namespace std;
|
||||||
|
bool test = true;
|
||||||
|
typedef complex<double> complex_type;
|
||||||
|
const double cd1 = -11.451;
|
||||||
|
const double cd2 = -442.1533;
|
||||||
|
|
||||||
|
complex_type a(cd1, cd2);
|
||||||
|
double d;
|
||||||
|
d = a.real();
|
||||||
|
VERIFY( d == cd1);
|
||||||
|
|
||||||
|
d = a.imag();
|
||||||
|
VERIFY(d == cd2);
|
||||||
|
|
||||||
|
complex_type c(cd1, cd2);
|
||||||
|
double d6 = abs(c);
|
||||||
|
VERIFY( d6 >= 0);
|
||||||
|
|
||||||
|
double d7 = arg(c);
|
||||||
|
double d8 = atan2(c.imag(), c.real());
|
||||||
|
VERIFY( d7 == d8);
|
||||||
|
|
||||||
|
double d9 = norm(c);
|
||||||
|
double d10 = d6 * d6;
|
||||||
|
VERIFY(d9 - d10 == 0);
|
||||||
|
|
||||||
|
complex_type e = conj(c);
|
||||||
|
|
||||||
|
complex_type f = polar(c.imag(), 0.0);
|
||||||
|
VERIFY(f.real() != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
test01();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue