diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6eb5d1c4bf7..386b44e9b53 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2003-02-03 Volker Reichelt + + PR libstdc++/9234 + * include/bits/valarray_before.h (_UnBase::operator[]): Apply unary + operator. + + * include/bits/valarray_before.h (__not_equal_to): Use != instead of ==. + + * testsuite/26_numerics/valarray_operators.cc: New test. + 2003-02-01 Phil Edwards * docs/html/faq/index.html: Correct link to libg++ information. diff --git a/libstdc++-v3/include/bits/valarray_before.h b/libstdc++-v3/include/bits/valarray_before.h index 13b53494987..7a0b677d023 100644 --- a/libstdc++-v3/include/bits/valarray_before.h +++ b/libstdc++-v3/include/bits/valarray_before.h @@ -270,7 +270,7 @@ namespace std { template bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x == __y; } + { return __x != __y; } }; struct __less @@ -459,7 +459,7 @@ namespace std _UnBase(const _Arg& __e) : _M_expr(__e) {} value_type operator[](size_t __i) const - { return _M_expr[__i]; } + { return _Oper()(_M_expr[__i]); } size_t size() const { return _M_expr.size(); } diff --git a/libstdc++-v3/testsuite/26_numerics/valarray_operators.cc b/libstdc++-v3/testsuite/26_numerics/valarray_operators.cc new file mode 100644 index 00000000000..5753e471672 --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/valarray_operators.cc @@ -0,0 +1,67 @@ +// { dg-do run } +// 2003-02-03 Volker Reichelt + +// Copyright (C) 2003 Free Software Foundation +// +// 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 +#include + +void test01() // check unary operators +{ + std::valarray u(1); + u[0]=1; + + VERIFY( (+u)[0] == +1 ); + VERIFY( (-u)[0] == -1 ); + VERIFY( (!u)[0] == !1 ); + VERIFY( (~u)[0] == ~1 ); +} + +void test02() // check binary operators +{ + std::valarray u(1), v(1); + u[0]=1; + v[0]=3; + + VERIFY( (u+ v)[0] == (1+ 3) ); + VERIFY( (u- v)[0] == (1- 3) ); + VERIFY( (u* v)[0] == (1* 3) ); + VERIFY( (u/ v)[0] == (1/ 3) ); + VERIFY( (u% v)[0] == (1% 3) ); + VERIFY( (u^ v)[0] == (1^ 3) ); + VERIFY( (u& v)[0] == (1& 3) ); + VERIFY( (u| v)[0] == (1| 3) ); + VERIFY( (u<>v)[0] == (1>>3) ); + VERIFY( (u&&v)[0] == (1&&3) ); + VERIFY( (u||v)[0] == (1||3) ); + VERIFY( (u==v)[0] == (1==3) ); + VERIFY( (u!=v)[0] == (1!=3) ); + VERIFY( (u< v)[0] == (1< 3) ); + VERIFY( (u> v)[0] == (1> 3) ); + VERIFY( (u<=v)[0] == (1<=3) ); + VERIFY( (u>=v)[0] == (1>=3) ); +} + +int main() +{ + test01(); + test02(); + return 0; +}