1
/***************************************************************************
2
* blitz/../array/bops.cc Array expression templates (2 operands)
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License
6
* as published by the Free Software Foundation; either version 2
7
* of the License, or (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* Suggestions: blitz-suggest@cybervision.com
15
* Bugs: blitz-bugs@cybervision.com
17
* For more information, please see the Blitz++ Home Page:
18
* http://seurat.uwaterloo.ca/blitz/
20
***************************************************************************
24
// Generated source file. Do not edit.
25
// genarrbops.cpp Dec 30 2003 16:48:46
27
#ifndef BZ_ARRAYBOPS_CC
28
#define BZ_ARRAYBOPS_CC
30
#ifndef BZ_ARRAYEXPR_H
31
#error <blitz/array/bops.cc> must be included after <blitz/arrayexpr.h>
36
/****************************************************************************
38
****************************************************************************/
40
// Array<T_numtype1, N_rank1> + Array<T_numtype2, N_rank2>
41
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
43
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
44
ArrayIterator<T_numtype2, N_rank2>,
45
Add<T_numtype1, T_numtype2 > > >
46
operator+(const Array<T_numtype1, N_rank1>& d1,
47
const Array<T_numtype2, N_rank2>& d2)
49
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
50
ArrayIterator<T_numtype2, N_rank2>,
51
Add<T_numtype1, T_numtype2> >
56
// Array<T_numtype1, N_rank1> + _bz_ArrayExpr<P_expr2>
57
template<class T_numtype1, int N_rank1, class P_expr2>
59
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
60
_bz_ArrayExpr<P_expr2>,
61
Add<T_numtype1, typename P_expr2::T_numtype > > >
62
operator+(const Array<T_numtype1, N_rank1>& d1,
63
_bz_ArrayExpr<P_expr2> d2)
65
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
66
_bz_ArrayExpr<P_expr2>,
67
Add<T_numtype1, typename P_expr2::T_numtype> >
72
// Array<T_numtype1, N_rank1> + IndexPlaceholder<N_index2>
73
template<class T_numtype1, int N_rank1, int N_index2>
75
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
76
IndexPlaceholder<N_index2>,
77
Add<T_numtype1, int > > >
78
operator+(const Array<T_numtype1, N_rank1>& d1,
79
IndexPlaceholder<N_index2> d2)
81
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
82
IndexPlaceholder<N_index2>,
83
Add<T_numtype1, int> >
88
// Array<T_numtype1, N_rank1> + int
89
template<class T_numtype1, int N_rank1>
91
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
92
_bz_ArrayExprConstant<int>,
93
Add<T_numtype1, int > > >
94
operator+(const Array<T_numtype1, N_rank1>& d1,
97
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
98
_bz_ArrayExprConstant<int>,
99
Add<T_numtype1, int> >
101
_bz_ArrayExprConstant<int>(d2));
104
// Array<T_numtype1, N_rank1> + float
105
template<class T_numtype1, int N_rank1>
107
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
108
_bz_ArrayExprConstant<float>,
109
Add<T_numtype1, float > > >
110
operator+(const Array<T_numtype1, N_rank1>& d1,
113
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
114
_bz_ArrayExprConstant<float>,
115
Add<T_numtype1, float> >
117
_bz_ArrayExprConstant<float>(d2));
120
// Array<T_numtype1, N_rank1> + double
121
template<class T_numtype1, int N_rank1>
123
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
124
_bz_ArrayExprConstant<double>,
125
Add<T_numtype1, double > > >
126
operator+(const Array<T_numtype1, N_rank1>& d1,
129
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
130
_bz_ArrayExprConstant<double>,
131
Add<T_numtype1, double> >
133
_bz_ArrayExprConstant<double>(d2));
136
// Array<T_numtype1, N_rank1> + long double
137
template<class T_numtype1, int N_rank1>
139
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
140
_bz_ArrayExprConstant<long double>,
141
Add<T_numtype1, long double > > >
142
operator+(const Array<T_numtype1, N_rank1>& d1,
145
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
146
_bz_ArrayExprConstant<long double>,
147
Add<T_numtype1, long double> >
149
_bz_ArrayExprConstant<long double>(d2));
152
#ifdef BZ_HAVE_COMPLEX
153
// Array<T_numtype1, N_rank1> + complex<T2>
154
template<class T_numtype1, int N_rank1, class T2>
156
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
157
_bz_ArrayExprConstant<complex<T2> > ,
158
Add<T_numtype1, complex<T2> > > >
159
operator+(const Array<T_numtype1, N_rank1>& d1,
162
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
163
_bz_ArrayExprConstant<complex<T2> > ,
164
Add<T_numtype1, complex<T2> > >
166
_bz_ArrayExprConstant<complex<T2> > (d2));
168
#endif // BZ_HAVE_COMPLEX
170
// _bz_ArrayExpr<P_expr1> + Array<T_numtype2, N_rank2>
171
template<class P_expr1, class T_numtype2, int N_rank2>
173
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
174
ArrayIterator<T_numtype2, N_rank2>,
175
Add<typename P_expr1::T_numtype, T_numtype2 > > >
176
operator+(_bz_ArrayExpr<P_expr1> d1,
177
const Array<T_numtype2, N_rank2>& d2)
179
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
180
ArrayIterator<T_numtype2, N_rank2>,
181
Add<typename P_expr1::T_numtype, T_numtype2> >
186
// _bz_ArrayExpr<P_expr1> + _bz_ArrayExpr<P_expr2>
187
template<class P_expr1, class P_expr2>
189
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
190
_bz_ArrayExpr<P_expr2>,
191
Add<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
192
operator+(_bz_ArrayExpr<P_expr1> d1,
193
_bz_ArrayExpr<P_expr2> d2)
195
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
196
_bz_ArrayExpr<P_expr2>,
197
Add<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
202
// _bz_ArrayExpr<P_expr1> + IndexPlaceholder<N_index2>
203
template<class P_expr1, int N_index2>
205
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
206
IndexPlaceholder<N_index2>,
207
Add<typename P_expr1::T_numtype, int > > >
208
operator+(_bz_ArrayExpr<P_expr1> d1,
209
IndexPlaceholder<N_index2> d2)
211
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
212
IndexPlaceholder<N_index2>,
213
Add<typename P_expr1::T_numtype, int> >
218
// _bz_ArrayExpr<P_expr1> + int
219
template<class P_expr1>
221
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
222
_bz_ArrayExprConstant<int>,
223
Add<typename P_expr1::T_numtype, int > > >
224
operator+(_bz_ArrayExpr<P_expr1> d1,
227
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
228
_bz_ArrayExprConstant<int>,
229
Add<typename P_expr1::T_numtype, int> >
231
_bz_ArrayExprConstant<int>(d2));
234
// _bz_ArrayExpr<P_expr1> + float
235
template<class P_expr1>
237
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
238
_bz_ArrayExprConstant<float>,
239
Add<typename P_expr1::T_numtype, float > > >
240
operator+(_bz_ArrayExpr<P_expr1> d1,
243
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
244
_bz_ArrayExprConstant<float>,
245
Add<typename P_expr1::T_numtype, float> >
247
_bz_ArrayExprConstant<float>(d2));
250
// _bz_ArrayExpr<P_expr1> + double
251
template<class P_expr1>
253
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
254
_bz_ArrayExprConstant<double>,
255
Add<typename P_expr1::T_numtype, double > > >
256
operator+(_bz_ArrayExpr<P_expr1> d1,
259
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
260
_bz_ArrayExprConstant<double>,
261
Add<typename P_expr1::T_numtype, double> >
263
_bz_ArrayExprConstant<double>(d2));
266
// _bz_ArrayExpr<P_expr1> + long double
267
template<class P_expr1>
269
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
270
_bz_ArrayExprConstant<long double>,
271
Add<typename P_expr1::T_numtype, long double > > >
272
operator+(_bz_ArrayExpr<P_expr1> d1,
275
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
276
_bz_ArrayExprConstant<long double>,
277
Add<typename P_expr1::T_numtype, long double> >
279
_bz_ArrayExprConstant<long double>(d2));
282
#ifdef BZ_HAVE_COMPLEX
283
// _bz_ArrayExpr<P_expr1> + complex<T2>
284
template<class P_expr1, class T2>
286
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
287
_bz_ArrayExprConstant<complex<T2> > ,
288
Add<typename P_expr1::T_numtype, complex<T2> > > >
289
operator+(_bz_ArrayExpr<P_expr1> d1,
292
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
293
_bz_ArrayExprConstant<complex<T2> > ,
294
Add<typename P_expr1::T_numtype, complex<T2> > >
296
_bz_ArrayExprConstant<complex<T2> > (d2));
298
#endif // BZ_HAVE_COMPLEX
300
// IndexPlaceholder<N_index1> + Array<T_numtype2, N_rank2>
301
template<int N_index1, class T_numtype2, int N_rank2>
303
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
304
ArrayIterator<T_numtype2, N_rank2>,
305
Add<int, T_numtype2 > > >
306
operator+(IndexPlaceholder<N_index1> d1,
307
const Array<T_numtype2, N_rank2>& d2)
309
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
310
ArrayIterator<T_numtype2, N_rank2>,
311
Add<int, T_numtype2> >
316
// IndexPlaceholder<N_index1> + _bz_ArrayExpr<P_expr2>
317
template<int N_index1, class P_expr2>
319
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
320
_bz_ArrayExpr<P_expr2>,
321
Add<int, typename P_expr2::T_numtype > > >
322
operator+(IndexPlaceholder<N_index1> d1,
323
_bz_ArrayExpr<P_expr2> d2)
325
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
326
_bz_ArrayExpr<P_expr2>,
327
Add<int, typename P_expr2::T_numtype> >
332
// IndexPlaceholder<N_index1> + IndexPlaceholder<N_index2>
333
template<int N_index1, int N_index2>
335
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
336
IndexPlaceholder<N_index2>,
338
operator+(IndexPlaceholder<N_index1> d1,
339
IndexPlaceholder<N_index2> d2)
341
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
342
IndexPlaceholder<N_index2>,
348
// IndexPlaceholder<N_index1> + int
349
template<int N_index1>
351
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
352
_bz_ArrayExprConstant<int>,
354
operator+(IndexPlaceholder<N_index1> d1,
357
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
358
_bz_ArrayExprConstant<int>,
361
_bz_ArrayExprConstant<int>(d2));
364
// IndexPlaceholder<N_index1> + float
365
template<int N_index1>
367
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
368
_bz_ArrayExprConstant<float>,
370
operator+(IndexPlaceholder<N_index1> d1,
373
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
374
_bz_ArrayExprConstant<float>,
377
_bz_ArrayExprConstant<float>(d2));
380
// IndexPlaceholder<N_index1> + double
381
template<int N_index1>
383
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
384
_bz_ArrayExprConstant<double>,
385
Add<int, double > > >
386
operator+(IndexPlaceholder<N_index1> d1,
389
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
390
_bz_ArrayExprConstant<double>,
393
_bz_ArrayExprConstant<double>(d2));
396
// IndexPlaceholder<N_index1> + long double
397
template<int N_index1>
399
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
400
_bz_ArrayExprConstant<long double>,
401
Add<int, long double > > >
402
operator+(IndexPlaceholder<N_index1> d1,
405
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
406
_bz_ArrayExprConstant<long double>,
407
Add<int, long double> >
409
_bz_ArrayExprConstant<long double>(d2));
412
#ifdef BZ_HAVE_COMPLEX
413
// IndexPlaceholder<N_index1> + complex<T2>
414
template<int N_index1, class T2>
416
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
417
_bz_ArrayExprConstant<complex<T2> > ,
418
Add<int, complex<T2> > > >
419
operator+(IndexPlaceholder<N_index1> d1,
422
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
423
_bz_ArrayExprConstant<complex<T2> > ,
424
Add<int, complex<T2> > >
426
_bz_ArrayExprConstant<complex<T2> > (d2));
428
#endif // BZ_HAVE_COMPLEX
430
// int + Array<T_numtype2, N_rank2>
431
template<class T_numtype2, int N_rank2>
433
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
434
ArrayIterator<T_numtype2, N_rank2>,
435
Add<int, T_numtype2 > > >
437
const Array<T_numtype2, N_rank2>& d2)
439
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
440
ArrayIterator<T_numtype2, N_rank2>,
441
Add<int, T_numtype2> >
442
(_bz_ArrayExprConstant<int>(d1),
446
// int + _bz_ArrayExpr<P_expr2>
447
template<class P_expr2>
449
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
450
_bz_ArrayExpr<P_expr2>,
451
Add<int, typename P_expr2::T_numtype > > >
453
_bz_ArrayExpr<P_expr2> d2)
455
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
456
_bz_ArrayExpr<P_expr2>,
457
Add<int, typename P_expr2::T_numtype> >
458
(_bz_ArrayExprConstant<int>(d1),
462
// int + IndexPlaceholder<N_index2>
463
template<int N_index2>
465
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
466
IndexPlaceholder<N_index2>,
469
IndexPlaceholder<N_index2> d2)
471
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
472
IndexPlaceholder<N_index2>,
474
(_bz_ArrayExprConstant<int>(d1),
478
// float + Array<T_numtype2, N_rank2>
479
template<class T_numtype2, int N_rank2>
481
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
482
ArrayIterator<T_numtype2, N_rank2>,
483
Add<float, T_numtype2 > > >
485
const Array<T_numtype2, N_rank2>& d2)
487
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
488
ArrayIterator<T_numtype2, N_rank2>,
489
Add<float, T_numtype2> >
490
(_bz_ArrayExprConstant<float>(d1),
494
// float + _bz_ArrayExpr<P_expr2>
495
template<class P_expr2>
497
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
498
_bz_ArrayExpr<P_expr2>,
499
Add<float, typename P_expr2::T_numtype > > >
501
_bz_ArrayExpr<P_expr2> d2)
503
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
504
_bz_ArrayExpr<P_expr2>,
505
Add<float, typename P_expr2::T_numtype> >
506
(_bz_ArrayExprConstant<float>(d1),
510
// float + IndexPlaceholder<N_index2>
511
template<int N_index2>
513
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
514
IndexPlaceholder<N_index2>,
517
IndexPlaceholder<N_index2> d2)
519
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
520
IndexPlaceholder<N_index2>,
522
(_bz_ArrayExprConstant<float>(d1),
526
// double + Array<T_numtype2, N_rank2>
527
template<class T_numtype2, int N_rank2>
529
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
530
ArrayIterator<T_numtype2, N_rank2>,
531
Add<double, T_numtype2 > > >
533
const Array<T_numtype2, N_rank2>& d2)
535
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
536
ArrayIterator<T_numtype2, N_rank2>,
537
Add<double, T_numtype2> >
538
(_bz_ArrayExprConstant<double>(d1),
542
// double + _bz_ArrayExpr<P_expr2>
543
template<class P_expr2>
545
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
546
_bz_ArrayExpr<P_expr2>,
547
Add<double, typename P_expr2::T_numtype > > >
549
_bz_ArrayExpr<P_expr2> d2)
551
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
552
_bz_ArrayExpr<P_expr2>,
553
Add<double, typename P_expr2::T_numtype> >
554
(_bz_ArrayExprConstant<double>(d1),
558
// double + IndexPlaceholder<N_index2>
559
template<int N_index2>
561
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
562
IndexPlaceholder<N_index2>,
563
Add<double, int > > >
565
IndexPlaceholder<N_index2> d2)
567
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
568
IndexPlaceholder<N_index2>,
570
(_bz_ArrayExprConstant<double>(d1),
574
// long double + Array<T_numtype2, N_rank2>
575
template<class T_numtype2, int N_rank2>
577
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
578
ArrayIterator<T_numtype2, N_rank2>,
579
Add<long double, T_numtype2 > > >
580
operator+(long double d1,
581
const Array<T_numtype2, N_rank2>& d2)
583
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
584
ArrayIterator<T_numtype2, N_rank2>,
585
Add<long double, T_numtype2> >
586
(_bz_ArrayExprConstant<long double>(d1),
590
// long double + _bz_ArrayExpr<P_expr2>
591
template<class P_expr2>
593
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
594
_bz_ArrayExpr<P_expr2>,
595
Add<long double, typename P_expr2::T_numtype > > >
596
operator+(long double d1,
597
_bz_ArrayExpr<P_expr2> d2)
599
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
600
_bz_ArrayExpr<P_expr2>,
601
Add<long double, typename P_expr2::T_numtype> >
602
(_bz_ArrayExprConstant<long double>(d1),
606
// long double + IndexPlaceholder<N_index2>
607
template<int N_index2>
609
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
610
IndexPlaceholder<N_index2>,
611
Add<long double, int > > >
612
operator+(long double d1,
613
IndexPlaceholder<N_index2> d2)
615
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
616
IndexPlaceholder<N_index2>,
617
Add<long double, int> >
618
(_bz_ArrayExprConstant<long double>(d1),
622
#ifdef BZ_HAVE_COMPLEX
623
// complex<T1> + Array<T_numtype2, N_rank2>
624
template<class T1, class T_numtype2, int N_rank2>
626
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
627
ArrayIterator<T_numtype2, N_rank2>,
628
Add<complex<T1> , T_numtype2 > > >
629
operator+(complex<T1> d1,
630
const Array<T_numtype2, N_rank2>& d2)
632
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
633
ArrayIterator<T_numtype2, N_rank2>,
634
Add<complex<T1> , T_numtype2> >
635
(_bz_ArrayExprConstant<complex<T1> > (d1),
638
#endif // BZ_HAVE_COMPLEX
640
#ifdef BZ_HAVE_COMPLEX
641
// complex<T1> + _bz_ArrayExpr<P_expr2>
642
template<class T1, class P_expr2>
644
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
645
_bz_ArrayExpr<P_expr2>,
646
Add<complex<T1> , typename P_expr2::T_numtype > > >
647
operator+(complex<T1> d1,
648
_bz_ArrayExpr<P_expr2> d2)
650
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
651
_bz_ArrayExpr<P_expr2>,
652
Add<complex<T1> , typename P_expr2::T_numtype> >
653
(_bz_ArrayExprConstant<complex<T1> > (d1),
656
#endif // BZ_HAVE_COMPLEX
658
#ifdef BZ_HAVE_COMPLEX
659
// complex<T1> + IndexPlaceholder<N_index2>
660
template<class T1, int N_index2>
662
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
663
IndexPlaceholder<N_index2>,
664
Add<complex<T1> , int > > >
665
operator+(complex<T1> d1,
666
IndexPlaceholder<N_index2> d2)
668
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
669
IndexPlaceholder<N_index2>,
670
Add<complex<T1> , int> >
671
(_bz_ArrayExprConstant<complex<T1> > (d1),
674
#endif // BZ_HAVE_COMPLEX
675
/****************************************************************************
676
* Subtraction Operators
677
****************************************************************************/
679
// Array<T_numtype1, N_rank1> - Array<T_numtype2, N_rank2>
680
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
682
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
683
ArrayIterator<T_numtype2, N_rank2>,
684
Subtract<T_numtype1, T_numtype2 > > >
685
operator-(const Array<T_numtype1, N_rank1>& d1,
686
const Array<T_numtype2, N_rank2>& d2)
688
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
689
ArrayIterator<T_numtype2, N_rank2>,
690
Subtract<T_numtype1, T_numtype2> >
695
// Array<T_numtype1, N_rank1> - _bz_ArrayExpr<P_expr2>
696
template<class T_numtype1, int N_rank1, class P_expr2>
698
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
699
_bz_ArrayExpr<P_expr2>,
700
Subtract<T_numtype1, typename P_expr2::T_numtype > > >
701
operator-(const Array<T_numtype1, N_rank1>& d1,
702
_bz_ArrayExpr<P_expr2> d2)
704
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
705
_bz_ArrayExpr<P_expr2>,
706
Subtract<T_numtype1, typename P_expr2::T_numtype> >
711
// Array<T_numtype1, N_rank1> - IndexPlaceholder<N_index2>
712
template<class T_numtype1, int N_rank1, int N_index2>
714
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
715
IndexPlaceholder<N_index2>,
716
Subtract<T_numtype1, int > > >
717
operator-(const Array<T_numtype1, N_rank1>& d1,
718
IndexPlaceholder<N_index2> d2)
720
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
721
IndexPlaceholder<N_index2>,
722
Subtract<T_numtype1, int> >
727
// Array<T_numtype1, N_rank1> - int
728
template<class T_numtype1, int N_rank1>
730
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
731
_bz_ArrayExprConstant<int>,
732
Subtract<T_numtype1, int > > >
733
operator-(const Array<T_numtype1, N_rank1>& d1,
736
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
737
_bz_ArrayExprConstant<int>,
738
Subtract<T_numtype1, int> >
740
_bz_ArrayExprConstant<int>(d2));
743
// Array<T_numtype1, N_rank1> - float
744
template<class T_numtype1, int N_rank1>
746
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
747
_bz_ArrayExprConstant<float>,
748
Subtract<T_numtype1, float > > >
749
operator-(const Array<T_numtype1, N_rank1>& d1,
752
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
753
_bz_ArrayExprConstant<float>,
754
Subtract<T_numtype1, float> >
756
_bz_ArrayExprConstant<float>(d2));
759
// Array<T_numtype1, N_rank1> - double
760
template<class T_numtype1, int N_rank1>
762
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
763
_bz_ArrayExprConstant<double>,
764
Subtract<T_numtype1, double > > >
765
operator-(const Array<T_numtype1, N_rank1>& d1,
768
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
769
_bz_ArrayExprConstant<double>,
770
Subtract<T_numtype1, double> >
772
_bz_ArrayExprConstant<double>(d2));
775
// Array<T_numtype1, N_rank1> - long double
776
template<class T_numtype1, int N_rank1>
778
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
779
_bz_ArrayExprConstant<long double>,
780
Subtract<T_numtype1, long double > > >
781
operator-(const Array<T_numtype1, N_rank1>& d1,
784
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
785
_bz_ArrayExprConstant<long double>,
786
Subtract<T_numtype1, long double> >
788
_bz_ArrayExprConstant<long double>(d2));
791
#ifdef BZ_HAVE_COMPLEX
792
// Array<T_numtype1, N_rank1> - complex<T2>
793
template<class T_numtype1, int N_rank1, class T2>
795
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
796
_bz_ArrayExprConstant<complex<T2> > ,
797
Subtract<T_numtype1, complex<T2> > > >
798
operator-(const Array<T_numtype1, N_rank1>& d1,
801
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
802
_bz_ArrayExprConstant<complex<T2> > ,
803
Subtract<T_numtype1, complex<T2> > >
805
_bz_ArrayExprConstant<complex<T2> > (d2));
807
#endif // BZ_HAVE_COMPLEX
809
// _bz_ArrayExpr<P_expr1> - Array<T_numtype2, N_rank2>
810
template<class P_expr1, class T_numtype2, int N_rank2>
812
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
813
ArrayIterator<T_numtype2, N_rank2>,
814
Subtract<typename P_expr1::T_numtype, T_numtype2 > > >
815
operator-(_bz_ArrayExpr<P_expr1> d1,
816
const Array<T_numtype2, N_rank2>& d2)
818
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
819
ArrayIterator<T_numtype2, N_rank2>,
820
Subtract<typename P_expr1::T_numtype, T_numtype2> >
825
// _bz_ArrayExpr<P_expr1> - _bz_ArrayExpr<P_expr2>
826
template<class P_expr1, class P_expr2>
828
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
829
_bz_ArrayExpr<P_expr2>,
830
Subtract<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
831
operator-(_bz_ArrayExpr<P_expr1> d1,
832
_bz_ArrayExpr<P_expr2> d2)
834
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
835
_bz_ArrayExpr<P_expr2>,
836
Subtract<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
841
// _bz_ArrayExpr<P_expr1> - IndexPlaceholder<N_index2>
842
template<class P_expr1, int N_index2>
844
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
845
IndexPlaceholder<N_index2>,
846
Subtract<typename P_expr1::T_numtype, int > > >
847
operator-(_bz_ArrayExpr<P_expr1> d1,
848
IndexPlaceholder<N_index2> d2)
850
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
851
IndexPlaceholder<N_index2>,
852
Subtract<typename P_expr1::T_numtype, int> >
857
// _bz_ArrayExpr<P_expr1> - int
858
template<class P_expr1>
860
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
861
_bz_ArrayExprConstant<int>,
862
Subtract<typename P_expr1::T_numtype, int > > >
863
operator-(_bz_ArrayExpr<P_expr1> d1,
866
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
867
_bz_ArrayExprConstant<int>,
868
Subtract<typename P_expr1::T_numtype, int> >
870
_bz_ArrayExprConstant<int>(d2));
873
// _bz_ArrayExpr<P_expr1> - float
874
template<class P_expr1>
876
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
877
_bz_ArrayExprConstant<float>,
878
Subtract<typename P_expr1::T_numtype, float > > >
879
operator-(_bz_ArrayExpr<P_expr1> d1,
882
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
883
_bz_ArrayExprConstant<float>,
884
Subtract<typename P_expr1::T_numtype, float> >
886
_bz_ArrayExprConstant<float>(d2));
889
// _bz_ArrayExpr<P_expr1> - double
890
template<class P_expr1>
892
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
893
_bz_ArrayExprConstant<double>,
894
Subtract<typename P_expr1::T_numtype, double > > >
895
operator-(_bz_ArrayExpr<P_expr1> d1,
898
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
899
_bz_ArrayExprConstant<double>,
900
Subtract<typename P_expr1::T_numtype, double> >
902
_bz_ArrayExprConstant<double>(d2));
905
// _bz_ArrayExpr<P_expr1> - long double
906
template<class P_expr1>
908
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
909
_bz_ArrayExprConstant<long double>,
910
Subtract<typename P_expr1::T_numtype, long double > > >
911
operator-(_bz_ArrayExpr<P_expr1> d1,
914
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
915
_bz_ArrayExprConstant<long double>,
916
Subtract<typename P_expr1::T_numtype, long double> >
918
_bz_ArrayExprConstant<long double>(d2));
921
#ifdef BZ_HAVE_COMPLEX
922
// _bz_ArrayExpr<P_expr1> - complex<T2>
923
template<class P_expr1, class T2>
925
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
926
_bz_ArrayExprConstant<complex<T2> > ,
927
Subtract<typename P_expr1::T_numtype, complex<T2> > > >
928
operator-(_bz_ArrayExpr<P_expr1> d1,
931
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
932
_bz_ArrayExprConstant<complex<T2> > ,
933
Subtract<typename P_expr1::T_numtype, complex<T2> > >
935
_bz_ArrayExprConstant<complex<T2> > (d2));
937
#endif // BZ_HAVE_COMPLEX
939
// IndexPlaceholder<N_index1> - Array<T_numtype2, N_rank2>
940
template<int N_index1, class T_numtype2, int N_rank2>
942
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
943
ArrayIterator<T_numtype2, N_rank2>,
944
Subtract<int, T_numtype2 > > >
945
operator-(IndexPlaceholder<N_index1> d1,
946
const Array<T_numtype2, N_rank2>& d2)
948
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
949
ArrayIterator<T_numtype2, N_rank2>,
950
Subtract<int, T_numtype2> >
955
// IndexPlaceholder<N_index1> - _bz_ArrayExpr<P_expr2>
956
template<int N_index1, class P_expr2>
958
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
959
_bz_ArrayExpr<P_expr2>,
960
Subtract<int, typename P_expr2::T_numtype > > >
961
operator-(IndexPlaceholder<N_index1> d1,
962
_bz_ArrayExpr<P_expr2> d2)
964
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
965
_bz_ArrayExpr<P_expr2>,
966
Subtract<int, typename P_expr2::T_numtype> >
971
// IndexPlaceholder<N_index1> - IndexPlaceholder<N_index2>
972
template<int N_index1, int N_index2>
974
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
975
IndexPlaceholder<N_index2>,
976
Subtract<int, int > > >
977
operator-(IndexPlaceholder<N_index1> d1,
978
IndexPlaceholder<N_index2> d2)
980
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
981
IndexPlaceholder<N_index2>,
987
// IndexPlaceholder<N_index1> - int
988
template<int N_index1>
990
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
991
_bz_ArrayExprConstant<int>,
992
Subtract<int, int > > >
993
operator-(IndexPlaceholder<N_index1> d1,
996
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
997
_bz_ArrayExprConstant<int>,
1000
_bz_ArrayExprConstant<int>(d2));
1003
// IndexPlaceholder<N_index1> - float
1004
template<int N_index1>
1006
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1007
_bz_ArrayExprConstant<float>,
1008
Subtract<int, float > > >
1009
operator-(IndexPlaceholder<N_index1> d1,
1012
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1013
_bz_ArrayExprConstant<float>,
1014
Subtract<int, float> >
1016
_bz_ArrayExprConstant<float>(d2));
1019
// IndexPlaceholder<N_index1> - double
1020
template<int N_index1>
1022
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1023
_bz_ArrayExprConstant<double>,
1024
Subtract<int, double > > >
1025
operator-(IndexPlaceholder<N_index1> d1,
1028
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1029
_bz_ArrayExprConstant<double>,
1030
Subtract<int, double> >
1032
_bz_ArrayExprConstant<double>(d2));
1035
// IndexPlaceholder<N_index1> - long double
1036
template<int N_index1>
1038
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1039
_bz_ArrayExprConstant<long double>,
1040
Subtract<int, long double > > >
1041
operator-(IndexPlaceholder<N_index1> d1,
1044
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1045
_bz_ArrayExprConstant<long double>,
1046
Subtract<int, long double> >
1048
_bz_ArrayExprConstant<long double>(d2));
1051
#ifdef BZ_HAVE_COMPLEX
1052
// IndexPlaceholder<N_index1> - complex<T2>
1053
template<int N_index1, class T2>
1055
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1056
_bz_ArrayExprConstant<complex<T2> > ,
1057
Subtract<int, complex<T2> > > >
1058
operator-(IndexPlaceholder<N_index1> d1,
1061
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1062
_bz_ArrayExprConstant<complex<T2> > ,
1063
Subtract<int, complex<T2> > >
1065
_bz_ArrayExprConstant<complex<T2> > (d2));
1067
#endif // BZ_HAVE_COMPLEX
1069
// int - Array<T_numtype2, N_rank2>
1070
template<class T_numtype2, int N_rank2>
1072
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1073
ArrayIterator<T_numtype2, N_rank2>,
1074
Subtract<int, T_numtype2 > > >
1076
const Array<T_numtype2, N_rank2>& d2)
1078
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1079
ArrayIterator<T_numtype2, N_rank2>,
1080
Subtract<int, T_numtype2> >
1081
(_bz_ArrayExprConstant<int>(d1),
1085
// int - _bz_ArrayExpr<P_expr2>
1086
template<class P_expr2>
1088
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1089
_bz_ArrayExpr<P_expr2>,
1090
Subtract<int, typename P_expr2::T_numtype > > >
1092
_bz_ArrayExpr<P_expr2> d2)
1094
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1095
_bz_ArrayExpr<P_expr2>,
1096
Subtract<int, typename P_expr2::T_numtype> >
1097
(_bz_ArrayExprConstant<int>(d1),
1101
// int - IndexPlaceholder<N_index2>
1102
template<int N_index2>
1104
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1105
IndexPlaceholder<N_index2>,
1106
Subtract<int, int > > >
1108
IndexPlaceholder<N_index2> d2)
1110
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1111
IndexPlaceholder<N_index2>,
1112
Subtract<int, int> >
1113
(_bz_ArrayExprConstant<int>(d1),
1117
// float - Array<T_numtype2, N_rank2>
1118
template<class T_numtype2, int N_rank2>
1120
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1121
ArrayIterator<T_numtype2, N_rank2>,
1122
Subtract<float, T_numtype2 > > >
1124
const Array<T_numtype2, N_rank2>& d2)
1126
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1127
ArrayIterator<T_numtype2, N_rank2>,
1128
Subtract<float, T_numtype2> >
1129
(_bz_ArrayExprConstant<float>(d1),
1133
// float - _bz_ArrayExpr<P_expr2>
1134
template<class P_expr2>
1136
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1137
_bz_ArrayExpr<P_expr2>,
1138
Subtract<float, typename P_expr2::T_numtype > > >
1140
_bz_ArrayExpr<P_expr2> d2)
1142
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1143
_bz_ArrayExpr<P_expr2>,
1144
Subtract<float, typename P_expr2::T_numtype> >
1145
(_bz_ArrayExprConstant<float>(d1),
1149
// float - IndexPlaceholder<N_index2>
1150
template<int N_index2>
1152
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1153
IndexPlaceholder<N_index2>,
1154
Subtract<float, int > > >
1156
IndexPlaceholder<N_index2> d2)
1158
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1159
IndexPlaceholder<N_index2>,
1160
Subtract<float, int> >
1161
(_bz_ArrayExprConstant<float>(d1),
1165
// double - Array<T_numtype2, N_rank2>
1166
template<class T_numtype2, int N_rank2>
1168
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1169
ArrayIterator<T_numtype2, N_rank2>,
1170
Subtract<double, T_numtype2 > > >
1171
operator-(double d1,
1172
const Array<T_numtype2, N_rank2>& d2)
1174
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1175
ArrayIterator<T_numtype2, N_rank2>,
1176
Subtract<double, T_numtype2> >
1177
(_bz_ArrayExprConstant<double>(d1),
1181
// double - _bz_ArrayExpr<P_expr2>
1182
template<class P_expr2>
1184
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1185
_bz_ArrayExpr<P_expr2>,
1186
Subtract<double, typename P_expr2::T_numtype > > >
1187
operator-(double d1,
1188
_bz_ArrayExpr<P_expr2> d2)
1190
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1191
_bz_ArrayExpr<P_expr2>,
1192
Subtract<double, typename P_expr2::T_numtype> >
1193
(_bz_ArrayExprConstant<double>(d1),
1197
// double - IndexPlaceholder<N_index2>
1198
template<int N_index2>
1200
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1201
IndexPlaceholder<N_index2>,
1202
Subtract<double, int > > >
1203
operator-(double d1,
1204
IndexPlaceholder<N_index2> d2)
1206
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1207
IndexPlaceholder<N_index2>,
1208
Subtract<double, int> >
1209
(_bz_ArrayExprConstant<double>(d1),
1213
// long double - Array<T_numtype2, N_rank2>
1214
template<class T_numtype2, int N_rank2>
1216
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1217
ArrayIterator<T_numtype2, N_rank2>,
1218
Subtract<long double, T_numtype2 > > >
1219
operator-(long double d1,
1220
const Array<T_numtype2, N_rank2>& d2)
1222
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1223
ArrayIterator<T_numtype2, N_rank2>,
1224
Subtract<long double, T_numtype2> >
1225
(_bz_ArrayExprConstant<long double>(d1),
1229
// long double - _bz_ArrayExpr<P_expr2>
1230
template<class P_expr2>
1232
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1233
_bz_ArrayExpr<P_expr2>,
1234
Subtract<long double, typename P_expr2::T_numtype > > >
1235
operator-(long double d1,
1236
_bz_ArrayExpr<P_expr2> d2)
1238
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1239
_bz_ArrayExpr<P_expr2>,
1240
Subtract<long double, typename P_expr2::T_numtype> >
1241
(_bz_ArrayExprConstant<long double>(d1),
1245
// long double - IndexPlaceholder<N_index2>
1246
template<int N_index2>
1248
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1249
IndexPlaceholder<N_index2>,
1250
Subtract<long double, int > > >
1251
operator-(long double d1,
1252
IndexPlaceholder<N_index2> d2)
1254
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1255
IndexPlaceholder<N_index2>,
1256
Subtract<long double, int> >
1257
(_bz_ArrayExprConstant<long double>(d1),
1261
#ifdef BZ_HAVE_COMPLEX
1262
// complex<T1> - Array<T_numtype2, N_rank2>
1263
template<class T1, class T_numtype2, int N_rank2>
1265
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1266
ArrayIterator<T_numtype2, N_rank2>,
1267
Subtract<complex<T1> , T_numtype2 > > >
1268
operator-(complex<T1> d1,
1269
const Array<T_numtype2, N_rank2>& d2)
1271
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1272
ArrayIterator<T_numtype2, N_rank2>,
1273
Subtract<complex<T1> , T_numtype2> >
1274
(_bz_ArrayExprConstant<complex<T1> > (d1),
1277
#endif // BZ_HAVE_COMPLEX
1279
#ifdef BZ_HAVE_COMPLEX
1280
// complex<T1> - _bz_ArrayExpr<P_expr2>
1281
template<class T1, class P_expr2>
1283
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1284
_bz_ArrayExpr<P_expr2>,
1285
Subtract<complex<T1> , typename P_expr2::T_numtype > > >
1286
operator-(complex<T1> d1,
1287
_bz_ArrayExpr<P_expr2> d2)
1289
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1290
_bz_ArrayExpr<P_expr2>,
1291
Subtract<complex<T1> , typename P_expr2::T_numtype> >
1292
(_bz_ArrayExprConstant<complex<T1> > (d1),
1295
#endif // BZ_HAVE_COMPLEX
1297
#ifdef BZ_HAVE_COMPLEX
1298
// complex<T1> - IndexPlaceholder<N_index2>
1299
template<class T1, int N_index2>
1301
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1302
IndexPlaceholder<N_index2>,
1303
Subtract<complex<T1> , int > > >
1304
operator-(complex<T1> d1,
1305
IndexPlaceholder<N_index2> d2)
1307
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1308
IndexPlaceholder<N_index2>,
1309
Subtract<complex<T1> , int> >
1310
(_bz_ArrayExprConstant<complex<T1> > (d1),
1313
#endif // BZ_HAVE_COMPLEX
1314
/****************************************************************************
1315
* Multiplication Operators
1316
****************************************************************************/
1318
// Array<T_numtype1, N_rank1> * Array<T_numtype2, N_rank2>
1319
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
1321
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1322
ArrayIterator<T_numtype2, N_rank2>,
1323
Multiply<T_numtype1, T_numtype2 > > >
1324
operator*(const Array<T_numtype1, N_rank1>& d1,
1325
const Array<T_numtype2, N_rank2>& d2)
1327
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1328
ArrayIterator<T_numtype2, N_rank2>,
1329
Multiply<T_numtype1, T_numtype2> >
1334
// Array<T_numtype1, N_rank1> * _bz_ArrayExpr<P_expr2>
1335
template<class T_numtype1, int N_rank1, class P_expr2>
1337
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1338
_bz_ArrayExpr<P_expr2>,
1339
Multiply<T_numtype1, typename P_expr2::T_numtype > > >
1340
operator*(const Array<T_numtype1, N_rank1>& d1,
1341
_bz_ArrayExpr<P_expr2> d2)
1343
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1344
_bz_ArrayExpr<P_expr2>,
1345
Multiply<T_numtype1, typename P_expr2::T_numtype> >
1350
// Array<T_numtype1, N_rank1> * IndexPlaceholder<N_index2>
1351
template<class T_numtype1, int N_rank1, int N_index2>
1353
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1354
IndexPlaceholder<N_index2>,
1355
Multiply<T_numtype1, int > > >
1356
operator*(const Array<T_numtype1, N_rank1>& d1,
1357
IndexPlaceholder<N_index2> d2)
1359
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1360
IndexPlaceholder<N_index2>,
1361
Multiply<T_numtype1, int> >
1366
// Array<T_numtype1, N_rank1> * int
1367
template<class T_numtype1, int N_rank1>
1369
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1370
_bz_ArrayExprConstant<int>,
1371
Multiply<T_numtype1, int > > >
1372
operator*(const Array<T_numtype1, N_rank1>& d1,
1375
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1376
_bz_ArrayExprConstant<int>,
1377
Multiply<T_numtype1, int> >
1379
_bz_ArrayExprConstant<int>(d2));
1382
// Array<T_numtype1, N_rank1> * float
1383
template<class T_numtype1, int N_rank1>
1385
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1386
_bz_ArrayExprConstant<float>,
1387
Multiply<T_numtype1, float > > >
1388
operator*(const Array<T_numtype1, N_rank1>& d1,
1391
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1392
_bz_ArrayExprConstant<float>,
1393
Multiply<T_numtype1, float> >
1395
_bz_ArrayExprConstant<float>(d2));
1398
// Array<T_numtype1, N_rank1> * double
1399
template<class T_numtype1, int N_rank1>
1401
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1402
_bz_ArrayExprConstant<double>,
1403
Multiply<T_numtype1, double > > >
1404
operator*(const Array<T_numtype1, N_rank1>& d1,
1407
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1408
_bz_ArrayExprConstant<double>,
1409
Multiply<T_numtype1, double> >
1411
_bz_ArrayExprConstant<double>(d2));
1414
// Array<T_numtype1, N_rank1> * long double
1415
template<class T_numtype1, int N_rank1>
1417
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1418
_bz_ArrayExprConstant<long double>,
1419
Multiply<T_numtype1, long double > > >
1420
operator*(const Array<T_numtype1, N_rank1>& d1,
1423
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1424
_bz_ArrayExprConstant<long double>,
1425
Multiply<T_numtype1, long double> >
1427
_bz_ArrayExprConstant<long double>(d2));
1430
#ifdef BZ_HAVE_COMPLEX
1431
// Array<T_numtype1, N_rank1> * complex<T2>
1432
template<class T_numtype1, int N_rank1, class T2>
1434
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1435
_bz_ArrayExprConstant<complex<T2> > ,
1436
Multiply<T_numtype1, complex<T2> > > >
1437
operator*(const Array<T_numtype1, N_rank1>& d1,
1440
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1441
_bz_ArrayExprConstant<complex<T2> > ,
1442
Multiply<T_numtype1, complex<T2> > >
1444
_bz_ArrayExprConstant<complex<T2> > (d2));
1446
#endif // BZ_HAVE_COMPLEX
1448
// _bz_ArrayExpr<P_expr1> * Array<T_numtype2, N_rank2>
1449
template<class P_expr1, class T_numtype2, int N_rank2>
1451
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1452
ArrayIterator<T_numtype2, N_rank2>,
1453
Multiply<typename P_expr1::T_numtype, T_numtype2 > > >
1454
operator*(_bz_ArrayExpr<P_expr1> d1,
1455
const Array<T_numtype2, N_rank2>& d2)
1457
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1458
ArrayIterator<T_numtype2, N_rank2>,
1459
Multiply<typename P_expr1::T_numtype, T_numtype2> >
1464
// _bz_ArrayExpr<P_expr1> * _bz_ArrayExpr<P_expr2>
1465
template<class P_expr1, class P_expr2>
1467
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1468
_bz_ArrayExpr<P_expr2>,
1469
Multiply<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
1470
operator*(_bz_ArrayExpr<P_expr1> d1,
1471
_bz_ArrayExpr<P_expr2> d2)
1473
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1474
_bz_ArrayExpr<P_expr2>,
1475
Multiply<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
1480
// _bz_ArrayExpr<P_expr1> * IndexPlaceholder<N_index2>
1481
template<class P_expr1, int N_index2>
1483
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1484
IndexPlaceholder<N_index2>,
1485
Multiply<typename P_expr1::T_numtype, int > > >
1486
operator*(_bz_ArrayExpr<P_expr1> d1,
1487
IndexPlaceholder<N_index2> d2)
1489
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1490
IndexPlaceholder<N_index2>,
1491
Multiply<typename P_expr1::T_numtype, int> >
1496
// _bz_ArrayExpr<P_expr1> * int
1497
template<class P_expr1>
1499
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1500
_bz_ArrayExprConstant<int>,
1501
Multiply<typename P_expr1::T_numtype, int > > >
1502
operator*(_bz_ArrayExpr<P_expr1> d1,
1505
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1506
_bz_ArrayExprConstant<int>,
1507
Multiply<typename P_expr1::T_numtype, int> >
1509
_bz_ArrayExprConstant<int>(d2));
1512
// _bz_ArrayExpr<P_expr1> * float
1513
template<class P_expr1>
1515
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1516
_bz_ArrayExprConstant<float>,
1517
Multiply<typename P_expr1::T_numtype, float > > >
1518
operator*(_bz_ArrayExpr<P_expr1> d1,
1521
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1522
_bz_ArrayExprConstant<float>,
1523
Multiply<typename P_expr1::T_numtype, float> >
1525
_bz_ArrayExprConstant<float>(d2));
1528
// _bz_ArrayExpr<P_expr1> * double
1529
template<class P_expr1>
1531
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1532
_bz_ArrayExprConstant<double>,
1533
Multiply<typename P_expr1::T_numtype, double > > >
1534
operator*(_bz_ArrayExpr<P_expr1> d1,
1537
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1538
_bz_ArrayExprConstant<double>,
1539
Multiply<typename P_expr1::T_numtype, double> >
1541
_bz_ArrayExprConstant<double>(d2));
1544
// _bz_ArrayExpr<P_expr1> * long double
1545
template<class P_expr1>
1547
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1548
_bz_ArrayExprConstant<long double>,
1549
Multiply<typename P_expr1::T_numtype, long double > > >
1550
operator*(_bz_ArrayExpr<P_expr1> d1,
1553
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1554
_bz_ArrayExprConstant<long double>,
1555
Multiply<typename P_expr1::T_numtype, long double> >
1557
_bz_ArrayExprConstant<long double>(d2));
1560
#ifdef BZ_HAVE_COMPLEX
1561
// _bz_ArrayExpr<P_expr1> * complex<T2>
1562
template<class P_expr1, class T2>
1564
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1565
_bz_ArrayExprConstant<complex<T2> > ,
1566
Multiply<typename P_expr1::T_numtype, complex<T2> > > >
1567
operator*(_bz_ArrayExpr<P_expr1> d1,
1570
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
1571
_bz_ArrayExprConstant<complex<T2> > ,
1572
Multiply<typename P_expr1::T_numtype, complex<T2> > >
1574
_bz_ArrayExprConstant<complex<T2> > (d2));
1576
#endif // BZ_HAVE_COMPLEX
1578
// IndexPlaceholder<N_index1> * Array<T_numtype2, N_rank2>
1579
template<int N_index1, class T_numtype2, int N_rank2>
1581
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1582
ArrayIterator<T_numtype2, N_rank2>,
1583
Multiply<int, T_numtype2 > > >
1584
operator*(IndexPlaceholder<N_index1> d1,
1585
const Array<T_numtype2, N_rank2>& d2)
1587
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1588
ArrayIterator<T_numtype2, N_rank2>,
1589
Multiply<int, T_numtype2> >
1594
// IndexPlaceholder<N_index1> * _bz_ArrayExpr<P_expr2>
1595
template<int N_index1, class P_expr2>
1597
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1598
_bz_ArrayExpr<P_expr2>,
1599
Multiply<int, typename P_expr2::T_numtype > > >
1600
operator*(IndexPlaceholder<N_index1> d1,
1601
_bz_ArrayExpr<P_expr2> d2)
1603
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1604
_bz_ArrayExpr<P_expr2>,
1605
Multiply<int, typename P_expr2::T_numtype> >
1610
// IndexPlaceholder<N_index1> * IndexPlaceholder<N_index2>
1611
template<int N_index1, int N_index2>
1613
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1614
IndexPlaceholder<N_index2>,
1615
Multiply<int, int > > >
1616
operator*(IndexPlaceholder<N_index1> d1,
1617
IndexPlaceholder<N_index2> d2)
1619
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1620
IndexPlaceholder<N_index2>,
1621
Multiply<int, int> >
1626
// IndexPlaceholder<N_index1> * int
1627
template<int N_index1>
1629
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1630
_bz_ArrayExprConstant<int>,
1631
Multiply<int, int > > >
1632
operator*(IndexPlaceholder<N_index1> d1,
1635
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1636
_bz_ArrayExprConstant<int>,
1637
Multiply<int, int> >
1639
_bz_ArrayExprConstant<int>(d2));
1642
// IndexPlaceholder<N_index1> * float
1643
template<int N_index1>
1645
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1646
_bz_ArrayExprConstant<float>,
1647
Multiply<int, float > > >
1648
operator*(IndexPlaceholder<N_index1> d1,
1651
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1652
_bz_ArrayExprConstant<float>,
1653
Multiply<int, float> >
1655
_bz_ArrayExprConstant<float>(d2));
1658
// IndexPlaceholder<N_index1> * double
1659
template<int N_index1>
1661
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1662
_bz_ArrayExprConstant<double>,
1663
Multiply<int, double > > >
1664
operator*(IndexPlaceholder<N_index1> d1,
1667
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1668
_bz_ArrayExprConstant<double>,
1669
Multiply<int, double> >
1671
_bz_ArrayExprConstant<double>(d2));
1674
// IndexPlaceholder<N_index1> * long double
1675
template<int N_index1>
1677
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1678
_bz_ArrayExprConstant<long double>,
1679
Multiply<int, long double > > >
1680
operator*(IndexPlaceholder<N_index1> d1,
1683
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1684
_bz_ArrayExprConstant<long double>,
1685
Multiply<int, long double> >
1687
_bz_ArrayExprConstant<long double>(d2));
1690
#ifdef BZ_HAVE_COMPLEX
1691
// IndexPlaceholder<N_index1> * complex<T2>
1692
template<int N_index1, class T2>
1694
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1695
_bz_ArrayExprConstant<complex<T2> > ,
1696
Multiply<int, complex<T2> > > >
1697
operator*(IndexPlaceholder<N_index1> d1,
1700
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
1701
_bz_ArrayExprConstant<complex<T2> > ,
1702
Multiply<int, complex<T2> > >
1704
_bz_ArrayExprConstant<complex<T2> > (d2));
1706
#endif // BZ_HAVE_COMPLEX
1708
// int * Array<T_numtype2, N_rank2>
1709
template<class T_numtype2, int N_rank2>
1711
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1712
ArrayIterator<T_numtype2, N_rank2>,
1713
Multiply<int, T_numtype2 > > >
1715
const Array<T_numtype2, N_rank2>& d2)
1717
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1718
ArrayIterator<T_numtype2, N_rank2>,
1719
Multiply<int, T_numtype2> >
1720
(_bz_ArrayExprConstant<int>(d1),
1724
// int * _bz_ArrayExpr<P_expr2>
1725
template<class P_expr2>
1727
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1728
_bz_ArrayExpr<P_expr2>,
1729
Multiply<int, typename P_expr2::T_numtype > > >
1731
_bz_ArrayExpr<P_expr2> d2)
1733
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1734
_bz_ArrayExpr<P_expr2>,
1735
Multiply<int, typename P_expr2::T_numtype> >
1736
(_bz_ArrayExprConstant<int>(d1),
1740
// int * IndexPlaceholder<N_index2>
1741
template<int N_index2>
1743
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1744
IndexPlaceholder<N_index2>,
1745
Multiply<int, int > > >
1747
IndexPlaceholder<N_index2> d2)
1749
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
1750
IndexPlaceholder<N_index2>,
1751
Multiply<int, int> >
1752
(_bz_ArrayExprConstant<int>(d1),
1756
// float * Array<T_numtype2, N_rank2>
1757
template<class T_numtype2, int N_rank2>
1759
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1760
ArrayIterator<T_numtype2, N_rank2>,
1761
Multiply<float, T_numtype2 > > >
1763
const Array<T_numtype2, N_rank2>& d2)
1765
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1766
ArrayIterator<T_numtype2, N_rank2>,
1767
Multiply<float, T_numtype2> >
1768
(_bz_ArrayExprConstant<float>(d1),
1772
// float * _bz_ArrayExpr<P_expr2>
1773
template<class P_expr2>
1775
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1776
_bz_ArrayExpr<P_expr2>,
1777
Multiply<float, typename P_expr2::T_numtype > > >
1779
_bz_ArrayExpr<P_expr2> d2)
1781
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1782
_bz_ArrayExpr<P_expr2>,
1783
Multiply<float, typename P_expr2::T_numtype> >
1784
(_bz_ArrayExprConstant<float>(d1),
1788
// float * IndexPlaceholder<N_index2>
1789
template<int N_index2>
1791
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1792
IndexPlaceholder<N_index2>,
1793
Multiply<float, int > > >
1795
IndexPlaceholder<N_index2> d2)
1797
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
1798
IndexPlaceholder<N_index2>,
1799
Multiply<float, int> >
1800
(_bz_ArrayExprConstant<float>(d1),
1804
// double * Array<T_numtype2, N_rank2>
1805
template<class T_numtype2, int N_rank2>
1807
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1808
ArrayIterator<T_numtype2, N_rank2>,
1809
Multiply<double, T_numtype2 > > >
1810
operator*(double d1,
1811
const Array<T_numtype2, N_rank2>& d2)
1813
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1814
ArrayIterator<T_numtype2, N_rank2>,
1815
Multiply<double, T_numtype2> >
1816
(_bz_ArrayExprConstant<double>(d1),
1820
// double * _bz_ArrayExpr<P_expr2>
1821
template<class P_expr2>
1823
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1824
_bz_ArrayExpr<P_expr2>,
1825
Multiply<double, typename P_expr2::T_numtype > > >
1826
operator*(double d1,
1827
_bz_ArrayExpr<P_expr2> d2)
1829
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1830
_bz_ArrayExpr<P_expr2>,
1831
Multiply<double, typename P_expr2::T_numtype> >
1832
(_bz_ArrayExprConstant<double>(d1),
1836
// double * IndexPlaceholder<N_index2>
1837
template<int N_index2>
1839
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1840
IndexPlaceholder<N_index2>,
1841
Multiply<double, int > > >
1842
operator*(double d1,
1843
IndexPlaceholder<N_index2> d2)
1845
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
1846
IndexPlaceholder<N_index2>,
1847
Multiply<double, int> >
1848
(_bz_ArrayExprConstant<double>(d1),
1852
// long double * Array<T_numtype2, N_rank2>
1853
template<class T_numtype2, int N_rank2>
1855
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1856
ArrayIterator<T_numtype2, N_rank2>,
1857
Multiply<long double, T_numtype2 > > >
1858
operator*(long double d1,
1859
const Array<T_numtype2, N_rank2>& d2)
1861
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1862
ArrayIterator<T_numtype2, N_rank2>,
1863
Multiply<long double, T_numtype2> >
1864
(_bz_ArrayExprConstant<long double>(d1),
1868
// long double * _bz_ArrayExpr<P_expr2>
1869
template<class P_expr2>
1871
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1872
_bz_ArrayExpr<P_expr2>,
1873
Multiply<long double, typename P_expr2::T_numtype > > >
1874
operator*(long double d1,
1875
_bz_ArrayExpr<P_expr2> d2)
1877
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1878
_bz_ArrayExpr<P_expr2>,
1879
Multiply<long double, typename P_expr2::T_numtype> >
1880
(_bz_ArrayExprConstant<long double>(d1),
1884
// long double * IndexPlaceholder<N_index2>
1885
template<int N_index2>
1887
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1888
IndexPlaceholder<N_index2>,
1889
Multiply<long double, int > > >
1890
operator*(long double d1,
1891
IndexPlaceholder<N_index2> d2)
1893
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
1894
IndexPlaceholder<N_index2>,
1895
Multiply<long double, int> >
1896
(_bz_ArrayExprConstant<long double>(d1),
1900
#ifdef BZ_HAVE_COMPLEX
1901
// complex<T1> * Array<T_numtype2, N_rank2>
1902
template<class T1, class T_numtype2, int N_rank2>
1904
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1905
ArrayIterator<T_numtype2, N_rank2>,
1906
Multiply<complex<T1> , T_numtype2 > > >
1907
operator*(complex<T1> d1,
1908
const Array<T_numtype2, N_rank2>& d2)
1910
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1911
ArrayIterator<T_numtype2, N_rank2>,
1912
Multiply<complex<T1> , T_numtype2> >
1913
(_bz_ArrayExprConstant<complex<T1> > (d1),
1916
#endif // BZ_HAVE_COMPLEX
1918
#ifdef BZ_HAVE_COMPLEX
1919
// complex<T1> * _bz_ArrayExpr<P_expr2>
1920
template<class T1, class P_expr2>
1922
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1923
_bz_ArrayExpr<P_expr2>,
1924
Multiply<complex<T1> , typename P_expr2::T_numtype > > >
1925
operator*(complex<T1> d1,
1926
_bz_ArrayExpr<P_expr2> d2)
1928
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1929
_bz_ArrayExpr<P_expr2>,
1930
Multiply<complex<T1> , typename P_expr2::T_numtype> >
1931
(_bz_ArrayExprConstant<complex<T1> > (d1),
1934
#endif // BZ_HAVE_COMPLEX
1936
#ifdef BZ_HAVE_COMPLEX
1937
// complex<T1> * IndexPlaceholder<N_index2>
1938
template<class T1, int N_index2>
1940
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1941
IndexPlaceholder<N_index2>,
1942
Multiply<complex<T1> , int > > >
1943
operator*(complex<T1> d1,
1944
IndexPlaceholder<N_index2> d2)
1946
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
1947
IndexPlaceholder<N_index2>,
1948
Multiply<complex<T1> , int> >
1949
(_bz_ArrayExprConstant<complex<T1> > (d1),
1952
#endif // BZ_HAVE_COMPLEX
1953
/****************************************************************************
1954
* Division Operators
1955
****************************************************************************/
1957
// Array<T_numtype1, N_rank1> / Array<T_numtype2, N_rank2>
1958
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
1960
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1961
ArrayIterator<T_numtype2, N_rank2>,
1962
Divide<T_numtype1, T_numtype2 > > >
1963
operator/(const Array<T_numtype1, N_rank1>& d1,
1964
const Array<T_numtype2, N_rank2>& d2)
1966
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1967
ArrayIterator<T_numtype2, N_rank2>,
1968
Divide<T_numtype1, T_numtype2> >
1973
// Array<T_numtype1, N_rank1> / _bz_ArrayExpr<P_expr2>
1974
template<class T_numtype1, int N_rank1, class P_expr2>
1976
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1977
_bz_ArrayExpr<P_expr2>,
1978
Divide<T_numtype1, typename P_expr2::T_numtype > > >
1979
operator/(const Array<T_numtype1, N_rank1>& d1,
1980
_bz_ArrayExpr<P_expr2> d2)
1982
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1983
_bz_ArrayExpr<P_expr2>,
1984
Divide<T_numtype1, typename P_expr2::T_numtype> >
1989
// Array<T_numtype1, N_rank1> / IndexPlaceholder<N_index2>
1990
template<class T_numtype1, int N_rank1, int N_index2>
1992
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1993
IndexPlaceholder<N_index2>,
1994
Divide<T_numtype1, int > > >
1995
operator/(const Array<T_numtype1, N_rank1>& d1,
1996
IndexPlaceholder<N_index2> d2)
1998
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
1999
IndexPlaceholder<N_index2>,
2000
Divide<T_numtype1, int> >
2005
// Array<T_numtype1, N_rank1> / int
2006
template<class T_numtype1, int N_rank1>
2008
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2009
_bz_ArrayExprConstant<int>,
2010
Divide<T_numtype1, int > > >
2011
operator/(const Array<T_numtype1, N_rank1>& d1,
2014
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2015
_bz_ArrayExprConstant<int>,
2016
Divide<T_numtype1, int> >
2018
_bz_ArrayExprConstant<int>(d2));
2021
// Array<T_numtype1, N_rank1> / float
2022
template<class T_numtype1, int N_rank1>
2024
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2025
_bz_ArrayExprConstant<float>,
2026
Divide<T_numtype1, float > > >
2027
operator/(const Array<T_numtype1, N_rank1>& d1,
2030
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2031
_bz_ArrayExprConstant<float>,
2032
Divide<T_numtype1, float> >
2034
_bz_ArrayExprConstant<float>(d2));
2037
// Array<T_numtype1, N_rank1> / double
2038
template<class T_numtype1, int N_rank1>
2040
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2041
_bz_ArrayExprConstant<double>,
2042
Divide<T_numtype1, double > > >
2043
operator/(const Array<T_numtype1, N_rank1>& d1,
2046
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2047
_bz_ArrayExprConstant<double>,
2048
Divide<T_numtype1, double> >
2050
_bz_ArrayExprConstant<double>(d2));
2053
// Array<T_numtype1, N_rank1> / long double
2054
template<class T_numtype1, int N_rank1>
2056
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2057
_bz_ArrayExprConstant<long double>,
2058
Divide<T_numtype1, long double > > >
2059
operator/(const Array<T_numtype1, N_rank1>& d1,
2062
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2063
_bz_ArrayExprConstant<long double>,
2064
Divide<T_numtype1, long double> >
2066
_bz_ArrayExprConstant<long double>(d2));
2069
#ifdef BZ_HAVE_COMPLEX
2070
// Array<T_numtype1, N_rank1> / complex<T2>
2071
template<class T_numtype1, int N_rank1, class T2>
2073
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2074
_bz_ArrayExprConstant<complex<T2> > ,
2075
Divide<T_numtype1, complex<T2> > > >
2076
operator/(const Array<T_numtype1, N_rank1>& d1,
2079
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2080
_bz_ArrayExprConstant<complex<T2> > ,
2081
Divide<T_numtype1, complex<T2> > >
2083
_bz_ArrayExprConstant<complex<T2> > (d2));
2085
#endif // BZ_HAVE_COMPLEX
2087
// _bz_ArrayExpr<P_expr1> / Array<T_numtype2, N_rank2>
2088
template<class P_expr1, class T_numtype2, int N_rank2>
2090
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2091
ArrayIterator<T_numtype2, N_rank2>,
2092
Divide<typename P_expr1::T_numtype, T_numtype2 > > >
2093
operator/(_bz_ArrayExpr<P_expr1> d1,
2094
const Array<T_numtype2, N_rank2>& d2)
2096
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2097
ArrayIterator<T_numtype2, N_rank2>,
2098
Divide<typename P_expr1::T_numtype, T_numtype2> >
2103
// _bz_ArrayExpr<P_expr1> / _bz_ArrayExpr<P_expr2>
2104
template<class P_expr1, class P_expr2>
2106
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2107
_bz_ArrayExpr<P_expr2>,
2108
Divide<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
2109
operator/(_bz_ArrayExpr<P_expr1> d1,
2110
_bz_ArrayExpr<P_expr2> d2)
2112
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2113
_bz_ArrayExpr<P_expr2>,
2114
Divide<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
2119
// _bz_ArrayExpr<P_expr1> / IndexPlaceholder<N_index2>
2120
template<class P_expr1, int N_index2>
2122
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2123
IndexPlaceholder<N_index2>,
2124
Divide<typename P_expr1::T_numtype, int > > >
2125
operator/(_bz_ArrayExpr<P_expr1> d1,
2126
IndexPlaceholder<N_index2> d2)
2128
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2129
IndexPlaceholder<N_index2>,
2130
Divide<typename P_expr1::T_numtype, int> >
2135
// _bz_ArrayExpr<P_expr1> / int
2136
template<class P_expr1>
2138
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2139
_bz_ArrayExprConstant<int>,
2140
Divide<typename P_expr1::T_numtype, int > > >
2141
operator/(_bz_ArrayExpr<P_expr1> d1,
2144
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2145
_bz_ArrayExprConstant<int>,
2146
Divide<typename P_expr1::T_numtype, int> >
2148
_bz_ArrayExprConstant<int>(d2));
2151
// _bz_ArrayExpr<P_expr1> / float
2152
template<class P_expr1>
2154
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2155
_bz_ArrayExprConstant<float>,
2156
Divide<typename P_expr1::T_numtype, float > > >
2157
operator/(_bz_ArrayExpr<P_expr1> d1,
2160
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2161
_bz_ArrayExprConstant<float>,
2162
Divide<typename P_expr1::T_numtype, float> >
2164
_bz_ArrayExprConstant<float>(d2));
2167
// _bz_ArrayExpr<P_expr1> / double
2168
template<class P_expr1>
2170
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2171
_bz_ArrayExprConstant<double>,
2172
Divide<typename P_expr1::T_numtype, double > > >
2173
operator/(_bz_ArrayExpr<P_expr1> d1,
2176
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2177
_bz_ArrayExprConstant<double>,
2178
Divide<typename P_expr1::T_numtype, double> >
2180
_bz_ArrayExprConstant<double>(d2));
2183
// _bz_ArrayExpr<P_expr1> / long double
2184
template<class P_expr1>
2186
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2187
_bz_ArrayExprConstant<long double>,
2188
Divide<typename P_expr1::T_numtype, long double > > >
2189
operator/(_bz_ArrayExpr<P_expr1> d1,
2192
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2193
_bz_ArrayExprConstant<long double>,
2194
Divide<typename P_expr1::T_numtype, long double> >
2196
_bz_ArrayExprConstant<long double>(d2));
2199
#ifdef BZ_HAVE_COMPLEX
2200
// _bz_ArrayExpr<P_expr1> / complex<T2>
2201
template<class P_expr1, class T2>
2203
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2204
_bz_ArrayExprConstant<complex<T2> > ,
2205
Divide<typename P_expr1::T_numtype, complex<T2> > > >
2206
operator/(_bz_ArrayExpr<P_expr1> d1,
2209
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2210
_bz_ArrayExprConstant<complex<T2> > ,
2211
Divide<typename P_expr1::T_numtype, complex<T2> > >
2213
_bz_ArrayExprConstant<complex<T2> > (d2));
2215
#endif // BZ_HAVE_COMPLEX
2217
// IndexPlaceholder<N_index1> / Array<T_numtype2, N_rank2>
2218
template<int N_index1, class T_numtype2, int N_rank2>
2220
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2221
ArrayIterator<T_numtype2, N_rank2>,
2222
Divide<int, T_numtype2 > > >
2223
operator/(IndexPlaceholder<N_index1> d1,
2224
const Array<T_numtype2, N_rank2>& d2)
2226
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2227
ArrayIterator<T_numtype2, N_rank2>,
2228
Divide<int, T_numtype2> >
2233
// IndexPlaceholder<N_index1> / _bz_ArrayExpr<P_expr2>
2234
template<int N_index1, class P_expr2>
2236
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2237
_bz_ArrayExpr<P_expr2>,
2238
Divide<int, typename P_expr2::T_numtype > > >
2239
operator/(IndexPlaceholder<N_index1> d1,
2240
_bz_ArrayExpr<P_expr2> d2)
2242
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2243
_bz_ArrayExpr<P_expr2>,
2244
Divide<int, typename P_expr2::T_numtype> >
2249
// IndexPlaceholder<N_index1> / IndexPlaceholder<N_index2>
2250
template<int N_index1, int N_index2>
2252
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2253
IndexPlaceholder<N_index2>,
2254
Divide<int, int > > >
2255
operator/(IndexPlaceholder<N_index1> d1,
2256
IndexPlaceholder<N_index2> d2)
2258
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2259
IndexPlaceholder<N_index2>,
2265
// IndexPlaceholder<N_index1> / int
2266
template<int N_index1>
2268
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2269
_bz_ArrayExprConstant<int>,
2270
Divide<int, int > > >
2271
operator/(IndexPlaceholder<N_index1> d1,
2274
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2275
_bz_ArrayExprConstant<int>,
2278
_bz_ArrayExprConstant<int>(d2));
2281
// IndexPlaceholder<N_index1> / float
2282
template<int N_index1>
2284
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2285
_bz_ArrayExprConstant<float>,
2286
Divide<int, float > > >
2287
operator/(IndexPlaceholder<N_index1> d1,
2290
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2291
_bz_ArrayExprConstant<float>,
2292
Divide<int, float> >
2294
_bz_ArrayExprConstant<float>(d2));
2297
// IndexPlaceholder<N_index1> / double
2298
template<int N_index1>
2300
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2301
_bz_ArrayExprConstant<double>,
2302
Divide<int, double > > >
2303
operator/(IndexPlaceholder<N_index1> d1,
2306
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2307
_bz_ArrayExprConstant<double>,
2308
Divide<int, double> >
2310
_bz_ArrayExprConstant<double>(d2));
2313
// IndexPlaceholder<N_index1> / long double
2314
template<int N_index1>
2316
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2317
_bz_ArrayExprConstant<long double>,
2318
Divide<int, long double > > >
2319
operator/(IndexPlaceholder<N_index1> d1,
2322
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2323
_bz_ArrayExprConstant<long double>,
2324
Divide<int, long double> >
2326
_bz_ArrayExprConstant<long double>(d2));
2329
#ifdef BZ_HAVE_COMPLEX
2330
// IndexPlaceholder<N_index1> / complex<T2>
2331
template<int N_index1, class T2>
2333
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2334
_bz_ArrayExprConstant<complex<T2> > ,
2335
Divide<int, complex<T2> > > >
2336
operator/(IndexPlaceholder<N_index1> d1,
2339
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2340
_bz_ArrayExprConstant<complex<T2> > ,
2341
Divide<int, complex<T2> > >
2343
_bz_ArrayExprConstant<complex<T2> > (d2));
2345
#endif // BZ_HAVE_COMPLEX
2347
// int / Array<T_numtype2, N_rank2>
2348
template<class T_numtype2, int N_rank2>
2350
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2351
ArrayIterator<T_numtype2, N_rank2>,
2352
Divide<int, T_numtype2 > > >
2354
const Array<T_numtype2, N_rank2>& d2)
2356
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2357
ArrayIterator<T_numtype2, N_rank2>,
2358
Divide<int, T_numtype2> >
2359
(_bz_ArrayExprConstant<int>(d1),
2363
// int / _bz_ArrayExpr<P_expr2>
2364
template<class P_expr2>
2366
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2367
_bz_ArrayExpr<P_expr2>,
2368
Divide<int, typename P_expr2::T_numtype > > >
2370
_bz_ArrayExpr<P_expr2> d2)
2372
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2373
_bz_ArrayExpr<P_expr2>,
2374
Divide<int, typename P_expr2::T_numtype> >
2375
(_bz_ArrayExprConstant<int>(d1),
2379
// int / IndexPlaceholder<N_index2>
2380
template<int N_index2>
2382
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2383
IndexPlaceholder<N_index2>,
2384
Divide<int, int > > >
2386
IndexPlaceholder<N_index2> d2)
2388
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2389
IndexPlaceholder<N_index2>,
2391
(_bz_ArrayExprConstant<int>(d1),
2395
// float / Array<T_numtype2, N_rank2>
2396
template<class T_numtype2, int N_rank2>
2398
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
2399
ArrayIterator<T_numtype2, N_rank2>,
2400
Divide<float, T_numtype2 > > >
2402
const Array<T_numtype2, N_rank2>& d2)
2404
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
2405
ArrayIterator<T_numtype2, N_rank2>,
2406
Divide<float, T_numtype2> >
2407
(_bz_ArrayExprConstant<float>(d1),
2411
// float / _bz_ArrayExpr<P_expr2>
2412
template<class P_expr2>
2414
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
2415
_bz_ArrayExpr<P_expr2>,
2416
Divide<float, typename P_expr2::T_numtype > > >
2418
_bz_ArrayExpr<P_expr2> d2)
2420
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
2421
_bz_ArrayExpr<P_expr2>,
2422
Divide<float, typename P_expr2::T_numtype> >
2423
(_bz_ArrayExprConstant<float>(d1),
2427
// float / IndexPlaceholder<N_index2>
2428
template<int N_index2>
2430
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
2431
IndexPlaceholder<N_index2>,
2432
Divide<float, int > > >
2434
IndexPlaceholder<N_index2> d2)
2436
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
2437
IndexPlaceholder<N_index2>,
2438
Divide<float, int> >
2439
(_bz_ArrayExprConstant<float>(d1),
2443
// double / Array<T_numtype2, N_rank2>
2444
template<class T_numtype2, int N_rank2>
2446
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
2447
ArrayIterator<T_numtype2, N_rank2>,
2448
Divide<double, T_numtype2 > > >
2449
operator/(double d1,
2450
const Array<T_numtype2, N_rank2>& d2)
2452
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
2453
ArrayIterator<T_numtype2, N_rank2>,
2454
Divide<double, T_numtype2> >
2455
(_bz_ArrayExprConstant<double>(d1),
2459
// double / _bz_ArrayExpr<P_expr2>
2460
template<class P_expr2>
2462
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
2463
_bz_ArrayExpr<P_expr2>,
2464
Divide<double, typename P_expr2::T_numtype > > >
2465
operator/(double d1,
2466
_bz_ArrayExpr<P_expr2> d2)
2468
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
2469
_bz_ArrayExpr<P_expr2>,
2470
Divide<double, typename P_expr2::T_numtype> >
2471
(_bz_ArrayExprConstant<double>(d1),
2475
// double / IndexPlaceholder<N_index2>
2476
template<int N_index2>
2478
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
2479
IndexPlaceholder<N_index2>,
2480
Divide<double, int > > >
2481
operator/(double d1,
2482
IndexPlaceholder<N_index2> d2)
2484
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
2485
IndexPlaceholder<N_index2>,
2486
Divide<double, int> >
2487
(_bz_ArrayExprConstant<double>(d1),
2491
// long double / Array<T_numtype2, N_rank2>
2492
template<class T_numtype2, int N_rank2>
2494
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
2495
ArrayIterator<T_numtype2, N_rank2>,
2496
Divide<long double, T_numtype2 > > >
2497
operator/(long double d1,
2498
const Array<T_numtype2, N_rank2>& d2)
2500
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
2501
ArrayIterator<T_numtype2, N_rank2>,
2502
Divide<long double, T_numtype2> >
2503
(_bz_ArrayExprConstant<long double>(d1),
2507
// long double / _bz_ArrayExpr<P_expr2>
2508
template<class P_expr2>
2510
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
2511
_bz_ArrayExpr<P_expr2>,
2512
Divide<long double, typename P_expr2::T_numtype > > >
2513
operator/(long double d1,
2514
_bz_ArrayExpr<P_expr2> d2)
2516
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
2517
_bz_ArrayExpr<P_expr2>,
2518
Divide<long double, typename P_expr2::T_numtype> >
2519
(_bz_ArrayExprConstant<long double>(d1),
2523
// long double / IndexPlaceholder<N_index2>
2524
template<int N_index2>
2526
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
2527
IndexPlaceholder<N_index2>,
2528
Divide<long double, int > > >
2529
operator/(long double d1,
2530
IndexPlaceholder<N_index2> d2)
2532
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
2533
IndexPlaceholder<N_index2>,
2534
Divide<long double, int> >
2535
(_bz_ArrayExprConstant<long double>(d1),
2539
#ifdef BZ_HAVE_COMPLEX
2540
// complex<T1> / Array<T_numtype2, N_rank2>
2541
template<class T1, class T_numtype2, int N_rank2>
2543
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
2544
ArrayIterator<T_numtype2, N_rank2>,
2545
Divide<complex<T1> , T_numtype2 > > >
2546
operator/(complex<T1> d1,
2547
const Array<T_numtype2, N_rank2>& d2)
2549
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
2550
ArrayIterator<T_numtype2, N_rank2>,
2551
Divide<complex<T1> , T_numtype2> >
2552
(_bz_ArrayExprConstant<complex<T1> > (d1),
2555
#endif // BZ_HAVE_COMPLEX
2557
#ifdef BZ_HAVE_COMPLEX
2558
// complex<T1> / _bz_ArrayExpr<P_expr2>
2559
template<class T1, class P_expr2>
2561
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
2562
_bz_ArrayExpr<P_expr2>,
2563
Divide<complex<T1> , typename P_expr2::T_numtype > > >
2564
operator/(complex<T1> d1,
2565
_bz_ArrayExpr<P_expr2> d2)
2567
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
2568
_bz_ArrayExpr<P_expr2>,
2569
Divide<complex<T1> , typename P_expr2::T_numtype> >
2570
(_bz_ArrayExprConstant<complex<T1> > (d1),
2573
#endif // BZ_HAVE_COMPLEX
2575
#ifdef BZ_HAVE_COMPLEX
2576
// complex<T1> / IndexPlaceholder<N_index2>
2577
template<class T1, int N_index2>
2579
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
2580
IndexPlaceholder<N_index2>,
2581
Divide<complex<T1> , int > > >
2582
operator/(complex<T1> d1,
2583
IndexPlaceholder<N_index2> d2)
2585
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
2586
IndexPlaceholder<N_index2>,
2587
Divide<complex<T1> , int> >
2588
(_bz_ArrayExprConstant<complex<T1> > (d1),
2591
#endif // BZ_HAVE_COMPLEX
2592
/****************************************************************************
2594
****************************************************************************/
2596
// Array<T_numtype1, N_rank1> % Array<T_numtype2, N_rank2>
2597
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
2599
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2600
ArrayIterator<T_numtype2, N_rank2>,
2601
Modulo<T_numtype1, T_numtype2 > > >
2602
operator%(const Array<T_numtype1, N_rank1>& d1,
2603
const Array<T_numtype2, N_rank2>& d2)
2605
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2606
ArrayIterator<T_numtype2, N_rank2>,
2607
Modulo<T_numtype1, T_numtype2> >
2612
// Array<T_numtype1, N_rank1> % _bz_ArrayExpr<P_expr2>
2613
template<class T_numtype1, int N_rank1, class P_expr2>
2615
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2616
_bz_ArrayExpr<P_expr2>,
2617
Modulo<T_numtype1, typename P_expr2::T_numtype > > >
2618
operator%(const Array<T_numtype1, N_rank1>& d1,
2619
_bz_ArrayExpr<P_expr2> d2)
2621
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2622
_bz_ArrayExpr<P_expr2>,
2623
Modulo<T_numtype1, typename P_expr2::T_numtype> >
2628
// Array<T_numtype1, N_rank1> % IndexPlaceholder<N_index2>
2629
template<class T_numtype1, int N_rank1, int N_index2>
2631
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2632
IndexPlaceholder<N_index2>,
2633
Modulo<T_numtype1, int > > >
2634
operator%(const Array<T_numtype1, N_rank1>& d1,
2635
IndexPlaceholder<N_index2> d2)
2637
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2638
IndexPlaceholder<N_index2>,
2639
Modulo<T_numtype1, int> >
2644
// Array<T_numtype1, N_rank1> % int
2645
template<class T_numtype1, int N_rank1>
2647
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2648
_bz_ArrayExprConstant<int>,
2649
Modulo<T_numtype1, int > > >
2650
operator%(const Array<T_numtype1, N_rank1>& d1,
2653
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2654
_bz_ArrayExprConstant<int>,
2655
Modulo<T_numtype1, int> >
2657
_bz_ArrayExprConstant<int>(d2));
2660
// _bz_ArrayExpr<P_expr1> % Array<T_numtype2, N_rank2>
2661
template<class P_expr1, class T_numtype2, int N_rank2>
2663
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2664
ArrayIterator<T_numtype2, N_rank2>,
2665
Modulo<typename P_expr1::T_numtype, T_numtype2 > > >
2666
operator%(_bz_ArrayExpr<P_expr1> d1,
2667
const Array<T_numtype2, N_rank2>& d2)
2669
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2670
ArrayIterator<T_numtype2, N_rank2>,
2671
Modulo<typename P_expr1::T_numtype, T_numtype2> >
2676
// _bz_ArrayExpr<P_expr1> % _bz_ArrayExpr<P_expr2>
2677
template<class P_expr1, class P_expr2>
2679
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2680
_bz_ArrayExpr<P_expr2>,
2681
Modulo<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
2682
operator%(_bz_ArrayExpr<P_expr1> d1,
2683
_bz_ArrayExpr<P_expr2> d2)
2685
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2686
_bz_ArrayExpr<P_expr2>,
2687
Modulo<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
2692
// _bz_ArrayExpr<P_expr1> % IndexPlaceholder<N_index2>
2693
template<class P_expr1, int N_index2>
2695
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2696
IndexPlaceholder<N_index2>,
2697
Modulo<typename P_expr1::T_numtype, int > > >
2698
operator%(_bz_ArrayExpr<P_expr1> d1,
2699
IndexPlaceholder<N_index2> d2)
2701
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2702
IndexPlaceholder<N_index2>,
2703
Modulo<typename P_expr1::T_numtype, int> >
2708
// _bz_ArrayExpr<P_expr1> % int
2709
template<class P_expr1>
2711
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2712
_bz_ArrayExprConstant<int>,
2713
Modulo<typename P_expr1::T_numtype, int > > >
2714
operator%(_bz_ArrayExpr<P_expr1> d1,
2717
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2718
_bz_ArrayExprConstant<int>,
2719
Modulo<typename P_expr1::T_numtype, int> >
2721
_bz_ArrayExprConstant<int>(d2));
2724
// IndexPlaceholder<N_index1> % Array<T_numtype2, N_rank2>
2725
template<int N_index1, class T_numtype2, int N_rank2>
2727
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2728
ArrayIterator<T_numtype2, N_rank2>,
2729
Modulo<int, T_numtype2 > > >
2730
operator%(IndexPlaceholder<N_index1> d1,
2731
const Array<T_numtype2, N_rank2>& d2)
2733
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2734
ArrayIterator<T_numtype2, N_rank2>,
2735
Modulo<int, T_numtype2> >
2740
// IndexPlaceholder<N_index1> % _bz_ArrayExpr<P_expr2>
2741
template<int N_index1, class P_expr2>
2743
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2744
_bz_ArrayExpr<P_expr2>,
2745
Modulo<int, typename P_expr2::T_numtype > > >
2746
operator%(IndexPlaceholder<N_index1> d1,
2747
_bz_ArrayExpr<P_expr2> d2)
2749
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2750
_bz_ArrayExpr<P_expr2>,
2751
Modulo<int, typename P_expr2::T_numtype> >
2756
// IndexPlaceholder<N_index1> % IndexPlaceholder<N_index2>
2757
template<int N_index1, int N_index2>
2759
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2760
IndexPlaceholder<N_index2>,
2761
Modulo<int, int > > >
2762
operator%(IndexPlaceholder<N_index1> d1,
2763
IndexPlaceholder<N_index2> d2)
2765
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2766
IndexPlaceholder<N_index2>,
2772
// IndexPlaceholder<N_index1> % int
2773
template<int N_index1>
2775
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2776
_bz_ArrayExprConstant<int>,
2777
Modulo<int, int > > >
2778
operator%(IndexPlaceholder<N_index1> d1,
2781
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
2782
_bz_ArrayExprConstant<int>,
2785
_bz_ArrayExprConstant<int>(d2));
2788
// int % Array<T_numtype2, N_rank2>
2789
template<class T_numtype2, int N_rank2>
2791
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2792
ArrayIterator<T_numtype2, N_rank2>,
2793
Modulo<int, T_numtype2 > > >
2795
const Array<T_numtype2, N_rank2>& d2)
2797
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2798
ArrayIterator<T_numtype2, N_rank2>,
2799
Modulo<int, T_numtype2> >
2800
(_bz_ArrayExprConstant<int>(d1),
2804
// int % _bz_ArrayExpr<P_expr2>
2805
template<class P_expr2>
2807
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2808
_bz_ArrayExpr<P_expr2>,
2809
Modulo<int, typename P_expr2::T_numtype > > >
2811
_bz_ArrayExpr<P_expr2> d2)
2813
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2814
_bz_ArrayExpr<P_expr2>,
2815
Modulo<int, typename P_expr2::T_numtype> >
2816
(_bz_ArrayExprConstant<int>(d1),
2820
// int % IndexPlaceholder<N_index2>
2821
template<int N_index2>
2823
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2824
IndexPlaceholder<N_index2>,
2825
Modulo<int, int > > >
2827
IndexPlaceholder<N_index2> d2)
2829
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
2830
IndexPlaceholder<N_index2>,
2832
(_bz_ArrayExprConstant<int>(d1),
2835
/****************************************************************************
2836
* Greater-than Operators
2837
****************************************************************************/
2839
// Array<T_numtype1, N_rank1> > Array<T_numtype2, N_rank2>
2840
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
2842
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2843
ArrayIterator<T_numtype2, N_rank2>,
2844
Greater<T_numtype1, T_numtype2 > > >
2845
operator>(const Array<T_numtype1, N_rank1>& d1,
2846
const Array<T_numtype2, N_rank2>& d2)
2848
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2849
ArrayIterator<T_numtype2, N_rank2>,
2850
Greater<T_numtype1, T_numtype2> >
2855
// Array<T_numtype1, N_rank1> > _bz_ArrayExpr<P_expr2>
2856
template<class T_numtype1, int N_rank1, class P_expr2>
2858
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2859
_bz_ArrayExpr<P_expr2>,
2860
Greater<T_numtype1, typename P_expr2::T_numtype > > >
2861
operator>(const Array<T_numtype1, N_rank1>& d1,
2862
_bz_ArrayExpr<P_expr2> d2)
2864
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2865
_bz_ArrayExpr<P_expr2>,
2866
Greater<T_numtype1, typename P_expr2::T_numtype> >
2871
// Array<T_numtype1, N_rank1> > IndexPlaceholder<N_index2>
2872
template<class T_numtype1, int N_rank1, int N_index2>
2874
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2875
IndexPlaceholder<N_index2>,
2876
Greater<T_numtype1, int > > >
2877
operator>(const Array<T_numtype1, N_rank1>& d1,
2878
IndexPlaceholder<N_index2> d2)
2880
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2881
IndexPlaceholder<N_index2>,
2882
Greater<T_numtype1, int> >
2887
// Array<T_numtype1, N_rank1> > int
2888
template<class T_numtype1, int N_rank1>
2890
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2891
_bz_ArrayExprConstant<int>,
2892
Greater<T_numtype1, int > > >
2893
operator>(const Array<T_numtype1, N_rank1>& d1,
2896
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2897
_bz_ArrayExprConstant<int>,
2898
Greater<T_numtype1, int> >
2900
_bz_ArrayExprConstant<int>(d2));
2903
// Array<T_numtype1, N_rank1> > float
2904
template<class T_numtype1, int N_rank1>
2906
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2907
_bz_ArrayExprConstant<float>,
2908
Greater<T_numtype1, float > > >
2909
operator>(const Array<T_numtype1, N_rank1>& d1,
2912
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2913
_bz_ArrayExprConstant<float>,
2914
Greater<T_numtype1, float> >
2916
_bz_ArrayExprConstant<float>(d2));
2919
// Array<T_numtype1, N_rank1> > double
2920
template<class T_numtype1, int N_rank1>
2922
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2923
_bz_ArrayExprConstant<double>,
2924
Greater<T_numtype1, double > > >
2925
operator>(const Array<T_numtype1, N_rank1>& d1,
2928
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2929
_bz_ArrayExprConstant<double>,
2930
Greater<T_numtype1, double> >
2932
_bz_ArrayExprConstant<double>(d2));
2935
// Array<T_numtype1, N_rank1> > long double
2936
template<class T_numtype1, int N_rank1>
2938
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2939
_bz_ArrayExprConstant<long double>,
2940
Greater<T_numtype1, long double > > >
2941
operator>(const Array<T_numtype1, N_rank1>& d1,
2944
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2945
_bz_ArrayExprConstant<long double>,
2946
Greater<T_numtype1, long double> >
2948
_bz_ArrayExprConstant<long double>(d2));
2951
#ifdef BZ_HAVE_COMPLEX
2952
// Array<T_numtype1, N_rank1> > complex<T2>
2953
template<class T_numtype1, int N_rank1, class T2>
2955
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2956
_bz_ArrayExprConstant<complex<T2> > ,
2957
Greater<T_numtype1, complex<T2> > > >
2958
operator>(const Array<T_numtype1, N_rank1>& d1,
2961
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
2962
_bz_ArrayExprConstant<complex<T2> > ,
2963
Greater<T_numtype1, complex<T2> > >
2965
_bz_ArrayExprConstant<complex<T2> > (d2));
2967
#endif // BZ_HAVE_COMPLEX
2969
// _bz_ArrayExpr<P_expr1> > Array<T_numtype2, N_rank2>
2970
template<class P_expr1, class T_numtype2, int N_rank2>
2972
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2973
ArrayIterator<T_numtype2, N_rank2>,
2974
Greater<typename P_expr1::T_numtype, T_numtype2 > > >
2975
operator>(_bz_ArrayExpr<P_expr1> d1,
2976
const Array<T_numtype2, N_rank2>& d2)
2978
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2979
ArrayIterator<T_numtype2, N_rank2>,
2980
Greater<typename P_expr1::T_numtype, T_numtype2> >
2985
// _bz_ArrayExpr<P_expr1> > _bz_ArrayExpr<P_expr2>
2986
template<class P_expr1, class P_expr2>
2988
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2989
_bz_ArrayExpr<P_expr2>,
2990
Greater<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
2991
operator>(_bz_ArrayExpr<P_expr1> d1,
2992
_bz_ArrayExpr<P_expr2> d2)
2994
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
2995
_bz_ArrayExpr<P_expr2>,
2996
Greater<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
3001
// _bz_ArrayExpr<P_expr1> > IndexPlaceholder<N_index2>
3002
template<class P_expr1, int N_index2>
3004
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3005
IndexPlaceholder<N_index2>,
3006
Greater<typename P_expr1::T_numtype, int > > >
3007
operator>(_bz_ArrayExpr<P_expr1> d1,
3008
IndexPlaceholder<N_index2> d2)
3010
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3011
IndexPlaceholder<N_index2>,
3012
Greater<typename P_expr1::T_numtype, int> >
3017
// _bz_ArrayExpr<P_expr1> > int
3018
template<class P_expr1>
3020
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3021
_bz_ArrayExprConstant<int>,
3022
Greater<typename P_expr1::T_numtype, int > > >
3023
operator>(_bz_ArrayExpr<P_expr1> d1,
3026
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3027
_bz_ArrayExprConstant<int>,
3028
Greater<typename P_expr1::T_numtype, int> >
3030
_bz_ArrayExprConstant<int>(d2));
3033
// _bz_ArrayExpr<P_expr1> > float
3034
template<class P_expr1>
3036
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3037
_bz_ArrayExprConstant<float>,
3038
Greater<typename P_expr1::T_numtype, float > > >
3039
operator>(_bz_ArrayExpr<P_expr1> d1,
3042
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3043
_bz_ArrayExprConstant<float>,
3044
Greater<typename P_expr1::T_numtype, float> >
3046
_bz_ArrayExprConstant<float>(d2));
3049
// _bz_ArrayExpr<P_expr1> > double
3050
template<class P_expr1>
3052
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3053
_bz_ArrayExprConstant<double>,
3054
Greater<typename P_expr1::T_numtype, double > > >
3055
operator>(_bz_ArrayExpr<P_expr1> d1,
3058
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3059
_bz_ArrayExprConstant<double>,
3060
Greater<typename P_expr1::T_numtype, double> >
3062
_bz_ArrayExprConstant<double>(d2));
3065
// _bz_ArrayExpr<P_expr1> > long double
3066
template<class P_expr1>
3068
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3069
_bz_ArrayExprConstant<long double>,
3070
Greater<typename P_expr1::T_numtype, long double > > >
3071
operator>(_bz_ArrayExpr<P_expr1> d1,
3074
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3075
_bz_ArrayExprConstant<long double>,
3076
Greater<typename P_expr1::T_numtype, long double> >
3078
_bz_ArrayExprConstant<long double>(d2));
3081
#ifdef BZ_HAVE_COMPLEX
3082
// _bz_ArrayExpr<P_expr1> > complex<T2>
3083
template<class P_expr1, class T2>
3085
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3086
_bz_ArrayExprConstant<complex<T2> > ,
3087
Greater<typename P_expr1::T_numtype, complex<T2> > > >
3088
operator>(_bz_ArrayExpr<P_expr1> d1,
3091
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3092
_bz_ArrayExprConstant<complex<T2> > ,
3093
Greater<typename P_expr1::T_numtype, complex<T2> > >
3095
_bz_ArrayExprConstant<complex<T2> > (d2));
3097
#endif // BZ_HAVE_COMPLEX
3099
// IndexPlaceholder<N_index1> > Array<T_numtype2, N_rank2>
3100
template<int N_index1, class T_numtype2, int N_rank2>
3102
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3103
ArrayIterator<T_numtype2, N_rank2>,
3104
Greater<int, T_numtype2 > > >
3105
operator>(IndexPlaceholder<N_index1> d1,
3106
const Array<T_numtype2, N_rank2>& d2)
3108
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3109
ArrayIterator<T_numtype2, N_rank2>,
3110
Greater<int, T_numtype2> >
3115
// IndexPlaceholder<N_index1> > _bz_ArrayExpr<P_expr2>
3116
template<int N_index1, class P_expr2>
3118
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3119
_bz_ArrayExpr<P_expr2>,
3120
Greater<int, typename P_expr2::T_numtype > > >
3121
operator>(IndexPlaceholder<N_index1> d1,
3122
_bz_ArrayExpr<P_expr2> d2)
3124
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3125
_bz_ArrayExpr<P_expr2>,
3126
Greater<int, typename P_expr2::T_numtype> >
3131
// IndexPlaceholder<N_index1> > IndexPlaceholder<N_index2>
3132
template<int N_index1, int N_index2>
3134
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3135
IndexPlaceholder<N_index2>,
3136
Greater<int, int > > >
3137
operator>(IndexPlaceholder<N_index1> d1,
3138
IndexPlaceholder<N_index2> d2)
3140
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3141
IndexPlaceholder<N_index2>,
3147
// IndexPlaceholder<N_index1> > int
3148
template<int N_index1>
3150
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3151
_bz_ArrayExprConstant<int>,
3152
Greater<int, int > > >
3153
operator>(IndexPlaceholder<N_index1> d1,
3156
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3157
_bz_ArrayExprConstant<int>,
3160
_bz_ArrayExprConstant<int>(d2));
3163
// IndexPlaceholder<N_index1> > float
3164
template<int N_index1>
3166
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3167
_bz_ArrayExprConstant<float>,
3168
Greater<int, float > > >
3169
operator>(IndexPlaceholder<N_index1> d1,
3172
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3173
_bz_ArrayExprConstant<float>,
3174
Greater<int, float> >
3176
_bz_ArrayExprConstant<float>(d2));
3179
// IndexPlaceholder<N_index1> > double
3180
template<int N_index1>
3182
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3183
_bz_ArrayExprConstant<double>,
3184
Greater<int, double > > >
3185
operator>(IndexPlaceholder<N_index1> d1,
3188
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3189
_bz_ArrayExprConstant<double>,
3190
Greater<int, double> >
3192
_bz_ArrayExprConstant<double>(d2));
3195
// IndexPlaceholder<N_index1> > long double
3196
template<int N_index1>
3198
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3199
_bz_ArrayExprConstant<long double>,
3200
Greater<int, long double > > >
3201
operator>(IndexPlaceholder<N_index1> d1,
3204
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3205
_bz_ArrayExprConstant<long double>,
3206
Greater<int, long double> >
3208
_bz_ArrayExprConstant<long double>(d2));
3211
#ifdef BZ_HAVE_COMPLEX
3212
// IndexPlaceholder<N_index1> > complex<T2>
3213
template<int N_index1, class T2>
3215
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3216
_bz_ArrayExprConstant<complex<T2> > ,
3217
Greater<int, complex<T2> > > >
3218
operator>(IndexPlaceholder<N_index1> d1,
3221
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3222
_bz_ArrayExprConstant<complex<T2> > ,
3223
Greater<int, complex<T2> > >
3225
_bz_ArrayExprConstant<complex<T2> > (d2));
3227
#endif // BZ_HAVE_COMPLEX
3229
// int > Array<T_numtype2, N_rank2>
3230
template<class T_numtype2, int N_rank2>
3232
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3233
ArrayIterator<T_numtype2, N_rank2>,
3234
Greater<int, T_numtype2 > > >
3236
const Array<T_numtype2, N_rank2>& d2)
3238
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3239
ArrayIterator<T_numtype2, N_rank2>,
3240
Greater<int, T_numtype2> >
3241
(_bz_ArrayExprConstant<int>(d1),
3245
// int > _bz_ArrayExpr<P_expr2>
3246
template<class P_expr2>
3248
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3249
_bz_ArrayExpr<P_expr2>,
3250
Greater<int, typename P_expr2::T_numtype > > >
3252
_bz_ArrayExpr<P_expr2> d2)
3254
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3255
_bz_ArrayExpr<P_expr2>,
3256
Greater<int, typename P_expr2::T_numtype> >
3257
(_bz_ArrayExprConstant<int>(d1),
3261
// int > IndexPlaceholder<N_index2>
3262
template<int N_index2>
3264
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3265
IndexPlaceholder<N_index2>,
3266
Greater<int, int > > >
3268
IndexPlaceholder<N_index2> d2)
3270
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3271
IndexPlaceholder<N_index2>,
3273
(_bz_ArrayExprConstant<int>(d1),
3277
// float > Array<T_numtype2, N_rank2>
3278
template<class T_numtype2, int N_rank2>
3280
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3281
ArrayIterator<T_numtype2, N_rank2>,
3282
Greater<float, T_numtype2 > > >
3284
const Array<T_numtype2, N_rank2>& d2)
3286
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3287
ArrayIterator<T_numtype2, N_rank2>,
3288
Greater<float, T_numtype2> >
3289
(_bz_ArrayExprConstant<float>(d1),
3293
// float > _bz_ArrayExpr<P_expr2>
3294
template<class P_expr2>
3296
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3297
_bz_ArrayExpr<P_expr2>,
3298
Greater<float, typename P_expr2::T_numtype > > >
3300
_bz_ArrayExpr<P_expr2> d2)
3302
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3303
_bz_ArrayExpr<P_expr2>,
3304
Greater<float, typename P_expr2::T_numtype> >
3305
(_bz_ArrayExprConstant<float>(d1),
3309
// float > IndexPlaceholder<N_index2>
3310
template<int N_index2>
3312
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3313
IndexPlaceholder<N_index2>,
3314
Greater<float, int > > >
3316
IndexPlaceholder<N_index2> d2)
3318
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3319
IndexPlaceholder<N_index2>,
3320
Greater<float, int> >
3321
(_bz_ArrayExprConstant<float>(d1),
3325
// double > Array<T_numtype2, N_rank2>
3326
template<class T_numtype2, int N_rank2>
3328
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3329
ArrayIterator<T_numtype2, N_rank2>,
3330
Greater<double, T_numtype2 > > >
3331
operator>(double d1,
3332
const Array<T_numtype2, N_rank2>& d2)
3334
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3335
ArrayIterator<T_numtype2, N_rank2>,
3336
Greater<double, T_numtype2> >
3337
(_bz_ArrayExprConstant<double>(d1),
3341
// double > _bz_ArrayExpr<P_expr2>
3342
template<class P_expr2>
3344
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3345
_bz_ArrayExpr<P_expr2>,
3346
Greater<double, typename P_expr2::T_numtype > > >
3347
operator>(double d1,
3348
_bz_ArrayExpr<P_expr2> d2)
3350
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3351
_bz_ArrayExpr<P_expr2>,
3352
Greater<double, typename P_expr2::T_numtype> >
3353
(_bz_ArrayExprConstant<double>(d1),
3357
// double > IndexPlaceholder<N_index2>
3358
template<int N_index2>
3360
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3361
IndexPlaceholder<N_index2>,
3362
Greater<double, int > > >
3363
operator>(double d1,
3364
IndexPlaceholder<N_index2> d2)
3366
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3367
IndexPlaceholder<N_index2>,
3368
Greater<double, int> >
3369
(_bz_ArrayExprConstant<double>(d1),
3373
// long double > Array<T_numtype2, N_rank2>
3374
template<class T_numtype2, int N_rank2>
3376
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
3377
ArrayIterator<T_numtype2, N_rank2>,
3378
Greater<long double, T_numtype2 > > >
3379
operator>(long double d1,
3380
const Array<T_numtype2, N_rank2>& d2)
3382
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
3383
ArrayIterator<T_numtype2, N_rank2>,
3384
Greater<long double, T_numtype2> >
3385
(_bz_ArrayExprConstant<long double>(d1),
3389
// long double > _bz_ArrayExpr<P_expr2>
3390
template<class P_expr2>
3392
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
3393
_bz_ArrayExpr<P_expr2>,
3394
Greater<long double, typename P_expr2::T_numtype > > >
3395
operator>(long double d1,
3396
_bz_ArrayExpr<P_expr2> d2)
3398
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
3399
_bz_ArrayExpr<P_expr2>,
3400
Greater<long double, typename P_expr2::T_numtype> >
3401
(_bz_ArrayExprConstant<long double>(d1),
3405
// long double > IndexPlaceholder<N_index2>
3406
template<int N_index2>
3408
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
3409
IndexPlaceholder<N_index2>,
3410
Greater<long double, int > > >
3411
operator>(long double d1,
3412
IndexPlaceholder<N_index2> d2)
3414
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
3415
IndexPlaceholder<N_index2>,
3416
Greater<long double, int> >
3417
(_bz_ArrayExprConstant<long double>(d1),
3421
#ifdef BZ_HAVE_COMPLEX
3422
// complex<T1> > Array<T_numtype2, N_rank2>
3423
template<class T1, class T_numtype2, int N_rank2>
3425
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
3426
ArrayIterator<T_numtype2, N_rank2>,
3427
Greater<complex<T1> , T_numtype2 > > >
3428
operator>(complex<T1> d1,
3429
const Array<T_numtype2, N_rank2>& d2)
3431
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
3432
ArrayIterator<T_numtype2, N_rank2>,
3433
Greater<complex<T1> , T_numtype2> >
3434
(_bz_ArrayExprConstant<complex<T1> > (d1),
3437
#endif // BZ_HAVE_COMPLEX
3439
#ifdef BZ_HAVE_COMPLEX
3440
// complex<T1> > _bz_ArrayExpr<P_expr2>
3441
template<class T1, class P_expr2>
3443
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
3444
_bz_ArrayExpr<P_expr2>,
3445
Greater<complex<T1> , typename P_expr2::T_numtype > > >
3446
operator>(complex<T1> d1,
3447
_bz_ArrayExpr<P_expr2> d2)
3449
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
3450
_bz_ArrayExpr<P_expr2>,
3451
Greater<complex<T1> , typename P_expr2::T_numtype> >
3452
(_bz_ArrayExprConstant<complex<T1> > (d1),
3455
#endif // BZ_HAVE_COMPLEX
3457
#ifdef BZ_HAVE_COMPLEX
3458
// complex<T1> > IndexPlaceholder<N_index2>
3459
template<class T1, int N_index2>
3461
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
3462
IndexPlaceholder<N_index2>,
3463
Greater<complex<T1> , int > > >
3464
operator>(complex<T1> d1,
3465
IndexPlaceholder<N_index2> d2)
3467
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
3468
IndexPlaceholder<N_index2>,
3469
Greater<complex<T1> , int> >
3470
(_bz_ArrayExprConstant<complex<T1> > (d1),
3473
#endif // BZ_HAVE_COMPLEX
3474
/****************************************************************************
3475
* Less-than Operators
3476
****************************************************************************/
3478
// Array<T_numtype1, N_rank1> < Array<T_numtype2, N_rank2>
3479
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
3481
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3482
ArrayIterator<T_numtype2, N_rank2>,
3483
Less<T_numtype1, T_numtype2 > > >
3484
operator<(const Array<T_numtype1, N_rank1>& d1,
3485
const Array<T_numtype2, N_rank2>& d2)
3487
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3488
ArrayIterator<T_numtype2, N_rank2>,
3489
Less<T_numtype1, T_numtype2> >
3494
// Array<T_numtype1, N_rank1> < _bz_ArrayExpr<P_expr2>
3495
template<class T_numtype1, int N_rank1, class P_expr2>
3497
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3498
_bz_ArrayExpr<P_expr2>,
3499
Less<T_numtype1, typename P_expr2::T_numtype > > >
3500
operator<(const Array<T_numtype1, N_rank1>& d1,
3501
_bz_ArrayExpr<P_expr2> d2)
3503
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3504
_bz_ArrayExpr<P_expr2>,
3505
Less<T_numtype1, typename P_expr2::T_numtype> >
3510
// Array<T_numtype1, N_rank1> < IndexPlaceholder<N_index2>
3511
template<class T_numtype1, int N_rank1, int N_index2>
3513
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3514
IndexPlaceholder<N_index2>,
3515
Less<T_numtype1, int > > >
3516
operator<(const Array<T_numtype1, N_rank1>& d1,
3517
IndexPlaceholder<N_index2> d2)
3519
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3520
IndexPlaceholder<N_index2>,
3521
Less<T_numtype1, int> >
3526
// Array<T_numtype1, N_rank1> < int
3527
template<class T_numtype1, int N_rank1>
3529
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3530
_bz_ArrayExprConstant<int>,
3531
Less<T_numtype1, int > > >
3532
operator<(const Array<T_numtype1, N_rank1>& d1,
3535
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3536
_bz_ArrayExprConstant<int>,
3537
Less<T_numtype1, int> >
3539
_bz_ArrayExprConstant<int>(d2));
3542
// Array<T_numtype1, N_rank1> < float
3543
template<class T_numtype1, int N_rank1>
3545
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3546
_bz_ArrayExprConstant<float>,
3547
Less<T_numtype1, float > > >
3548
operator<(const Array<T_numtype1, N_rank1>& d1,
3551
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3552
_bz_ArrayExprConstant<float>,
3553
Less<T_numtype1, float> >
3555
_bz_ArrayExprConstant<float>(d2));
3558
// Array<T_numtype1, N_rank1> < double
3559
template<class T_numtype1, int N_rank1>
3561
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3562
_bz_ArrayExprConstant<double>,
3563
Less<T_numtype1, double > > >
3564
operator<(const Array<T_numtype1, N_rank1>& d1,
3567
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3568
_bz_ArrayExprConstant<double>,
3569
Less<T_numtype1, double> >
3571
_bz_ArrayExprConstant<double>(d2));
3574
// Array<T_numtype1, N_rank1> < long double
3575
template<class T_numtype1, int N_rank1>
3577
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3578
_bz_ArrayExprConstant<long double>,
3579
Less<T_numtype1, long double > > >
3580
operator<(const Array<T_numtype1, N_rank1>& d1,
3583
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3584
_bz_ArrayExprConstant<long double>,
3585
Less<T_numtype1, long double> >
3587
_bz_ArrayExprConstant<long double>(d2));
3590
#ifdef BZ_HAVE_COMPLEX
3591
// Array<T_numtype1, N_rank1> < complex<T2>
3592
template<class T_numtype1, int N_rank1, class T2>
3594
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3595
_bz_ArrayExprConstant<complex<T2> > ,
3596
Less<T_numtype1, complex<T2> > > >
3597
operator<(const Array<T_numtype1, N_rank1>& d1,
3600
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
3601
_bz_ArrayExprConstant<complex<T2> > ,
3602
Less<T_numtype1, complex<T2> > >
3604
_bz_ArrayExprConstant<complex<T2> > (d2));
3606
#endif // BZ_HAVE_COMPLEX
3608
// _bz_ArrayExpr<P_expr1> < Array<T_numtype2, N_rank2>
3609
template<class P_expr1, class T_numtype2, int N_rank2>
3611
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3612
ArrayIterator<T_numtype2, N_rank2>,
3613
Less<typename P_expr1::T_numtype, T_numtype2 > > >
3614
operator<(_bz_ArrayExpr<P_expr1> d1,
3615
const Array<T_numtype2, N_rank2>& d2)
3617
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3618
ArrayIterator<T_numtype2, N_rank2>,
3619
Less<typename P_expr1::T_numtype, T_numtype2> >
3624
// _bz_ArrayExpr<P_expr1> < _bz_ArrayExpr<P_expr2>
3625
template<class P_expr1, class P_expr2>
3627
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3628
_bz_ArrayExpr<P_expr2>,
3629
Less<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
3630
operator<(_bz_ArrayExpr<P_expr1> d1,
3631
_bz_ArrayExpr<P_expr2> d2)
3633
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3634
_bz_ArrayExpr<P_expr2>,
3635
Less<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
3640
// _bz_ArrayExpr<P_expr1> < IndexPlaceholder<N_index2>
3641
template<class P_expr1, int N_index2>
3643
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3644
IndexPlaceholder<N_index2>,
3645
Less<typename P_expr1::T_numtype, int > > >
3646
operator<(_bz_ArrayExpr<P_expr1> d1,
3647
IndexPlaceholder<N_index2> d2)
3649
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3650
IndexPlaceholder<N_index2>,
3651
Less<typename P_expr1::T_numtype, int> >
3656
// _bz_ArrayExpr<P_expr1> < int
3657
template<class P_expr1>
3659
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3660
_bz_ArrayExprConstant<int>,
3661
Less<typename P_expr1::T_numtype, int > > >
3662
operator<(_bz_ArrayExpr<P_expr1> d1,
3665
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3666
_bz_ArrayExprConstant<int>,
3667
Less<typename P_expr1::T_numtype, int> >
3669
_bz_ArrayExprConstant<int>(d2));
3672
// _bz_ArrayExpr<P_expr1> < float
3673
template<class P_expr1>
3675
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3676
_bz_ArrayExprConstant<float>,
3677
Less<typename P_expr1::T_numtype, float > > >
3678
operator<(_bz_ArrayExpr<P_expr1> d1,
3681
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3682
_bz_ArrayExprConstant<float>,
3683
Less<typename P_expr1::T_numtype, float> >
3685
_bz_ArrayExprConstant<float>(d2));
3688
// _bz_ArrayExpr<P_expr1> < double
3689
template<class P_expr1>
3691
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3692
_bz_ArrayExprConstant<double>,
3693
Less<typename P_expr1::T_numtype, double > > >
3694
operator<(_bz_ArrayExpr<P_expr1> d1,
3697
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3698
_bz_ArrayExprConstant<double>,
3699
Less<typename P_expr1::T_numtype, double> >
3701
_bz_ArrayExprConstant<double>(d2));
3704
// _bz_ArrayExpr<P_expr1> < long double
3705
template<class P_expr1>
3707
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3708
_bz_ArrayExprConstant<long double>,
3709
Less<typename P_expr1::T_numtype, long double > > >
3710
operator<(_bz_ArrayExpr<P_expr1> d1,
3713
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3714
_bz_ArrayExprConstant<long double>,
3715
Less<typename P_expr1::T_numtype, long double> >
3717
_bz_ArrayExprConstant<long double>(d2));
3720
#ifdef BZ_HAVE_COMPLEX
3721
// _bz_ArrayExpr<P_expr1> < complex<T2>
3722
template<class P_expr1, class T2>
3724
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3725
_bz_ArrayExprConstant<complex<T2> > ,
3726
Less<typename P_expr1::T_numtype, complex<T2> > > >
3727
operator<(_bz_ArrayExpr<P_expr1> d1,
3730
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
3731
_bz_ArrayExprConstant<complex<T2> > ,
3732
Less<typename P_expr1::T_numtype, complex<T2> > >
3734
_bz_ArrayExprConstant<complex<T2> > (d2));
3736
#endif // BZ_HAVE_COMPLEX
3738
// IndexPlaceholder<N_index1> < Array<T_numtype2, N_rank2>
3739
template<int N_index1, class T_numtype2, int N_rank2>
3741
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3742
ArrayIterator<T_numtype2, N_rank2>,
3743
Less<int, T_numtype2 > > >
3744
operator<(IndexPlaceholder<N_index1> d1,
3745
const Array<T_numtype2, N_rank2>& d2)
3747
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3748
ArrayIterator<T_numtype2, N_rank2>,
3749
Less<int, T_numtype2> >
3754
// IndexPlaceholder<N_index1> < _bz_ArrayExpr<P_expr2>
3755
template<int N_index1, class P_expr2>
3757
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3758
_bz_ArrayExpr<P_expr2>,
3759
Less<int, typename P_expr2::T_numtype > > >
3760
operator<(IndexPlaceholder<N_index1> d1,
3761
_bz_ArrayExpr<P_expr2> d2)
3763
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3764
_bz_ArrayExpr<P_expr2>,
3765
Less<int, typename P_expr2::T_numtype> >
3770
// IndexPlaceholder<N_index1> < IndexPlaceholder<N_index2>
3771
template<int N_index1, int N_index2>
3773
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3774
IndexPlaceholder<N_index2>,
3776
operator<(IndexPlaceholder<N_index1> d1,
3777
IndexPlaceholder<N_index2> d2)
3779
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3780
IndexPlaceholder<N_index2>,
3786
// IndexPlaceholder<N_index1> < int
3787
template<int N_index1>
3789
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3790
_bz_ArrayExprConstant<int>,
3792
operator<(IndexPlaceholder<N_index1> d1,
3795
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3796
_bz_ArrayExprConstant<int>,
3799
_bz_ArrayExprConstant<int>(d2));
3802
// IndexPlaceholder<N_index1> < float
3803
template<int N_index1>
3805
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3806
_bz_ArrayExprConstant<float>,
3807
Less<int, float > > >
3808
operator<(IndexPlaceholder<N_index1> d1,
3811
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3812
_bz_ArrayExprConstant<float>,
3815
_bz_ArrayExprConstant<float>(d2));
3818
// IndexPlaceholder<N_index1> < double
3819
template<int N_index1>
3821
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3822
_bz_ArrayExprConstant<double>,
3823
Less<int, double > > >
3824
operator<(IndexPlaceholder<N_index1> d1,
3827
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3828
_bz_ArrayExprConstant<double>,
3831
_bz_ArrayExprConstant<double>(d2));
3834
// IndexPlaceholder<N_index1> < long double
3835
template<int N_index1>
3837
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3838
_bz_ArrayExprConstant<long double>,
3839
Less<int, long double > > >
3840
operator<(IndexPlaceholder<N_index1> d1,
3843
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3844
_bz_ArrayExprConstant<long double>,
3845
Less<int, long double> >
3847
_bz_ArrayExprConstant<long double>(d2));
3850
#ifdef BZ_HAVE_COMPLEX
3851
// IndexPlaceholder<N_index1> < complex<T2>
3852
template<int N_index1, class T2>
3854
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3855
_bz_ArrayExprConstant<complex<T2> > ,
3856
Less<int, complex<T2> > > >
3857
operator<(IndexPlaceholder<N_index1> d1,
3860
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
3861
_bz_ArrayExprConstant<complex<T2> > ,
3862
Less<int, complex<T2> > >
3864
_bz_ArrayExprConstant<complex<T2> > (d2));
3866
#endif // BZ_HAVE_COMPLEX
3868
// int < Array<T_numtype2, N_rank2>
3869
template<class T_numtype2, int N_rank2>
3871
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3872
ArrayIterator<T_numtype2, N_rank2>,
3873
Less<int, T_numtype2 > > >
3875
const Array<T_numtype2, N_rank2>& d2)
3877
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3878
ArrayIterator<T_numtype2, N_rank2>,
3879
Less<int, T_numtype2> >
3880
(_bz_ArrayExprConstant<int>(d1),
3884
// int < _bz_ArrayExpr<P_expr2>
3885
template<class P_expr2>
3887
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3888
_bz_ArrayExpr<P_expr2>,
3889
Less<int, typename P_expr2::T_numtype > > >
3891
_bz_ArrayExpr<P_expr2> d2)
3893
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3894
_bz_ArrayExpr<P_expr2>,
3895
Less<int, typename P_expr2::T_numtype> >
3896
(_bz_ArrayExprConstant<int>(d1),
3900
// int < IndexPlaceholder<N_index2>
3901
template<int N_index2>
3903
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3904
IndexPlaceholder<N_index2>,
3907
IndexPlaceholder<N_index2> d2)
3909
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
3910
IndexPlaceholder<N_index2>,
3912
(_bz_ArrayExprConstant<int>(d1),
3916
// float < Array<T_numtype2, N_rank2>
3917
template<class T_numtype2, int N_rank2>
3919
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3920
ArrayIterator<T_numtype2, N_rank2>,
3921
Less<float, T_numtype2 > > >
3923
const Array<T_numtype2, N_rank2>& d2)
3925
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3926
ArrayIterator<T_numtype2, N_rank2>,
3927
Less<float, T_numtype2> >
3928
(_bz_ArrayExprConstant<float>(d1),
3932
// float < _bz_ArrayExpr<P_expr2>
3933
template<class P_expr2>
3935
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3936
_bz_ArrayExpr<P_expr2>,
3937
Less<float, typename P_expr2::T_numtype > > >
3939
_bz_ArrayExpr<P_expr2> d2)
3941
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3942
_bz_ArrayExpr<P_expr2>,
3943
Less<float, typename P_expr2::T_numtype> >
3944
(_bz_ArrayExprConstant<float>(d1),
3948
// float < IndexPlaceholder<N_index2>
3949
template<int N_index2>
3951
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3952
IndexPlaceholder<N_index2>,
3953
Less<float, int > > >
3955
IndexPlaceholder<N_index2> d2)
3957
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
3958
IndexPlaceholder<N_index2>,
3960
(_bz_ArrayExprConstant<float>(d1),
3964
// double < Array<T_numtype2, N_rank2>
3965
template<class T_numtype2, int N_rank2>
3967
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3968
ArrayIterator<T_numtype2, N_rank2>,
3969
Less<double, T_numtype2 > > >
3970
operator<(double d1,
3971
const Array<T_numtype2, N_rank2>& d2)
3973
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3974
ArrayIterator<T_numtype2, N_rank2>,
3975
Less<double, T_numtype2> >
3976
(_bz_ArrayExprConstant<double>(d1),
3980
// double < _bz_ArrayExpr<P_expr2>
3981
template<class P_expr2>
3983
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3984
_bz_ArrayExpr<P_expr2>,
3985
Less<double, typename P_expr2::T_numtype > > >
3986
operator<(double d1,
3987
_bz_ArrayExpr<P_expr2> d2)
3989
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
3990
_bz_ArrayExpr<P_expr2>,
3991
Less<double, typename P_expr2::T_numtype> >
3992
(_bz_ArrayExprConstant<double>(d1),
3996
// double < IndexPlaceholder<N_index2>
3997
template<int N_index2>
3999
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4000
IndexPlaceholder<N_index2>,
4001
Less<double, int > > >
4002
operator<(double d1,
4003
IndexPlaceholder<N_index2> d2)
4005
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4006
IndexPlaceholder<N_index2>,
4008
(_bz_ArrayExprConstant<double>(d1),
4012
// long double < Array<T_numtype2, N_rank2>
4013
template<class T_numtype2, int N_rank2>
4015
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4016
ArrayIterator<T_numtype2, N_rank2>,
4017
Less<long double, T_numtype2 > > >
4018
operator<(long double d1,
4019
const Array<T_numtype2, N_rank2>& d2)
4021
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4022
ArrayIterator<T_numtype2, N_rank2>,
4023
Less<long double, T_numtype2> >
4024
(_bz_ArrayExprConstant<long double>(d1),
4028
// long double < _bz_ArrayExpr<P_expr2>
4029
template<class P_expr2>
4031
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4032
_bz_ArrayExpr<P_expr2>,
4033
Less<long double, typename P_expr2::T_numtype > > >
4034
operator<(long double d1,
4035
_bz_ArrayExpr<P_expr2> d2)
4037
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4038
_bz_ArrayExpr<P_expr2>,
4039
Less<long double, typename P_expr2::T_numtype> >
4040
(_bz_ArrayExprConstant<long double>(d1),
4044
// long double < IndexPlaceholder<N_index2>
4045
template<int N_index2>
4047
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4048
IndexPlaceholder<N_index2>,
4049
Less<long double, int > > >
4050
operator<(long double d1,
4051
IndexPlaceholder<N_index2> d2)
4053
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4054
IndexPlaceholder<N_index2>,
4055
Less<long double, int> >
4056
(_bz_ArrayExprConstant<long double>(d1),
4060
#ifdef BZ_HAVE_COMPLEX
4061
// complex<T1> < Array<T_numtype2, N_rank2>
4062
template<class T1, class T_numtype2, int N_rank2>
4064
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4065
ArrayIterator<T_numtype2, N_rank2>,
4066
Less<complex<T1> , T_numtype2 > > >
4067
operator<(complex<T1> d1,
4068
const Array<T_numtype2, N_rank2>& d2)
4070
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4071
ArrayIterator<T_numtype2, N_rank2>,
4072
Less<complex<T1> , T_numtype2> >
4073
(_bz_ArrayExprConstant<complex<T1> > (d1),
4076
#endif // BZ_HAVE_COMPLEX
4078
#ifdef BZ_HAVE_COMPLEX
4079
// complex<T1> < _bz_ArrayExpr<P_expr2>
4080
template<class T1, class P_expr2>
4082
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4083
_bz_ArrayExpr<P_expr2>,
4084
Less<complex<T1> , typename P_expr2::T_numtype > > >
4085
operator<(complex<T1> d1,
4086
_bz_ArrayExpr<P_expr2> d2)
4088
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4089
_bz_ArrayExpr<P_expr2>,
4090
Less<complex<T1> , typename P_expr2::T_numtype> >
4091
(_bz_ArrayExprConstant<complex<T1> > (d1),
4094
#endif // BZ_HAVE_COMPLEX
4096
#ifdef BZ_HAVE_COMPLEX
4097
// complex<T1> < IndexPlaceholder<N_index2>
4098
template<class T1, int N_index2>
4100
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4101
IndexPlaceholder<N_index2>,
4102
Less<complex<T1> , int > > >
4103
operator<(complex<T1> d1,
4104
IndexPlaceholder<N_index2> d2)
4106
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4107
IndexPlaceholder<N_index2>,
4108
Less<complex<T1> , int> >
4109
(_bz_ArrayExprConstant<complex<T1> > (d1),
4112
#endif // BZ_HAVE_COMPLEX
4113
/****************************************************************************
4114
* Greater or equal (>=) operators
4115
****************************************************************************/
4117
// Array<T_numtype1, N_rank1> >= Array<T_numtype2, N_rank2>
4118
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
4120
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4121
ArrayIterator<T_numtype2, N_rank2>,
4122
GreaterOrEqual<T_numtype1, T_numtype2 > > >
4123
operator>=(const Array<T_numtype1, N_rank1>& d1,
4124
const Array<T_numtype2, N_rank2>& d2)
4126
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4127
ArrayIterator<T_numtype2, N_rank2>,
4128
GreaterOrEqual<T_numtype1, T_numtype2> >
4133
// Array<T_numtype1, N_rank1> >= _bz_ArrayExpr<P_expr2>
4134
template<class T_numtype1, int N_rank1, class P_expr2>
4136
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4137
_bz_ArrayExpr<P_expr2>,
4138
GreaterOrEqual<T_numtype1, typename P_expr2::T_numtype > > >
4139
operator>=(const Array<T_numtype1, N_rank1>& d1,
4140
_bz_ArrayExpr<P_expr2> d2)
4142
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4143
_bz_ArrayExpr<P_expr2>,
4144
GreaterOrEqual<T_numtype1, typename P_expr2::T_numtype> >
4149
// Array<T_numtype1, N_rank1> >= IndexPlaceholder<N_index2>
4150
template<class T_numtype1, int N_rank1, int N_index2>
4152
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4153
IndexPlaceholder<N_index2>,
4154
GreaterOrEqual<T_numtype1, int > > >
4155
operator>=(const Array<T_numtype1, N_rank1>& d1,
4156
IndexPlaceholder<N_index2> d2)
4158
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4159
IndexPlaceholder<N_index2>,
4160
GreaterOrEqual<T_numtype1, int> >
4165
// Array<T_numtype1, N_rank1> >= int
4166
template<class T_numtype1, int N_rank1>
4168
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4169
_bz_ArrayExprConstant<int>,
4170
GreaterOrEqual<T_numtype1, int > > >
4171
operator>=(const Array<T_numtype1, N_rank1>& d1,
4174
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4175
_bz_ArrayExprConstant<int>,
4176
GreaterOrEqual<T_numtype1, int> >
4178
_bz_ArrayExprConstant<int>(d2));
4181
// Array<T_numtype1, N_rank1> >= float
4182
template<class T_numtype1, int N_rank1>
4184
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4185
_bz_ArrayExprConstant<float>,
4186
GreaterOrEqual<T_numtype1, float > > >
4187
operator>=(const Array<T_numtype1, N_rank1>& d1,
4190
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4191
_bz_ArrayExprConstant<float>,
4192
GreaterOrEqual<T_numtype1, float> >
4194
_bz_ArrayExprConstant<float>(d2));
4197
// Array<T_numtype1, N_rank1> >= double
4198
template<class T_numtype1, int N_rank1>
4200
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4201
_bz_ArrayExprConstant<double>,
4202
GreaterOrEqual<T_numtype1, double > > >
4203
operator>=(const Array<T_numtype1, N_rank1>& d1,
4206
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4207
_bz_ArrayExprConstant<double>,
4208
GreaterOrEqual<T_numtype1, double> >
4210
_bz_ArrayExprConstant<double>(d2));
4213
// Array<T_numtype1, N_rank1> >= long double
4214
template<class T_numtype1, int N_rank1>
4216
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4217
_bz_ArrayExprConstant<long double>,
4218
GreaterOrEqual<T_numtype1, long double > > >
4219
operator>=(const Array<T_numtype1, N_rank1>& d1,
4222
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4223
_bz_ArrayExprConstant<long double>,
4224
GreaterOrEqual<T_numtype1, long double> >
4226
_bz_ArrayExprConstant<long double>(d2));
4229
#ifdef BZ_HAVE_COMPLEX
4230
// Array<T_numtype1, N_rank1> >= complex<T2>
4231
template<class T_numtype1, int N_rank1, class T2>
4233
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4234
_bz_ArrayExprConstant<complex<T2> > ,
4235
GreaterOrEqual<T_numtype1, complex<T2> > > >
4236
operator>=(const Array<T_numtype1, N_rank1>& d1,
4239
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4240
_bz_ArrayExprConstant<complex<T2> > ,
4241
GreaterOrEqual<T_numtype1, complex<T2> > >
4243
_bz_ArrayExprConstant<complex<T2> > (d2));
4245
#endif // BZ_HAVE_COMPLEX
4247
// _bz_ArrayExpr<P_expr1> >= Array<T_numtype2, N_rank2>
4248
template<class P_expr1, class T_numtype2, int N_rank2>
4250
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4251
ArrayIterator<T_numtype2, N_rank2>,
4252
GreaterOrEqual<typename P_expr1::T_numtype, T_numtype2 > > >
4253
operator>=(_bz_ArrayExpr<P_expr1> d1,
4254
const Array<T_numtype2, N_rank2>& d2)
4256
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4257
ArrayIterator<T_numtype2, N_rank2>,
4258
GreaterOrEqual<typename P_expr1::T_numtype, T_numtype2> >
4263
// _bz_ArrayExpr<P_expr1> >= _bz_ArrayExpr<P_expr2>
4264
template<class P_expr1, class P_expr2>
4266
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4267
_bz_ArrayExpr<P_expr2>,
4268
GreaterOrEqual<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
4269
operator>=(_bz_ArrayExpr<P_expr1> d1,
4270
_bz_ArrayExpr<P_expr2> d2)
4272
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4273
_bz_ArrayExpr<P_expr2>,
4274
GreaterOrEqual<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
4279
// _bz_ArrayExpr<P_expr1> >= IndexPlaceholder<N_index2>
4280
template<class P_expr1, int N_index2>
4282
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4283
IndexPlaceholder<N_index2>,
4284
GreaterOrEqual<typename P_expr1::T_numtype, int > > >
4285
operator>=(_bz_ArrayExpr<P_expr1> d1,
4286
IndexPlaceholder<N_index2> d2)
4288
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4289
IndexPlaceholder<N_index2>,
4290
GreaterOrEqual<typename P_expr1::T_numtype, int> >
4295
// _bz_ArrayExpr<P_expr1> >= int
4296
template<class P_expr1>
4298
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4299
_bz_ArrayExprConstant<int>,
4300
GreaterOrEqual<typename P_expr1::T_numtype, int > > >
4301
operator>=(_bz_ArrayExpr<P_expr1> d1,
4304
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4305
_bz_ArrayExprConstant<int>,
4306
GreaterOrEqual<typename P_expr1::T_numtype, int> >
4308
_bz_ArrayExprConstant<int>(d2));
4311
// _bz_ArrayExpr<P_expr1> >= float
4312
template<class P_expr1>
4314
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4315
_bz_ArrayExprConstant<float>,
4316
GreaterOrEqual<typename P_expr1::T_numtype, float > > >
4317
operator>=(_bz_ArrayExpr<P_expr1> d1,
4320
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4321
_bz_ArrayExprConstant<float>,
4322
GreaterOrEqual<typename P_expr1::T_numtype, float> >
4324
_bz_ArrayExprConstant<float>(d2));
4327
// _bz_ArrayExpr<P_expr1> >= double
4328
template<class P_expr1>
4330
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4331
_bz_ArrayExprConstant<double>,
4332
GreaterOrEqual<typename P_expr1::T_numtype, double > > >
4333
operator>=(_bz_ArrayExpr<P_expr1> d1,
4336
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4337
_bz_ArrayExprConstant<double>,
4338
GreaterOrEqual<typename P_expr1::T_numtype, double> >
4340
_bz_ArrayExprConstant<double>(d2));
4343
// _bz_ArrayExpr<P_expr1> >= long double
4344
template<class P_expr1>
4346
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4347
_bz_ArrayExprConstant<long double>,
4348
GreaterOrEqual<typename P_expr1::T_numtype, long double > > >
4349
operator>=(_bz_ArrayExpr<P_expr1> d1,
4352
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4353
_bz_ArrayExprConstant<long double>,
4354
GreaterOrEqual<typename P_expr1::T_numtype, long double> >
4356
_bz_ArrayExprConstant<long double>(d2));
4359
#ifdef BZ_HAVE_COMPLEX
4360
// _bz_ArrayExpr<P_expr1> >= complex<T2>
4361
template<class P_expr1, class T2>
4363
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4364
_bz_ArrayExprConstant<complex<T2> > ,
4365
GreaterOrEqual<typename P_expr1::T_numtype, complex<T2> > > >
4366
operator>=(_bz_ArrayExpr<P_expr1> d1,
4369
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4370
_bz_ArrayExprConstant<complex<T2> > ,
4371
GreaterOrEqual<typename P_expr1::T_numtype, complex<T2> > >
4373
_bz_ArrayExprConstant<complex<T2> > (d2));
4375
#endif // BZ_HAVE_COMPLEX
4377
// IndexPlaceholder<N_index1> >= Array<T_numtype2, N_rank2>
4378
template<int N_index1, class T_numtype2, int N_rank2>
4380
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4381
ArrayIterator<T_numtype2, N_rank2>,
4382
GreaterOrEqual<int, T_numtype2 > > >
4383
operator>=(IndexPlaceholder<N_index1> d1,
4384
const Array<T_numtype2, N_rank2>& d2)
4386
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4387
ArrayIterator<T_numtype2, N_rank2>,
4388
GreaterOrEqual<int, T_numtype2> >
4393
// IndexPlaceholder<N_index1> >= _bz_ArrayExpr<P_expr2>
4394
template<int N_index1, class P_expr2>
4396
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4397
_bz_ArrayExpr<P_expr2>,
4398
GreaterOrEqual<int, typename P_expr2::T_numtype > > >
4399
operator>=(IndexPlaceholder<N_index1> d1,
4400
_bz_ArrayExpr<P_expr2> d2)
4402
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4403
_bz_ArrayExpr<P_expr2>,
4404
GreaterOrEqual<int, typename P_expr2::T_numtype> >
4409
// IndexPlaceholder<N_index1> >= IndexPlaceholder<N_index2>
4410
template<int N_index1, int N_index2>
4412
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4413
IndexPlaceholder<N_index2>,
4414
GreaterOrEqual<int, int > > >
4415
operator>=(IndexPlaceholder<N_index1> d1,
4416
IndexPlaceholder<N_index2> d2)
4418
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4419
IndexPlaceholder<N_index2>,
4420
GreaterOrEqual<int, int> >
4425
// IndexPlaceholder<N_index1> >= int
4426
template<int N_index1>
4428
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4429
_bz_ArrayExprConstant<int>,
4430
GreaterOrEqual<int, int > > >
4431
operator>=(IndexPlaceholder<N_index1> d1,
4434
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4435
_bz_ArrayExprConstant<int>,
4436
GreaterOrEqual<int, int> >
4438
_bz_ArrayExprConstant<int>(d2));
4441
// IndexPlaceholder<N_index1> >= float
4442
template<int N_index1>
4444
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4445
_bz_ArrayExprConstant<float>,
4446
GreaterOrEqual<int, float > > >
4447
operator>=(IndexPlaceholder<N_index1> d1,
4450
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4451
_bz_ArrayExprConstant<float>,
4452
GreaterOrEqual<int, float> >
4454
_bz_ArrayExprConstant<float>(d2));
4457
// IndexPlaceholder<N_index1> >= double
4458
template<int N_index1>
4460
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4461
_bz_ArrayExprConstant<double>,
4462
GreaterOrEqual<int, double > > >
4463
operator>=(IndexPlaceholder<N_index1> d1,
4466
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4467
_bz_ArrayExprConstant<double>,
4468
GreaterOrEqual<int, double> >
4470
_bz_ArrayExprConstant<double>(d2));
4473
// IndexPlaceholder<N_index1> >= long double
4474
template<int N_index1>
4476
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4477
_bz_ArrayExprConstant<long double>,
4478
GreaterOrEqual<int, long double > > >
4479
operator>=(IndexPlaceholder<N_index1> d1,
4482
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4483
_bz_ArrayExprConstant<long double>,
4484
GreaterOrEqual<int, long double> >
4486
_bz_ArrayExprConstant<long double>(d2));
4489
#ifdef BZ_HAVE_COMPLEX
4490
// IndexPlaceholder<N_index1> >= complex<T2>
4491
template<int N_index1, class T2>
4493
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4494
_bz_ArrayExprConstant<complex<T2> > ,
4495
GreaterOrEqual<int, complex<T2> > > >
4496
operator>=(IndexPlaceholder<N_index1> d1,
4499
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
4500
_bz_ArrayExprConstant<complex<T2> > ,
4501
GreaterOrEqual<int, complex<T2> > >
4503
_bz_ArrayExprConstant<complex<T2> > (d2));
4505
#endif // BZ_HAVE_COMPLEX
4507
// int >= Array<T_numtype2, N_rank2>
4508
template<class T_numtype2, int N_rank2>
4510
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
4511
ArrayIterator<T_numtype2, N_rank2>,
4512
GreaterOrEqual<int, T_numtype2 > > >
4514
const Array<T_numtype2, N_rank2>& d2)
4516
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
4517
ArrayIterator<T_numtype2, N_rank2>,
4518
GreaterOrEqual<int, T_numtype2> >
4519
(_bz_ArrayExprConstant<int>(d1),
4523
// int >= _bz_ArrayExpr<P_expr2>
4524
template<class P_expr2>
4526
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
4527
_bz_ArrayExpr<P_expr2>,
4528
GreaterOrEqual<int, typename P_expr2::T_numtype > > >
4530
_bz_ArrayExpr<P_expr2> d2)
4532
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
4533
_bz_ArrayExpr<P_expr2>,
4534
GreaterOrEqual<int, typename P_expr2::T_numtype> >
4535
(_bz_ArrayExprConstant<int>(d1),
4539
// int >= IndexPlaceholder<N_index2>
4540
template<int N_index2>
4542
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
4543
IndexPlaceholder<N_index2>,
4544
GreaterOrEqual<int, int > > >
4546
IndexPlaceholder<N_index2> d2)
4548
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
4549
IndexPlaceholder<N_index2>,
4550
GreaterOrEqual<int, int> >
4551
(_bz_ArrayExprConstant<int>(d1),
4555
// float >= Array<T_numtype2, N_rank2>
4556
template<class T_numtype2, int N_rank2>
4558
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
4559
ArrayIterator<T_numtype2, N_rank2>,
4560
GreaterOrEqual<float, T_numtype2 > > >
4561
operator>=(float d1,
4562
const Array<T_numtype2, N_rank2>& d2)
4564
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
4565
ArrayIterator<T_numtype2, N_rank2>,
4566
GreaterOrEqual<float, T_numtype2> >
4567
(_bz_ArrayExprConstant<float>(d1),
4571
// float >= _bz_ArrayExpr<P_expr2>
4572
template<class P_expr2>
4574
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
4575
_bz_ArrayExpr<P_expr2>,
4576
GreaterOrEqual<float, typename P_expr2::T_numtype > > >
4577
operator>=(float d1,
4578
_bz_ArrayExpr<P_expr2> d2)
4580
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
4581
_bz_ArrayExpr<P_expr2>,
4582
GreaterOrEqual<float, typename P_expr2::T_numtype> >
4583
(_bz_ArrayExprConstant<float>(d1),
4587
// float >= IndexPlaceholder<N_index2>
4588
template<int N_index2>
4590
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
4591
IndexPlaceholder<N_index2>,
4592
GreaterOrEqual<float, int > > >
4593
operator>=(float d1,
4594
IndexPlaceholder<N_index2> d2)
4596
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
4597
IndexPlaceholder<N_index2>,
4598
GreaterOrEqual<float, int> >
4599
(_bz_ArrayExprConstant<float>(d1),
4603
// double >= Array<T_numtype2, N_rank2>
4604
template<class T_numtype2, int N_rank2>
4606
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4607
ArrayIterator<T_numtype2, N_rank2>,
4608
GreaterOrEqual<double, T_numtype2 > > >
4609
operator>=(double d1,
4610
const Array<T_numtype2, N_rank2>& d2)
4612
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4613
ArrayIterator<T_numtype2, N_rank2>,
4614
GreaterOrEqual<double, T_numtype2> >
4615
(_bz_ArrayExprConstant<double>(d1),
4619
// double >= _bz_ArrayExpr<P_expr2>
4620
template<class P_expr2>
4622
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4623
_bz_ArrayExpr<P_expr2>,
4624
GreaterOrEqual<double, typename P_expr2::T_numtype > > >
4625
operator>=(double d1,
4626
_bz_ArrayExpr<P_expr2> d2)
4628
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4629
_bz_ArrayExpr<P_expr2>,
4630
GreaterOrEqual<double, typename P_expr2::T_numtype> >
4631
(_bz_ArrayExprConstant<double>(d1),
4635
// double >= IndexPlaceholder<N_index2>
4636
template<int N_index2>
4638
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4639
IndexPlaceholder<N_index2>,
4640
GreaterOrEqual<double, int > > >
4641
operator>=(double d1,
4642
IndexPlaceholder<N_index2> d2)
4644
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
4645
IndexPlaceholder<N_index2>,
4646
GreaterOrEqual<double, int> >
4647
(_bz_ArrayExprConstant<double>(d1),
4651
// long double >= Array<T_numtype2, N_rank2>
4652
template<class T_numtype2, int N_rank2>
4654
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4655
ArrayIterator<T_numtype2, N_rank2>,
4656
GreaterOrEqual<long double, T_numtype2 > > >
4657
operator>=(long double d1,
4658
const Array<T_numtype2, N_rank2>& d2)
4660
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4661
ArrayIterator<T_numtype2, N_rank2>,
4662
GreaterOrEqual<long double, T_numtype2> >
4663
(_bz_ArrayExprConstant<long double>(d1),
4667
// long double >= _bz_ArrayExpr<P_expr2>
4668
template<class P_expr2>
4670
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4671
_bz_ArrayExpr<P_expr2>,
4672
GreaterOrEqual<long double, typename P_expr2::T_numtype > > >
4673
operator>=(long double d1,
4674
_bz_ArrayExpr<P_expr2> d2)
4676
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4677
_bz_ArrayExpr<P_expr2>,
4678
GreaterOrEqual<long double, typename P_expr2::T_numtype> >
4679
(_bz_ArrayExprConstant<long double>(d1),
4683
// long double >= IndexPlaceholder<N_index2>
4684
template<int N_index2>
4686
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4687
IndexPlaceholder<N_index2>,
4688
GreaterOrEqual<long double, int > > >
4689
operator>=(long double d1,
4690
IndexPlaceholder<N_index2> d2)
4692
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
4693
IndexPlaceholder<N_index2>,
4694
GreaterOrEqual<long double, int> >
4695
(_bz_ArrayExprConstant<long double>(d1),
4699
#ifdef BZ_HAVE_COMPLEX
4700
// complex<T1> >= Array<T_numtype2, N_rank2>
4701
template<class T1, class T_numtype2, int N_rank2>
4703
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4704
ArrayIterator<T_numtype2, N_rank2>,
4705
GreaterOrEqual<complex<T1> , T_numtype2 > > >
4706
operator>=(complex<T1> d1,
4707
const Array<T_numtype2, N_rank2>& d2)
4709
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4710
ArrayIterator<T_numtype2, N_rank2>,
4711
GreaterOrEqual<complex<T1> , T_numtype2> >
4712
(_bz_ArrayExprConstant<complex<T1> > (d1),
4715
#endif // BZ_HAVE_COMPLEX
4717
#ifdef BZ_HAVE_COMPLEX
4718
// complex<T1> >= _bz_ArrayExpr<P_expr2>
4719
template<class T1, class P_expr2>
4721
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4722
_bz_ArrayExpr<P_expr2>,
4723
GreaterOrEqual<complex<T1> , typename P_expr2::T_numtype > > >
4724
operator>=(complex<T1> d1,
4725
_bz_ArrayExpr<P_expr2> d2)
4727
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4728
_bz_ArrayExpr<P_expr2>,
4729
GreaterOrEqual<complex<T1> , typename P_expr2::T_numtype> >
4730
(_bz_ArrayExprConstant<complex<T1> > (d1),
4733
#endif // BZ_HAVE_COMPLEX
4735
#ifdef BZ_HAVE_COMPLEX
4736
// complex<T1> >= IndexPlaceholder<N_index2>
4737
template<class T1, int N_index2>
4739
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4740
IndexPlaceholder<N_index2>,
4741
GreaterOrEqual<complex<T1> , int > > >
4742
operator>=(complex<T1> d1,
4743
IndexPlaceholder<N_index2> d2)
4745
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
4746
IndexPlaceholder<N_index2>,
4747
GreaterOrEqual<complex<T1> , int> >
4748
(_bz_ArrayExprConstant<complex<T1> > (d1),
4751
#endif // BZ_HAVE_COMPLEX
4752
/****************************************************************************
4753
* Less or equal (<=) operators
4754
****************************************************************************/
4756
// Array<T_numtype1, N_rank1> <= Array<T_numtype2, N_rank2>
4757
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
4759
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4760
ArrayIterator<T_numtype2, N_rank2>,
4761
LessOrEqual<T_numtype1, T_numtype2 > > >
4762
operator<=(const Array<T_numtype1, N_rank1>& d1,
4763
const Array<T_numtype2, N_rank2>& d2)
4765
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4766
ArrayIterator<T_numtype2, N_rank2>,
4767
LessOrEqual<T_numtype1, T_numtype2> >
4772
// Array<T_numtype1, N_rank1> <= _bz_ArrayExpr<P_expr2>
4773
template<class T_numtype1, int N_rank1, class P_expr2>
4775
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4776
_bz_ArrayExpr<P_expr2>,
4777
LessOrEqual<T_numtype1, typename P_expr2::T_numtype > > >
4778
operator<=(const Array<T_numtype1, N_rank1>& d1,
4779
_bz_ArrayExpr<P_expr2> d2)
4781
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4782
_bz_ArrayExpr<P_expr2>,
4783
LessOrEqual<T_numtype1, typename P_expr2::T_numtype> >
4788
// Array<T_numtype1, N_rank1> <= IndexPlaceholder<N_index2>
4789
template<class T_numtype1, int N_rank1, int N_index2>
4791
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4792
IndexPlaceholder<N_index2>,
4793
LessOrEqual<T_numtype1, int > > >
4794
operator<=(const Array<T_numtype1, N_rank1>& d1,
4795
IndexPlaceholder<N_index2> d2)
4797
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4798
IndexPlaceholder<N_index2>,
4799
LessOrEqual<T_numtype1, int> >
4804
// Array<T_numtype1, N_rank1> <= int
4805
template<class T_numtype1, int N_rank1>
4807
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4808
_bz_ArrayExprConstant<int>,
4809
LessOrEqual<T_numtype1, int > > >
4810
operator<=(const Array<T_numtype1, N_rank1>& d1,
4813
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4814
_bz_ArrayExprConstant<int>,
4815
LessOrEqual<T_numtype1, int> >
4817
_bz_ArrayExprConstant<int>(d2));
4820
// Array<T_numtype1, N_rank1> <= float
4821
template<class T_numtype1, int N_rank1>
4823
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4824
_bz_ArrayExprConstant<float>,
4825
LessOrEqual<T_numtype1, float > > >
4826
operator<=(const Array<T_numtype1, N_rank1>& d1,
4829
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4830
_bz_ArrayExprConstant<float>,
4831
LessOrEqual<T_numtype1, float> >
4833
_bz_ArrayExprConstant<float>(d2));
4836
// Array<T_numtype1, N_rank1> <= double
4837
template<class T_numtype1, int N_rank1>
4839
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4840
_bz_ArrayExprConstant<double>,
4841
LessOrEqual<T_numtype1, double > > >
4842
operator<=(const Array<T_numtype1, N_rank1>& d1,
4845
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4846
_bz_ArrayExprConstant<double>,
4847
LessOrEqual<T_numtype1, double> >
4849
_bz_ArrayExprConstant<double>(d2));
4852
// Array<T_numtype1, N_rank1> <= long double
4853
template<class T_numtype1, int N_rank1>
4855
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4856
_bz_ArrayExprConstant<long double>,
4857
LessOrEqual<T_numtype1, long double > > >
4858
operator<=(const Array<T_numtype1, N_rank1>& d1,
4861
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4862
_bz_ArrayExprConstant<long double>,
4863
LessOrEqual<T_numtype1, long double> >
4865
_bz_ArrayExprConstant<long double>(d2));
4868
#ifdef BZ_HAVE_COMPLEX
4869
// Array<T_numtype1, N_rank1> <= complex<T2>
4870
template<class T_numtype1, int N_rank1, class T2>
4872
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4873
_bz_ArrayExprConstant<complex<T2> > ,
4874
LessOrEqual<T_numtype1, complex<T2> > > >
4875
operator<=(const Array<T_numtype1, N_rank1>& d1,
4878
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
4879
_bz_ArrayExprConstant<complex<T2> > ,
4880
LessOrEqual<T_numtype1, complex<T2> > >
4882
_bz_ArrayExprConstant<complex<T2> > (d2));
4884
#endif // BZ_HAVE_COMPLEX
4886
// _bz_ArrayExpr<P_expr1> <= Array<T_numtype2, N_rank2>
4887
template<class P_expr1, class T_numtype2, int N_rank2>
4889
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4890
ArrayIterator<T_numtype2, N_rank2>,
4891
LessOrEqual<typename P_expr1::T_numtype, T_numtype2 > > >
4892
operator<=(_bz_ArrayExpr<P_expr1> d1,
4893
const Array<T_numtype2, N_rank2>& d2)
4895
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4896
ArrayIterator<T_numtype2, N_rank2>,
4897
LessOrEqual<typename P_expr1::T_numtype, T_numtype2> >
4902
// _bz_ArrayExpr<P_expr1> <= _bz_ArrayExpr<P_expr2>
4903
template<class P_expr1, class P_expr2>
4905
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4906
_bz_ArrayExpr<P_expr2>,
4907
LessOrEqual<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
4908
operator<=(_bz_ArrayExpr<P_expr1> d1,
4909
_bz_ArrayExpr<P_expr2> d2)
4911
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4912
_bz_ArrayExpr<P_expr2>,
4913
LessOrEqual<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
4918
// _bz_ArrayExpr<P_expr1> <= IndexPlaceholder<N_index2>
4919
template<class P_expr1, int N_index2>
4921
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4922
IndexPlaceholder<N_index2>,
4923
LessOrEqual<typename P_expr1::T_numtype, int > > >
4924
operator<=(_bz_ArrayExpr<P_expr1> d1,
4925
IndexPlaceholder<N_index2> d2)
4927
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4928
IndexPlaceholder<N_index2>,
4929
LessOrEqual<typename P_expr1::T_numtype, int> >
4934
// _bz_ArrayExpr<P_expr1> <= int
4935
template<class P_expr1>
4937
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4938
_bz_ArrayExprConstant<int>,
4939
LessOrEqual<typename P_expr1::T_numtype, int > > >
4940
operator<=(_bz_ArrayExpr<P_expr1> d1,
4943
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4944
_bz_ArrayExprConstant<int>,
4945
LessOrEqual<typename P_expr1::T_numtype, int> >
4947
_bz_ArrayExprConstant<int>(d2));
4950
// _bz_ArrayExpr<P_expr1> <= float
4951
template<class P_expr1>
4953
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4954
_bz_ArrayExprConstant<float>,
4955
LessOrEqual<typename P_expr1::T_numtype, float > > >
4956
operator<=(_bz_ArrayExpr<P_expr1> d1,
4959
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4960
_bz_ArrayExprConstant<float>,
4961
LessOrEqual<typename P_expr1::T_numtype, float> >
4963
_bz_ArrayExprConstant<float>(d2));
4966
// _bz_ArrayExpr<P_expr1> <= double
4967
template<class P_expr1>
4969
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4970
_bz_ArrayExprConstant<double>,
4971
LessOrEqual<typename P_expr1::T_numtype, double > > >
4972
operator<=(_bz_ArrayExpr<P_expr1> d1,
4975
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4976
_bz_ArrayExprConstant<double>,
4977
LessOrEqual<typename P_expr1::T_numtype, double> >
4979
_bz_ArrayExprConstant<double>(d2));
4982
// _bz_ArrayExpr<P_expr1> <= long double
4983
template<class P_expr1>
4985
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4986
_bz_ArrayExprConstant<long double>,
4987
LessOrEqual<typename P_expr1::T_numtype, long double > > >
4988
operator<=(_bz_ArrayExpr<P_expr1> d1,
4991
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
4992
_bz_ArrayExprConstant<long double>,
4993
LessOrEqual<typename P_expr1::T_numtype, long double> >
4995
_bz_ArrayExprConstant<long double>(d2));
4998
#ifdef BZ_HAVE_COMPLEX
4999
// _bz_ArrayExpr<P_expr1> <= complex<T2>
5000
template<class P_expr1, class T2>
5002
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5003
_bz_ArrayExprConstant<complex<T2> > ,
5004
LessOrEqual<typename P_expr1::T_numtype, complex<T2> > > >
5005
operator<=(_bz_ArrayExpr<P_expr1> d1,
5008
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5009
_bz_ArrayExprConstant<complex<T2> > ,
5010
LessOrEqual<typename P_expr1::T_numtype, complex<T2> > >
5012
_bz_ArrayExprConstant<complex<T2> > (d2));
5014
#endif // BZ_HAVE_COMPLEX
5016
// IndexPlaceholder<N_index1> <= Array<T_numtype2, N_rank2>
5017
template<int N_index1, class T_numtype2, int N_rank2>
5019
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5020
ArrayIterator<T_numtype2, N_rank2>,
5021
LessOrEqual<int, T_numtype2 > > >
5022
operator<=(IndexPlaceholder<N_index1> d1,
5023
const Array<T_numtype2, N_rank2>& d2)
5025
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5026
ArrayIterator<T_numtype2, N_rank2>,
5027
LessOrEqual<int, T_numtype2> >
5032
// IndexPlaceholder<N_index1> <= _bz_ArrayExpr<P_expr2>
5033
template<int N_index1, class P_expr2>
5035
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5036
_bz_ArrayExpr<P_expr2>,
5037
LessOrEqual<int, typename P_expr2::T_numtype > > >
5038
operator<=(IndexPlaceholder<N_index1> d1,
5039
_bz_ArrayExpr<P_expr2> d2)
5041
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5042
_bz_ArrayExpr<P_expr2>,
5043
LessOrEqual<int, typename P_expr2::T_numtype> >
5048
// IndexPlaceholder<N_index1> <= IndexPlaceholder<N_index2>
5049
template<int N_index1, int N_index2>
5051
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5052
IndexPlaceholder<N_index2>,
5053
LessOrEqual<int, int > > >
5054
operator<=(IndexPlaceholder<N_index1> d1,
5055
IndexPlaceholder<N_index2> d2)
5057
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5058
IndexPlaceholder<N_index2>,
5059
LessOrEqual<int, int> >
5064
// IndexPlaceholder<N_index1> <= int
5065
template<int N_index1>
5067
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5068
_bz_ArrayExprConstant<int>,
5069
LessOrEqual<int, int > > >
5070
operator<=(IndexPlaceholder<N_index1> d1,
5073
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5074
_bz_ArrayExprConstant<int>,
5075
LessOrEqual<int, int> >
5077
_bz_ArrayExprConstant<int>(d2));
5080
// IndexPlaceholder<N_index1> <= float
5081
template<int N_index1>
5083
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5084
_bz_ArrayExprConstant<float>,
5085
LessOrEqual<int, float > > >
5086
operator<=(IndexPlaceholder<N_index1> d1,
5089
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5090
_bz_ArrayExprConstant<float>,
5091
LessOrEqual<int, float> >
5093
_bz_ArrayExprConstant<float>(d2));
5096
// IndexPlaceholder<N_index1> <= double
5097
template<int N_index1>
5099
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5100
_bz_ArrayExprConstant<double>,
5101
LessOrEqual<int, double > > >
5102
operator<=(IndexPlaceholder<N_index1> d1,
5105
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5106
_bz_ArrayExprConstant<double>,
5107
LessOrEqual<int, double> >
5109
_bz_ArrayExprConstant<double>(d2));
5112
// IndexPlaceholder<N_index1> <= long double
5113
template<int N_index1>
5115
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5116
_bz_ArrayExprConstant<long double>,
5117
LessOrEqual<int, long double > > >
5118
operator<=(IndexPlaceholder<N_index1> d1,
5121
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5122
_bz_ArrayExprConstant<long double>,
5123
LessOrEqual<int, long double> >
5125
_bz_ArrayExprConstant<long double>(d2));
5128
#ifdef BZ_HAVE_COMPLEX
5129
// IndexPlaceholder<N_index1> <= complex<T2>
5130
template<int N_index1, class T2>
5132
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5133
_bz_ArrayExprConstant<complex<T2> > ,
5134
LessOrEqual<int, complex<T2> > > >
5135
operator<=(IndexPlaceholder<N_index1> d1,
5138
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5139
_bz_ArrayExprConstant<complex<T2> > ,
5140
LessOrEqual<int, complex<T2> > >
5142
_bz_ArrayExprConstant<complex<T2> > (d2));
5144
#endif // BZ_HAVE_COMPLEX
5146
// int <= Array<T_numtype2, N_rank2>
5147
template<class T_numtype2, int N_rank2>
5149
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5150
ArrayIterator<T_numtype2, N_rank2>,
5151
LessOrEqual<int, T_numtype2 > > >
5153
const Array<T_numtype2, N_rank2>& d2)
5155
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5156
ArrayIterator<T_numtype2, N_rank2>,
5157
LessOrEqual<int, T_numtype2> >
5158
(_bz_ArrayExprConstant<int>(d1),
5162
// int <= _bz_ArrayExpr<P_expr2>
5163
template<class P_expr2>
5165
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5166
_bz_ArrayExpr<P_expr2>,
5167
LessOrEqual<int, typename P_expr2::T_numtype > > >
5169
_bz_ArrayExpr<P_expr2> d2)
5171
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5172
_bz_ArrayExpr<P_expr2>,
5173
LessOrEqual<int, typename P_expr2::T_numtype> >
5174
(_bz_ArrayExprConstant<int>(d1),
5178
// int <= IndexPlaceholder<N_index2>
5179
template<int N_index2>
5181
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5182
IndexPlaceholder<N_index2>,
5183
LessOrEqual<int, int > > >
5185
IndexPlaceholder<N_index2> d2)
5187
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5188
IndexPlaceholder<N_index2>,
5189
LessOrEqual<int, int> >
5190
(_bz_ArrayExprConstant<int>(d1),
5194
// float <= Array<T_numtype2, N_rank2>
5195
template<class T_numtype2, int N_rank2>
5197
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5198
ArrayIterator<T_numtype2, N_rank2>,
5199
LessOrEqual<float, T_numtype2 > > >
5200
operator<=(float d1,
5201
const Array<T_numtype2, N_rank2>& d2)
5203
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5204
ArrayIterator<T_numtype2, N_rank2>,
5205
LessOrEqual<float, T_numtype2> >
5206
(_bz_ArrayExprConstant<float>(d1),
5210
// float <= _bz_ArrayExpr<P_expr2>
5211
template<class P_expr2>
5213
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5214
_bz_ArrayExpr<P_expr2>,
5215
LessOrEqual<float, typename P_expr2::T_numtype > > >
5216
operator<=(float d1,
5217
_bz_ArrayExpr<P_expr2> d2)
5219
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5220
_bz_ArrayExpr<P_expr2>,
5221
LessOrEqual<float, typename P_expr2::T_numtype> >
5222
(_bz_ArrayExprConstant<float>(d1),
5226
// float <= IndexPlaceholder<N_index2>
5227
template<int N_index2>
5229
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5230
IndexPlaceholder<N_index2>,
5231
LessOrEqual<float, int > > >
5232
operator<=(float d1,
5233
IndexPlaceholder<N_index2> d2)
5235
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5236
IndexPlaceholder<N_index2>,
5237
LessOrEqual<float, int> >
5238
(_bz_ArrayExprConstant<float>(d1),
5242
// double <= Array<T_numtype2, N_rank2>
5243
template<class T_numtype2, int N_rank2>
5245
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5246
ArrayIterator<T_numtype2, N_rank2>,
5247
LessOrEqual<double, T_numtype2 > > >
5248
operator<=(double d1,
5249
const Array<T_numtype2, N_rank2>& d2)
5251
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5252
ArrayIterator<T_numtype2, N_rank2>,
5253
LessOrEqual<double, T_numtype2> >
5254
(_bz_ArrayExprConstant<double>(d1),
5258
// double <= _bz_ArrayExpr<P_expr2>
5259
template<class P_expr2>
5261
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5262
_bz_ArrayExpr<P_expr2>,
5263
LessOrEqual<double, typename P_expr2::T_numtype > > >
5264
operator<=(double d1,
5265
_bz_ArrayExpr<P_expr2> d2)
5267
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5268
_bz_ArrayExpr<P_expr2>,
5269
LessOrEqual<double, typename P_expr2::T_numtype> >
5270
(_bz_ArrayExprConstant<double>(d1),
5274
// double <= IndexPlaceholder<N_index2>
5275
template<int N_index2>
5277
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5278
IndexPlaceholder<N_index2>,
5279
LessOrEqual<double, int > > >
5280
operator<=(double d1,
5281
IndexPlaceholder<N_index2> d2)
5283
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5284
IndexPlaceholder<N_index2>,
5285
LessOrEqual<double, int> >
5286
(_bz_ArrayExprConstant<double>(d1),
5290
// long double <= Array<T_numtype2, N_rank2>
5291
template<class T_numtype2, int N_rank2>
5293
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5294
ArrayIterator<T_numtype2, N_rank2>,
5295
LessOrEqual<long double, T_numtype2 > > >
5296
operator<=(long double d1,
5297
const Array<T_numtype2, N_rank2>& d2)
5299
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5300
ArrayIterator<T_numtype2, N_rank2>,
5301
LessOrEqual<long double, T_numtype2> >
5302
(_bz_ArrayExprConstant<long double>(d1),
5306
// long double <= _bz_ArrayExpr<P_expr2>
5307
template<class P_expr2>
5309
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5310
_bz_ArrayExpr<P_expr2>,
5311
LessOrEqual<long double, typename P_expr2::T_numtype > > >
5312
operator<=(long double d1,
5313
_bz_ArrayExpr<P_expr2> d2)
5315
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5316
_bz_ArrayExpr<P_expr2>,
5317
LessOrEqual<long double, typename P_expr2::T_numtype> >
5318
(_bz_ArrayExprConstant<long double>(d1),
5322
// long double <= IndexPlaceholder<N_index2>
5323
template<int N_index2>
5325
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5326
IndexPlaceholder<N_index2>,
5327
LessOrEqual<long double, int > > >
5328
operator<=(long double d1,
5329
IndexPlaceholder<N_index2> d2)
5331
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5332
IndexPlaceholder<N_index2>,
5333
LessOrEqual<long double, int> >
5334
(_bz_ArrayExprConstant<long double>(d1),
5338
#ifdef BZ_HAVE_COMPLEX
5339
// complex<T1> <= Array<T_numtype2, N_rank2>
5340
template<class T1, class T_numtype2, int N_rank2>
5342
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5343
ArrayIterator<T_numtype2, N_rank2>,
5344
LessOrEqual<complex<T1> , T_numtype2 > > >
5345
operator<=(complex<T1> d1,
5346
const Array<T_numtype2, N_rank2>& d2)
5348
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5349
ArrayIterator<T_numtype2, N_rank2>,
5350
LessOrEqual<complex<T1> , T_numtype2> >
5351
(_bz_ArrayExprConstant<complex<T1> > (d1),
5354
#endif // BZ_HAVE_COMPLEX
5356
#ifdef BZ_HAVE_COMPLEX
5357
// complex<T1> <= _bz_ArrayExpr<P_expr2>
5358
template<class T1, class P_expr2>
5360
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5361
_bz_ArrayExpr<P_expr2>,
5362
LessOrEqual<complex<T1> , typename P_expr2::T_numtype > > >
5363
operator<=(complex<T1> d1,
5364
_bz_ArrayExpr<P_expr2> d2)
5366
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5367
_bz_ArrayExpr<P_expr2>,
5368
LessOrEqual<complex<T1> , typename P_expr2::T_numtype> >
5369
(_bz_ArrayExprConstant<complex<T1> > (d1),
5372
#endif // BZ_HAVE_COMPLEX
5374
#ifdef BZ_HAVE_COMPLEX
5375
// complex<T1> <= IndexPlaceholder<N_index2>
5376
template<class T1, int N_index2>
5378
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5379
IndexPlaceholder<N_index2>,
5380
LessOrEqual<complex<T1> , int > > >
5381
operator<=(complex<T1> d1,
5382
IndexPlaceholder<N_index2> d2)
5384
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5385
IndexPlaceholder<N_index2>,
5386
LessOrEqual<complex<T1> , int> >
5387
(_bz_ArrayExprConstant<complex<T1> > (d1),
5390
#endif // BZ_HAVE_COMPLEX
5391
/****************************************************************************
5392
* Equality operators
5393
****************************************************************************/
5395
// Array<T_numtype1, N_rank1> == Array<T_numtype2, N_rank2>
5396
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
5398
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5399
ArrayIterator<T_numtype2, N_rank2>,
5400
Equal<T_numtype1, T_numtype2 > > >
5401
operator==(const Array<T_numtype1, N_rank1>& d1,
5402
const Array<T_numtype2, N_rank2>& d2)
5404
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5405
ArrayIterator<T_numtype2, N_rank2>,
5406
Equal<T_numtype1, T_numtype2> >
5411
// Array<T_numtype1, N_rank1> == _bz_ArrayExpr<P_expr2>
5412
template<class T_numtype1, int N_rank1, class P_expr2>
5414
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5415
_bz_ArrayExpr<P_expr2>,
5416
Equal<T_numtype1, typename P_expr2::T_numtype > > >
5417
operator==(const Array<T_numtype1, N_rank1>& d1,
5418
_bz_ArrayExpr<P_expr2> d2)
5420
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5421
_bz_ArrayExpr<P_expr2>,
5422
Equal<T_numtype1, typename P_expr2::T_numtype> >
5427
// Array<T_numtype1, N_rank1> == IndexPlaceholder<N_index2>
5428
template<class T_numtype1, int N_rank1, int N_index2>
5430
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5431
IndexPlaceholder<N_index2>,
5432
Equal<T_numtype1, int > > >
5433
operator==(const Array<T_numtype1, N_rank1>& d1,
5434
IndexPlaceholder<N_index2> d2)
5436
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5437
IndexPlaceholder<N_index2>,
5438
Equal<T_numtype1, int> >
5443
// Array<T_numtype1, N_rank1> == int
5444
template<class T_numtype1, int N_rank1>
5446
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5447
_bz_ArrayExprConstant<int>,
5448
Equal<T_numtype1, int > > >
5449
operator==(const Array<T_numtype1, N_rank1>& d1,
5452
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5453
_bz_ArrayExprConstant<int>,
5454
Equal<T_numtype1, int> >
5456
_bz_ArrayExprConstant<int>(d2));
5459
// Array<T_numtype1, N_rank1> == float
5460
template<class T_numtype1, int N_rank1>
5462
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5463
_bz_ArrayExprConstant<float>,
5464
Equal<T_numtype1, float > > >
5465
operator==(const Array<T_numtype1, N_rank1>& d1,
5468
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5469
_bz_ArrayExprConstant<float>,
5470
Equal<T_numtype1, float> >
5472
_bz_ArrayExprConstant<float>(d2));
5475
// Array<T_numtype1, N_rank1> == double
5476
template<class T_numtype1, int N_rank1>
5478
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5479
_bz_ArrayExprConstant<double>,
5480
Equal<T_numtype1, double > > >
5481
operator==(const Array<T_numtype1, N_rank1>& d1,
5484
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5485
_bz_ArrayExprConstant<double>,
5486
Equal<T_numtype1, double> >
5488
_bz_ArrayExprConstant<double>(d2));
5491
// Array<T_numtype1, N_rank1> == long double
5492
template<class T_numtype1, int N_rank1>
5494
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5495
_bz_ArrayExprConstant<long double>,
5496
Equal<T_numtype1, long double > > >
5497
operator==(const Array<T_numtype1, N_rank1>& d1,
5500
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5501
_bz_ArrayExprConstant<long double>,
5502
Equal<T_numtype1, long double> >
5504
_bz_ArrayExprConstant<long double>(d2));
5507
#ifdef BZ_HAVE_COMPLEX
5508
// Array<T_numtype1, N_rank1> == complex<T2>
5509
template<class T_numtype1, int N_rank1, class T2>
5511
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5512
_bz_ArrayExprConstant<complex<T2> > ,
5513
Equal<T_numtype1, complex<T2> > > >
5514
operator==(const Array<T_numtype1, N_rank1>& d1,
5517
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
5518
_bz_ArrayExprConstant<complex<T2> > ,
5519
Equal<T_numtype1, complex<T2> > >
5521
_bz_ArrayExprConstant<complex<T2> > (d2));
5523
#endif // BZ_HAVE_COMPLEX
5525
// _bz_ArrayExpr<P_expr1> == Array<T_numtype2, N_rank2>
5526
template<class P_expr1, class T_numtype2, int N_rank2>
5528
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5529
ArrayIterator<T_numtype2, N_rank2>,
5530
Equal<typename P_expr1::T_numtype, T_numtype2 > > >
5531
operator==(_bz_ArrayExpr<P_expr1> d1,
5532
const Array<T_numtype2, N_rank2>& d2)
5534
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5535
ArrayIterator<T_numtype2, N_rank2>,
5536
Equal<typename P_expr1::T_numtype, T_numtype2> >
5541
// _bz_ArrayExpr<P_expr1> == _bz_ArrayExpr<P_expr2>
5542
template<class P_expr1, class P_expr2>
5544
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5545
_bz_ArrayExpr<P_expr2>,
5546
Equal<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
5547
operator==(_bz_ArrayExpr<P_expr1> d1,
5548
_bz_ArrayExpr<P_expr2> d2)
5550
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5551
_bz_ArrayExpr<P_expr2>,
5552
Equal<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
5557
// _bz_ArrayExpr<P_expr1> == IndexPlaceholder<N_index2>
5558
template<class P_expr1, int N_index2>
5560
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5561
IndexPlaceholder<N_index2>,
5562
Equal<typename P_expr1::T_numtype, int > > >
5563
operator==(_bz_ArrayExpr<P_expr1> d1,
5564
IndexPlaceholder<N_index2> d2)
5566
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5567
IndexPlaceholder<N_index2>,
5568
Equal<typename P_expr1::T_numtype, int> >
5573
// _bz_ArrayExpr<P_expr1> == int
5574
template<class P_expr1>
5576
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5577
_bz_ArrayExprConstant<int>,
5578
Equal<typename P_expr1::T_numtype, int > > >
5579
operator==(_bz_ArrayExpr<P_expr1> d1,
5582
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5583
_bz_ArrayExprConstant<int>,
5584
Equal<typename P_expr1::T_numtype, int> >
5586
_bz_ArrayExprConstant<int>(d2));
5589
// _bz_ArrayExpr<P_expr1> == float
5590
template<class P_expr1>
5592
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5593
_bz_ArrayExprConstant<float>,
5594
Equal<typename P_expr1::T_numtype, float > > >
5595
operator==(_bz_ArrayExpr<P_expr1> d1,
5598
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5599
_bz_ArrayExprConstant<float>,
5600
Equal<typename P_expr1::T_numtype, float> >
5602
_bz_ArrayExprConstant<float>(d2));
5605
// _bz_ArrayExpr<P_expr1> == double
5606
template<class P_expr1>
5608
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5609
_bz_ArrayExprConstant<double>,
5610
Equal<typename P_expr1::T_numtype, double > > >
5611
operator==(_bz_ArrayExpr<P_expr1> d1,
5614
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5615
_bz_ArrayExprConstant<double>,
5616
Equal<typename P_expr1::T_numtype, double> >
5618
_bz_ArrayExprConstant<double>(d2));
5621
// _bz_ArrayExpr<P_expr1> == long double
5622
template<class P_expr1>
5624
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5625
_bz_ArrayExprConstant<long double>,
5626
Equal<typename P_expr1::T_numtype, long double > > >
5627
operator==(_bz_ArrayExpr<P_expr1> d1,
5630
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5631
_bz_ArrayExprConstant<long double>,
5632
Equal<typename P_expr1::T_numtype, long double> >
5634
_bz_ArrayExprConstant<long double>(d2));
5637
#ifdef BZ_HAVE_COMPLEX
5638
// _bz_ArrayExpr<P_expr1> == complex<T2>
5639
template<class P_expr1, class T2>
5641
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5642
_bz_ArrayExprConstant<complex<T2> > ,
5643
Equal<typename P_expr1::T_numtype, complex<T2> > > >
5644
operator==(_bz_ArrayExpr<P_expr1> d1,
5647
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
5648
_bz_ArrayExprConstant<complex<T2> > ,
5649
Equal<typename P_expr1::T_numtype, complex<T2> > >
5651
_bz_ArrayExprConstant<complex<T2> > (d2));
5653
#endif // BZ_HAVE_COMPLEX
5655
// IndexPlaceholder<N_index1> == Array<T_numtype2, N_rank2>
5656
template<int N_index1, class T_numtype2, int N_rank2>
5658
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5659
ArrayIterator<T_numtype2, N_rank2>,
5660
Equal<int, T_numtype2 > > >
5661
operator==(IndexPlaceholder<N_index1> d1,
5662
const Array<T_numtype2, N_rank2>& d2)
5664
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5665
ArrayIterator<T_numtype2, N_rank2>,
5666
Equal<int, T_numtype2> >
5671
// IndexPlaceholder<N_index1> == _bz_ArrayExpr<P_expr2>
5672
template<int N_index1, class P_expr2>
5674
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5675
_bz_ArrayExpr<P_expr2>,
5676
Equal<int, typename P_expr2::T_numtype > > >
5677
operator==(IndexPlaceholder<N_index1> d1,
5678
_bz_ArrayExpr<P_expr2> d2)
5680
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5681
_bz_ArrayExpr<P_expr2>,
5682
Equal<int, typename P_expr2::T_numtype> >
5687
// IndexPlaceholder<N_index1> == IndexPlaceholder<N_index2>
5688
template<int N_index1, int N_index2>
5690
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5691
IndexPlaceholder<N_index2>,
5692
Equal<int, int > > >
5693
operator==(IndexPlaceholder<N_index1> d1,
5694
IndexPlaceholder<N_index2> d2)
5696
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5697
IndexPlaceholder<N_index2>,
5703
// IndexPlaceholder<N_index1> == int
5704
template<int N_index1>
5706
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5707
_bz_ArrayExprConstant<int>,
5708
Equal<int, int > > >
5709
operator==(IndexPlaceholder<N_index1> d1,
5712
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5713
_bz_ArrayExprConstant<int>,
5716
_bz_ArrayExprConstant<int>(d2));
5719
// IndexPlaceholder<N_index1> == float
5720
template<int N_index1>
5722
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5723
_bz_ArrayExprConstant<float>,
5724
Equal<int, float > > >
5725
operator==(IndexPlaceholder<N_index1> d1,
5728
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5729
_bz_ArrayExprConstant<float>,
5732
_bz_ArrayExprConstant<float>(d2));
5735
// IndexPlaceholder<N_index1> == double
5736
template<int N_index1>
5738
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5739
_bz_ArrayExprConstant<double>,
5740
Equal<int, double > > >
5741
operator==(IndexPlaceholder<N_index1> d1,
5744
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5745
_bz_ArrayExprConstant<double>,
5746
Equal<int, double> >
5748
_bz_ArrayExprConstant<double>(d2));
5751
// IndexPlaceholder<N_index1> == long double
5752
template<int N_index1>
5754
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5755
_bz_ArrayExprConstant<long double>,
5756
Equal<int, long double > > >
5757
operator==(IndexPlaceholder<N_index1> d1,
5760
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5761
_bz_ArrayExprConstant<long double>,
5762
Equal<int, long double> >
5764
_bz_ArrayExprConstant<long double>(d2));
5767
#ifdef BZ_HAVE_COMPLEX
5768
// IndexPlaceholder<N_index1> == complex<T2>
5769
template<int N_index1, class T2>
5771
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5772
_bz_ArrayExprConstant<complex<T2> > ,
5773
Equal<int, complex<T2> > > >
5774
operator==(IndexPlaceholder<N_index1> d1,
5777
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
5778
_bz_ArrayExprConstant<complex<T2> > ,
5779
Equal<int, complex<T2> > >
5781
_bz_ArrayExprConstant<complex<T2> > (d2));
5783
#endif // BZ_HAVE_COMPLEX
5785
// int == Array<T_numtype2, N_rank2>
5786
template<class T_numtype2, int N_rank2>
5788
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5789
ArrayIterator<T_numtype2, N_rank2>,
5790
Equal<int, T_numtype2 > > >
5792
const Array<T_numtype2, N_rank2>& d2)
5794
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5795
ArrayIterator<T_numtype2, N_rank2>,
5796
Equal<int, T_numtype2> >
5797
(_bz_ArrayExprConstant<int>(d1),
5801
// int == _bz_ArrayExpr<P_expr2>
5802
template<class P_expr2>
5804
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5805
_bz_ArrayExpr<P_expr2>,
5806
Equal<int, typename P_expr2::T_numtype > > >
5808
_bz_ArrayExpr<P_expr2> d2)
5810
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5811
_bz_ArrayExpr<P_expr2>,
5812
Equal<int, typename P_expr2::T_numtype> >
5813
(_bz_ArrayExprConstant<int>(d1),
5817
// int == IndexPlaceholder<N_index2>
5818
template<int N_index2>
5820
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5821
IndexPlaceholder<N_index2>,
5822
Equal<int, int > > >
5824
IndexPlaceholder<N_index2> d2)
5826
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
5827
IndexPlaceholder<N_index2>,
5829
(_bz_ArrayExprConstant<int>(d1),
5833
// float == Array<T_numtype2, N_rank2>
5834
template<class T_numtype2, int N_rank2>
5836
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5837
ArrayIterator<T_numtype2, N_rank2>,
5838
Equal<float, T_numtype2 > > >
5839
operator==(float d1,
5840
const Array<T_numtype2, N_rank2>& d2)
5842
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5843
ArrayIterator<T_numtype2, N_rank2>,
5844
Equal<float, T_numtype2> >
5845
(_bz_ArrayExprConstant<float>(d1),
5849
// float == _bz_ArrayExpr<P_expr2>
5850
template<class P_expr2>
5852
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5853
_bz_ArrayExpr<P_expr2>,
5854
Equal<float, typename P_expr2::T_numtype > > >
5855
operator==(float d1,
5856
_bz_ArrayExpr<P_expr2> d2)
5858
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5859
_bz_ArrayExpr<P_expr2>,
5860
Equal<float, typename P_expr2::T_numtype> >
5861
(_bz_ArrayExprConstant<float>(d1),
5865
// float == IndexPlaceholder<N_index2>
5866
template<int N_index2>
5868
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5869
IndexPlaceholder<N_index2>,
5870
Equal<float, int > > >
5871
operator==(float d1,
5872
IndexPlaceholder<N_index2> d2)
5874
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
5875
IndexPlaceholder<N_index2>,
5877
(_bz_ArrayExprConstant<float>(d1),
5881
// double == Array<T_numtype2, N_rank2>
5882
template<class T_numtype2, int N_rank2>
5884
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5885
ArrayIterator<T_numtype2, N_rank2>,
5886
Equal<double, T_numtype2 > > >
5887
operator==(double d1,
5888
const Array<T_numtype2, N_rank2>& d2)
5890
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5891
ArrayIterator<T_numtype2, N_rank2>,
5892
Equal<double, T_numtype2> >
5893
(_bz_ArrayExprConstant<double>(d1),
5897
// double == _bz_ArrayExpr<P_expr2>
5898
template<class P_expr2>
5900
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5901
_bz_ArrayExpr<P_expr2>,
5902
Equal<double, typename P_expr2::T_numtype > > >
5903
operator==(double d1,
5904
_bz_ArrayExpr<P_expr2> d2)
5906
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5907
_bz_ArrayExpr<P_expr2>,
5908
Equal<double, typename P_expr2::T_numtype> >
5909
(_bz_ArrayExprConstant<double>(d1),
5913
// double == IndexPlaceholder<N_index2>
5914
template<int N_index2>
5916
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5917
IndexPlaceholder<N_index2>,
5918
Equal<double, int > > >
5919
operator==(double d1,
5920
IndexPlaceholder<N_index2> d2)
5922
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
5923
IndexPlaceholder<N_index2>,
5924
Equal<double, int> >
5925
(_bz_ArrayExprConstant<double>(d1),
5929
// long double == Array<T_numtype2, N_rank2>
5930
template<class T_numtype2, int N_rank2>
5932
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5933
ArrayIterator<T_numtype2, N_rank2>,
5934
Equal<long double, T_numtype2 > > >
5935
operator==(long double d1,
5936
const Array<T_numtype2, N_rank2>& d2)
5938
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5939
ArrayIterator<T_numtype2, N_rank2>,
5940
Equal<long double, T_numtype2> >
5941
(_bz_ArrayExprConstant<long double>(d1),
5945
// long double == _bz_ArrayExpr<P_expr2>
5946
template<class P_expr2>
5948
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5949
_bz_ArrayExpr<P_expr2>,
5950
Equal<long double, typename P_expr2::T_numtype > > >
5951
operator==(long double d1,
5952
_bz_ArrayExpr<P_expr2> d2)
5954
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5955
_bz_ArrayExpr<P_expr2>,
5956
Equal<long double, typename P_expr2::T_numtype> >
5957
(_bz_ArrayExprConstant<long double>(d1),
5961
// long double == IndexPlaceholder<N_index2>
5962
template<int N_index2>
5964
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5965
IndexPlaceholder<N_index2>,
5966
Equal<long double, int > > >
5967
operator==(long double d1,
5968
IndexPlaceholder<N_index2> d2)
5970
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
5971
IndexPlaceholder<N_index2>,
5972
Equal<long double, int> >
5973
(_bz_ArrayExprConstant<long double>(d1),
5977
#ifdef BZ_HAVE_COMPLEX
5978
// complex<T1> == Array<T_numtype2, N_rank2>
5979
template<class T1, class T_numtype2, int N_rank2>
5981
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5982
ArrayIterator<T_numtype2, N_rank2>,
5983
Equal<complex<T1> , T_numtype2 > > >
5984
operator==(complex<T1> d1,
5985
const Array<T_numtype2, N_rank2>& d2)
5987
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
5988
ArrayIterator<T_numtype2, N_rank2>,
5989
Equal<complex<T1> , T_numtype2> >
5990
(_bz_ArrayExprConstant<complex<T1> > (d1),
5993
#endif // BZ_HAVE_COMPLEX
5995
#ifdef BZ_HAVE_COMPLEX
5996
// complex<T1> == _bz_ArrayExpr<P_expr2>
5997
template<class T1, class P_expr2>
5999
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6000
_bz_ArrayExpr<P_expr2>,
6001
Equal<complex<T1> , typename P_expr2::T_numtype > > >
6002
operator==(complex<T1> d1,
6003
_bz_ArrayExpr<P_expr2> d2)
6005
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6006
_bz_ArrayExpr<P_expr2>,
6007
Equal<complex<T1> , typename P_expr2::T_numtype> >
6008
(_bz_ArrayExprConstant<complex<T1> > (d1),
6011
#endif // BZ_HAVE_COMPLEX
6013
#ifdef BZ_HAVE_COMPLEX
6014
// complex<T1> == IndexPlaceholder<N_index2>
6015
template<class T1, int N_index2>
6017
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6018
IndexPlaceholder<N_index2>,
6019
Equal<complex<T1> , int > > >
6020
operator==(complex<T1> d1,
6021
IndexPlaceholder<N_index2> d2)
6023
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6024
IndexPlaceholder<N_index2>,
6025
Equal<complex<T1> , int> >
6026
(_bz_ArrayExprConstant<complex<T1> > (d1),
6029
#endif // BZ_HAVE_COMPLEX
6030
/****************************************************************************
6031
* Not-equal operators
6032
****************************************************************************/
6034
// Array<T_numtype1, N_rank1> != Array<T_numtype2, N_rank2>
6035
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
6037
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6038
ArrayIterator<T_numtype2, N_rank2>,
6039
NotEqual<T_numtype1, T_numtype2 > > >
6040
operator!=(const Array<T_numtype1, N_rank1>& d1,
6041
const Array<T_numtype2, N_rank2>& d2)
6043
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6044
ArrayIterator<T_numtype2, N_rank2>,
6045
NotEqual<T_numtype1, T_numtype2> >
6050
// Array<T_numtype1, N_rank1> != _bz_ArrayExpr<P_expr2>
6051
template<class T_numtype1, int N_rank1, class P_expr2>
6053
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6054
_bz_ArrayExpr<P_expr2>,
6055
NotEqual<T_numtype1, typename P_expr2::T_numtype > > >
6056
operator!=(const Array<T_numtype1, N_rank1>& d1,
6057
_bz_ArrayExpr<P_expr2> d2)
6059
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6060
_bz_ArrayExpr<P_expr2>,
6061
NotEqual<T_numtype1, typename P_expr2::T_numtype> >
6066
// Array<T_numtype1, N_rank1> != IndexPlaceholder<N_index2>
6067
template<class T_numtype1, int N_rank1, int N_index2>
6069
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6070
IndexPlaceholder<N_index2>,
6071
NotEqual<T_numtype1, int > > >
6072
operator!=(const Array<T_numtype1, N_rank1>& d1,
6073
IndexPlaceholder<N_index2> d2)
6075
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6076
IndexPlaceholder<N_index2>,
6077
NotEqual<T_numtype1, int> >
6082
// Array<T_numtype1, N_rank1> != int
6083
template<class T_numtype1, int N_rank1>
6085
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6086
_bz_ArrayExprConstant<int>,
6087
NotEqual<T_numtype1, int > > >
6088
operator!=(const Array<T_numtype1, N_rank1>& d1,
6091
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6092
_bz_ArrayExprConstant<int>,
6093
NotEqual<T_numtype1, int> >
6095
_bz_ArrayExprConstant<int>(d2));
6098
// Array<T_numtype1, N_rank1> != float
6099
template<class T_numtype1, int N_rank1>
6101
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6102
_bz_ArrayExprConstant<float>,
6103
NotEqual<T_numtype1, float > > >
6104
operator!=(const Array<T_numtype1, N_rank1>& d1,
6107
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6108
_bz_ArrayExprConstant<float>,
6109
NotEqual<T_numtype1, float> >
6111
_bz_ArrayExprConstant<float>(d2));
6114
// Array<T_numtype1, N_rank1> != double
6115
template<class T_numtype1, int N_rank1>
6117
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6118
_bz_ArrayExprConstant<double>,
6119
NotEqual<T_numtype1, double > > >
6120
operator!=(const Array<T_numtype1, N_rank1>& d1,
6123
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6124
_bz_ArrayExprConstant<double>,
6125
NotEqual<T_numtype1, double> >
6127
_bz_ArrayExprConstant<double>(d2));
6130
// Array<T_numtype1, N_rank1> != long double
6131
template<class T_numtype1, int N_rank1>
6133
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6134
_bz_ArrayExprConstant<long double>,
6135
NotEqual<T_numtype1, long double > > >
6136
operator!=(const Array<T_numtype1, N_rank1>& d1,
6139
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6140
_bz_ArrayExprConstant<long double>,
6141
NotEqual<T_numtype1, long double> >
6143
_bz_ArrayExprConstant<long double>(d2));
6146
#ifdef BZ_HAVE_COMPLEX
6147
// Array<T_numtype1, N_rank1> != complex<T2>
6148
template<class T_numtype1, int N_rank1, class T2>
6150
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6151
_bz_ArrayExprConstant<complex<T2> > ,
6152
NotEqual<T_numtype1, complex<T2> > > >
6153
operator!=(const Array<T_numtype1, N_rank1>& d1,
6156
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6157
_bz_ArrayExprConstant<complex<T2> > ,
6158
NotEqual<T_numtype1, complex<T2> > >
6160
_bz_ArrayExprConstant<complex<T2> > (d2));
6162
#endif // BZ_HAVE_COMPLEX
6164
// _bz_ArrayExpr<P_expr1> != Array<T_numtype2, N_rank2>
6165
template<class P_expr1, class T_numtype2, int N_rank2>
6167
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6168
ArrayIterator<T_numtype2, N_rank2>,
6169
NotEqual<typename P_expr1::T_numtype, T_numtype2 > > >
6170
operator!=(_bz_ArrayExpr<P_expr1> d1,
6171
const Array<T_numtype2, N_rank2>& d2)
6173
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6174
ArrayIterator<T_numtype2, N_rank2>,
6175
NotEqual<typename P_expr1::T_numtype, T_numtype2> >
6180
// _bz_ArrayExpr<P_expr1> != _bz_ArrayExpr<P_expr2>
6181
template<class P_expr1, class P_expr2>
6183
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6184
_bz_ArrayExpr<P_expr2>,
6185
NotEqual<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
6186
operator!=(_bz_ArrayExpr<P_expr1> d1,
6187
_bz_ArrayExpr<P_expr2> d2)
6189
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6190
_bz_ArrayExpr<P_expr2>,
6191
NotEqual<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
6196
// _bz_ArrayExpr<P_expr1> != IndexPlaceholder<N_index2>
6197
template<class P_expr1, int N_index2>
6199
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6200
IndexPlaceholder<N_index2>,
6201
NotEqual<typename P_expr1::T_numtype, int > > >
6202
operator!=(_bz_ArrayExpr<P_expr1> d1,
6203
IndexPlaceholder<N_index2> d2)
6205
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6206
IndexPlaceholder<N_index2>,
6207
NotEqual<typename P_expr1::T_numtype, int> >
6212
// _bz_ArrayExpr<P_expr1> != int
6213
template<class P_expr1>
6215
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6216
_bz_ArrayExprConstant<int>,
6217
NotEqual<typename P_expr1::T_numtype, int > > >
6218
operator!=(_bz_ArrayExpr<P_expr1> d1,
6221
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6222
_bz_ArrayExprConstant<int>,
6223
NotEqual<typename P_expr1::T_numtype, int> >
6225
_bz_ArrayExprConstant<int>(d2));
6228
// _bz_ArrayExpr<P_expr1> != float
6229
template<class P_expr1>
6231
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6232
_bz_ArrayExprConstant<float>,
6233
NotEqual<typename P_expr1::T_numtype, float > > >
6234
operator!=(_bz_ArrayExpr<P_expr1> d1,
6237
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6238
_bz_ArrayExprConstant<float>,
6239
NotEqual<typename P_expr1::T_numtype, float> >
6241
_bz_ArrayExprConstant<float>(d2));
6244
// _bz_ArrayExpr<P_expr1> != double
6245
template<class P_expr1>
6247
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6248
_bz_ArrayExprConstant<double>,
6249
NotEqual<typename P_expr1::T_numtype, double > > >
6250
operator!=(_bz_ArrayExpr<P_expr1> d1,
6253
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6254
_bz_ArrayExprConstant<double>,
6255
NotEqual<typename P_expr1::T_numtype, double> >
6257
_bz_ArrayExprConstant<double>(d2));
6260
// _bz_ArrayExpr<P_expr1> != long double
6261
template<class P_expr1>
6263
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6264
_bz_ArrayExprConstant<long double>,
6265
NotEqual<typename P_expr1::T_numtype, long double > > >
6266
operator!=(_bz_ArrayExpr<P_expr1> d1,
6269
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6270
_bz_ArrayExprConstant<long double>,
6271
NotEqual<typename P_expr1::T_numtype, long double> >
6273
_bz_ArrayExprConstant<long double>(d2));
6276
#ifdef BZ_HAVE_COMPLEX
6277
// _bz_ArrayExpr<P_expr1> != complex<T2>
6278
template<class P_expr1, class T2>
6280
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6281
_bz_ArrayExprConstant<complex<T2> > ,
6282
NotEqual<typename P_expr1::T_numtype, complex<T2> > > >
6283
operator!=(_bz_ArrayExpr<P_expr1> d1,
6286
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6287
_bz_ArrayExprConstant<complex<T2> > ,
6288
NotEqual<typename P_expr1::T_numtype, complex<T2> > >
6290
_bz_ArrayExprConstant<complex<T2> > (d2));
6292
#endif // BZ_HAVE_COMPLEX
6294
// IndexPlaceholder<N_index1> != Array<T_numtype2, N_rank2>
6295
template<int N_index1, class T_numtype2, int N_rank2>
6297
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6298
ArrayIterator<T_numtype2, N_rank2>,
6299
NotEqual<int, T_numtype2 > > >
6300
operator!=(IndexPlaceholder<N_index1> d1,
6301
const Array<T_numtype2, N_rank2>& d2)
6303
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6304
ArrayIterator<T_numtype2, N_rank2>,
6305
NotEqual<int, T_numtype2> >
6310
// IndexPlaceholder<N_index1> != _bz_ArrayExpr<P_expr2>
6311
template<int N_index1, class P_expr2>
6313
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6314
_bz_ArrayExpr<P_expr2>,
6315
NotEqual<int, typename P_expr2::T_numtype > > >
6316
operator!=(IndexPlaceholder<N_index1> d1,
6317
_bz_ArrayExpr<P_expr2> d2)
6319
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6320
_bz_ArrayExpr<P_expr2>,
6321
NotEqual<int, typename P_expr2::T_numtype> >
6326
// IndexPlaceholder<N_index1> != IndexPlaceholder<N_index2>
6327
template<int N_index1, int N_index2>
6329
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6330
IndexPlaceholder<N_index2>,
6331
NotEqual<int, int > > >
6332
operator!=(IndexPlaceholder<N_index1> d1,
6333
IndexPlaceholder<N_index2> d2)
6335
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6336
IndexPlaceholder<N_index2>,
6337
NotEqual<int, int> >
6342
// IndexPlaceholder<N_index1> != int
6343
template<int N_index1>
6345
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6346
_bz_ArrayExprConstant<int>,
6347
NotEqual<int, int > > >
6348
operator!=(IndexPlaceholder<N_index1> d1,
6351
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6352
_bz_ArrayExprConstant<int>,
6353
NotEqual<int, int> >
6355
_bz_ArrayExprConstant<int>(d2));
6358
// IndexPlaceholder<N_index1> != float
6359
template<int N_index1>
6361
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6362
_bz_ArrayExprConstant<float>,
6363
NotEqual<int, float > > >
6364
operator!=(IndexPlaceholder<N_index1> d1,
6367
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6368
_bz_ArrayExprConstant<float>,
6369
NotEqual<int, float> >
6371
_bz_ArrayExprConstant<float>(d2));
6374
// IndexPlaceholder<N_index1> != double
6375
template<int N_index1>
6377
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6378
_bz_ArrayExprConstant<double>,
6379
NotEqual<int, double > > >
6380
operator!=(IndexPlaceholder<N_index1> d1,
6383
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6384
_bz_ArrayExprConstant<double>,
6385
NotEqual<int, double> >
6387
_bz_ArrayExprConstant<double>(d2));
6390
// IndexPlaceholder<N_index1> != long double
6391
template<int N_index1>
6393
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6394
_bz_ArrayExprConstant<long double>,
6395
NotEqual<int, long double > > >
6396
operator!=(IndexPlaceholder<N_index1> d1,
6399
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6400
_bz_ArrayExprConstant<long double>,
6401
NotEqual<int, long double> >
6403
_bz_ArrayExprConstant<long double>(d2));
6406
#ifdef BZ_HAVE_COMPLEX
6407
// IndexPlaceholder<N_index1> != complex<T2>
6408
template<int N_index1, class T2>
6410
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6411
_bz_ArrayExprConstant<complex<T2> > ,
6412
NotEqual<int, complex<T2> > > >
6413
operator!=(IndexPlaceholder<N_index1> d1,
6416
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6417
_bz_ArrayExprConstant<complex<T2> > ,
6418
NotEqual<int, complex<T2> > >
6420
_bz_ArrayExprConstant<complex<T2> > (d2));
6422
#endif // BZ_HAVE_COMPLEX
6424
// int != Array<T_numtype2, N_rank2>
6425
template<class T_numtype2, int N_rank2>
6427
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6428
ArrayIterator<T_numtype2, N_rank2>,
6429
NotEqual<int, T_numtype2 > > >
6431
const Array<T_numtype2, N_rank2>& d2)
6433
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6434
ArrayIterator<T_numtype2, N_rank2>,
6435
NotEqual<int, T_numtype2> >
6436
(_bz_ArrayExprConstant<int>(d1),
6440
// int != _bz_ArrayExpr<P_expr2>
6441
template<class P_expr2>
6443
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6444
_bz_ArrayExpr<P_expr2>,
6445
NotEqual<int, typename P_expr2::T_numtype > > >
6447
_bz_ArrayExpr<P_expr2> d2)
6449
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6450
_bz_ArrayExpr<P_expr2>,
6451
NotEqual<int, typename P_expr2::T_numtype> >
6452
(_bz_ArrayExprConstant<int>(d1),
6456
// int != IndexPlaceholder<N_index2>
6457
template<int N_index2>
6459
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6460
IndexPlaceholder<N_index2>,
6461
NotEqual<int, int > > >
6463
IndexPlaceholder<N_index2> d2)
6465
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6466
IndexPlaceholder<N_index2>,
6467
NotEqual<int, int> >
6468
(_bz_ArrayExprConstant<int>(d1),
6472
// float != Array<T_numtype2, N_rank2>
6473
template<class T_numtype2, int N_rank2>
6475
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
6476
ArrayIterator<T_numtype2, N_rank2>,
6477
NotEqual<float, T_numtype2 > > >
6478
operator!=(float d1,
6479
const Array<T_numtype2, N_rank2>& d2)
6481
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
6482
ArrayIterator<T_numtype2, N_rank2>,
6483
NotEqual<float, T_numtype2> >
6484
(_bz_ArrayExprConstant<float>(d1),
6488
// float != _bz_ArrayExpr<P_expr2>
6489
template<class P_expr2>
6491
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
6492
_bz_ArrayExpr<P_expr2>,
6493
NotEqual<float, typename P_expr2::T_numtype > > >
6494
operator!=(float d1,
6495
_bz_ArrayExpr<P_expr2> d2)
6497
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
6498
_bz_ArrayExpr<P_expr2>,
6499
NotEqual<float, typename P_expr2::T_numtype> >
6500
(_bz_ArrayExprConstant<float>(d1),
6504
// float != IndexPlaceholder<N_index2>
6505
template<int N_index2>
6507
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
6508
IndexPlaceholder<N_index2>,
6509
NotEqual<float, int > > >
6510
operator!=(float d1,
6511
IndexPlaceholder<N_index2> d2)
6513
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>,
6514
IndexPlaceholder<N_index2>,
6515
NotEqual<float, int> >
6516
(_bz_ArrayExprConstant<float>(d1),
6520
// double != Array<T_numtype2, N_rank2>
6521
template<class T_numtype2, int N_rank2>
6523
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
6524
ArrayIterator<T_numtype2, N_rank2>,
6525
NotEqual<double, T_numtype2 > > >
6526
operator!=(double d1,
6527
const Array<T_numtype2, N_rank2>& d2)
6529
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
6530
ArrayIterator<T_numtype2, N_rank2>,
6531
NotEqual<double, T_numtype2> >
6532
(_bz_ArrayExprConstant<double>(d1),
6536
// double != _bz_ArrayExpr<P_expr2>
6537
template<class P_expr2>
6539
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
6540
_bz_ArrayExpr<P_expr2>,
6541
NotEqual<double, typename P_expr2::T_numtype > > >
6542
operator!=(double d1,
6543
_bz_ArrayExpr<P_expr2> d2)
6545
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
6546
_bz_ArrayExpr<P_expr2>,
6547
NotEqual<double, typename P_expr2::T_numtype> >
6548
(_bz_ArrayExprConstant<double>(d1),
6552
// double != IndexPlaceholder<N_index2>
6553
template<int N_index2>
6555
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
6556
IndexPlaceholder<N_index2>,
6557
NotEqual<double, int > > >
6558
operator!=(double d1,
6559
IndexPlaceholder<N_index2> d2)
6561
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>,
6562
IndexPlaceholder<N_index2>,
6563
NotEqual<double, int> >
6564
(_bz_ArrayExprConstant<double>(d1),
6568
// long double != Array<T_numtype2, N_rank2>
6569
template<class T_numtype2, int N_rank2>
6571
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
6572
ArrayIterator<T_numtype2, N_rank2>,
6573
NotEqual<long double, T_numtype2 > > >
6574
operator!=(long double d1,
6575
const Array<T_numtype2, N_rank2>& d2)
6577
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
6578
ArrayIterator<T_numtype2, N_rank2>,
6579
NotEqual<long double, T_numtype2> >
6580
(_bz_ArrayExprConstant<long double>(d1),
6584
// long double != _bz_ArrayExpr<P_expr2>
6585
template<class P_expr2>
6587
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
6588
_bz_ArrayExpr<P_expr2>,
6589
NotEqual<long double, typename P_expr2::T_numtype > > >
6590
operator!=(long double d1,
6591
_bz_ArrayExpr<P_expr2> d2)
6593
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
6594
_bz_ArrayExpr<P_expr2>,
6595
NotEqual<long double, typename P_expr2::T_numtype> >
6596
(_bz_ArrayExprConstant<long double>(d1),
6600
// long double != IndexPlaceholder<N_index2>
6601
template<int N_index2>
6603
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
6604
IndexPlaceholder<N_index2>,
6605
NotEqual<long double, int > > >
6606
operator!=(long double d1,
6607
IndexPlaceholder<N_index2> d2)
6609
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>,
6610
IndexPlaceholder<N_index2>,
6611
NotEqual<long double, int> >
6612
(_bz_ArrayExprConstant<long double>(d1),
6616
#ifdef BZ_HAVE_COMPLEX
6617
// complex<T1> != Array<T_numtype2, N_rank2>
6618
template<class T1, class T_numtype2, int N_rank2>
6620
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6621
ArrayIterator<T_numtype2, N_rank2>,
6622
NotEqual<complex<T1> , T_numtype2 > > >
6623
operator!=(complex<T1> d1,
6624
const Array<T_numtype2, N_rank2>& d2)
6626
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6627
ArrayIterator<T_numtype2, N_rank2>,
6628
NotEqual<complex<T1> , T_numtype2> >
6629
(_bz_ArrayExprConstant<complex<T1> > (d1),
6632
#endif // BZ_HAVE_COMPLEX
6634
#ifdef BZ_HAVE_COMPLEX
6635
// complex<T1> != _bz_ArrayExpr<P_expr2>
6636
template<class T1, class P_expr2>
6638
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6639
_bz_ArrayExpr<P_expr2>,
6640
NotEqual<complex<T1> , typename P_expr2::T_numtype > > >
6641
operator!=(complex<T1> d1,
6642
_bz_ArrayExpr<P_expr2> d2)
6644
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6645
_bz_ArrayExpr<P_expr2>,
6646
NotEqual<complex<T1> , typename P_expr2::T_numtype> >
6647
(_bz_ArrayExprConstant<complex<T1> > (d1),
6650
#endif // BZ_HAVE_COMPLEX
6652
#ifdef BZ_HAVE_COMPLEX
6653
// complex<T1> != IndexPlaceholder<N_index2>
6654
template<class T1, int N_index2>
6656
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6657
IndexPlaceholder<N_index2>,
6658
NotEqual<complex<T1> , int > > >
6659
operator!=(complex<T1> d1,
6660
IndexPlaceholder<N_index2> d2)
6662
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > ,
6663
IndexPlaceholder<N_index2>,
6664
NotEqual<complex<T1> , int> >
6665
(_bz_ArrayExprConstant<complex<T1> > (d1),
6668
#endif // BZ_HAVE_COMPLEX
6669
/****************************************************************************
6670
* Logical AND operators
6671
****************************************************************************/
6673
// Array<T_numtype1, N_rank1> && Array<T_numtype2, N_rank2>
6674
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
6676
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6677
ArrayIterator<T_numtype2, N_rank2>,
6678
LogicalAnd<T_numtype1, T_numtype2 > > >
6679
operator&&(const Array<T_numtype1, N_rank1>& d1,
6680
const Array<T_numtype2, N_rank2>& d2)
6682
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6683
ArrayIterator<T_numtype2, N_rank2>,
6684
LogicalAnd<T_numtype1, T_numtype2> >
6689
// Array<T_numtype1, N_rank1> && _bz_ArrayExpr<P_expr2>
6690
template<class T_numtype1, int N_rank1, class P_expr2>
6692
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6693
_bz_ArrayExpr<P_expr2>,
6694
LogicalAnd<T_numtype1, typename P_expr2::T_numtype > > >
6695
operator&&(const Array<T_numtype1, N_rank1>& d1,
6696
_bz_ArrayExpr<P_expr2> d2)
6698
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6699
_bz_ArrayExpr<P_expr2>,
6700
LogicalAnd<T_numtype1, typename P_expr2::T_numtype> >
6705
// Array<T_numtype1, N_rank1> && IndexPlaceholder<N_index2>
6706
template<class T_numtype1, int N_rank1, int N_index2>
6708
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6709
IndexPlaceholder<N_index2>,
6710
LogicalAnd<T_numtype1, int > > >
6711
operator&&(const Array<T_numtype1, N_rank1>& d1,
6712
IndexPlaceholder<N_index2> d2)
6714
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6715
IndexPlaceholder<N_index2>,
6716
LogicalAnd<T_numtype1, int> >
6721
// Array<T_numtype1, N_rank1> && int
6722
template<class T_numtype1, int N_rank1>
6724
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6725
_bz_ArrayExprConstant<int>,
6726
LogicalAnd<T_numtype1, int > > >
6727
operator&&(const Array<T_numtype1, N_rank1>& d1,
6730
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6731
_bz_ArrayExprConstant<int>,
6732
LogicalAnd<T_numtype1, int> >
6734
_bz_ArrayExprConstant<int>(d2));
6737
// _bz_ArrayExpr<P_expr1> && Array<T_numtype2, N_rank2>
6738
template<class P_expr1, class T_numtype2, int N_rank2>
6740
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6741
ArrayIterator<T_numtype2, N_rank2>,
6742
LogicalAnd<typename P_expr1::T_numtype, T_numtype2 > > >
6743
operator&&(_bz_ArrayExpr<P_expr1> d1,
6744
const Array<T_numtype2, N_rank2>& d2)
6746
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6747
ArrayIterator<T_numtype2, N_rank2>,
6748
LogicalAnd<typename P_expr1::T_numtype, T_numtype2> >
6753
// _bz_ArrayExpr<P_expr1> && _bz_ArrayExpr<P_expr2>
6754
template<class P_expr1, class P_expr2>
6756
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6757
_bz_ArrayExpr<P_expr2>,
6758
LogicalAnd<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
6759
operator&&(_bz_ArrayExpr<P_expr1> d1,
6760
_bz_ArrayExpr<P_expr2> d2)
6762
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6763
_bz_ArrayExpr<P_expr2>,
6764
LogicalAnd<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
6769
// _bz_ArrayExpr<P_expr1> && IndexPlaceholder<N_index2>
6770
template<class P_expr1, int N_index2>
6772
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6773
IndexPlaceholder<N_index2>,
6774
LogicalAnd<typename P_expr1::T_numtype, int > > >
6775
operator&&(_bz_ArrayExpr<P_expr1> d1,
6776
IndexPlaceholder<N_index2> d2)
6778
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6779
IndexPlaceholder<N_index2>,
6780
LogicalAnd<typename P_expr1::T_numtype, int> >
6785
// _bz_ArrayExpr<P_expr1> && int
6786
template<class P_expr1>
6788
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6789
_bz_ArrayExprConstant<int>,
6790
LogicalAnd<typename P_expr1::T_numtype, int > > >
6791
operator&&(_bz_ArrayExpr<P_expr1> d1,
6794
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6795
_bz_ArrayExprConstant<int>,
6796
LogicalAnd<typename P_expr1::T_numtype, int> >
6798
_bz_ArrayExprConstant<int>(d2));
6801
// IndexPlaceholder<N_index1> && Array<T_numtype2, N_rank2>
6802
template<int N_index1, class T_numtype2, int N_rank2>
6804
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6805
ArrayIterator<T_numtype2, N_rank2>,
6806
LogicalAnd<int, T_numtype2 > > >
6807
operator&&(IndexPlaceholder<N_index1> d1,
6808
const Array<T_numtype2, N_rank2>& d2)
6810
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6811
ArrayIterator<T_numtype2, N_rank2>,
6812
LogicalAnd<int, T_numtype2> >
6817
// IndexPlaceholder<N_index1> && _bz_ArrayExpr<P_expr2>
6818
template<int N_index1, class P_expr2>
6820
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6821
_bz_ArrayExpr<P_expr2>,
6822
LogicalAnd<int, typename P_expr2::T_numtype > > >
6823
operator&&(IndexPlaceholder<N_index1> d1,
6824
_bz_ArrayExpr<P_expr2> d2)
6826
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6827
_bz_ArrayExpr<P_expr2>,
6828
LogicalAnd<int, typename P_expr2::T_numtype> >
6833
// IndexPlaceholder<N_index1> && IndexPlaceholder<N_index2>
6834
template<int N_index1, int N_index2>
6836
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6837
IndexPlaceholder<N_index2>,
6838
LogicalAnd<int, int > > >
6839
operator&&(IndexPlaceholder<N_index1> d1,
6840
IndexPlaceholder<N_index2> d2)
6842
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6843
IndexPlaceholder<N_index2>,
6844
LogicalAnd<int, int> >
6849
// IndexPlaceholder<N_index1> && int
6850
template<int N_index1>
6852
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6853
_bz_ArrayExprConstant<int>,
6854
LogicalAnd<int, int > > >
6855
operator&&(IndexPlaceholder<N_index1> d1,
6858
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
6859
_bz_ArrayExprConstant<int>,
6860
LogicalAnd<int, int> >
6862
_bz_ArrayExprConstant<int>(d2));
6865
// int && Array<T_numtype2, N_rank2>
6866
template<class T_numtype2, int N_rank2>
6868
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6869
ArrayIterator<T_numtype2, N_rank2>,
6870
LogicalAnd<int, T_numtype2 > > >
6872
const Array<T_numtype2, N_rank2>& d2)
6874
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6875
ArrayIterator<T_numtype2, N_rank2>,
6876
LogicalAnd<int, T_numtype2> >
6877
(_bz_ArrayExprConstant<int>(d1),
6881
// int && _bz_ArrayExpr<P_expr2>
6882
template<class P_expr2>
6884
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6885
_bz_ArrayExpr<P_expr2>,
6886
LogicalAnd<int, typename P_expr2::T_numtype > > >
6888
_bz_ArrayExpr<P_expr2> d2)
6890
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6891
_bz_ArrayExpr<P_expr2>,
6892
LogicalAnd<int, typename P_expr2::T_numtype> >
6893
(_bz_ArrayExprConstant<int>(d1),
6897
// int && IndexPlaceholder<N_index2>
6898
template<int N_index2>
6900
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6901
IndexPlaceholder<N_index2>,
6902
LogicalAnd<int, int > > >
6904
IndexPlaceholder<N_index2> d2)
6906
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
6907
IndexPlaceholder<N_index2>,
6908
LogicalAnd<int, int> >
6909
(_bz_ArrayExprConstant<int>(d1),
6912
/****************************************************************************
6913
* Logical OR operators
6914
****************************************************************************/
6916
// Array<T_numtype1, N_rank1> || Array<T_numtype2, N_rank2>
6917
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
6919
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6920
ArrayIterator<T_numtype2, N_rank2>,
6921
LogicalOr<T_numtype1, T_numtype2 > > >
6922
operator||(const Array<T_numtype1, N_rank1>& d1,
6923
const Array<T_numtype2, N_rank2>& d2)
6925
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6926
ArrayIterator<T_numtype2, N_rank2>,
6927
LogicalOr<T_numtype1, T_numtype2> >
6932
// Array<T_numtype1, N_rank1> || _bz_ArrayExpr<P_expr2>
6933
template<class T_numtype1, int N_rank1, class P_expr2>
6935
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6936
_bz_ArrayExpr<P_expr2>,
6937
LogicalOr<T_numtype1, typename P_expr2::T_numtype > > >
6938
operator||(const Array<T_numtype1, N_rank1>& d1,
6939
_bz_ArrayExpr<P_expr2> d2)
6941
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6942
_bz_ArrayExpr<P_expr2>,
6943
LogicalOr<T_numtype1, typename P_expr2::T_numtype> >
6948
// Array<T_numtype1, N_rank1> || IndexPlaceholder<N_index2>
6949
template<class T_numtype1, int N_rank1, int N_index2>
6951
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6952
IndexPlaceholder<N_index2>,
6953
LogicalOr<T_numtype1, int > > >
6954
operator||(const Array<T_numtype1, N_rank1>& d1,
6955
IndexPlaceholder<N_index2> d2)
6957
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6958
IndexPlaceholder<N_index2>,
6959
LogicalOr<T_numtype1, int> >
6964
// Array<T_numtype1, N_rank1> || int
6965
template<class T_numtype1, int N_rank1>
6967
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6968
_bz_ArrayExprConstant<int>,
6969
LogicalOr<T_numtype1, int > > >
6970
operator||(const Array<T_numtype1, N_rank1>& d1,
6973
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
6974
_bz_ArrayExprConstant<int>,
6975
LogicalOr<T_numtype1, int> >
6977
_bz_ArrayExprConstant<int>(d2));
6980
// _bz_ArrayExpr<P_expr1> || Array<T_numtype2, N_rank2>
6981
template<class P_expr1, class T_numtype2, int N_rank2>
6983
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6984
ArrayIterator<T_numtype2, N_rank2>,
6985
LogicalOr<typename P_expr1::T_numtype, T_numtype2 > > >
6986
operator||(_bz_ArrayExpr<P_expr1> d1,
6987
const Array<T_numtype2, N_rank2>& d2)
6989
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
6990
ArrayIterator<T_numtype2, N_rank2>,
6991
LogicalOr<typename P_expr1::T_numtype, T_numtype2> >
6996
// _bz_ArrayExpr<P_expr1> || _bz_ArrayExpr<P_expr2>
6997
template<class P_expr1, class P_expr2>
6999
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7000
_bz_ArrayExpr<P_expr2>,
7001
LogicalOr<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
7002
operator||(_bz_ArrayExpr<P_expr1> d1,
7003
_bz_ArrayExpr<P_expr2> d2)
7005
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7006
_bz_ArrayExpr<P_expr2>,
7007
LogicalOr<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
7012
// _bz_ArrayExpr<P_expr1> || IndexPlaceholder<N_index2>
7013
template<class P_expr1, int N_index2>
7015
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7016
IndexPlaceholder<N_index2>,
7017
LogicalOr<typename P_expr1::T_numtype, int > > >
7018
operator||(_bz_ArrayExpr<P_expr1> d1,
7019
IndexPlaceholder<N_index2> d2)
7021
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7022
IndexPlaceholder<N_index2>,
7023
LogicalOr<typename P_expr1::T_numtype, int> >
7028
// _bz_ArrayExpr<P_expr1> || int
7029
template<class P_expr1>
7031
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7032
_bz_ArrayExprConstant<int>,
7033
LogicalOr<typename P_expr1::T_numtype, int > > >
7034
operator||(_bz_ArrayExpr<P_expr1> d1,
7037
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7038
_bz_ArrayExprConstant<int>,
7039
LogicalOr<typename P_expr1::T_numtype, int> >
7041
_bz_ArrayExprConstant<int>(d2));
7044
// IndexPlaceholder<N_index1> || Array<T_numtype2, N_rank2>
7045
template<int N_index1, class T_numtype2, int N_rank2>
7047
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7048
ArrayIterator<T_numtype2, N_rank2>,
7049
LogicalOr<int, T_numtype2 > > >
7050
operator||(IndexPlaceholder<N_index1> d1,
7051
const Array<T_numtype2, N_rank2>& d2)
7053
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7054
ArrayIterator<T_numtype2, N_rank2>,
7055
LogicalOr<int, T_numtype2> >
7060
// IndexPlaceholder<N_index1> || _bz_ArrayExpr<P_expr2>
7061
template<int N_index1, class P_expr2>
7063
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7064
_bz_ArrayExpr<P_expr2>,
7065
LogicalOr<int, typename P_expr2::T_numtype > > >
7066
operator||(IndexPlaceholder<N_index1> d1,
7067
_bz_ArrayExpr<P_expr2> d2)
7069
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7070
_bz_ArrayExpr<P_expr2>,
7071
LogicalOr<int, typename P_expr2::T_numtype> >
7076
// IndexPlaceholder<N_index1> || IndexPlaceholder<N_index2>
7077
template<int N_index1, int N_index2>
7079
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7080
IndexPlaceholder<N_index2>,
7081
LogicalOr<int, int > > >
7082
operator||(IndexPlaceholder<N_index1> d1,
7083
IndexPlaceholder<N_index2> d2)
7085
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7086
IndexPlaceholder<N_index2>,
7087
LogicalOr<int, int> >
7092
// IndexPlaceholder<N_index1> || int
7093
template<int N_index1>
7095
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7096
_bz_ArrayExprConstant<int>,
7097
LogicalOr<int, int > > >
7098
operator||(IndexPlaceholder<N_index1> d1,
7101
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7102
_bz_ArrayExprConstant<int>,
7103
LogicalOr<int, int> >
7105
_bz_ArrayExprConstant<int>(d2));
7108
// int || Array<T_numtype2, N_rank2>
7109
template<class T_numtype2, int N_rank2>
7111
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7112
ArrayIterator<T_numtype2, N_rank2>,
7113
LogicalOr<int, T_numtype2 > > >
7115
const Array<T_numtype2, N_rank2>& d2)
7117
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7118
ArrayIterator<T_numtype2, N_rank2>,
7119
LogicalOr<int, T_numtype2> >
7120
(_bz_ArrayExprConstant<int>(d1),
7124
// int || _bz_ArrayExpr<P_expr2>
7125
template<class P_expr2>
7127
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7128
_bz_ArrayExpr<P_expr2>,
7129
LogicalOr<int, typename P_expr2::T_numtype > > >
7131
_bz_ArrayExpr<P_expr2> d2)
7133
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7134
_bz_ArrayExpr<P_expr2>,
7135
LogicalOr<int, typename P_expr2::T_numtype> >
7136
(_bz_ArrayExprConstant<int>(d1),
7140
// int || IndexPlaceholder<N_index2>
7141
template<int N_index2>
7143
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7144
IndexPlaceholder<N_index2>,
7145
LogicalOr<int, int > > >
7147
IndexPlaceholder<N_index2> d2)
7149
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7150
IndexPlaceholder<N_index2>,
7151
LogicalOr<int, int> >
7152
(_bz_ArrayExprConstant<int>(d1),
7155
/****************************************************************************
7156
* Bitwise XOR Operators
7157
****************************************************************************/
7159
// Array<T_numtype1, N_rank1> ^ Array<T_numtype2, N_rank2>
7160
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
7162
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7163
ArrayIterator<T_numtype2, N_rank2>,
7164
BitwiseXor<T_numtype1, T_numtype2 > > >
7165
operator^(const Array<T_numtype1, N_rank1>& d1,
7166
const Array<T_numtype2, N_rank2>& d2)
7168
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7169
ArrayIterator<T_numtype2, N_rank2>,
7170
BitwiseXor<T_numtype1, T_numtype2> >
7175
// Array<T_numtype1, N_rank1> ^ _bz_ArrayExpr<P_expr2>
7176
template<class T_numtype1, int N_rank1, class P_expr2>
7178
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7179
_bz_ArrayExpr<P_expr2>,
7180
BitwiseXor<T_numtype1, typename P_expr2::T_numtype > > >
7181
operator^(const Array<T_numtype1, N_rank1>& d1,
7182
_bz_ArrayExpr<P_expr2> d2)
7184
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7185
_bz_ArrayExpr<P_expr2>,
7186
BitwiseXor<T_numtype1, typename P_expr2::T_numtype> >
7191
// Array<T_numtype1, N_rank1> ^ IndexPlaceholder<N_index2>
7192
template<class T_numtype1, int N_rank1, int N_index2>
7194
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7195
IndexPlaceholder<N_index2>,
7196
BitwiseXor<T_numtype1, int > > >
7197
operator^(const Array<T_numtype1, N_rank1>& d1,
7198
IndexPlaceholder<N_index2> d2)
7200
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7201
IndexPlaceholder<N_index2>,
7202
BitwiseXor<T_numtype1, int> >
7207
// Array<T_numtype1, N_rank1> ^ int
7208
template<class T_numtype1, int N_rank1>
7210
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7211
_bz_ArrayExprConstant<int>,
7212
BitwiseXor<T_numtype1, int > > >
7213
operator^(const Array<T_numtype1, N_rank1>& d1,
7216
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7217
_bz_ArrayExprConstant<int>,
7218
BitwiseXor<T_numtype1, int> >
7220
_bz_ArrayExprConstant<int>(d2));
7223
// _bz_ArrayExpr<P_expr1> ^ Array<T_numtype2, N_rank2>
7224
template<class P_expr1, class T_numtype2, int N_rank2>
7226
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7227
ArrayIterator<T_numtype2, N_rank2>,
7228
BitwiseXor<typename P_expr1::T_numtype, T_numtype2 > > >
7229
operator^(_bz_ArrayExpr<P_expr1> d1,
7230
const Array<T_numtype2, N_rank2>& d2)
7232
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7233
ArrayIterator<T_numtype2, N_rank2>,
7234
BitwiseXor<typename P_expr1::T_numtype, T_numtype2> >
7239
// _bz_ArrayExpr<P_expr1> ^ _bz_ArrayExpr<P_expr2>
7240
template<class P_expr1, class P_expr2>
7242
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7243
_bz_ArrayExpr<P_expr2>,
7244
BitwiseXor<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
7245
operator^(_bz_ArrayExpr<P_expr1> d1,
7246
_bz_ArrayExpr<P_expr2> d2)
7248
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7249
_bz_ArrayExpr<P_expr2>,
7250
BitwiseXor<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
7255
// _bz_ArrayExpr<P_expr1> ^ IndexPlaceholder<N_index2>
7256
template<class P_expr1, int N_index2>
7258
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7259
IndexPlaceholder<N_index2>,
7260
BitwiseXor<typename P_expr1::T_numtype, int > > >
7261
operator^(_bz_ArrayExpr<P_expr1> d1,
7262
IndexPlaceholder<N_index2> d2)
7264
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7265
IndexPlaceholder<N_index2>,
7266
BitwiseXor<typename P_expr1::T_numtype, int> >
7271
// _bz_ArrayExpr<P_expr1> ^ int
7272
template<class P_expr1>
7274
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7275
_bz_ArrayExprConstant<int>,
7276
BitwiseXor<typename P_expr1::T_numtype, int > > >
7277
operator^(_bz_ArrayExpr<P_expr1> d1,
7280
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7281
_bz_ArrayExprConstant<int>,
7282
BitwiseXor<typename P_expr1::T_numtype, int> >
7284
_bz_ArrayExprConstant<int>(d2));
7287
// IndexPlaceholder<N_index1> ^ Array<T_numtype2, N_rank2>
7288
template<int N_index1, class T_numtype2, int N_rank2>
7290
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7291
ArrayIterator<T_numtype2, N_rank2>,
7292
BitwiseXor<int, T_numtype2 > > >
7293
operator^(IndexPlaceholder<N_index1> d1,
7294
const Array<T_numtype2, N_rank2>& d2)
7296
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7297
ArrayIterator<T_numtype2, N_rank2>,
7298
BitwiseXor<int, T_numtype2> >
7303
// IndexPlaceholder<N_index1> ^ _bz_ArrayExpr<P_expr2>
7304
template<int N_index1, class P_expr2>
7306
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7307
_bz_ArrayExpr<P_expr2>,
7308
BitwiseXor<int, typename P_expr2::T_numtype > > >
7309
operator^(IndexPlaceholder<N_index1> d1,
7310
_bz_ArrayExpr<P_expr2> d2)
7312
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7313
_bz_ArrayExpr<P_expr2>,
7314
BitwiseXor<int, typename P_expr2::T_numtype> >
7319
// IndexPlaceholder<N_index1> ^ IndexPlaceholder<N_index2>
7320
template<int N_index1, int N_index2>
7322
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7323
IndexPlaceholder<N_index2>,
7324
BitwiseXor<int, int > > >
7325
operator^(IndexPlaceholder<N_index1> d1,
7326
IndexPlaceholder<N_index2> d2)
7328
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7329
IndexPlaceholder<N_index2>,
7330
BitwiseXor<int, int> >
7335
// IndexPlaceholder<N_index1> ^ int
7336
template<int N_index1>
7338
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7339
_bz_ArrayExprConstant<int>,
7340
BitwiseXor<int, int > > >
7341
operator^(IndexPlaceholder<N_index1> d1,
7344
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7345
_bz_ArrayExprConstant<int>,
7346
BitwiseXor<int, int> >
7348
_bz_ArrayExprConstant<int>(d2));
7351
// int ^ Array<T_numtype2, N_rank2>
7352
template<class T_numtype2, int N_rank2>
7354
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7355
ArrayIterator<T_numtype2, N_rank2>,
7356
BitwiseXor<int, T_numtype2 > > >
7358
const Array<T_numtype2, N_rank2>& d2)
7360
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7361
ArrayIterator<T_numtype2, N_rank2>,
7362
BitwiseXor<int, T_numtype2> >
7363
(_bz_ArrayExprConstant<int>(d1),
7367
// int ^ _bz_ArrayExpr<P_expr2>
7368
template<class P_expr2>
7370
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7371
_bz_ArrayExpr<P_expr2>,
7372
BitwiseXor<int, typename P_expr2::T_numtype > > >
7374
_bz_ArrayExpr<P_expr2> d2)
7376
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7377
_bz_ArrayExpr<P_expr2>,
7378
BitwiseXor<int, typename P_expr2::T_numtype> >
7379
(_bz_ArrayExprConstant<int>(d1),
7383
// int ^ IndexPlaceholder<N_index2>
7384
template<int N_index2>
7386
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7387
IndexPlaceholder<N_index2>,
7388
BitwiseXor<int, int > > >
7390
IndexPlaceholder<N_index2> d2)
7392
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7393
IndexPlaceholder<N_index2>,
7394
BitwiseXor<int, int> >
7395
(_bz_ArrayExprConstant<int>(d1),
7398
/****************************************************************************
7399
* Bitwise And Operators
7400
****************************************************************************/
7402
// Array<T_numtype1, N_rank1> & Array<T_numtype2, N_rank2>
7403
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
7405
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7406
ArrayIterator<T_numtype2, N_rank2>,
7407
BitwiseAnd<T_numtype1, T_numtype2 > > >
7408
operator&(const Array<T_numtype1, N_rank1>& d1,
7409
const Array<T_numtype2, N_rank2>& d2)
7411
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7412
ArrayIterator<T_numtype2, N_rank2>,
7413
BitwiseAnd<T_numtype1, T_numtype2> >
7418
// Array<T_numtype1, N_rank1> & _bz_ArrayExpr<P_expr2>
7419
template<class T_numtype1, int N_rank1, class P_expr2>
7421
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7422
_bz_ArrayExpr<P_expr2>,
7423
BitwiseAnd<T_numtype1, typename P_expr2::T_numtype > > >
7424
operator&(const Array<T_numtype1, N_rank1>& d1,
7425
_bz_ArrayExpr<P_expr2> d2)
7427
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7428
_bz_ArrayExpr<P_expr2>,
7429
BitwiseAnd<T_numtype1, typename P_expr2::T_numtype> >
7434
// Array<T_numtype1, N_rank1> & IndexPlaceholder<N_index2>
7435
template<class T_numtype1, int N_rank1, int N_index2>
7437
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7438
IndexPlaceholder<N_index2>,
7439
BitwiseAnd<T_numtype1, int > > >
7440
operator&(const Array<T_numtype1, N_rank1>& d1,
7441
IndexPlaceholder<N_index2> d2)
7443
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7444
IndexPlaceholder<N_index2>,
7445
BitwiseAnd<T_numtype1, int> >
7450
// Array<T_numtype1, N_rank1> & int
7451
template<class T_numtype1, int N_rank1>
7453
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7454
_bz_ArrayExprConstant<int>,
7455
BitwiseAnd<T_numtype1, int > > >
7456
operator&(const Array<T_numtype1, N_rank1>& d1,
7459
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7460
_bz_ArrayExprConstant<int>,
7461
BitwiseAnd<T_numtype1, int> >
7463
_bz_ArrayExprConstant<int>(d2));
7466
// _bz_ArrayExpr<P_expr1> & Array<T_numtype2, N_rank2>
7467
template<class P_expr1, class T_numtype2, int N_rank2>
7469
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7470
ArrayIterator<T_numtype2, N_rank2>,
7471
BitwiseAnd<typename P_expr1::T_numtype, T_numtype2 > > >
7472
operator&(_bz_ArrayExpr<P_expr1> d1,
7473
const Array<T_numtype2, N_rank2>& d2)
7475
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7476
ArrayIterator<T_numtype2, N_rank2>,
7477
BitwiseAnd<typename P_expr1::T_numtype, T_numtype2> >
7482
// _bz_ArrayExpr<P_expr1> & _bz_ArrayExpr<P_expr2>
7483
template<class P_expr1, class P_expr2>
7485
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7486
_bz_ArrayExpr<P_expr2>,
7487
BitwiseAnd<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
7488
operator&(_bz_ArrayExpr<P_expr1> d1,
7489
_bz_ArrayExpr<P_expr2> d2)
7491
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7492
_bz_ArrayExpr<P_expr2>,
7493
BitwiseAnd<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
7498
// _bz_ArrayExpr<P_expr1> & IndexPlaceholder<N_index2>
7499
template<class P_expr1, int N_index2>
7501
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7502
IndexPlaceholder<N_index2>,
7503
BitwiseAnd<typename P_expr1::T_numtype, int > > >
7504
operator&(_bz_ArrayExpr<P_expr1> d1,
7505
IndexPlaceholder<N_index2> d2)
7507
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7508
IndexPlaceholder<N_index2>,
7509
BitwiseAnd<typename P_expr1::T_numtype, int> >
7514
// _bz_ArrayExpr<P_expr1> & int
7515
template<class P_expr1>
7517
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7518
_bz_ArrayExprConstant<int>,
7519
BitwiseAnd<typename P_expr1::T_numtype, int > > >
7520
operator&(_bz_ArrayExpr<P_expr1> d1,
7523
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7524
_bz_ArrayExprConstant<int>,
7525
BitwiseAnd<typename P_expr1::T_numtype, int> >
7527
_bz_ArrayExprConstant<int>(d2));
7530
// IndexPlaceholder<N_index1> & Array<T_numtype2, N_rank2>
7531
template<int N_index1, class T_numtype2, int N_rank2>
7533
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7534
ArrayIterator<T_numtype2, N_rank2>,
7535
BitwiseAnd<int, T_numtype2 > > >
7536
operator&(IndexPlaceholder<N_index1> d1,
7537
const Array<T_numtype2, N_rank2>& d2)
7539
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7540
ArrayIterator<T_numtype2, N_rank2>,
7541
BitwiseAnd<int, T_numtype2> >
7546
// IndexPlaceholder<N_index1> & _bz_ArrayExpr<P_expr2>
7547
template<int N_index1, class P_expr2>
7549
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7550
_bz_ArrayExpr<P_expr2>,
7551
BitwiseAnd<int, typename P_expr2::T_numtype > > >
7552
operator&(IndexPlaceholder<N_index1> d1,
7553
_bz_ArrayExpr<P_expr2> d2)
7555
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7556
_bz_ArrayExpr<P_expr2>,
7557
BitwiseAnd<int, typename P_expr2::T_numtype> >
7562
// IndexPlaceholder<N_index1> & IndexPlaceholder<N_index2>
7563
template<int N_index1, int N_index2>
7565
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7566
IndexPlaceholder<N_index2>,
7567
BitwiseAnd<int, int > > >
7568
operator&(IndexPlaceholder<N_index1> d1,
7569
IndexPlaceholder<N_index2> d2)
7571
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7572
IndexPlaceholder<N_index2>,
7573
BitwiseAnd<int, int> >
7578
// IndexPlaceholder<N_index1> & int
7579
template<int N_index1>
7581
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7582
_bz_ArrayExprConstant<int>,
7583
BitwiseAnd<int, int > > >
7584
operator&(IndexPlaceholder<N_index1> d1,
7587
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7588
_bz_ArrayExprConstant<int>,
7589
BitwiseAnd<int, int> >
7591
_bz_ArrayExprConstant<int>(d2));
7594
// int & Array<T_numtype2, N_rank2>
7595
template<class T_numtype2, int N_rank2>
7597
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7598
ArrayIterator<T_numtype2, N_rank2>,
7599
BitwiseAnd<int, T_numtype2 > > >
7601
const Array<T_numtype2, N_rank2>& d2)
7603
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7604
ArrayIterator<T_numtype2, N_rank2>,
7605
BitwiseAnd<int, T_numtype2> >
7606
(_bz_ArrayExprConstant<int>(d1),
7610
// int & _bz_ArrayExpr<P_expr2>
7611
template<class P_expr2>
7613
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7614
_bz_ArrayExpr<P_expr2>,
7615
BitwiseAnd<int, typename P_expr2::T_numtype > > >
7617
_bz_ArrayExpr<P_expr2> d2)
7619
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7620
_bz_ArrayExpr<P_expr2>,
7621
BitwiseAnd<int, typename P_expr2::T_numtype> >
7622
(_bz_ArrayExprConstant<int>(d1),
7626
// int & IndexPlaceholder<N_index2>
7627
template<int N_index2>
7629
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7630
IndexPlaceholder<N_index2>,
7631
BitwiseAnd<int, int > > >
7633
IndexPlaceholder<N_index2> d2)
7635
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7636
IndexPlaceholder<N_index2>,
7637
BitwiseAnd<int, int> >
7638
(_bz_ArrayExprConstant<int>(d1),
7641
/****************************************************************************
7642
* Bitwise Or Operators
7643
****************************************************************************/
7645
// Array<T_numtype1, N_rank1> | Array<T_numtype2, N_rank2>
7646
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
7648
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7649
ArrayIterator<T_numtype2, N_rank2>,
7650
BitwiseOr<T_numtype1, T_numtype2 > > >
7651
operator|(const Array<T_numtype1, N_rank1>& d1,
7652
const Array<T_numtype2, N_rank2>& d2)
7654
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7655
ArrayIterator<T_numtype2, N_rank2>,
7656
BitwiseOr<T_numtype1, T_numtype2> >
7661
// Array<T_numtype1, N_rank1> | _bz_ArrayExpr<P_expr2>
7662
template<class T_numtype1, int N_rank1, class P_expr2>
7664
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7665
_bz_ArrayExpr<P_expr2>,
7666
BitwiseOr<T_numtype1, typename P_expr2::T_numtype > > >
7667
operator|(const Array<T_numtype1, N_rank1>& d1,
7668
_bz_ArrayExpr<P_expr2> d2)
7670
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7671
_bz_ArrayExpr<P_expr2>,
7672
BitwiseOr<T_numtype1, typename P_expr2::T_numtype> >
7677
// Array<T_numtype1, N_rank1> | IndexPlaceholder<N_index2>
7678
template<class T_numtype1, int N_rank1, int N_index2>
7680
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7681
IndexPlaceholder<N_index2>,
7682
BitwiseOr<T_numtype1, int > > >
7683
operator|(const Array<T_numtype1, N_rank1>& d1,
7684
IndexPlaceholder<N_index2> d2)
7686
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7687
IndexPlaceholder<N_index2>,
7688
BitwiseOr<T_numtype1, int> >
7693
// Array<T_numtype1, N_rank1> | int
7694
template<class T_numtype1, int N_rank1>
7696
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7697
_bz_ArrayExprConstant<int>,
7698
BitwiseOr<T_numtype1, int > > >
7699
operator|(const Array<T_numtype1, N_rank1>& d1,
7702
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7703
_bz_ArrayExprConstant<int>,
7704
BitwiseOr<T_numtype1, int> >
7706
_bz_ArrayExprConstant<int>(d2));
7709
// _bz_ArrayExpr<P_expr1> | Array<T_numtype2, N_rank2>
7710
template<class P_expr1, class T_numtype2, int N_rank2>
7712
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7713
ArrayIterator<T_numtype2, N_rank2>,
7714
BitwiseOr<typename P_expr1::T_numtype, T_numtype2 > > >
7715
operator|(_bz_ArrayExpr<P_expr1> d1,
7716
const Array<T_numtype2, N_rank2>& d2)
7718
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7719
ArrayIterator<T_numtype2, N_rank2>,
7720
BitwiseOr<typename P_expr1::T_numtype, T_numtype2> >
7725
// _bz_ArrayExpr<P_expr1> | _bz_ArrayExpr<P_expr2>
7726
template<class P_expr1, class P_expr2>
7728
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7729
_bz_ArrayExpr<P_expr2>,
7730
BitwiseOr<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
7731
operator|(_bz_ArrayExpr<P_expr1> d1,
7732
_bz_ArrayExpr<P_expr2> d2)
7734
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7735
_bz_ArrayExpr<P_expr2>,
7736
BitwiseOr<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
7741
// _bz_ArrayExpr<P_expr1> | IndexPlaceholder<N_index2>
7742
template<class P_expr1, int N_index2>
7744
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7745
IndexPlaceholder<N_index2>,
7746
BitwiseOr<typename P_expr1::T_numtype, int > > >
7747
operator|(_bz_ArrayExpr<P_expr1> d1,
7748
IndexPlaceholder<N_index2> d2)
7750
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7751
IndexPlaceholder<N_index2>,
7752
BitwiseOr<typename P_expr1::T_numtype, int> >
7757
// _bz_ArrayExpr<P_expr1> | int
7758
template<class P_expr1>
7760
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7761
_bz_ArrayExprConstant<int>,
7762
BitwiseOr<typename P_expr1::T_numtype, int > > >
7763
operator|(_bz_ArrayExpr<P_expr1> d1,
7766
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7767
_bz_ArrayExprConstant<int>,
7768
BitwiseOr<typename P_expr1::T_numtype, int> >
7770
_bz_ArrayExprConstant<int>(d2));
7773
// IndexPlaceholder<N_index1> | Array<T_numtype2, N_rank2>
7774
template<int N_index1, class T_numtype2, int N_rank2>
7776
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7777
ArrayIterator<T_numtype2, N_rank2>,
7778
BitwiseOr<int, T_numtype2 > > >
7779
operator|(IndexPlaceholder<N_index1> d1,
7780
const Array<T_numtype2, N_rank2>& d2)
7782
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7783
ArrayIterator<T_numtype2, N_rank2>,
7784
BitwiseOr<int, T_numtype2> >
7789
// IndexPlaceholder<N_index1> | _bz_ArrayExpr<P_expr2>
7790
template<int N_index1, class P_expr2>
7792
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7793
_bz_ArrayExpr<P_expr2>,
7794
BitwiseOr<int, typename P_expr2::T_numtype > > >
7795
operator|(IndexPlaceholder<N_index1> d1,
7796
_bz_ArrayExpr<P_expr2> d2)
7798
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7799
_bz_ArrayExpr<P_expr2>,
7800
BitwiseOr<int, typename P_expr2::T_numtype> >
7805
// IndexPlaceholder<N_index1> | IndexPlaceholder<N_index2>
7806
template<int N_index1, int N_index2>
7808
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7809
IndexPlaceholder<N_index2>,
7810
BitwiseOr<int, int > > >
7811
operator|(IndexPlaceholder<N_index1> d1,
7812
IndexPlaceholder<N_index2> d2)
7814
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7815
IndexPlaceholder<N_index2>,
7816
BitwiseOr<int, int> >
7821
// IndexPlaceholder<N_index1> | int
7822
template<int N_index1>
7824
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7825
_bz_ArrayExprConstant<int>,
7826
BitwiseOr<int, int > > >
7827
operator|(IndexPlaceholder<N_index1> d1,
7830
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
7831
_bz_ArrayExprConstant<int>,
7832
BitwiseOr<int, int> >
7834
_bz_ArrayExprConstant<int>(d2));
7837
// int | Array<T_numtype2, N_rank2>
7838
template<class T_numtype2, int N_rank2>
7840
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7841
ArrayIterator<T_numtype2, N_rank2>,
7842
BitwiseOr<int, T_numtype2 > > >
7844
const Array<T_numtype2, N_rank2>& d2)
7846
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7847
ArrayIterator<T_numtype2, N_rank2>,
7848
BitwiseOr<int, T_numtype2> >
7849
(_bz_ArrayExprConstant<int>(d1),
7853
// int | _bz_ArrayExpr<P_expr2>
7854
template<class P_expr2>
7856
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7857
_bz_ArrayExpr<P_expr2>,
7858
BitwiseOr<int, typename P_expr2::T_numtype > > >
7860
_bz_ArrayExpr<P_expr2> d2)
7862
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7863
_bz_ArrayExpr<P_expr2>,
7864
BitwiseOr<int, typename P_expr2::T_numtype> >
7865
(_bz_ArrayExprConstant<int>(d1),
7869
// int | IndexPlaceholder<N_index2>
7870
template<int N_index2>
7872
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7873
IndexPlaceholder<N_index2>,
7874
BitwiseOr<int, int > > >
7876
IndexPlaceholder<N_index2> d2)
7878
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
7879
IndexPlaceholder<N_index2>,
7880
BitwiseOr<int, int> >
7881
(_bz_ArrayExprConstant<int>(d1),
7884
/****************************************************************************
7885
* Shift right Operators
7886
****************************************************************************/
7888
// Array<T_numtype1, N_rank1> >> Array<T_numtype2, N_rank2>
7889
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
7891
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7892
ArrayIterator<T_numtype2, N_rank2>,
7893
ShiftRight<T_numtype1, T_numtype2 > > >
7894
operator>>(const Array<T_numtype1, N_rank1>& d1,
7895
const Array<T_numtype2, N_rank2>& d2)
7897
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7898
ArrayIterator<T_numtype2, N_rank2>,
7899
ShiftRight<T_numtype1, T_numtype2> >
7904
// Array<T_numtype1, N_rank1> >> _bz_ArrayExpr<P_expr2>
7905
template<class T_numtype1, int N_rank1, class P_expr2>
7907
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7908
_bz_ArrayExpr<P_expr2>,
7909
ShiftRight<T_numtype1, typename P_expr2::T_numtype > > >
7910
operator>>(const Array<T_numtype1, N_rank1>& d1,
7911
_bz_ArrayExpr<P_expr2> d2)
7913
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7914
_bz_ArrayExpr<P_expr2>,
7915
ShiftRight<T_numtype1, typename P_expr2::T_numtype> >
7920
// Array<T_numtype1, N_rank1> >> IndexPlaceholder<N_index2>
7921
template<class T_numtype1, int N_rank1, int N_index2>
7923
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7924
IndexPlaceholder<N_index2>,
7925
ShiftRight<T_numtype1, int > > >
7926
operator>>(const Array<T_numtype1, N_rank1>& d1,
7927
IndexPlaceholder<N_index2> d2)
7929
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7930
IndexPlaceholder<N_index2>,
7931
ShiftRight<T_numtype1, int> >
7936
// Array<T_numtype1, N_rank1> >> int
7937
template<class T_numtype1, int N_rank1>
7939
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7940
_bz_ArrayExprConstant<int>,
7941
ShiftRight<T_numtype1, int > > >
7942
operator>>(const Array<T_numtype1, N_rank1>& d1,
7945
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
7946
_bz_ArrayExprConstant<int>,
7947
ShiftRight<T_numtype1, int> >
7949
_bz_ArrayExprConstant<int>(d2));
7952
// _bz_ArrayExpr<P_expr1> >> Array<T_numtype2, N_rank2>
7953
template<class P_expr1, class T_numtype2, int N_rank2>
7955
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7956
ArrayIterator<T_numtype2, N_rank2>,
7957
ShiftRight<typename P_expr1::T_numtype, T_numtype2 > > >
7958
operator>>(_bz_ArrayExpr<P_expr1> d1,
7959
const Array<T_numtype2, N_rank2>& d2)
7961
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7962
ArrayIterator<T_numtype2, N_rank2>,
7963
ShiftRight<typename P_expr1::T_numtype, T_numtype2> >
7968
// _bz_ArrayExpr<P_expr1> >> _bz_ArrayExpr<P_expr2>
7969
template<class P_expr1, class P_expr2>
7971
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7972
_bz_ArrayExpr<P_expr2>,
7973
ShiftRight<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
7974
operator>>(_bz_ArrayExpr<P_expr1> d1,
7975
_bz_ArrayExpr<P_expr2> d2)
7977
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7978
_bz_ArrayExpr<P_expr2>,
7979
ShiftRight<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
7984
// _bz_ArrayExpr<P_expr1> >> IndexPlaceholder<N_index2>
7985
template<class P_expr1, int N_index2>
7987
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7988
IndexPlaceholder<N_index2>,
7989
ShiftRight<typename P_expr1::T_numtype, int > > >
7990
operator>>(_bz_ArrayExpr<P_expr1> d1,
7991
IndexPlaceholder<N_index2> d2)
7993
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
7994
IndexPlaceholder<N_index2>,
7995
ShiftRight<typename P_expr1::T_numtype, int> >
8000
// _bz_ArrayExpr<P_expr1> >> int
8001
template<class P_expr1>
8003
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8004
_bz_ArrayExprConstant<int>,
8005
ShiftRight<typename P_expr1::T_numtype, int > > >
8006
operator>>(_bz_ArrayExpr<P_expr1> d1,
8009
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8010
_bz_ArrayExprConstant<int>,
8011
ShiftRight<typename P_expr1::T_numtype, int> >
8013
_bz_ArrayExprConstant<int>(d2));
8016
// IndexPlaceholder<N_index1> >> Array<T_numtype2, N_rank2>
8017
template<int N_index1, class T_numtype2, int N_rank2>
8019
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8020
ArrayIterator<T_numtype2, N_rank2>,
8021
ShiftRight<int, T_numtype2 > > >
8022
operator>>(IndexPlaceholder<N_index1> d1,
8023
const Array<T_numtype2, N_rank2>& d2)
8025
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8026
ArrayIterator<T_numtype2, N_rank2>,
8027
ShiftRight<int, T_numtype2> >
8032
// IndexPlaceholder<N_index1> >> _bz_ArrayExpr<P_expr2>
8033
template<int N_index1, class P_expr2>
8035
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8036
_bz_ArrayExpr<P_expr2>,
8037
ShiftRight<int, typename P_expr2::T_numtype > > >
8038
operator>>(IndexPlaceholder<N_index1> d1,
8039
_bz_ArrayExpr<P_expr2> d2)
8041
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8042
_bz_ArrayExpr<P_expr2>,
8043
ShiftRight<int, typename P_expr2::T_numtype> >
8048
// IndexPlaceholder<N_index1> >> IndexPlaceholder<N_index2>
8049
template<int N_index1, int N_index2>
8051
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8052
IndexPlaceholder<N_index2>,
8053
ShiftRight<int, int > > >
8054
operator>>(IndexPlaceholder<N_index1> d1,
8055
IndexPlaceholder<N_index2> d2)
8057
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8058
IndexPlaceholder<N_index2>,
8059
ShiftRight<int, int> >
8064
// IndexPlaceholder<N_index1> >> int
8065
template<int N_index1>
8067
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8068
_bz_ArrayExprConstant<int>,
8069
ShiftRight<int, int > > >
8070
operator>>(IndexPlaceholder<N_index1> d1,
8073
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8074
_bz_ArrayExprConstant<int>,
8075
ShiftRight<int, int> >
8077
_bz_ArrayExprConstant<int>(d2));
8080
// int >> Array<T_numtype2, N_rank2>
8081
template<class T_numtype2, int N_rank2>
8083
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8084
ArrayIterator<T_numtype2, N_rank2>,
8085
ShiftRight<int, T_numtype2 > > >
8087
const Array<T_numtype2, N_rank2>& d2)
8089
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8090
ArrayIterator<T_numtype2, N_rank2>,
8091
ShiftRight<int, T_numtype2> >
8092
(_bz_ArrayExprConstant<int>(d1),
8096
// int >> _bz_ArrayExpr<P_expr2>
8097
template<class P_expr2>
8099
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8100
_bz_ArrayExpr<P_expr2>,
8101
ShiftRight<int, typename P_expr2::T_numtype > > >
8103
_bz_ArrayExpr<P_expr2> d2)
8105
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8106
_bz_ArrayExpr<P_expr2>,
8107
ShiftRight<int, typename P_expr2::T_numtype> >
8108
(_bz_ArrayExprConstant<int>(d1),
8112
// int >> IndexPlaceholder<N_index2>
8113
template<int N_index2>
8115
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8116
IndexPlaceholder<N_index2>,
8117
ShiftRight<int, int > > >
8119
IndexPlaceholder<N_index2> d2)
8121
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8122
IndexPlaceholder<N_index2>,
8123
ShiftRight<int, int> >
8124
(_bz_ArrayExprConstant<int>(d1),
8127
/****************************************************************************
8128
* Shift left Operators
8129
****************************************************************************/
8131
// Array<T_numtype1, N_rank1> << Array<T_numtype2, N_rank2>
8132
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
8134
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8135
ArrayIterator<T_numtype2, N_rank2>,
8136
ShiftLeft<T_numtype1, T_numtype2 > > >
8137
operator<<(const Array<T_numtype1, N_rank1>& d1,
8138
const Array<T_numtype2, N_rank2>& d2)
8140
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8141
ArrayIterator<T_numtype2, N_rank2>,
8142
ShiftLeft<T_numtype1, T_numtype2> >
8147
// Array<T_numtype1, N_rank1> << _bz_ArrayExpr<P_expr2>
8148
template<class T_numtype1, int N_rank1, class P_expr2>
8150
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8151
_bz_ArrayExpr<P_expr2>,
8152
ShiftLeft<T_numtype1, typename P_expr2::T_numtype > > >
8153
operator<<(const Array<T_numtype1, N_rank1>& d1,
8154
_bz_ArrayExpr<P_expr2> d2)
8156
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8157
_bz_ArrayExpr<P_expr2>,
8158
ShiftLeft<T_numtype1, typename P_expr2::T_numtype> >
8163
// Array<T_numtype1, N_rank1> << IndexPlaceholder<N_index2>
8164
template<class T_numtype1, int N_rank1, int N_index2>
8166
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8167
IndexPlaceholder<N_index2>,
8168
ShiftLeft<T_numtype1, int > > >
8169
operator<<(const Array<T_numtype1, N_rank1>& d1,
8170
IndexPlaceholder<N_index2> d2)
8172
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8173
IndexPlaceholder<N_index2>,
8174
ShiftLeft<T_numtype1, int> >
8179
// Array<T_numtype1, N_rank1> << int
8180
template<class T_numtype1, int N_rank1>
8182
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8183
_bz_ArrayExprConstant<int>,
8184
ShiftLeft<T_numtype1, int > > >
8185
operator<<(const Array<T_numtype1, N_rank1>& d1,
8188
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8189
_bz_ArrayExprConstant<int>,
8190
ShiftLeft<T_numtype1, int> >
8192
_bz_ArrayExprConstant<int>(d2));
8195
// _bz_ArrayExpr<P_expr1> << Array<T_numtype2, N_rank2>
8196
template<class P_expr1, class T_numtype2, int N_rank2>
8198
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8199
ArrayIterator<T_numtype2, N_rank2>,
8200
ShiftLeft<typename P_expr1::T_numtype, T_numtype2 > > >
8201
operator<<(_bz_ArrayExpr<P_expr1> d1,
8202
const Array<T_numtype2, N_rank2>& d2)
8204
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8205
ArrayIterator<T_numtype2, N_rank2>,
8206
ShiftLeft<typename P_expr1::T_numtype, T_numtype2> >
8211
// _bz_ArrayExpr<P_expr1> << _bz_ArrayExpr<P_expr2>
8212
template<class P_expr1, class P_expr2>
8214
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8215
_bz_ArrayExpr<P_expr2>,
8216
ShiftLeft<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
8217
operator<<(_bz_ArrayExpr<P_expr1> d1,
8218
_bz_ArrayExpr<P_expr2> d2)
8220
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8221
_bz_ArrayExpr<P_expr2>,
8222
ShiftLeft<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
8227
// _bz_ArrayExpr<P_expr1> << IndexPlaceholder<N_index2>
8228
template<class P_expr1, int N_index2>
8230
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8231
IndexPlaceholder<N_index2>,
8232
ShiftLeft<typename P_expr1::T_numtype, int > > >
8233
operator<<(_bz_ArrayExpr<P_expr1> d1,
8234
IndexPlaceholder<N_index2> d2)
8236
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8237
IndexPlaceholder<N_index2>,
8238
ShiftLeft<typename P_expr1::T_numtype, int> >
8243
// _bz_ArrayExpr<P_expr1> << int
8244
template<class P_expr1>
8246
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8247
_bz_ArrayExprConstant<int>,
8248
ShiftLeft<typename P_expr1::T_numtype, int > > >
8249
operator<<(_bz_ArrayExpr<P_expr1> d1,
8252
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8253
_bz_ArrayExprConstant<int>,
8254
ShiftLeft<typename P_expr1::T_numtype, int> >
8256
_bz_ArrayExprConstant<int>(d2));
8259
// IndexPlaceholder<N_index1> << Array<T_numtype2, N_rank2>
8260
template<int N_index1, class T_numtype2, int N_rank2>
8262
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8263
ArrayIterator<T_numtype2, N_rank2>,
8264
ShiftLeft<int, T_numtype2 > > >
8265
operator<<(IndexPlaceholder<N_index1> d1,
8266
const Array<T_numtype2, N_rank2>& d2)
8268
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8269
ArrayIterator<T_numtype2, N_rank2>,
8270
ShiftLeft<int, T_numtype2> >
8275
// IndexPlaceholder<N_index1> << _bz_ArrayExpr<P_expr2>
8276
template<int N_index1, class P_expr2>
8278
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8279
_bz_ArrayExpr<P_expr2>,
8280
ShiftLeft<int, typename P_expr2::T_numtype > > >
8281
operator<<(IndexPlaceholder<N_index1> d1,
8282
_bz_ArrayExpr<P_expr2> d2)
8284
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8285
_bz_ArrayExpr<P_expr2>,
8286
ShiftLeft<int, typename P_expr2::T_numtype> >
8291
// IndexPlaceholder<N_index1> << IndexPlaceholder<N_index2>
8292
template<int N_index1, int N_index2>
8294
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8295
IndexPlaceholder<N_index2>,
8296
ShiftLeft<int, int > > >
8297
operator<<(IndexPlaceholder<N_index1> d1,
8298
IndexPlaceholder<N_index2> d2)
8300
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8301
IndexPlaceholder<N_index2>,
8302
ShiftLeft<int, int> >
8307
// IndexPlaceholder<N_index1> << int
8308
template<int N_index1>
8310
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8311
_bz_ArrayExprConstant<int>,
8312
ShiftLeft<int, int > > >
8313
operator<<(IndexPlaceholder<N_index1> d1,
8316
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8317
_bz_ArrayExprConstant<int>,
8318
ShiftLeft<int, int> >
8320
_bz_ArrayExprConstant<int>(d2));
8323
// int << Array<T_numtype2, N_rank2>
8324
template<class T_numtype2, int N_rank2>
8326
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8327
ArrayIterator<T_numtype2, N_rank2>,
8328
ShiftLeft<int, T_numtype2 > > >
8330
const Array<T_numtype2, N_rank2>& d2)
8332
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8333
ArrayIterator<T_numtype2, N_rank2>,
8334
ShiftLeft<int, T_numtype2> >
8335
(_bz_ArrayExprConstant<int>(d1),
8339
// int << _bz_ArrayExpr<P_expr2>
8340
template<class P_expr2>
8342
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8343
_bz_ArrayExpr<P_expr2>,
8344
ShiftLeft<int, typename P_expr2::T_numtype > > >
8346
_bz_ArrayExpr<P_expr2> d2)
8348
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8349
_bz_ArrayExpr<P_expr2>,
8350
ShiftLeft<int, typename P_expr2::T_numtype> >
8351
(_bz_ArrayExprConstant<int>(d1),
8355
// int << IndexPlaceholder<N_index2>
8356
template<int N_index2>
8358
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8359
IndexPlaceholder<N_index2>,
8360
ShiftLeft<int, int > > >
8362
IndexPlaceholder<N_index2> d2)
8364
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8365
IndexPlaceholder<N_index2>,
8366
ShiftLeft<int, int> >
8367
(_bz_ArrayExprConstant<int>(d1),
8370
/****************************************************************************
8372
****************************************************************************/
8374
// Array<T_numtype1, N_rank1> min Array<T_numtype2, N_rank2>
8375
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
8377
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8378
ArrayIterator<T_numtype2, N_rank2>,
8379
_bz_Min<T_numtype1, T_numtype2 > > >
8380
min(const Array<T_numtype1, N_rank1>& d1,
8381
const Array<T_numtype2, N_rank2>& d2)
8383
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8384
ArrayIterator<T_numtype2, N_rank2>,
8385
_bz_Min<T_numtype1, T_numtype2> >
8390
// Array<T_numtype1, N_rank1> min _bz_ArrayExpr<P_expr2>
8391
template<class T_numtype1, int N_rank1, class P_expr2>
8393
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8394
_bz_ArrayExpr<P_expr2>,
8395
_bz_Min<T_numtype1, typename P_expr2::T_numtype > > >
8396
min(const Array<T_numtype1, N_rank1>& d1,
8397
_bz_ArrayExpr<P_expr2> d2)
8399
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8400
_bz_ArrayExpr<P_expr2>,
8401
_bz_Min<T_numtype1, typename P_expr2::T_numtype> >
8406
// Array<T_numtype1, N_rank1> min IndexPlaceholder<N_index2>
8407
template<class T_numtype1, int N_rank1, int N_index2>
8409
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8410
IndexPlaceholder<N_index2>,
8411
_bz_Min<T_numtype1, int > > >
8412
min(const Array<T_numtype1, N_rank1>& d1,
8413
IndexPlaceholder<N_index2> d2)
8415
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8416
IndexPlaceholder<N_index2>,
8417
_bz_Min<T_numtype1, int> >
8422
// Array<T_numtype1, N_rank1> min int
8423
template<class T_numtype1, int N_rank1>
8425
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8426
_bz_ArrayExprConstant<int>,
8427
_bz_Min<T_numtype1, int > > >
8428
min(const Array<T_numtype1, N_rank1>& d1,
8431
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8432
_bz_ArrayExprConstant<int>,
8433
_bz_Min<T_numtype1, int> >
8435
_bz_ArrayExprConstant<int>(d2));
8438
// _bz_ArrayExpr<P_expr1> min Array<T_numtype2, N_rank2>
8439
template<class P_expr1, class T_numtype2, int N_rank2>
8441
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8442
ArrayIterator<T_numtype2, N_rank2>,
8443
_bz_Min<typename P_expr1::T_numtype, T_numtype2 > > >
8444
min(_bz_ArrayExpr<P_expr1> d1,
8445
const Array<T_numtype2, N_rank2>& d2)
8447
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8448
ArrayIterator<T_numtype2, N_rank2>,
8449
_bz_Min<typename P_expr1::T_numtype, T_numtype2> >
8454
// _bz_ArrayExpr<P_expr1> min _bz_ArrayExpr<P_expr2>
8455
template<class P_expr1, class P_expr2>
8457
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8458
_bz_ArrayExpr<P_expr2>,
8459
_bz_Min<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
8460
min(_bz_ArrayExpr<P_expr1> d1,
8461
_bz_ArrayExpr<P_expr2> d2)
8463
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8464
_bz_ArrayExpr<P_expr2>,
8465
_bz_Min<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
8470
// _bz_ArrayExpr<P_expr1> min IndexPlaceholder<N_index2>
8471
template<class P_expr1, int N_index2>
8473
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8474
IndexPlaceholder<N_index2>,
8475
_bz_Min<typename P_expr1::T_numtype, int > > >
8476
min(_bz_ArrayExpr<P_expr1> d1,
8477
IndexPlaceholder<N_index2> d2)
8479
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8480
IndexPlaceholder<N_index2>,
8481
_bz_Min<typename P_expr1::T_numtype, int> >
8486
// _bz_ArrayExpr<P_expr1> min int
8487
template<class P_expr1>
8489
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8490
_bz_ArrayExprConstant<int>,
8491
_bz_Min<typename P_expr1::T_numtype, int > > >
8492
min(_bz_ArrayExpr<P_expr1> d1,
8495
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8496
_bz_ArrayExprConstant<int>,
8497
_bz_Min<typename P_expr1::T_numtype, int> >
8499
_bz_ArrayExprConstant<int>(d2));
8502
// IndexPlaceholder<N_index1> min Array<T_numtype2, N_rank2>
8503
template<int N_index1, class T_numtype2, int N_rank2>
8505
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8506
ArrayIterator<T_numtype2, N_rank2>,
8507
_bz_Min<int, T_numtype2 > > >
8508
min(IndexPlaceholder<N_index1> d1,
8509
const Array<T_numtype2, N_rank2>& d2)
8511
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8512
ArrayIterator<T_numtype2, N_rank2>,
8513
_bz_Min<int, T_numtype2> >
8518
// IndexPlaceholder<N_index1> min _bz_ArrayExpr<P_expr2>
8519
template<int N_index1, class P_expr2>
8521
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8522
_bz_ArrayExpr<P_expr2>,
8523
_bz_Min<int, typename P_expr2::T_numtype > > >
8524
min(IndexPlaceholder<N_index1> d1,
8525
_bz_ArrayExpr<P_expr2> d2)
8527
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8528
_bz_ArrayExpr<P_expr2>,
8529
_bz_Min<int, typename P_expr2::T_numtype> >
8534
// IndexPlaceholder<N_index1> min IndexPlaceholder<N_index2>
8535
template<int N_index1, int N_index2>
8537
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8538
IndexPlaceholder<N_index2>,
8539
_bz_Min<int, int > > >
8540
min(IndexPlaceholder<N_index1> d1,
8541
IndexPlaceholder<N_index2> d2)
8543
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8544
IndexPlaceholder<N_index2>,
8550
// IndexPlaceholder<N_index1> min int
8551
template<int N_index1>
8553
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8554
_bz_ArrayExprConstant<int>,
8555
_bz_Min<int, int > > >
8556
min(IndexPlaceholder<N_index1> d1,
8559
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8560
_bz_ArrayExprConstant<int>,
8563
_bz_ArrayExprConstant<int>(d2));
8566
// int min Array<T_numtype2, N_rank2>
8567
template<class T_numtype2, int N_rank2>
8569
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8570
ArrayIterator<T_numtype2, N_rank2>,
8571
_bz_Min<int, T_numtype2 > > >
8573
const Array<T_numtype2, N_rank2>& d2)
8575
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8576
ArrayIterator<T_numtype2, N_rank2>,
8577
_bz_Min<int, T_numtype2> >
8578
(_bz_ArrayExprConstant<int>(d1),
8582
// int min _bz_ArrayExpr<P_expr2>
8583
template<class P_expr2>
8585
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8586
_bz_ArrayExpr<P_expr2>,
8587
_bz_Min<int, typename P_expr2::T_numtype > > >
8589
_bz_ArrayExpr<P_expr2> d2)
8591
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8592
_bz_ArrayExpr<P_expr2>,
8593
_bz_Min<int, typename P_expr2::T_numtype> >
8594
(_bz_ArrayExprConstant<int>(d1),
8598
// int min IndexPlaceholder<N_index2>
8599
template<int N_index2>
8601
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8602
IndexPlaceholder<N_index2>,
8603
_bz_Min<int, int > > >
8605
IndexPlaceholder<N_index2> d2)
8607
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8608
IndexPlaceholder<N_index2>,
8610
(_bz_ArrayExprConstant<int>(d1),
8613
/****************************************************************************
8615
****************************************************************************/
8617
// Array<T_numtype1, N_rank1> max Array<T_numtype2, N_rank2>
8618
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
8620
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8621
ArrayIterator<T_numtype2, N_rank2>,
8622
_bz_Max<T_numtype1, T_numtype2 > > >
8623
max(const Array<T_numtype1, N_rank1>& d1,
8624
const Array<T_numtype2, N_rank2>& d2)
8626
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8627
ArrayIterator<T_numtype2, N_rank2>,
8628
_bz_Max<T_numtype1, T_numtype2> >
8633
// Array<T_numtype1, N_rank1> max _bz_ArrayExpr<P_expr2>
8634
template<class T_numtype1, int N_rank1, class P_expr2>
8636
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8637
_bz_ArrayExpr<P_expr2>,
8638
_bz_Max<T_numtype1, typename P_expr2::T_numtype > > >
8639
max(const Array<T_numtype1, N_rank1>& d1,
8640
_bz_ArrayExpr<P_expr2> d2)
8642
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8643
_bz_ArrayExpr<P_expr2>,
8644
_bz_Max<T_numtype1, typename P_expr2::T_numtype> >
8649
// Array<T_numtype1, N_rank1> max IndexPlaceholder<N_index2>
8650
template<class T_numtype1, int N_rank1, int N_index2>
8652
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8653
IndexPlaceholder<N_index2>,
8654
_bz_Max<T_numtype1, int > > >
8655
max(const Array<T_numtype1, N_rank1>& d1,
8656
IndexPlaceholder<N_index2> d2)
8658
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8659
IndexPlaceholder<N_index2>,
8660
_bz_Max<T_numtype1, int> >
8665
// Array<T_numtype1, N_rank1> max int
8666
template<class T_numtype1, int N_rank1>
8668
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8669
_bz_ArrayExprConstant<int>,
8670
_bz_Max<T_numtype1, int > > >
8671
max(const Array<T_numtype1, N_rank1>& d1,
8674
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>,
8675
_bz_ArrayExprConstant<int>,
8676
_bz_Max<T_numtype1, int> >
8678
_bz_ArrayExprConstant<int>(d2));
8681
// _bz_ArrayExpr<P_expr1> max Array<T_numtype2, N_rank2>
8682
template<class P_expr1, class T_numtype2, int N_rank2>
8684
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8685
ArrayIterator<T_numtype2, N_rank2>,
8686
_bz_Max<typename P_expr1::T_numtype, T_numtype2 > > >
8687
max(_bz_ArrayExpr<P_expr1> d1,
8688
const Array<T_numtype2, N_rank2>& d2)
8690
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8691
ArrayIterator<T_numtype2, N_rank2>,
8692
_bz_Max<typename P_expr1::T_numtype, T_numtype2> >
8697
// _bz_ArrayExpr<P_expr1> max _bz_ArrayExpr<P_expr2>
8698
template<class P_expr1, class P_expr2>
8700
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8701
_bz_ArrayExpr<P_expr2>,
8702
_bz_Max<typename P_expr1::T_numtype, typename P_expr2::T_numtype > > >
8703
max(_bz_ArrayExpr<P_expr1> d1,
8704
_bz_ArrayExpr<P_expr2> d2)
8706
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8707
_bz_ArrayExpr<P_expr2>,
8708
_bz_Max<typename P_expr1::T_numtype, typename P_expr2::T_numtype> >
8713
// _bz_ArrayExpr<P_expr1> max IndexPlaceholder<N_index2>
8714
template<class P_expr1, int N_index2>
8716
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8717
IndexPlaceholder<N_index2>,
8718
_bz_Max<typename P_expr1::T_numtype, int > > >
8719
max(_bz_ArrayExpr<P_expr1> d1,
8720
IndexPlaceholder<N_index2> d2)
8722
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8723
IndexPlaceholder<N_index2>,
8724
_bz_Max<typename P_expr1::T_numtype, int> >
8729
// _bz_ArrayExpr<P_expr1> max int
8730
template<class P_expr1>
8732
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8733
_bz_ArrayExprConstant<int>,
8734
_bz_Max<typename P_expr1::T_numtype, int > > >
8735
max(_bz_ArrayExpr<P_expr1> d1,
8738
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>,
8739
_bz_ArrayExprConstant<int>,
8740
_bz_Max<typename P_expr1::T_numtype, int> >
8742
_bz_ArrayExprConstant<int>(d2));
8745
// IndexPlaceholder<N_index1> max Array<T_numtype2, N_rank2>
8746
template<int N_index1, class T_numtype2, int N_rank2>
8748
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8749
ArrayIterator<T_numtype2, N_rank2>,
8750
_bz_Max<int, T_numtype2 > > >
8751
max(IndexPlaceholder<N_index1> d1,
8752
const Array<T_numtype2, N_rank2>& d2)
8754
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8755
ArrayIterator<T_numtype2, N_rank2>,
8756
_bz_Max<int, T_numtype2> >
8761
// IndexPlaceholder<N_index1> max _bz_ArrayExpr<P_expr2>
8762
template<int N_index1, class P_expr2>
8764
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8765
_bz_ArrayExpr<P_expr2>,
8766
_bz_Max<int, typename P_expr2::T_numtype > > >
8767
max(IndexPlaceholder<N_index1> d1,
8768
_bz_ArrayExpr<P_expr2> d2)
8770
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8771
_bz_ArrayExpr<P_expr2>,
8772
_bz_Max<int, typename P_expr2::T_numtype> >
8777
// IndexPlaceholder<N_index1> max IndexPlaceholder<N_index2>
8778
template<int N_index1, int N_index2>
8780
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8781
IndexPlaceholder<N_index2>,
8782
_bz_Max<int, int > > >
8783
max(IndexPlaceholder<N_index1> d1,
8784
IndexPlaceholder<N_index2> d2)
8786
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8787
IndexPlaceholder<N_index2>,
8793
// IndexPlaceholder<N_index1> max int
8794
template<int N_index1>
8796
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8797
_bz_ArrayExprConstant<int>,
8798
_bz_Max<int, int > > >
8799
max(IndexPlaceholder<N_index1> d1,
8802
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>,
8803
_bz_ArrayExprConstant<int>,
8806
_bz_ArrayExprConstant<int>(d2));
8809
// int max Array<T_numtype2, N_rank2>
8810
template<class T_numtype2, int N_rank2>
8812
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8813
ArrayIterator<T_numtype2, N_rank2>,
8814
_bz_Max<int, T_numtype2 > > >
8816
const Array<T_numtype2, N_rank2>& d2)
8818
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8819
ArrayIterator<T_numtype2, N_rank2>,
8820
_bz_Max<int, T_numtype2> >
8821
(_bz_ArrayExprConstant<int>(d1),
8825
// int max _bz_ArrayExpr<P_expr2>
8826
template<class P_expr2>
8828
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8829
_bz_ArrayExpr<P_expr2>,
8830
_bz_Max<int, typename P_expr2::T_numtype > > >
8832
_bz_ArrayExpr<P_expr2> d2)
8834
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8835
_bz_ArrayExpr<P_expr2>,
8836
_bz_Max<int, typename P_expr2::T_numtype> >
8837
(_bz_ArrayExprConstant<int>(d1),
8841
// int max IndexPlaceholder<N_index2>
8842
template<int N_index2>
8844
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8845
IndexPlaceholder<N_index2>,
8846
_bz_Max<int, int > > >
8848
IndexPlaceholder<N_index2> d2)
8850
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<int>,
8851
IndexPlaceholder<N_index2>,
8853
(_bz_ArrayExprConstant<int>(d1),