2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / libstdc++-v3 / testsuite / 26_numerics / valarray_name_lookup.cc
bloba0bd21e791ec14fd19944b07787d19015e2b80b8
1 // 2002-08-02 gdr
3 // Copyright (C) 2002, 2003 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
9 // any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19 // USA.
21 // As a special exception, you may use this file as part of a free software
22 // library without restriction. Specifically, if other files instantiate
23 // templates or use macros or inline functions from this file, or you compile
24 // this file and link it with other files to produce an executable, this
25 // file does not by itself cause the resulting executable to be covered by
26 // the GNU General Public License. This exception does not however
27 // invalidate any other reasons why the executable file might be covered by
28 // the GNU General Public License.
30 // Test name lookup resolutions for standard functions applied to an
31 // array expression.
32 // { dg-do compile }
34 #include <valarray>
36 namespace My
38 struct Number
40 operator bool() const;
43 Number operator+(Number);
44 Number operator-(Number);
45 Number operator~(Number);
47 bool operator!(Number);
49 Number operator+(Number, Number);
50 Number operator-(Number, Number);
51 Number operator*(Number, Number);
52 Number operator/(Number, Number);
53 Number operator%(Number, Number);
55 Number operator^(Number, Number);
56 Number operator&(Number, Number);
57 Number operator|(Number, Number);
59 Number operator<<(Number, Number);
60 Number operator>>(Number, Number);
62 bool operator==(Number, Number);
63 bool operator!=(Number, Number);
64 bool operator<(Number, Number);
65 bool operator<=(Number, Number);
66 bool operator>(Number, Number);
67 bool operator>=(Number, Number);
69 Number abs(Number);
71 Number cos(Number);
72 Number cosh(Number);
73 Number acos(Number);
75 Number sin(Number);
76 Number sinh(Number);
77 Number asin(Number);
79 Number tan(Number);
80 Number tanh(Number);
81 Number atan(Number);
83 Number exp(Number);
84 Number log(Number);
85 Number log10(Number);
86 Number sqrt(Number);
88 Number atan2(Number, Number);
89 Number pow(Number, Number);
92 int main()
94 typedef std::valarray<My::Number> Array;
95 Array u(10), v(10);
96 v = +u;
97 v = -u;
98 v = ~u;
99 std::valarray<bool> z = !u;
101 v = abs(u);
103 v = cos(u);
104 v = cosh(u);
105 v = acos(u);
107 v = sin(u);
108 v = sinh(u);
109 v = asin(u);
111 v = tan(u);
112 v = tanh(u);
113 v = atan(u);
115 v = exp(u);
116 v = log(u);
117 v = log10(u);
118 v = sqrt(u);
120 Array w = u + v;
121 w = u - v;
122 w = u * v;
123 w = u / v;
124 w = u % v;
126 w = u ^ v;
127 w = u & v;
128 w = u | v;
130 w = u << v;
131 w = u >> v;
133 z = u == v;
134 z = u != v;
135 z = u < v;
136 z = u <= v;
137 z = u > v;
138 z = u >= v;
140 w = atan2(u, v);
141 w = pow(u, v);