OSDN Git Service

a0bd21e791ec14fd19944b07787d19015e2b80b8
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / 26_numerics / valarray_name_lookup.cc
1 // 2002-08-02 gdr
2
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.
10
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.
15
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.
20
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.
29
30 // Test name lookup resolutions for standard functions applied to an
31 // array expression.
32 // { dg-do compile }
33
34 #include <valarray>
35
36 namespace My
37 {
38   struct Number 
39   { 
40     operator bool() const;
41   };
42   
43   Number operator+(Number);
44   Number operator-(Number);
45   Number operator~(Number);
46
47   bool operator!(Number);
48   
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);
54
55   Number operator^(Number, Number);
56   Number operator&(Number, Number);
57   Number operator|(Number, Number);
58
59   Number operator<<(Number, Number);
60   Number operator>>(Number, Number);
61
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);
68
69   Number abs(Number);
70
71   Number cos(Number);
72   Number cosh(Number);
73   Number acos(Number);
74
75   Number sin(Number);
76   Number sinh(Number);
77   Number asin(Number);
78   
79   Number tan(Number);
80   Number tanh(Number);
81   Number atan(Number);
82
83   Number exp(Number);
84   Number log(Number);
85   Number log10(Number);
86   Number sqrt(Number);
87
88   Number atan2(Number, Number);
89   Number pow(Number, Number);
90 }
91
92 int main()
93 {
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;
100
101   v = abs(u);
102   
103   v = cos(u);
104   v = cosh(u);
105   v = acos(u);
106
107   v = sin(u);
108   v = sinh(u);
109   v = asin(u);
110
111   v = tan(u);
112   v = tanh(u);
113   v = atan(u);
114
115   v = exp(u);
116   v = log(u);
117   v = log10(u);
118   v = sqrt(u);  
119
120   Array w = u + v;
121   w = u - v;
122   w = u * v;
123   w = u / v;
124   w = u % v;
125
126   w = u ^ v;
127   w = u & v;
128   w = u | v;
129
130   w = u << v;
131   w = u >> v;
132
133   z = u == v;
134   z = u != v;
135   z = u < v;
136   z = u <= v;
137   z = u > v;
138   z = u >= v;
139
140   w = atan2(u, v);
141   w = pow(u, v);
142 }