1
/***************************************************************************
2
* blitz/../array/uops.cc Expression templates for arrays, unary functions
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
// genarruops.cpp Dec 30 2003 16:49:07
27
#ifndef BZ_ARRAYUOPS_CC
28
#define BZ_ARRAYUOPS_CC
30
#ifndef BZ_ARRAYEXPR_H
31
#error <blitz/array/uops.cc> must be included after <blitz/arrayexpr.h>
32
#endif // BZ_ARRAYEXPR_H
36
/****************************************************************************
38
****************************************************************************/
40
template<class T_numtype1, int N_rank1>
42
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
43
_bz_abs<T_numtype1> > >
44
abs(const Array<T_numtype1, N_rank1>& d1)
46
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
47
_bz_abs<T_numtype1> >(d1.begin());
50
template<class P_expr1>
52
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
53
_bz_abs<typename P_expr1::T_numtype> > >
54
abs(_bz_ArrayExpr<P_expr1> d1)
56
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
57
_bz_abs<typename P_expr1::T_numtype> >(d1);
60
template<int N_index1>
62
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
64
abs(IndexPlaceholder<N_index1> d1)
66
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
71
/****************************************************************************
73
****************************************************************************/
75
template<class T_numtype1, int N_rank1>
77
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
78
_bz_acos<T_numtype1> > >
79
acos(const Array<T_numtype1, N_rank1>& d1)
81
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
82
_bz_acos<T_numtype1> >(d1.begin());
85
template<class P_expr1>
87
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
88
_bz_acos<typename P_expr1::T_numtype> > >
89
acos(_bz_ArrayExpr<P_expr1> d1)
91
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
92
_bz_acos<typename P_expr1::T_numtype> >(d1);
95
template<int N_index1>
97
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
99
acos(IndexPlaceholder<N_index1> d1)
101
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
106
/****************************************************************************
108
****************************************************************************/
110
#ifdef BZ_HAVE_IEEE_MATH
111
template<class T_numtype1, int N_rank1>
113
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
114
_bz_acosh<T_numtype1> > >
115
acosh(const Array<T_numtype1, N_rank1>& d1)
117
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
118
_bz_acosh<T_numtype1> >(d1.begin());
121
template<class P_expr1>
123
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
124
_bz_acosh<typename P_expr1::T_numtype> > >
125
acosh(_bz_ArrayExpr<P_expr1> d1)
127
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
128
_bz_acosh<typename P_expr1::T_numtype> >(d1);
131
template<int N_index1>
133
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
135
acosh(IndexPlaceholder<N_index1> d1)
137
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
138
_bz_acosh<int> >(d1);
143
/****************************************************************************
145
****************************************************************************/
147
template<class T_numtype1, int N_rank1>
149
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
150
_bz_asin<T_numtype1> > >
151
asin(const Array<T_numtype1, N_rank1>& d1)
153
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
154
_bz_asin<T_numtype1> >(d1.begin());
157
template<class P_expr1>
159
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
160
_bz_asin<typename P_expr1::T_numtype> > >
161
asin(_bz_ArrayExpr<P_expr1> d1)
163
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
164
_bz_asin<typename P_expr1::T_numtype> >(d1);
167
template<int N_index1>
169
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
171
asin(IndexPlaceholder<N_index1> d1)
173
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
178
/****************************************************************************
180
****************************************************************************/
182
#ifdef BZ_HAVE_IEEE_MATH
183
template<class T_numtype1, int N_rank1>
185
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
186
_bz_asinh<T_numtype1> > >
187
asinh(const Array<T_numtype1, N_rank1>& d1)
189
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
190
_bz_asinh<T_numtype1> >(d1.begin());
193
template<class P_expr1>
195
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
196
_bz_asinh<typename P_expr1::T_numtype> > >
197
asinh(_bz_ArrayExpr<P_expr1> d1)
199
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
200
_bz_asinh<typename P_expr1::T_numtype> >(d1);
203
template<int N_index1>
205
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
207
asinh(IndexPlaceholder<N_index1> d1)
209
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
210
_bz_asinh<int> >(d1);
215
/****************************************************************************
217
****************************************************************************/
219
template<class T_numtype1, int N_rank1>
221
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
222
_bz_atan<T_numtype1> > >
223
atan(const Array<T_numtype1, N_rank1>& d1)
225
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
226
_bz_atan<T_numtype1> >(d1.begin());
229
template<class P_expr1>
231
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
232
_bz_atan<typename P_expr1::T_numtype> > >
233
atan(_bz_ArrayExpr<P_expr1> d1)
235
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
236
_bz_atan<typename P_expr1::T_numtype> >(d1);
239
template<int N_index1>
241
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
243
atan(IndexPlaceholder<N_index1> d1)
245
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
250
/****************************************************************************
252
****************************************************************************/
254
#ifdef BZ_HAVE_IEEE_MATH
255
template<class T_numtype1, int N_rank1>
257
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
258
_bz_atanh<T_numtype1> > >
259
atanh(const Array<T_numtype1, N_rank1>& d1)
261
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
262
_bz_atanh<T_numtype1> >(d1.begin());
265
template<class P_expr1>
267
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
268
_bz_atanh<typename P_expr1::T_numtype> > >
269
atanh(_bz_ArrayExpr<P_expr1> d1)
271
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
272
_bz_atanh<typename P_expr1::T_numtype> >(d1);
275
template<int N_index1>
277
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
279
atanh(IndexPlaceholder<N_index1> d1)
281
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
282
_bz_atanh<int> >(d1);
287
/****************************************************************************
289
****************************************************************************/
291
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
293
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
294
_bz_atan2<T_numtype1,T_numtype2> > >
295
atan2(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
297
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
298
_bz_atan2<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
301
template<class T_numtype1, int N_rank1, class P_expr2>
303
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
304
_bz_atan2<T_numtype1,typename P_expr2::T_numtype> > >
305
atan2(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
307
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
308
_bz_atan2<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
311
template<class T_numtype1, int N_rank1, int N_index2>
313
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
314
_bz_atan2<T_numtype1,int> > >
315
atan2(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
317
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
318
_bz_atan2<T_numtype1,int> >(d1.begin(), d2);
321
template<class T_numtype1, int N_rank1>
323
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
324
_bz_atan2<T_numtype1,float> > >
325
atan2(const Array<T_numtype1, N_rank1>& d1, float d2)
327
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
328
_bz_atan2<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
331
template<class T_numtype1, int N_rank1>
333
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
334
_bz_atan2<T_numtype1,double> > >
335
atan2(const Array<T_numtype1, N_rank1>& d1, double d2)
337
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
338
_bz_atan2<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
341
template<class T_numtype1, int N_rank1>
343
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
344
_bz_atan2<T_numtype1,long double> > >
345
atan2(const Array<T_numtype1, N_rank1>& d1, long double d2)
347
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
348
_bz_atan2<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
351
#ifdef BZ_HAVE_COMPLEX
352
template<class T_numtype1, int N_rank1, class T2>
354
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
355
_bz_atan2<T_numtype1,complex<T2> > > >
356
atan2(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
358
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
359
_bz_atan2<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
362
#endif // BZ_HAVE_COMPLEX
364
template<class P_expr1, class T_numtype2, int N_rank2>
366
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
367
_bz_atan2<typename P_expr1::T_numtype,T_numtype2> > >
368
atan2(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
370
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
371
_bz_atan2<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
374
template<class P_expr1, class P_expr2>
376
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
377
_bz_atan2<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
378
atan2(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
380
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
381
_bz_atan2<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
384
template<class P_expr1, int N_index2>
386
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
387
_bz_atan2<typename P_expr1::T_numtype,int> > >
388
atan2(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
390
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
391
_bz_atan2<typename P_expr1::T_numtype,int> >(d1, d2);
394
template<class P_expr1>
396
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
397
_bz_atan2<typename P_expr1::T_numtype,float> > >
398
atan2(_bz_ArrayExpr<P_expr1> d1, float d2)
400
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
401
_bz_atan2<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
404
template<class P_expr1>
406
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
407
_bz_atan2<typename P_expr1::T_numtype,double> > >
408
atan2(_bz_ArrayExpr<P_expr1> d1, double d2)
410
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
411
_bz_atan2<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
414
template<class P_expr1>
416
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
417
_bz_atan2<typename P_expr1::T_numtype,long double> > >
418
atan2(_bz_ArrayExpr<P_expr1> d1, long double d2)
420
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
421
_bz_atan2<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
424
#ifdef BZ_HAVE_COMPLEX
425
template<class P_expr1, class T2>
427
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
428
_bz_atan2<typename P_expr1::T_numtype,complex<T2> > > >
429
atan2(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
431
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
432
_bz_atan2<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
435
#endif // BZ_HAVE_COMPLEX
437
template<int N_index1, class T_numtype2, int N_rank2>
439
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
440
_bz_atan2<int,T_numtype2> > >
441
atan2(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
443
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
444
_bz_atan2<int,T_numtype2> >(d1, d2.begin());
447
template<int N_index1, class P_expr2>
449
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
450
_bz_atan2<int,typename P_expr2::T_numtype> > >
451
atan2(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
453
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
454
_bz_atan2<int,typename P_expr2::T_numtype> >(d1, d2);
457
template<int N_index1, int N_index2>
459
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
460
_bz_atan2<int,int> > >
461
atan2(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
463
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
464
_bz_atan2<int,int> >(d1, d2);
467
template<int N_index1>
469
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
470
_bz_atan2<int,float> > >
471
atan2(IndexPlaceholder<N_index1> d1, float d2)
473
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
474
_bz_atan2<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
477
template<int N_index1>
479
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
480
_bz_atan2<int,double> > >
481
atan2(IndexPlaceholder<N_index1> d1, double d2)
483
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
484
_bz_atan2<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
487
template<int N_index1>
489
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
490
_bz_atan2<int,long double> > >
491
atan2(IndexPlaceholder<N_index1> d1, long double d2)
493
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
494
_bz_atan2<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
497
#ifdef BZ_HAVE_COMPLEX
498
template<int N_index1, class T2>
500
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
501
_bz_atan2<int,complex<T2> > > >
502
atan2(IndexPlaceholder<N_index1> d1, complex<T2> d2)
504
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
505
_bz_atan2<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
508
#endif // BZ_HAVE_COMPLEX
510
template<class T_numtype2, int N_rank2>
512
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
513
_bz_atan2<float,T_numtype2> > >
514
atan2(float d1, const Array<T_numtype2, N_rank2>& d2)
516
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
517
_bz_atan2<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
520
template<class P_expr2>
522
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
523
_bz_atan2<float,typename P_expr2::T_numtype> > >
524
atan2(float d1, _bz_ArrayExpr<P_expr2> d2)
526
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
527
_bz_atan2<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
530
template<int N_index2>
532
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
533
_bz_atan2<float,int> > >
534
atan2(float d1, IndexPlaceholder<N_index2> d2)
536
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
537
_bz_atan2<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
540
template<class T_numtype2, int N_rank2>
542
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
543
_bz_atan2<double,T_numtype2> > >
544
atan2(double d1, const Array<T_numtype2, N_rank2>& d2)
546
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
547
_bz_atan2<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
550
template<class P_expr2>
552
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
553
_bz_atan2<double,typename P_expr2::T_numtype> > >
554
atan2(double d1, _bz_ArrayExpr<P_expr2> d2)
556
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
557
_bz_atan2<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
560
template<int N_index2>
562
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
563
_bz_atan2<double,int> > >
564
atan2(double d1, IndexPlaceholder<N_index2> d2)
566
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
567
_bz_atan2<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
570
template<class T_numtype2, int N_rank2>
572
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
573
_bz_atan2<long double,T_numtype2> > >
574
atan2(long double d1, const Array<T_numtype2, N_rank2>& d2)
576
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
577
_bz_atan2<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
580
template<class P_expr2>
582
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
583
_bz_atan2<long double,typename P_expr2::T_numtype> > >
584
atan2(long double d1, _bz_ArrayExpr<P_expr2> d2)
586
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
587
_bz_atan2<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
590
template<int N_index2>
592
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
593
_bz_atan2<long double,int> > >
594
atan2(long double d1, IndexPlaceholder<N_index2> d2)
596
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
597
_bz_atan2<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
600
#ifdef BZ_HAVE_COMPLEX
601
template<class T1, class T_numtype2, int N_rank2>
603
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
604
_bz_atan2<complex<T1> ,T_numtype2> > >
605
atan2(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
607
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
608
_bz_atan2<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
611
#endif // BZ_HAVE_COMPLEX
613
#ifdef BZ_HAVE_COMPLEX
614
template<class T1, class P_expr2>
616
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
617
_bz_atan2<complex<T1> ,typename P_expr2::T_numtype> > >
618
atan2(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
620
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
621
_bz_atan2<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
624
#endif // BZ_HAVE_COMPLEX
626
#ifdef BZ_HAVE_COMPLEX
627
template<class T1, int N_index2>
629
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
630
_bz_atan2<complex<T1> ,int> > >
631
atan2(complex<T1> d1, IndexPlaceholder<N_index2> d2)
633
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
634
_bz_atan2<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
637
#endif // BZ_HAVE_COMPLEX
640
/****************************************************************************
642
****************************************************************************/
644
#ifdef BZ_HAVE_SYSTEM_V_MATH
645
template<class T_numtype1, int N_rank1>
647
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
648
_bz__class<T_numtype1> > >
649
_class(const Array<T_numtype1, N_rank1>& d1)
651
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
652
_bz__class<T_numtype1> >(d1.begin());
655
template<class P_expr1>
657
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
658
_bz__class<typename P_expr1::T_numtype> > >
659
_class(_bz_ArrayExpr<P_expr1> d1)
661
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
662
_bz__class<typename P_expr1::T_numtype> >(d1);
665
template<int N_index1>
667
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
669
_class(IndexPlaceholder<N_index1> d1)
671
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
672
_bz__class<int> >(d1);
677
/****************************************************************************
679
****************************************************************************/
681
#ifdef BZ_HAVE_IEEE_MATH
682
template<class T_numtype1, int N_rank1>
684
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
685
_bz_cbrt<T_numtype1> > >
686
cbrt(const Array<T_numtype1, N_rank1>& d1)
688
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
689
_bz_cbrt<T_numtype1> >(d1.begin());
692
template<class P_expr1>
694
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
695
_bz_cbrt<typename P_expr1::T_numtype> > >
696
cbrt(_bz_ArrayExpr<P_expr1> d1)
698
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
699
_bz_cbrt<typename P_expr1::T_numtype> >(d1);
702
template<int N_index1>
704
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
706
cbrt(IndexPlaceholder<N_index1> d1)
708
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
714
/****************************************************************************
716
****************************************************************************/
718
template<class T_numtype1, int N_rank1>
720
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
721
_bz_ceil<T_numtype1> > >
722
ceil(const Array<T_numtype1, N_rank1>& d1)
724
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
725
_bz_ceil<T_numtype1> >(d1.begin());
728
template<class P_expr1>
730
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
731
_bz_ceil<typename P_expr1::T_numtype> > >
732
ceil(_bz_ArrayExpr<P_expr1> d1)
734
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
735
_bz_ceil<typename P_expr1::T_numtype> >(d1);
738
template<int N_index1>
740
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
742
ceil(IndexPlaceholder<N_index1> d1)
744
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
749
/****************************************************************************
751
****************************************************************************/
753
template<class T_numtype1, int N_rank1>
755
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
756
_bz_cexp<T_numtype1> > >
757
cexp(const Array<T_numtype1, N_rank1>& d1)
759
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
760
_bz_cexp<T_numtype1> >(d1.begin());
763
template<class P_expr1>
765
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
766
_bz_cexp<typename P_expr1::T_numtype> > >
767
cexp(_bz_ArrayExpr<P_expr1> d1)
769
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
770
_bz_cexp<typename P_expr1::T_numtype> >(d1);
773
template<int N_index1>
775
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
777
cexp(IndexPlaceholder<N_index1> d1)
779
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
784
/****************************************************************************
786
****************************************************************************/
788
template<class T_numtype1, int N_rank1>
790
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
791
_bz_cos<T_numtype1> > >
792
cos(const Array<T_numtype1, N_rank1>& d1)
794
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
795
_bz_cos<T_numtype1> >(d1.begin());
798
template<class P_expr1>
800
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
801
_bz_cos<typename P_expr1::T_numtype> > >
802
cos(_bz_ArrayExpr<P_expr1> d1)
804
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
805
_bz_cos<typename P_expr1::T_numtype> >(d1);
808
template<int N_index1>
810
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
812
cos(IndexPlaceholder<N_index1> d1)
814
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
819
/****************************************************************************
821
****************************************************************************/
823
template<class T_numtype1, int N_rank1>
825
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
826
_bz_cosh<T_numtype1> > >
827
cosh(const Array<T_numtype1, N_rank1>& d1)
829
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
830
_bz_cosh<T_numtype1> >(d1.begin());
833
template<class P_expr1>
835
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
836
_bz_cosh<typename P_expr1::T_numtype> > >
837
cosh(_bz_ArrayExpr<P_expr1> d1)
839
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
840
_bz_cosh<typename P_expr1::T_numtype> >(d1);
843
template<int N_index1>
845
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
847
cosh(IndexPlaceholder<N_index1> d1)
849
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
854
/****************************************************************************
856
****************************************************************************/
858
#ifdef BZ_HAVE_SYSTEM_V_MATH
859
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
861
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
862
_bz_copysign<T_numtype1,T_numtype2> > >
863
copysign(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
865
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
866
_bz_copysign<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
869
template<class T_numtype1, int N_rank1, class P_expr2>
871
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
872
_bz_copysign<T_numtype1,typename P_expr2::T_numtype> > >
873
copysign(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
875
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
876
_bz_copysign<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
879
template<class T_numtype1, int N_rank1, int N_index2>
881
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
882
_bz_copysign<T_numtype1,int> > >
883
copysign(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
885
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
886
_bz_copysign<T_numtype1,int> >(d1.begin(), d2);
889
template<class T_numtype1, int N_rank1>
891
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
892
_bz_copysign<T_numtype1,float> > >
893
copysign(const Array<T_numtype1, N_rank1>& d1, float d2)
895
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
896
_bz_copysign<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
899
template<class T_numtype1, int N_rank1>
901
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
902
_bz_copysign<T_numtype1,double> > >
903
copysign(const Array<T_numtype1, N_rank1>& d1, double d2)
905
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
906
_bz_copysign<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
909
template<class T_numtype1, int N_rank1>
911
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
912
_bz_copysign<T_numtype1,long double> > >
913
copysign(const Array<T_numtype1, N_rank1>& d1, long double d2)
915
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
916
_bz_copysign<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
919
#ifdef BZ_HAVE_COMPLEX
920
template<class T_numtype1, int N_rank1, class T2>
922
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
923
_bz_copysign<T_numtype1,complex<T2> > > >
924
copysign(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
926
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
927
_bz_copysign<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
930
#endif // BZ_HAVE_COMPLEX
932
template<class P_expr1, class T_numtype2, int N_rank2>
934
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
935
_bz_copysign<typename P_expr1::T_numtype,T_numtype2> > >
936
copysign(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
938
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
939
_bz_copysign<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
942
template<class P_expr1, class P_expr2>
944
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
945
_bz_copysign<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
946
copysign(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
948
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
949
_bz_copysign<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
952
template<class P_expr1, int N_index2>
954
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
955
_bz_copysign<typename P_expr1::T_numtype,int> > >
956
copysign(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
958
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
959
_bz_copysign<typename P_expr1::T_numtype,int> >(d1, d2);
962
template<class P_expr1>
964
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
965
_bz_copysign<typename P_expr1::T_numtype,float> > >
966
copysign(_bz_ArrayExpr<P_expr1> d1, float d2)
968
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
969
_bz_copysign<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
972
template<class P_expr1>
974
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
975
_bz_copysign<typename P_expr1::T_numtype,double> > >
976
copysign(_bz_ArrayExpr<P_expr1> d1, double d2)
978
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
979
_bz_copysign<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
982
template<class P_expr1>
984
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
985
_bz_copysign<typename P_expr1::T_numtype,long double> > >
986
copysign(_bz_ArrayExpr<P_expr1> d1, long double d2)
988
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
989
_bz_copysign<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
992
#ifdef BZ_HAVE_COMPLEX
993
template<class P_expr1, class T2>
995
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
996
_bz_copysign<typename P_expr1::T_numtype,complex<T2> > > >
997
copysign(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
999
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
1000
_bz_copysign<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
1003
#endif // BZ_HAVE_COMPLEX
1005
template<int N_index1, class T_numtype2, int N_rank2>
1007
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
1008
_bz_copysign<int,T_numtype2> > >
1009
copysign(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
1011
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
1012
_bz_copysign<int,T_numtype2> >(d1, d2.begin());
1015
template<int N_index1, class P_expr2>
1017
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
1018
_bz_copysign<int,typename P_expr2::T_numtype> > >
1019
copysign(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
1021
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
1022
_bz_copysign<int,typename P_expr2::T_numtype> >(d1, d2);
1025
template<int N_index1, int N_index2>
1027
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
1028
_bz_copysign<int,int> > >
1029
copysign(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
1031
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
1032
_bz_copysign<int,int> >(d1, d2);
1035
template<int N_index1>
1037
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
1038
_bz_copysign<int,float> > >
1039
copysign(IndexPlaceholder<N_index1> d1, float d2)
1041
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
1042
_bz_copysign<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
1045
template<int N_index1>
1047
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
1048
_bz_copysign<int,double> > >
1049
copysign(IndexPlaceholder<N_index1> d1, double d2)
1051
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
1052
_bz_copysign<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
1055
template<int N_index1>
1057
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
1058
_bz_copysign<int,long double> > >
1059
copysign(IndexPlaceholder<N_index1> d1, long double d2)
1061
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
1062
_bz_copysign<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
1065
#ifdef BZ_HAVE_COMPLEX
1066
template<int N_index1, class T2>
1068
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
1069
_bz_copysign<int,complex<T2> > > >
1070
copysign(IndexPlaceholder<N_index1> d1, complex<T2> d2)
1072
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
1073
_bz_copysign<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
1076
#endif // BZ_HAVE_COMPLEX
1078
template<class T_numtype2, int N_rank2>
1080
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
1081
_bz_copysign<float,T_numtype2> > >
1082
copysign(float d1, const Array<T_numtype2, N_rank2>& d2)
1084
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
1085
_bz_copysign<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
1088
template<class P_expr2>
1090
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
1091
_bz_copysign<float,typename P_expr2::T_numtype> > >
1092
copysign(float d1, _bz_ArrayExpr<P_expr2> d2)
1094
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
1095
_bz_copysign<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
1098
template<int N_index2>
1100
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
1101
_bz_copysign<float,int> > >
1102
copysign(float d1, IndexPlaceholder<N_index2> d2)
1104
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
1105
_bz_copysign<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
1108
template<class T_numtype2, int N_rank2>
1110
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
1111
_bz_copysign<double,T_numtype2> > >
1112
copysign(double d1, const Array<T_numtype2, N_rank2>& d2)
1114
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
1115
_bz_copysign<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
1118
template<class P_expr2>
1120
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
1121
_bz_copysign<double,typename P_expr2::T_numtype> > >
1122
copysign(double d1, _bz_ArrayExpr<P_expr2> d2)
1124
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
1125
_bz_copysign<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
1128
template<int N_index2>
1130
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
1131
_bz_copysign<double,int> > >
1132
copysign(double d1, IndexPlaceholder<N_index2> d2)
1134
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
1135
_bz_copysign<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
1138
template<class T_numtype2, int N_rank2>
1140
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
1141
_bz_copysign<long double,T_numtype2> > >
1142
copysign(long double d1, const Array<T_numtype2, N_rank2>& d2)
1144
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
1145
_bz_copysign<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
1148
template<class P_expr2>
1150
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
1151
_bz_copysign<long double,typename P_expr2::T_numtype> > >
1152
copysign(long double d1, _bz_ArrayExpr<P_expr2> d2)
1154
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
1155
_bz_copysign<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
1158
template<int N_index2>
1160
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
1161
_bz_copysign<long double,int> > >
1162
copysign(long double d1, IndexPlaceholder<N_index2> d2)
1164
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
1165
_bz_copysign<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
1168
#ifdef BZ_HAVE_COMPLEX
1169
template<class T1, class T_numtype2, int N_rank2>
1171
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
1172
_bz_copysign<complex<T1> ,T_numtype2> > >
1173
copysign(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
1175
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
1176
_bz_copysign<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
1179
#endif // BZ_HAVE_COMPLEX
1181
#ifdef BZ_HAVE_COMPLEX
1182
template<class T1, class P_expr2>
1184
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
1185
_bz_copysign<complex<T1> ,typename P_expr2::T_numtype> > >
1186
copysign(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
1188
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
1189
_bz_copysign<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
1192
#endif // BZ_HAVE_COMPLEX
1194
#ifdef BZ_HAVE_COMPLEX
1195
template<class T1, int N_index2>
1197
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
1198
_bz_copysign<complex<T1> ,int> > >
1199
copysign(complex<T1> d1, IndexPlaceholder<N_index2> d2)
1201
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
1202
_bz_copysign<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
1205
#endif // BZ_HAVE_COMPLEX
1209
/****************************************************************************
1211
****************************************************************************/
1213
template<class T_numtype1, int N_rank1>
1215
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1216
_bz_csqrt<T_numtype1> > >
1217
csqrt(const Array<T_numtype1, N_rank1>& d1)
1219
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1220
_bz_csqrt<T_numtype1> >(d1.begin());
1223
template<class P_expr1>
1225
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1226
_bz_csqrt<typename P_expr1::T_numtype> > >
1227
csqrt(_bz_ArrayExpr<P_expr1> d1)
1229
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1230
_bz_csqrt<typename P_expr1::T_numtype> >(d1);
1233
template<int N_index1>
1235
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1237
csqrt(IndexPlaceholder<N_index1> d1)
1239
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1240
_bz_csqrt<int> >(d1);
1244
/****************************************************************************
1246
****************************************************************************/
1248
#ifdef BZ_HAVE_SYSTEM_V_MATH
1249
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
1251
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
1252
_bz_drem<T_numtype1,T_numtype2> > >
1253
drem(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
1255
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
1256
_bz_drem<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
1259
template<class T_numtype1, int N_rank1, class P_expr2>
1261
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
1262
_bz_drem<T_numtype1,typename P_expr2::T_numtype> > >
1263
drem(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
1265
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
1266
_bz_drem<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
1269
template<class T_numtype1, int N_rank1, int N_index2>
1271
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
1272
_bz_drem<T_numtype1,int> > >
1273
drem(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
1275
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
1276
_bz_drem<T_numtype1,int> >(d1.begin(), d2);
1279
template<class T_numtype1, int N_rank1>
1281
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
1282
_bz_drem<T_numtype1,float> > >
1283
drem(const Array<T_numtype1, N_rank1>& d1, float d2)
1285
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
1286
_bz_drem<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
1289
template<class T_numtype1, int N_rank1>
1291
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
1292
_bz_drem<T_numtype1,double> > >
1293
drem(const Array<T_numtype1, N_rank1>& d1, double d2)
1295
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
1296
_bz_drem<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
1299
template<class T_numtype1, int N_rank1>
1301
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
1302
_bz_drem<T_numtype1,long double> > >
1303
drem(const Array<T_numtype1, N_rank1>& d1, long double d2)
1305
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
1306
_bz_drem<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
1309
#ifdef BZ_HAVE_COMPLEX
1310
template<class T_numtype1, int N_rank1, class T2>
1312
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
1313
_bz_drem<T_numtype1,complex<T2> > > >
1314
drem(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
1316
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
1317
_bz_drem<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
1320
#endif // BZ_HAVE_COMPLEX
1322
template<class P_expr1, class T_numtype2, int N_rank2>
1324
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
1325
_bz_drem<typename P_expr1::T_numtype,T_numtype2> > >
1326
drem(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
1328
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
1329
_bz_drem<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
1332
template<class P_expr1, class P_expr2>
1334
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
1335
_bz_drem<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
1336
drem(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
1338
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
1339
_bz_drem<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
1342
template<class P_expr1, int N_index2>
1344
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
1345
_bz_drem<typename P_expr1::T_numtype,int> > >
1346
drem(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
1348
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
1349
_bz_drem<typename P_expr1::T_numtype,int> >(d1, d2);
1352
template<class P_expr1>
1354
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
1355
_bz_drem<typename P_expr1::T_numtype,float> > >
1356
drem(_bz_ArrayExpr<P_expr1> d1, float d2)
1358
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
1359
_bz_drem<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
1362
template<class P_expr1>
1364
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
1365
_bz_drem<typename P_expr1::T_numtype,double> > >
1366
drem(_bz_ArrayExpr<P_expr1> d1, double d2)
1368
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
1369
_bz_drem<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
1372
template<class P_expr1>
1374
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
1375
_bz_drem<typename P_expr1::T_numtype,long double> > >
1376
drem(_bz_ArrayExpr<P_expr1> d1, long double d2)
1378
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
1379
_bz_drem<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
1382
#ifdef BZ_HAVE_COMPLEX
1383
template<class P_expr1, class T2>
1385
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
1386
_bz_drem<typename P_expr1::T_numtype,complex<T2> > > >
1387
drem(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
1389
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
1390
_bz_drem<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
1393
#endif // BZ_HAVE_COMPLEX
1395
template<int N_index1, class T_numtype2, int N_rank2>
1397
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
1398
_bz_drem<int,T_numtype2> > >
1399
drem(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
1401
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
1402
_bz_drem<int,T_numtype2> >(d1, d2.begin());
1405
template<int N_index1, class P_expr2>
1407
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
1408
_bz_drem<int,typename P_expr2::T_numtype> > >
1409
drem(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
1411
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
1412
_bz_drem<int,typename P_expr2::T_numtype> >(d1, d2);
1415
template<int N_index1, int N_index2>
1417
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
1418
_bz_drem<int,int> > >
1419
drem(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
1421
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
1422
_bz_drem<int,int> >(d1, d2);
1425
template<int N_index1>
1427
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
1428
_bz_drem<int,float> > >
1429
drem(IndexPlaceholder<N_index1> d1, float d2)
1431
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
1432
_bz_drem<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
1435
template<int N_index1>
1437
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
1438
_bz_drem<int,double> > >
1439
drem(IndexPlaceholder<N_index1> d1, double d2)
1441
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
1442
_bz_drem<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
1445
template<int N_index1>
1447
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
1448
_bz_drem<int,long double> > >
1449
drem(IndexPlaceholder<N_index1> d1, long double d2)
1451
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
1452
_bz_drem<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
1455
#ifdef BZ_HAVE_COMPLEX
1456
template<int N_index1, class T2>
1458
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
1459
_bz_drem<int,complex<T2> > > >
1460
drem(IndexPlaceholder<N_index1> d1, complex<T2> d2)
1462
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
1463
_bz_drem<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
1466
#endif // BZ_HAVE_COMPLEX
1468
template<class T_numtype2, int N_rank2>
1470
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
1471
_bz_drem<float,T_numtype2> > >
1472
drem(float d1, const Array<T_numtype2, N_rank2>& d2)
1474
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
1475
_bz_drem<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
1478
template<class P_expr2>
1480
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
1481
_bz_drem<float,typename P_expr2::T_numtype> > >
1482
drem(float d1, _bz_ArrayExpr<P_expr2> d2)
1484
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
1485
_bz_drem<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
1488
template<int N_index2>
1490
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
1491
_bz_drem<float,int> > >
1492
drem(float d1, IndexPlaceholder<N_index2> d2)
1494
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
1495
_bz_drem<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
1498
template<class T_numtype2, int N_rank2>
1500
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
1501
_bz_drem<double,T_numtype2> > >
1502
drem(double d1, const Array<T_numtype2, N_rank2>& d2)
1504
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
1505
_bz_drem<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
1508
template<class P_expr2>
1510
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
1511
_bz_drem<double,typename P_expr2::T_numtype> > >
1512
drem(double d1, _bz_ArrayExpr<P_expr2> d2)
1514
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
1515
_bz_drem<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
1518
template<int N_index2>
1520
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
1521
_bz_drem<double,int> > >
1522
drem(double d1, IndexPlaceholder<N_index2> d2)
1524
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
1525
_bz_drem<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
1528
template<class T_numtype2, int N_rank2>
1530
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
1531
_bz_drem<long double,T_numtype2> > >
1532
drem(long double d1, const Array<T_numtype2, N_rank2>& d2)
1534
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
1535
_bz_drem<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
1538
template<class P_expr2>
1540
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
1541
_bz_drem<long double,typename P_expr2::T_numtype> > >
1542
drem(long double d1, _bz_ArrayExpr<P_expr2> d2)
1544
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
1545
_bz_drem<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
1548
template<int N_index2>
1550
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
1551
_bz_drem<long double,int> > >
1552
drem(long double d1, IndexPlaceholder<N_index2> d2)
1554
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
1555
_bz_drem<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
1558
#ifdef BZ_HAVE_COMPLEX
1559
template<class T1, class T_numtype2, int N_rank2>
1561
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
1562
_bz_drem<complex<T1> ,T_numtype2> > >
1563
drem(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
1565
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
1566
_bz_drem<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
1569
#endif // BZ_HAVE_COMPLEX
1571
#ifdef BZ_HAVE_COMPLEX
1572
template<class T1, class P_expr2>
1574
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
1575
_bz_drem<complex<T1> ,typename P_expr2::T_numtype> > >
1576
drem(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
1578
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
1579
_bz_drem<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
1582
#endif // BZ_HAVE_COMPLEX
1584
#ifdef BZ_HAVE_COMPLEX
1585
template<class T1, int N_index2>
1587
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
1588
_bz_drem<complex<T1> ,int> > >
1589
drem(complex<T1> d1, IndexPlaceholder<N_index2> d2)
1591
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
1592
_bz_drem<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
1595
#endif // BZ_HAVE_COMPLEX
1599
/****************************************************************************
1601
****************************************************************************/
1603
template<class T_numtype1, int N_rank1>
1605
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1606
_bz_exp<T_numtype1> > >
1607
exp(const Array<T_numtype1, N_rank1>& d1)
1609
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1610
_bz_exp<T_numtype1> >(d1.begin());
1613
template<class P_expr1>
1615
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1616
_bz_exp<typename P_expr1::T_numtype> > >
1617
exp(_bz_ArrayExpr<P_expr1> d1)
1619
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1620
_bz_exp<typename P_expr1::T_numtype> >(d1);
1623
template<int N_index1>
1625
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1627
exp(IndexPlaceholder<N_index1> d1)
1629
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1634
/****************************************************************************
1636
****************************************************************************/
1638
#ifdef BZ_HAVE_IEEE_MATH
1639
template<class T_numtype1, int N_rank1>
1641
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1642
_bz_expm1<T_numtype1> > >
1643
expm1(const Array<T_numtype1, N_rank1>& d1)
1645
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1646
_bz_expm1<T_numtype1> >(d1.begin());
1649
template<class P_expr1>
1651
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1652
_bz_expm1<typename P_expr1::T_numtype> > >
1653
expm1(_bz_ArrayExpr<P_expr1> d1)
1655
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1656
_bz_expm1<typename P_expr1::T_numtype> >(d1);
1659
template<int N_index1>
1661
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1663
expm1(IndexPlaceholder<N_index1> d1)
1665
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1666
_bz_expm1<int> >(d1);
1671
/****************************************************************************
1673
****************************************************************************/
1675
#ifdef BZ_HAVE_IEEE_MATH
1676
template<class T_numtype1, int N_rank1>
1678
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1679
_bz_erf<T_numtype1> > >
1680
erf(const Array<T_numtype1, N_rank1>& d1)
1682
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1683
_bz_erf<T_numtype1> >(d1.begin());
1686
template<class P_expr1>
1688
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1689
_bz_erf<typename P_expr1::T_numtype> > >
1690
erf(_bz_ArrayExpr<P_expr1> d1)
1692
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1693
_bz_erf<typename P_expr1::T_numtype> >(d1);
1696
template<int N_index1>
1698
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1700
erf(IndexPlaceholder<N_index1> d1)
1702
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1708
/****************************************************************************
1710
****************************************************************************/
1712
#ifdef BZ_HAVE_IEEE_MATH
1713
template<class T_numtype1, int N_rank1>
1715
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1716
_bz_erfc<T_numtype1> > >
1717
erfc(const Array<T_numtype1, N_rank1>& d1)
1719
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1720
_bz_erfc<T_numtype1> >(d1.begin());
1723
template<class P_expr1>
1725
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1726
_bz_erfc<typename P_expr1::T_numtype> > >
1727
erfc(_bz_ArrayExpr<P_expr1> d1)
1729
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1730
_bz_erfc<typename P_expr1::T_numtype> >(d1);
1733
template<int N_index1>
1735
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1737
erfc(IndexPlaceholder<N_index1> d1)
1739
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1740
_bz_erfc<int> >(d1);
1745
/****************************************************************************
1747
****************************************************************************/
1749
template<class T_numtype1, int N_rank1>
1751
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1752
_bz_abs<T_numtype1> > >
1753
fabs(const Array<T_numtype1, N_rank1>& d1)
1755
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1756
_bz_abs<T_numtype1> >(d1.begin());
1759
template<class P_expr1>
1761
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1762
_bz_abs<typename P_expr1::T_numtype> > >
1763
fabs(_bz_ArrayExpr<P_expr1> d1)
1765
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1766
_bz_abs<typename P_expr1::T_numtype> >(d1);
1769
template<int N_index1>
1771
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1773
fabs(IndexPlaceholder<N_index1> d1)
1775
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1780
/****************************************************************************
1782
****************************************************************************/
1784
template<class T_numtype1, int N_rank1>
1786
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1787
_bz_floor<T_numtype1> > >
1788
floor(const Array<T_numtype1, N_rank1>& d1)
1790
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
1791
_bz_floor<T_numtype1> >(d1.begin());
1794
template<class P_expr1>
1796
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1797
_bz_floor<typename P_expr1::T_numtype> > >
1798
floor(_bz_ArrayExpr<P_expr1> d1)
1800
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
1801
_bz_floor<typename P_expr1::T_numtype> >(d1);
1804
template<int N_index1>
1806
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1808
floor(IndexPlaceholder<N_index1> d1)
1810
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
1811
_bz_floor<int> >(d1);
1815
/****************************************************************************
1817
****************************************************************************/
1819
#ifdef BZ_HAVE_SYSTEM_V_MATH
1820
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
1822
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
1823
_bz_fmod<T_numtype1,T_numtype2> > >
1824
fmod(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
1826
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
1827
_bz_fmod<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
1830
template<class T_numtype1, int N_rank1, class P_expr2>
1832
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
1833
_bz_fmod<T_numtype1,typename P_expr2::T_numtype> > >
1834
fmod(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
1836
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
1837
_bz_fmod<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
1840
template<class T_numtype1, int N_rank1, int N_index2>
1842
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
1843
_bz_fmod<T_numtype1,int> > >
1844
fmod(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
1846
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
1847
_bz_fmod<T_numtype1,int> >(d1.begin(), d2);
1850
template<class T_numtype1, int N_rank1>
1852
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
1853
_bz_fmod<T_numtype1,float> > >
1854
fmod(const Array<T_numtype1, N_rank1>& d1, float d2)
1856
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
1857
_bz_fmod<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
1860
template<class T_numtype1, int N_rank1>
1862
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
1863
_bz_fmod<T_numtype1,double> > >
1864
fmod(const Array<T_numtype1, N_rank1>& d1, double d2)
1866
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
1867
_bz_fmod<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
1870
template<class T_numtype1, int N_rank1>
1872
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
1873
_bz_fmod<T_numtype1,long double> > >
1874
fmod(const Array<T_numtype1, N_rank1>& d1, long double d2)
1876
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
1877
_bz_fmod<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
1880
#ifdef BZ_HAVE_COMPLEX
1881
template<class T_numtype1, int N_rank1, class T2>
1883
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
1884
_bz_fmod<T_numtype1,complex<T2> > > >
1885
fmod(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
1887
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
1888
_bz_fmod<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
1891
#endif // BZ_HAVE_COMPLEX
1893
template<class P_expr1, class T_numtype2, int N_rank2>
1895
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
1896
_bz_fmod<typename P_expr1::T_numtype,T_numtype2> > >
1897
fmod(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
1899
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
1900
_bz_fmod<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
1903
template<class P_expr1, class P_expr2>
1905
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
1906
_bz_fmod<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
1907
fmod(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
1909
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
1910
_bz_fmod<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
1913
template<class P_expr1, int N_index2>
1915
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
1916
_bz_fmod<typename P_expr1::T_numtype,int> > >
1917
fmod(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
1919
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
1920
_bz_fmod<typename P_expr1::T_numtype,int> >(d1, d2);
1923
template<class P_expr1>
1925
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
1926
_bz_fmod<typename P_expr1::T_numtype,float> > >
1927
fmod(_bz_ArrayExpr<P_expr1> d1, float d2)
1929
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
1930
_bz_fmod<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
1933
template<class P_expr1>
1935
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
1936
_bz_fmod<typename P_expr1::T_numtype,double> > >
1937
fmod(_bz_ArrayExpr<P_expr1> d1, double d2)
1939
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
1940
_bz_fmod<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
1943
template<class P_expr1>
1945
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
1946
_bz_fmod<typename P_expr1::T_numtype,long double> > >
1947
fmod(_bz_ArrayExpr<P_expr1> d1, long double d2)
1949
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
1950
_bz_fmod<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
1953
#ifdef BZ_HAVE_COMPLEX
1954
template<class P_expr1, class T2>
1956
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
1957
_bz_fmod<typename P_expr1::T_numtype,complex<T2> > > >
1958
fmod(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
1960
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
1961
_bz_fmod<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
1964
#endif // BZ_HAVE_COMPLEX
1966
template<int N_index1, class T_numtype2, int N_rank2>
1968
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
1969
_bz_fmod<int,T_numtype2> > >
1970
fmod(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
1972
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
1973
_bz_fmod<int,T_numtype2> >(d1, d2.begin());
1976
template<int N_index1, class P_expr2>
1978
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
1979
_bz_fmod<int,typename P_expr2::T_numtype> > >
1980
fmod(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
1982
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
1983
_bz_fmod<int,typename P_expr2::T_numtype> >(d1, d2);
1986
template<int N_index1, int N_index2>
1988
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
1989
_bz_fmod<int,int> > >
1990
fmod(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
1992
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
1993
_bz_fmod<int,int> >(d1, d2);
1996
template<int N_index1>
1998
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
1999
_bz_fmod<int,float> > >
2000
fmod(IndexPlaceholder<N_index1> d1, float d2)
2002
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
2003
_bz_fmod<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
2006
template<int N_index1>
2008
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
2009
_bz_fmod<int,double> > >
2010
fmod(IndexPlaceholder<N_index1> d1, double d2)
2012
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
2013
_bz_fmod<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
2016
template<int N_index1>
2018
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
2019
_bz_fmod<int,long double> > >
2020
fmod(IndexPlaceholder<N_index1> d1, long double d2)
2022
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
2023
_bz_fmod<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
2026
#ifdef BZ_HAVE_COMPLEX
2027
template<int N_index1, class T2>
2029
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
2030
_bz_fmod<int,complex<T2> > > >
2031
fmod(IndexPlaceholder<N_index1> d1, complex<T2> d2)
2033
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
2034
_bz_fmod<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
2037
#endif // BZ_HAVE_COMPLEX
2039
template<class T_numtype2, int N_rank2>
2041
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
2042
_bz_fmod<float,T_numtype2> > >
2043
fmod(float d1, const Array<T_numtype2, N_rank2>& d2)
2045
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
2046
_bz_fmod<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
2049
template<class P_expr2>
2051
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
2052
_bz_fmod<float,typename P_expr2::T_numtype> > >
2053
fmod(float d1, _bz_ArrayExpr<P_expr2> d2)
2055
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
2056
_bz_fmod<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
2059
template<int N_index2>
2061
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
2062
_bz_fmod<float,int> > >
2063
fmod(float d1, IndexPlaceholder<N_index2> d2)
2065
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
2066
_bz_fmod<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
2069
template<class T_numtype2, int N_rank2>
2071
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
2072
_bz_fmod<double,T_numtype2> > >
2073
fmod(double d1, const Array<T_numtype2, N_rank2>& d2)
2075
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
2076
_bz_fmod<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
2079
template<class P_expr2>
2081
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
2082
_bz_fmod<double,typename P_expr2::T_numtype> > >
2083
fmod(double d1, _bz_ArrayExpr<P_expr2> d2)
2085
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
2086
_bz_fmod<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
2089
template<int N_index2>
2091
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
2092
_bz_fmod<double,int> > >
2093
fmod(double d1, IndexPlaceholder<N_index2> d2)
2095
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
2096
_bz_fmod<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
2099
template<class T_numtype2, int N_rank2>
2101
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
2102
_bz_fmod<long double,T_numtype2> > >
2103
fmod(long double d1, const Array<T_numtype2, N_rank2>& d2)
2105
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
2106
_bz_fmod<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
2109
template<class P_expr2>
2111
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
2112
_bz_fmod<long double,typename P_expr2::T_numtype> > >
2113
fmod(long double d1, _bz_ArrayExpr<P_expr2> d2)
2115
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
2116
_bz_fmod<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
2119
template<int N_index2>
2121
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
2122
_bz_fmod<long double,int> > >
2123
fmod(long double d1, IndexPlaceholder<N_index2> d2)
2125
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
2126
_bz_fmod<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
2129
#ifdef BZ_HAVE_COMPLEX
2130
template<class T1, class T_numtype2, int N_rank2>
2132
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
2133
_bz_fmod<complex<T1> ,T_numtype2> > >
2134
fmod(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
2136
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
2137
_bz_fmod<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
2140
#endif // BZ_HAVE_COMPLEX
2142
#ifdef BZ_HAVE_COMPLEX
2143
template<class T1, class P_expr2>
2145
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
2146
_bz_fmod<complex<T1> ,typename P_expr2::T_numtype> > >
2147
fmod(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
2149
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
2150
_bz_fmod<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
2153
#endif // BZ_HAVE_COMPLEX
2155
#ifdef BZ_HAVE_COMPLEX
2156
template<class T1, int N_index2>
2158
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
2159
_bz_fmod<complex<T1> ,int> > >
2160
fmod(complex<T1> d1, IndexPlaceholder<N_index2> d2)
2162
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
2163
_bz_fmod<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
2166
#endif // BZ_HAVE_COMPLEX
2170
/****************************************************************************
2172
****************************************************************************/
2174
#ifdef BZ_HAVE_SYSTEM_V_MATH
2175
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
2177
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
2178
_bz_hypot<T_numtype1,T_numtype2> > >
2179
hypot(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
2181
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
2182
_bz_hypot<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
2185
template<class T_numtype1, int N_rank1, class P_expr2>
2187
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
2188
_bz_hypot<T_numtype1,typename P_expr2::T_numtype> > >
2189
hypot(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
2191
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
2192
_bz_hypot<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
2195
template<class T_numtype1, int N_rank1, int N_index2>
2197
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
2198
_bz_hypot<T_numtype1,int> > >
2199
hypot(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
2201
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
2202
_bz_hypot<T_numtype1,int> >(d1.begin(), d2);
2205
template<class T_numtype1, int N_rank1>
2207
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
2208
_bz_hypot<T_numtype1,float> > >
2209
hypot(const Array<T_numtype1, N_rank1>& d1, float d2)
2211
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
2212
_bz_hypot<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
2215
template<class T_numtype1, int N_rank1>
2217
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
2218
_bz_hypot<T_numtype1,double> > >
2219
hypot(const Array<T_numtype1, N_rank1>& d1, double d2)
2221
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
2222
_bz_hypot<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
2225
template<class T_numtype1, int N_rank1>
2227
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
2228
_bz_hypot<T_numtype1,long double> > >
2229
hypot(const Array<T_numtype1, N_rank1>& d1, long double d2)
2231
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
2232
_bz_hypot<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
2235
#ifdef BZ_HAVE_COMPLEX
2236
template<class T_numtype1, int N_rank1, class T2>
2238
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
2239
_bz_hypot<T_numtype1,complex<T2> > > >
2240
hypot(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
2242
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
2243
_bz_hypot<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
2246
#endif // BZ_HAVE_COMPLEX
2248
template<class P_expr1, class T_numtype2, int N_rank2>
2250
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
2251
_bz_hypot<typename P_expr1::T_numtype,T_numtype2> > >
2252
hypot(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
2254
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
2255
_bz_hypot<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
2258
template<class P_expr1, class P_expr2>
2260
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
2261
_bz_hypot<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
2262
hypot(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
2264
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
2265
_bz_hypot<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
2268
template<class P_expr1, int N_index2>
2270
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
2271
_bz_hypot<typename P_expr1::T_numtype,int> > >
2272
hypot(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
2274
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
2275
_bz_hypot<typename P_expr1::T_numtype,int> >(d1, d2);
2278
template<class P_expr1>
2280
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
2281
_bz_hypot<typename P_expr1::T_numtype,float> > >
2282
hypot(_bz_ArrayExpr<P_expr1> d1, float d2)
2284
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
2285
_bz_hypot<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
2288
template<class P_expr1>
2290
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
2291
_bz_hypot<typename P_expr1::T_numtype,double> > >
2292
hypot(_bz_ArrayExpr<P_expr1> d1, double d2)
2294
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
2295
_bz_hypot<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
2298
template<class P_expr1>
2300
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
2301
_bz_hypot<typename P_expr1::T_numtype,long double> > >
2302
hypot(_bz_ArrayExpr<P_expr1> d1, long double d2)
2304
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
2305
_bz_hypot<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
2308
#ifdef BZ_HAVE_COMPLEX
2309
template<class P_expr1, class T2>
2311
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
2312
_bz_hypot<typename P_expr1::T_numtype,complex<T2> > > >
2313
hypot(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
2315
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
2316
_bz_hypot<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
2319
#endif // BZ_HAVE_COMPLEX
2321
template<int N_index1, class T_numtype2, int N_rank2>
2323
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
2324
_bz_hypot<int,T_numtype2> > >
2325
hypot(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
2327
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
2328
_bz_hypot<int,T_numtype2> >(d1, d2.begin());
2331
template<int N_index1, class P_expr2>
2333
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
2334
_bz_hypot<int,typename P_expr2::T_numtype> > >
2335
hypot(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
2337
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
2338
_bz_hypot<int,typename P_expr2::T_numtype> >(d1, d2);
2341
template<int N_index1, int N_index2>
2343
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
2344
_bz_hypot<int,int> > >
2345
hypot(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
2347
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
2348
_bz_hypot<int,int> >(d1, d2);
2351
template<int N_index1>
2353
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
2354
_bz_hypot<int,float> > >
2355
hypot(IndexPlaceholder<N_index1> d1, float d2)
2357
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
2358
_bz_hypot<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
2361
template<int N_index1>
2363
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
2364
_bz_hypot<int,double> > >
2365
hypot(IndexPlaceholder<N_index1> d1, double d2)
2367
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
2368
_bz_hypot<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
2371
template<int N_index1>
2373
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
2374
_bz_hypot<int,long double> > >
2375
hypot(IndexPlaceholder<N_index1> d1, long double d2)
2377
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
2378
_bz_hypot<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
2381
#ifdef BZ_HAVE_COMPLEX
2382
template<int N_index1, class T2>
2384
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
2385
_bz_hypot<int,complex<T2> > > >
2386
hypot(IndexPlaceholder<N_index1> d1, complex<T2> d2)
2388
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
2389
_bz_hypot<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
2392
#endif // BZ_HAVE_COMPLEX
2394
template<class T_numtype2, int N_rank2>
2396
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
2397
_bz_hypot<float,T_numtype2> > >
2398
hypot(float d1, const Array<T_numtype2, N_rank2>& d2)
2400
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
2401
_bz_hypot<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
2404
template<class P_expr2>
2406
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
2407
_bz_hypot<float,typename P_expr2::T_numtype> > >
2408
hypot(float d1, _bz_ArrayExpr<P_expr2> d2)
2410
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
2411
_bz_hypot<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
2414
template<int N_index2>
2416
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
2417
_bz_hypot<float,int> > >
2418
hypot(float d1, IndexPlaceholder<N_index2> d2)
2420
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
2421
_bz_hypot<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
2424
template<class T_numtype2, int N_rank2>
2426
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
2427
_bz_hypot<double,T_numtype2> > >
2428
hypot(double d1, const Array<T_numtype2, N_rank2>& d2)
2430
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
2431
_bz_hypot<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
2434
template<class P_expr2>
2436
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
2437
_bz_hypot<double,typename P_expr2::T_numtype> > >
2438
hypot(double d1, _bz_ArrayExpr<P_expr2> d2)
2440
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
2441
_bz_hypot<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
2444
template<int N_index2>
2446
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
2447
_bz_hypot<double,int> > >
2448
hypot(double d1, IndexPlaceholder<N_index2> d2)
2450
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
2451
_bz_hypot<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
2454
template<class T_numtype2, int N_rank2>
2456
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
2457
_bz_hypot<long double,T_numtype2> > >
2458
hypot(long double d1, const Array<T_numtype2, N_rank2>& d2)
2460
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
2461
_bz_hypot<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
2464
template<class P_expr2>
2466
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
2467
_bz_hypot<long double,typename P_expr2::T_numtype> > >
2468
hypot(long double d1, _bz_ArrayExpr<P_expr2> d2)
2470
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
2471
_bz_hypot<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
2474
template<int N_index2>
2476
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
2477
_bz_hypot<long double,int> > >
2478
hypot(long double d1, IndexPlaceholder<N_index2> d2)
2480
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
2481
_bz_hypot<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
2484
#ifdef BZ_HAVE_COMPLEX
2485
template<class T1, class T_numtype2, int N_rank2>
2487
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
2488
_bz_hypot<complex<T1> ,T_numtype2> > >
2489
hypot(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
2491
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
2492
_bz_hypot<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
2495
#endif // BZ_HAVE_COMPLEX
2497
#ifdef BZ_HAVE_COMPLEX
2498
template<class T1, class P_expr2>
2500
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
2501
_bz_hypot<complex<T1> ,typename P_expr2::T_numtype> > >
2502
hypot(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
2504
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
2505
_bz_hypot<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
2508
#endif // BZ_HAVE_COMPLEX
2510
#ifdef BZ_HAVE_COMPLEX
2511
template<class T1, int N_index2>
2513
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
2514
_bz_hypot<complex<T1> ,int> > >
2515
hypot(complex<T1> d1, IndexPlaceholder<N_index2> d2)
2517
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
2518
_bz_hypot<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
2521
#endif // BZ_HAVE_COMPLEX
2525
/****************************************************************************
2527
****************************************************************************/
2529
#ifdef BZ_HAVE_SYSTEM_V_MATH
2530
template<class T_numtype1, int N_rank1>
2532
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2533
_bz_ilogb<T_numtype1> > >
2534
ilogb(const Array<T_numtype1, N_rank1>& d1)
2536
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2537
_bz_ilogb<T_numtype1> >(d1.begin());
2540
template<class P_expr1>
2542
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2543
_bz_ilogb<typename P_expr1::T_numtype> > >
2544
ilogb(_bz_ArrayExpr<P_expr1> d1)
2546
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2547
_bz_ilogb<typename P_expr1::T_numtype> >(d1);
2550
template<int N_index1>
2552
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2554
ilogb(IndexPlaceholder<N_index1> d1)
2556
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2557
_bz_ilogb<int> >(d1);
2562
/****************************************************************************
2564
****************************************************************************/
2566
#ifdef BZ_HAVE_IEEE_MATH
2567
template<class T_numtype1, int N_rank1>
2569
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2570
_bz_isnan<T_numtype1> > >
2571
isnan(const Array<T_numtype1, N_rank1>& d1)
2573
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2574
_bz_isnan<T_numtype1> >(d1.begin());
2577
template<class P_expr1>
2579
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2580
_bz_isnan<typename P_expr1::T_numtype> > >
2581
isnan(_bz_ArrayExpr<P_expr1> d1)
2583
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2584
_bz_isnan<typename P_expr1::T_numtype> >(d1);
2587
template<int N_index1>
2589
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2591
isnan(IndexPlaceholder<N_index1> d1)
2593
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2594
_bz_isnan<int> >(d1);
2599
/****************************************************************************
2601
****************************************************************************/
2603
#ifdef BZ_HAVE_SYSTEM_V_MATH
2604
template<class T_numtype1, int N_rank1>
2606
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2607
_bz_itrunc<T_numtype1> > >
2608
itrunc(const Array<T_numtype1, N_rank1>& d1)
2610
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2611
_bz_itrunc<T_numtype1> >(d1.begin());
2614
template<class P_expr1>
2616
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2617
_bz_itrunc<typename P_expr1::T_numtype> > >
2618
itrunc(_bz_ArrayExpr<P_expr1> d1)
2620
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2621
_bz_itrunc<typename P_expr1::T_numtype> >(d1);
2624
template<int N_index1>
2626
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2628
itrunc(IndexPlaceholder<N_index1> d1)
2630
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2631
_bz_itrunc<int> >(d1);
2636
/****************************************************************************
2638
****************************************************************************/
2640
#ifdef BZ_HAVE_IEEE_MATH
2641
template<class T_numtype1, int N_rank1>
2643
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2644
_bz_j0<T_numtype1> > >
2645
j0(const Array<T_numtype1, N_rank1>& d1)
2647
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2648
_bz_j0<T_numtype1> >(d1.begin());
2651
template<class P_expr1>
2653
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2654
_bz_j0<typename P_expr1::T_numtype> > >
2655
j0(_bz_ArrayExpr<P_expr1> d1)
2657
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2658
_bz_j0<typename P_expr1::T_numtype> >(d1);
2661
template<int N_index1>
2663
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2665
j0(IndexPlaceholder<N_index1> d1)
2667
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2673
/****************************************************************************
2675
****************************************************************************/
2677
#ifdef BZ_HAVE_IEEE_MATH
2678
template<class T_numtype1, int N_rank1>
2680
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2681
_bz_j1<T_numtype1> > >
2682
j1(const Array<T_numtype1, N_rank1>& d1)
2684
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2685
_bz_j1<T_numtype1> >(d1.begin());
2688
template<class P_expr1>
2690
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2691
_bz_j1<typename P_expr1::T_numtype> > >
2692
j1(_bz_ArrayExpr<P_expr1> d1)
2694
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2695
_bz_j1<typename P_expr1::T_numtype> >(d1);
2698
template<int N_index1>
2700
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2702
j1(IndexPlaceholder<N_index1> d1)
2704
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2710
/****************************************************************************
2712
****************************************************************************/
2714
#ifdef BZ_HAVE_IEEE_MATH
2715
template<class T_numtype1, int N_rank1>
2717
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2718
_bz_lgamma<T_numtype1> > >
2719
lgamma(const Array<T_numtype1, N_rank1>& d1)
2721
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2722
_bz_lgamma<T_numtype1> >(d1.begin());
2725
template<class P_expr1>
2727
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2728
_bz_lgamma<typename P_expr1::T_numtype> > >
2729
lgamma(_bz_ArrayExpr<P_expr1> d1)
2731
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2732
_bz_lgamma<typename P_expr1::T_numtype> >(d1);
2735
template<int N_index1>
2737
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2739
lgamma(IndexPlaceholder<N_index1> d1)
2741
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2742
_bz_lgamma<int> >(d1);
2747
/****************************************************************************
2749
****************************************************************************/
2751
template<class T_numtype1, int N_rank1>
2753
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2754
_bz_log<T_numtype1> > >
2755
log(const Array<T_numtype1, N_rank1>& d1)
2757
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2758
_bz_log<T_numtype1> >(d1.begin());
2761
template<class P_expr1>
2763
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2764
_bz_log<typename P_expr1::T_numtype> > >
2765
log(_bz_ArrayExpr<P_expr1> d1)
2767
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2768
_bz_log<typename P_expr1::T_numtype> >(d1);
2771
template<int N_index1>
2773
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2775
log(IndexPlaceholder<N_index1> d1)
2777
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2782
/****************************************************************************
2784
****************************************************************************/
2786
#ifdef BZ_HAVE_IEEE_MATH
2787
template<class T_numtype1, int N_rank1>
2789
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2790
_bz_logb<T_numtype1> > >
2791
logb(const Array<T_numtype1, N_rank1>& d1)
2793
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2794
_bz_logb<T_numtype1> >(d1.begin());
2797
template<class P_expr1>
2799
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2800
_bz_logb<typename P_expr1::T_numtype> > >
2801
logb(_bz_ArrayExpr<P_expr1> d1)
2803
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2804
_bz_logb<typename P_expr1::T_numtype> >(d1);
2807
template<int N_index1>
2809
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2811
logb(IndexPlaceholder<N_index1> d1)
2813
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2814
_bz_logb<int> >(d1);
2819
/****************************************************************************
2821
****************************************************************************/
2823
#ifdef BZ_HAVE_IEEE_MATH
2824
template<class T_numtype1, int N_rank1>
2826
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2827
_bz_log1p<T_numtype1> > >
2828
log1p(const Array<T_numtype1, N_rank1>& d1)
2830
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2831
_bz_log1p<T_numtype1> >(d1.begin());
2834
template<class P_expr1>
2836
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2837
_bz_log1p<typename P_expr1::T_numtype> > >
2838
log1p(_bz_ArrayExpr<P_expr1> d1)
2840
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2841
_bz_log1p<typename P_expr1::T_numtype> >(d1);
2844
template<int N_index1>
2846
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2848
log1p(IndexPlaceholder<N_index1> d1)
2850
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2851
_bz_log1p<int> >(d1);
2856
/****************************************************************************
2858
****************************************************************************/
2860
template<class T_numtype1, int N_rank1>
2862
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2863
_bz_log10<T_numtype1> > >
2864
log10(const Array<T_numtype1, N_rank1>& d1)
2866
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2867
_bz_log10<T_numtype1> >(d1.begin());
2870
template<class P_expr1>
2872
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2873
_bz_log10<typename P_expr1::T_numtype> > >
2874
log10(_bz_ArrayExpr<P_expr1> d1)
2876
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2877
_bz_log10<typename P_expr1::T_numtype> >(d1);
2880
template<int N_index1>
2882
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2884
log10(IndexPlaceholder<N_index1> d1)
2886
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2887
_bz_log10<int> >(d1);
2891
/****************************************************************************
2893
****************************************************************************/
2895
#ifdef BZ_HAVE_SYSTEM_V_MATH
2896
template<class T_numtype1, int N_rank1>
2898
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2899
_bz_nearest<T_numtype1> > >
2900
nearest(const Array<T_numtype1, N_rank1>& d1)
2902
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
2903
_bz_nearest<T_numtype1> >(d1.begin());
2906
template<class P_expr1>
2908
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2909
_bz_nearest<typename P_expr1::T_numtype> > >
2910
nearest(_bz_ArrayExpr<P_expr1> d1)
2912
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
2913
_bz_nearest<typename P_expr1::T_numtype> >(d1);
2916
template<int N_index1>
2918
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2919
_bz_nearest<int> > >
2920
nearest(IndexPlaceholder<N_index1> d1)
2922
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
2923
_bz_nearest<int> >(d1);
2928
/****************************************************************************
2930
****************************************************************************/
2932
#ifdef BZ_HAVE_SYSTEM_V_MATH
2933
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
2935
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
2936
_bz_nextafter<T_numtype1,T_numtype2> > >
2937
nextafter(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
2939
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
2940
_bz_nextafter<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
2943
template<class T_numtype1, int N_rank1, class P_expr2>
2945
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
2946
_bz_nextafter<T_numtype1,typename P_expr2::T_numtype> > >
2947
nextafter(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
2949
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
2950
_bz_nextafter<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
2953
template<class T_numtype1, int N_rank1, int N_index2>
2955
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
2956
_bz_nextafter<T_numtype1,int> > >
2957
nextafter(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
2959
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
2960
_bz_nextafter<T_numtype1,int> >(d1.begin(), d2);
2963
template<class T_numtype1, int N_rank1>
2965
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
2966
_bz_nextafter<T_numtype1,float> > >
2967
nextafter(const Array<T_numtype1, N_rank1>& d1, float d2)
2969
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
2970
_bz_nextafter<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
2973
template<class T_numtype1, int N_rank1>
2975
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
2976
_bz_nextafter<T_numtype1,double> > >
2977
nextafter(const Array<T_numtype1, N_rank1>& d1, double d2)
2979
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
2980
_bz_nextafter<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
2983
template<class T_numtype1, int N_rank1>
2985
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
2986
_bz_nextafter<T_numtype1,long double> > >
2987
nextafter(const Array<T_numtype1, N_rank1>& d1, long double d2)
2989
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
2990
_bz_nextafter<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
2993
#ifdef BZ_HAVE_COMPLEX
2994
template<class T_numtype1, int N_rank1, class T2>
2996
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
2997
_bz_nextafter<T_numtype1,complex<T2> > > >
2998
nextafter(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
3000
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
3001
_bz_nextafter<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
3004
#endif // BZ_HAVE_COMPLEX
3006
template<class P_expr1, class T_numtype2, int N_rank2>
3008
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
3009
_bz_nextafter<typename P_expr1::T_numtype,T_numtype2> > >
3010
nextafter(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
3012
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
3013
_bz_nextafter<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
3016
template<class P_expr1, class P_expr2>
3018
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
3019
_bz_nextafter<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
3020
nextafter(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
3022
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
3023
_bz_nextafter<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
3026
template<class P_expr1, int N_index2>
3028
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
3029
_bz_nextafter<typename P_expr1::T_numtype,int> > >
3030
nextafter(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
3032
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
3033
_bz_nextafter<typename P_expr1::T_numtype,int> >(d1, d2);
3036
template<class P_expr1>
3038
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
3039
_bz_nextafter<typename P_expr1::T_numtype,float> > >
3040
nextafter(_bz_ArrayExpr<P_expr1> d1, float d2)
3042
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
3043
_bz_nextafter<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
3046
template<class P_expr1>
3048
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
3049
_bz_nextafter<typename P_expr1::T_numtype,double> > >
3050
nextafter(_bz_ArrayExpr<P_expr1> d1, double d2)
3052
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
3053
_bz_nextafter<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
3056
template<class P_expr1>
3058
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
3059
_bz_nextafter<typename P_expr1::T_numtype,long double> > >
3060
nextafter(_bz_ArrayExpr<P_expr1> d1, long double d2)
3062
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
3063
_bz_nextafter<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
3066
#ifdef BZ_HAVE_COMPLEX
3067
template<class P_expr1, class T2>
3069
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
3070
_bz_nextafter<typename P_expr1::T_numtype,complex<T2> > > >
3071
nextafter(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
3073
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
3074
_bz_nextafter<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
3077
#endif // BZ_HAVE_COMPLEX
3079
template<int N_index1, class T_numtype2, int N_rank2>
3081
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
3082
_bz_nextafter<int,T_numtype2> > >
3083
nextafter(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
3085
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
3086
_bz_nextafter<int,T_numtype2> >(d1, d2.begin());
3089
template<int N_index1, class P_expr2>
3091
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
3092
_bz_nextafter<int,typename P_expr2::T_numtype> > >
3093
nextafter(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
3095
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
3096
_bz_nextafter<int,typename P_expr2::T_numtype> >(d1, d2);
3099
template<int N_index1, int N_index2>
3101
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
3102
_bz_nextafter<int,int> > >
3103
nextafter(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
3105
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
3106
_bz_nextafter<int,int> >(d1, d2);
3109
template<int N_index1>
3111
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
3112
_bz_nextafter<int,float> > >
3113
nextafter(IndexPlaceholder<N_index1> d1, float d2)
3115
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
3116
_bz_nextafter<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
3119
template<int N_index1>
3121
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
3122
_bz_nextafter<int,double> > >
3123
nextafter(IndexPlaceholder<N_index1> d1, double d2)
3125
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
3126
_bz_nextafter<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
3129
template<int N_index1>
3131
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
3132
_bz_nextafter<int,long double> > >
3133
nextafter(IndexPlaceholder<N_index1> d1, long double d2)
3135
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
3136
_bz_nextafter<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
3139
#ifdef BZ_HAVE_COMPLEX
3140
template<int N_index1, class T2>
3142
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
3143
_bz_nextafter<int,complex<T2> > > >
3144
nextafter(IndexPlaceholder<N_index1> d1, complex<T2> d2)
3146
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
3147
_bz_nextafter<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
3150
#endif // BZ_HAVE_COMPLEX
3152
template<class T_numtype2, int N_rank2>
3154
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
3155
_bz_nextafter<float,T_numtype2> > >
3156
nextafter(float d1, const Array<T_numtype2, N_rank2>& d2)
3158
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
3159
_bz_nextafter<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
3162
template<class P_expr2>
3164
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
3165
_bz_nextafter<float,typename P_expr2::T_numtype> > >
3166
nextafter(float d1, _bz_ArrayExpr<P_expr2> d2)
3168
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
3169
_bz_nextafter<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
3172
template<int N_index2>
3174
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
3175
_bz_nextafter<float,int> > >
3176
nextafter(float d1, IndexPlaceholder<N_index2> d2)
3178
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
3179
_bz_nextafter<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
3182
template<class T_numtype2, int N_rank2>
3184
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
3185
_bz_nextafter<double,T_numtype2> > >
3186
nextafter(double d1, const Array<T_numtype2, N_rank2>& d2)
3188
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
3189
_bz_nextafter<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
3192
template<class P_expr2>
3194
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
3195
_bz_nextafter<double,typename P_expr2::T_numtype> > >
3196
nextafter(double d1, _bz_ArrayExpr<P_expr2> d2)
3198
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
3199
_bz_nextafter<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
3202
template<int N_index2>
3204
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
3205
_bz_nextafter<double,int> > >
3206
nextafter(double d1, IndexPlaceholder<N_index2> d2)
3208
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
3209
_bz_nextafter<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
3212
template<class T_numtype2, int N_rank2>
3214
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
3215
_bz_nextafter<long double,T_numtype2> > >
3216
nextafter(long double d1, const Array<T_numtype2, N_rank2>& d2)
3218
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
3219
_bz_nextafter<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
3222
template<class P_expr2>
3224
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
3225
_bz_nextafter<long double,typename P_expr2::T_numtype> > >
3226
nextafter(long double d1, _bz_ArrayExpr<P_expr2> d2)
3228
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
3229
_bz_nextafter<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
3232
template<int N_index2>
3234
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
3235
_bz_nextafter<long double,int> > >
3236
nextafter(long double d1, IndexPlaceholder<N_index2> d2)
3238
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
3239
_bz_nextafter<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
3242
#ifdef BZ_HAVE_COMPLEX
3243
template<class T1, class T_numtype2, int N_rank2>
3245
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
3246
_bz_nextafter<complex<T1> ,T_numtype2> > >
3247
nextafter(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
3249
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
3250
_bz_nextafter<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
3253
#endif // BZ_HAVE_COMPLEX
3255
#ifdef BZ_HAVE_COMPLEX
3256
template<class T1, class P_expr2>
3258
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
3259
_bz_nextafter<complex<T1> ,typename P_expr2::T_numtype> > >
3260
nextafter(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
3262
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
3263
_bz_nextafter<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
3266
#endif // BZ_HAVE_COMPLEX
3268
#ifdef BZ_HAVE_COMPLEX
3269
template<class T1, int N_index2>
3271
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
3272
_bz_nextafter<complex<T1> ,int> > >
3273
nextafter(complex<T1> d1, IndexPlaceholder<N_index2> d2)
3275
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
3276
_bz_nextafter<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
3279
#endif // BZ_HAVE_COMPLEX
3283
/****************************************************************************
3285
****************************************************************************/
3287
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
3289
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
3290
_bz_pow<T_numtype1,T_numtype2> > >
3291
pow(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
3293
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
3294
_bz_pow<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
3297
template<class T_numtype1, int N_rank1, class P_expr2>
3299
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
3300
_bz_pow<T_numtype1,typename P_expr2::T_numtype> > >
3301
pow(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
3303
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
3304
_bz_pow<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
3307
template<class T_numtype1, int N_rank1, int N_index2>
3309
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
3310
_bz_pow<T_numtype1,int> > >
3311
pow(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
3313
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
3314
_bz_pow<T_numtype1,int> >(d1.begin(), d2);
3317
template<class T_numtype1, int N_rank1>
3319
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
3320
_bz_pow<T_numtype1,float> > >
3321
pow(const Array<T_numtype1, N_rank1>& d1, float d2)
3323
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
3324
_bz_pow<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
3327
template<class T_numtype1, int N_rank1>
3329
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
3330
_bz_pow<T_numtype1,double> > >
3331
pow(const Array<T_numtype1, N_rank1>& d1, double d2)
3333
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
3334
_bz_pow<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
3337
template<class T_numtype1, int N_rank1>
3339
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
3340
_bz_pow<T_numtype1,long double> > >
3341
pow(const Array<T_numtype1, N_rank1>& d1, long double d2)
3343
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
3344
_bz_pow<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
3347
#ifdef BZ_HAVE_COMPLEX
3348
template<class T_numtype1, int N_rank1, class T2>
3350
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
3351
_bz_pow<T_numtype1,complex<T2> > > >
3352
pow(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
3354
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
3355
_bz_pow<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
3358
#endif // BZ_HAVE_COMPLEX
3360
template<class P_expr1, class T_numtype2, int N_rank2>
3362
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
3363
_bz_pow<typename P_expr1::T_numtype,T_numtype2> > >
3364
pow(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
3366
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
3367
_bz_pow<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
3370
template<class P_expr1, class P_expr2>
3372
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
3373
_bz_pow<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
3374
pow(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
3376
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
3377
_bz_pow<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
3380
template<class P_expr1, int N_index2>
3382
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
3383
_bz_pow<typename P_expr1::T_numtype,int> > >
3384
pow(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
3386
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
3387
_bz_pow<typename P_expr1::T_numtype,int> >(d1, d2);
3390
template<class P_expr1>
3392
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
3393
_bz_pow<typename P_expr1::T_numtype,float> > >
3394
pow(_bz_ArrayExpr<P_expr1> d1, float d2)
3396
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
3397
_bz_pow<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
3400
template<class P_expr1>
3402
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
3403
_bz_pow<typename P_expr1::T_numtype,double> > >
3404
pow(_bz_ArrayExpr<P_expr1> d1, double d2)
3406
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
3407
_bz_pow<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
3410
template<class P_expr1>
3412
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
3413
_bz_pow<typename P_expr1::T_numtype,long double> > >
3414
pow(_bz_ArrayExpr<P_expr1> d1, long double d2)
3416
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
3417
_bz_pow<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
3420
#ifdef BZ_HAVE_COMPLEX
3421
template<class P_expr1, class T2>
3423
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
3424
_bz_pow<typename P_expr1::T_numtype,complex<T2> > > >
3425
pow(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
3427
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
3428
_bz_pow<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
3431
#endif // BZ_HAVE_COMPLEX
3433
template<int N_index1, class T_numtype2, int N_rank2>
3435
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
3436
_bz_pow<int,T_numtype2> > >
3437
pow(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
3439
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
3440
_bz_pow<int,T_numtype2> >(d1, d2.begin());
3443
template<int N_index1, class P_expr2>
3445
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
3446
_bz_pow<int,typename P_expr2::T_numtype> > >
3447
pow(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
3449
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
3450
_bz_pow<int,typename P_expr2::T_numtype> >(d1, d2);
3453
template<int N_index1, int N_index2>
3455
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
3456
_bz_pow<int,int> > >
3457
pow(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
3459
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
3460
_bz_pow<int,int> >(d1, d2);
3463
template<int N_index1>
3465
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
3466
_bz_pow<int,float> > >
3467
pow(IndexPlaceholder<N_index1> d1, float d2)
3469
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
3470
_bz_pow<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
3473
template<int N_index1>
3475
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
3476
_bz_pow<int,double> > >
3477
pow(IndexPlaceholder<N_index1> d1, double d2)
3479
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
3480
_bz_pow<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
3483
template<int N_index1>
3485
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
3486
_bz_pow<int,long double> > >
3487
pow(IndexPlaceholder<N_index1> d1, long double d2)
3489
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
3490
_bz_pow<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
3493
#ifdef BZ_HAVE_COMPLEX
3494
template<int N_index1, class T2>
3496
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
3497
_bz_pow<int,complex<T2> > > >
3498
pow(IndexPlaceholder<N_index1> d1, complex<T2> d2)
3500
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
3501
_bz_pow<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
3504
#endif // BZ_HAVE_COMPLEX
3506
template<class T_numtype2, int N_rank2>
3508
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
3509
_bz_pow<float,T_numtype2> > >
3510
pow(float d1, const Array<T_numtype2, N_rank2>& d2)
3512
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
3513
_bz_pow<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
3516
template<class P_expr2>
3518
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
3519
_bz_pow<float,typename P_expr2::T_numtype> > >
3520
pow(float d1, _bz_ArrayExpr<P_expr2> d2)
3522
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
3523
_bz_pow<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
3526
template<int N_index2>
3528
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
3529
_bz_pow<float,int> > >
3530
pow(float d1, IndexPlaceholder<N_index2> d2)
3532
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
3533
_bz_pow<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
3536
template<class T_numtype2, int N_rank2>
3538
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
3539
_bz_pow<double,T_numtype2> > >
3540
pow(double d1, const Array<T_numtype2, N_rank2>& d2)
3542
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
3543
_bz_pow<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
3546
template<class P_expr2>
3548
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
3549
_bz_pow<double,typename P_expr2::T_numtype> > >
3550
pow(double d1, _bz_ArrayExpr<P_expr2> d2)
3552
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
3553
_bz_pow<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
3556
template<int N_index2>
3558
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
3559
_bz_pow<double,int> > >
3560
pow(double d1, IndexPlaceholder<N_index2> d2)
3562
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
3563
_bz_pow<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
3566
template<class T_numtype2, int N_rank2>
3568
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
3569
_bz_pow<long double,T_numtype2> > >
3570
pow(long double d1, const Array<T_numtype2, N_rank2>& d2)
3572
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
3573
_bz_pow<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
3576
template<class P_expr2>
3578
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
3579
_bz_pow<long double,typename P_expr2::T_numtype> > >
3580
pow(long double d1, _bz_ArrayExpr<P_expr2> d2)
3582
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
3583
_bz_pow<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
3586
template<int N_index2>
3588
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
3589
_bz_pow<long double,int> > >
3590
pow(long double d1, IndexPlaceholder<N_index2> d2)
3592
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
3593
_bz_pow<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
3596
#ifdef BZ_HAVE_COMPLEX
3597
template<class T1, class T_numtype2, int N_rank2>
3599
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
3600
_bz_pow<complex<T1> ,T_numtype2> > >
3601
pow(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
3603
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
3604
_bz_pow<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
3607
#endif // BZ_HAVE_COMPLEX
3609
#ifdef BZ_HAVE_COMPLEX
3610
template<class T1, class P_expr2>
3612
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
3613
_bz_pow<complex<T1> ,typename P_expr2::T_numtype> > >
3614
pow(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
3616
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
3617
_bz_pow<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
3620
#endif // BZ_HAVE_COMPLEX
3622
#ifdef BZ_HAVE_COMPLEX
3623
template<class T1, int N_index2>
3625
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
3626
_bz_pow<complex<T1> ,int> > >
3627
pow(complex<T1> d1, IndexPlaceholder<N_index2> d2)
3629
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
3630
_bz_pow<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
3633
#endif // BZ_HAVE_COMPLEX
3636
/****************************************************************************
3638
****************************************************************************/
3640
template<class T_numtype1, int N_rank1>
3642
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3643
_bz_pow2<T_numtype1> > >
3644
pow2(const Array<T_numtype1, N_rank1>& d1)
3646
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3647
_bz_pow2<T_numtype1> >(d1.begin());
3650
template<class P_expr1>
3652
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3653
_bz_pow2<typename P_expr1::T_numtype> > >
3654
pow2(_bz_ArrayExpr<P_expr1> d1)
3656
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3657
_bz_pow2<typename P_expr1::T_numtype> >(d1);
3660
template<int N_index1>
3662
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3664
pow2(IndexPlaceholder<N_index1> d1)
3666
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3667
_bz_pow2<int> >(d1);
3671
/****************************************************************************
3673
****************************************************************************/
3675
template<class T_numtype1, int N_rank1>
3677
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3678
_bz_pow3<T_numtype1> > >
3679
pow3(const Array<T_numtype1, N_rank1>& d1)
3681
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3682
_bz_pow3<T_numtype1> >(d1.begin());
3685
template<class P_expr1>
3687
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3688
_bz_pow3<typename P_expr1::T_numtype> > >
3689
pow3(_bz_ArrayExpr<P_expr1> d1)
3691
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3692
_bz_pow3<typename P_expr1::T_numtype> >(d1);
3695
template<int N_index1>
3697
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3699
pow3(IndexPlaceholder<N_index1> d1)
3701
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3702
_bz_pow3<int> >(d1);
3706
/****************************************************************************
3708
****************************************************************************/
3710
template<class T_numtype1, int N_rank1>
3712
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3713
_bz_pow4<T_numtype1> > >
3714
pow4(const Array<T_numtype1, N_rank1>& d1)
3716
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3717
_bz_pow4<T_numtype1> >(d1.begin());
3720
template<class P_expr1>
3722
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3723
_bz_pow4<typename P_expr1::T_numtype> > >
3724
pow4(_bz_ArrayExpr<P_expr1> d1)
3726
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3727
_bz_pow4<typename P_expr1::T_numtype> >(d1);
3730
template<int N_index1>
3732
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3734
pow4(IndexPlaceholder<N_index1> d1)
3736
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3737
_bz_pow4<int> >(d1);
3741
/****************************************************************************
3743
****************************************************************************/
3745
template<class T_numtype1, int N_rank1>
3747
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3748
_bz_pow5<T_numtype1> > >
3749
pow5(const Array<T_numtype1, N_rank1>& d1)
3751
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3752
_bz_pow5<T_numtype1> >(d1.begin());
3755
template<class P_expr1>
3757
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3758
_bz_pow5<typename P_expr1::T_numtype> > >
3759
pow5(_bz_ArrayExpr<P_expr1> d1)
3761
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3762
_bz_pow5<typename P_expr1::T_numtype> >(d1);
3765
template<int N_index1>
3767
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3769
pow5(IndexPlaceholder<N_index1> d1)
3771
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3772
_bz_pow5<int> >(d1);
3776
/****************************************************************************
3778
****************************************************************************/
3780
template<class T_numtype1, int N_rank1>
3782
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3783
_bz_pow6<T_numtype1> > >
3784
pow6(const Array<T_numtype1, N_rank1>& d1)
3786
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3787
_bz_pow6<T_numtype1> >(d1.begin());
3790
template<class P_expr1>
3792
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3793
_bz_pow6<typename P_expr1::T_numtype> > >
3794
pow6(_bz_ArrayExpr<P_expr1> d1)
3796
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3797
_bz_pow6<typename P_expr1::T_numtype> >(d1);
3800
template<int N_index1>
3802
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3804
pow6(IndexPlaceholder<N_index1> d1)
3806
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3807
_bz_pow6<int> >(d1);
3811
/****************************************************************************
3813
****************************************************************************/
3815
template<class T_numtype1, int N_rank1>
3817
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3818
_bz_pow7<T_numtype1> > >
3819
pow7(const Array<T_numtype1, N_rank1>& d1)
3821
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3822
_bz_pow7<T_numtype1> >(d1.begin());
3825
template<class P_expr1>
3827
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3828
_bz_pow7<typename P_expr1::T_numtype> > >
3829
pow7(_bz_ArrayExpr<P_expr1> d1)
3831
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3832
_bz_pow7<typename P_expr1::T_numtype> >(d1);
3835
template<int N_index1>
3837
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3839
pow7(IndexPlaceholder<N_index1> d1)
3841
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3842
_bz_pow7<int> >(d1);
3846
/****************************************************************************
3848
****************************************************************************/
3850
template<class T_numtype1, int N_rank1>
3852
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3853
_bz_pow8<T_numtype1> > >
3854
pow8(const Array<T_numtype1, N_rank1>& d1)
3856
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
3857
_bz_pow8<T_numtype1> >(d1.begin());
3860
template<class P_expr1>
3862
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3863
_bz_pow8<typename P_expr1::T_numtype> > >
3864
pow8(_bz_ArrayExpr<P_expr1> d1)
3866
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
3867
_bz_pow8<typename P_expr1::T_numtype> >(d1);
3870
template<int N_index1>
3872
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3874
pow8(IndexPlaceholder<N_index1> d1)
3876
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
3877
_bz_pow8<int> >(d1);
3881
/****************************************************************************
3883
****************************************************************************/
3885
#ifdef BZ_HAVE_SYSTEM_V_MATH
3886
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
3888
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
3889
_bz_remainder<T_numtype1,T_numtype2> > >
3890
remainder(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
3892
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
3893
_bz_remainder<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
3896
template<class T_numtype1, int N_rank1, class P_expr2>
3898
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
3899
_bz_remainder<T_numtype1,typename P_expr2::T_numtype> > >
3900
remainder(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
3902
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
3903
_bz_remainder<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
3906
template<class T_numtype1, int N_rank1, int N_index2>
3908
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
3909
_bz_remainder<T_numtype1,int> > >
3910
remainder(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
3912
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
3913
_bz_remainder<T_numtype1,int> >(d1.begin(), d2);
3916
template<class T_numtype1, int N_rank1>
3918
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
3919
_bz_remainder<T_numtype1,float> > >
3920
remainder(const Array<T_numtype1, N_rank1>& d1, float d2)
3922
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
3923
_bz_remainder<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
3926
template<class T_numtype1, int N_rank1>
3928
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
3929
_bz_remainder<T_numtype1,double> > >
3930
remainder(const Array<T_numtype1, N_rank1>& d1, double d2)
3932
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
3933
_bz_remainder<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
3936
template<class T_numtype1, int N_rank1>
3938
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
3939
_bz_remainder<T_numtype1,long double> > >
3940
remainder(const Array<T_numtype1, N_rank1>& d1, long double d2)
3942
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
3943
_bz_remainder<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
3946
#ifdef BZ_HAVE_COMPLEX
3947
template<class T_numtype1, int N_rank1, class T2>
3949
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
3950
_bz_remainder<T_numtype1,complex<T2> > > >
3951
remainder(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
3953
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
3954
_bz_remainder<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
3957
#endif // BZ_HAVE_COMPLEX
3959
template<class P_expr1, class T_numtype2, int N_rank2>
3961
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
3962
_bz_remainder<typename P_expr1::T_numtype,T_numtype2> > >
3963
remainder(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
3965
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
3966
_bz_remainder<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
3969
template<class P_expr1, class P_expr2>
3971
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
3972
_bz_remainder<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
3973
remainder(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
3975
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
3976
_bz_remainder<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
3979
template<class P_expr1, int N_index2>
3981
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
3982
_bz_remainder<typename P_expr1::T_numtype,int> > >
3983
remainder(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
3985
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
3986
_bz_remainder<typename P_expr1::T_numtype,int> >(d1, d2);
3989
template<class P_expr1>
3991
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
3992
_bz_remainder<typename P_expr1::T_numtype,float> > >
3993
remainder(_bz_ArrayExpr<P_expr1> d1, float d2)
3995
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
3996
_bz_remainder<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
3999
template<class P_expr1>
4001
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
4002
_bz_remainder<typename P_expr1::T_numtype,double> > >
4003
remainder(_bz_ArrayExpr<P_expr1> d1, double d2)
4005
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
4006
_bz_remainder<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
4009
template<class P_expr1>
4011
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
4012
_bz_remainder<typename P_expr1::T_numtype,long double> > >
4013
remainder(_bz_ArrayExpr<P_expr1> d1, long double d2)
4015
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
4016
_bz_remainder<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
4019
#ifdef BZ_HAVE_COMPLEX
4020
template<class P_expr1, class T2>
4022
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
4023
_bz_remainder<typename P_expr1::T_numtype,complex<T2> > > >
4024
remainder(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
4026
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
4027
_bz_remainder<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
4030
#endif // BZ_HAVE_COMPLEX
4032
template<int N_index1, class T_numtype2, int N_rank2>
4034
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
4035
_bz_remainder<int,T_numtype2> > >
4036
remainder(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
4038
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
4039
_bz_remainder<int,T_numtype2> >(d1, d2.begin());
4042
template<int N_index1, class P_expr2>
4044
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
4045
_bz_remainder<int,typename P_expr2::T_numtype> > >
4046
remainder(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
4048
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
4049
_bz_remainder<int,typename P_expr2::T_numtype> >(d1, d2);
4052
template<int N_index1, int N_index2>
4054
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
4055
_bz_remainder<int,int> > >
4056
remainder(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
4058
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
4059
_bz_remainder<int,int> >(d1, d2);
4062
template<int N_index1>
4064
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
4065
_bz_remainder<int,float> > >
4066
remainder(IndexPlaceholder<N_index1> d1, float d2)
4068
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
4069
_bz_remainder<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
4072
template<int N_index1>
4074
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
4075
_bz_remainder<int,double> > >
4076
remainder(IndexPlaceholder<N_index1> d1, double d2)
4078
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
4079
_bz_remainder<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
4082
template<int N_index1>
4084
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
4085
_bz_remainder<int,long double> > >
4086
remainder(IndexPlaceholder<N_index1> d1, long double d2)
4088
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
4089
_bz_remainder<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
4092
#ifdef BZ_HAVE_COMPLEX
4093
template<int N_index1, class T2>
4095
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
4096
_bz_remainder<int,complex<T2> > > >
4097
remainder(IndexPlaceholder<N_index1> d1, complex<T2> d2)
4099
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
4100
_bz_remainder<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
4103
#endif // BZ_HAVE_COMPLEX
4105
template<class T_numtype2, int N_rank2>
4107
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
4108
_bz_remainder<float,T_numtype2> > >
4109
remainder(float d1, const Array<T_numtype2, N_rank2>& d2)
4111
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
4112
_bz_remainder<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
4115
template<class P_expr2>
4117
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
4118
_bz_remainder<float,typename P_expr2::T_numtype> > >
4119
remainder(float d1, _bz_ArrayExpr<P_expr2> d2)
4121
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
4122
_bz_remainder<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
4125
template<int N_index2>
4127
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
4128
_bz_remainder<float,int> > >
4129
remainder(float d1, IndexPlaceholder<N_index2> d2)
4131
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
4132
_bz_remainder<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
4135
template<class T_numtype2, int N_rank2>
4137
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
4138
_bz_remainder<double,T_numtype2> > >
4139
remainder(double d1, const Array<T_numtype2, N_rank2>& d2)
4141
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
4142
_bz_remainder<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
4145
template<class P_expr2>
4147
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
4148
_bz_remainder<double,typename P_expr2::T_numtype> > >
4149
remainder(double d1, _bz_ArrayExpr<P_expr2> d2)
4151
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
4152
_bz_remainder<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
4155
template<int N_index2>
4157
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
4158
_bz_remainder<double,int> > >
4159
remainder(double d1, IndexPlaceholder<N_index2> d2)
4161
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
4162
_bz_remainder<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
4165
template<class T_numtype2, int N_rank2>
4167
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
4168
_bz_remainder<long double,T_numtype2> > >
4169
remainder(long double d1, const Array<T_numtype2, N_rank2>& d2)
4171
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
4172
_bz_remainder<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
4175
template<class P_expr2>
4177
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
4178
_bz_remainder<long double,typename P_expr2::T_numtype> > >
4179
remainder(long double d1, _bz_ArrayExpr<P_expr2> d2)
4181
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
4182
_bz_remainder<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
4185
template<int N_index2>
4187
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
4188
_bz_remainder<long double,int> > >
4189
remainder(long double d1, IndexPlaceholder<N_index2> d2)
4191
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
4192
_bz_remainder<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
4195
#ifdef BZ_HAVE_COMPLEX
4196
template<class T1, class T_numtype2, int N_rank2>
4198
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
4199
_bz_remainder<complex<T1> ,T_numtype2> > >
4200
remainder(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
4202
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
4203
_bz_remainder<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
4206
#endif // BZ_HAVE_COMPLEX
4208
#ifdef BZ_HAVE_COMPLEX
4209
template<class T1, class P_expr2>
4211
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
4212
_bz_remainder<complex<T1> ,typename P_expr2::T_numtype> > >
4213
remainder(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
4215
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
4216
_bz_remainder<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
4219
#endif // BZ_HAVE_COMPLEX
4221
#ifdef BZ_HAVE_COMPLEX
4222
template<class T1, int N_index2>
4224
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
4225
_bz_remainder<complex<T1> ,int> > >
4226
remainder(complex<T1> d1, IndexPlaceholder<N_index2> d2)
4228
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
4229
_bz_remainder<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
4232
#endif // BZ_HAVE_COMPLEX
4236
/****************************************************************************
4238
****************************************************************************/
4240
#ifdef BZ_HAVE_IEEE_MATH
4241
template<class T_numtype1, int N_rank1>
4243
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4244
_bz_rint<T_numtype1> > >
4245
rint(const Array<T_numtype1, N_rank1>& d1)
4247
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4248
_bz_rint<T_numtype1> >(d1.begin());
4251
template<class P_expr1>
4253
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4254
_bz_rint<typename P_expr1::T_numtype> > >
4255
rint(_bz_ArrayExpr<P_expr1> d1)
4257
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4258
_bz_rint<typename P_expr1::T_numtype> >(d1);
4261
template<int N_index1>
4263
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4265
rint(IndexPlaceholder<N_index1> d1)
4267
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4268
_bz_rint<int> >(d1);
4273
/****************************************************************************
4275
****************************************************************************/
4277
#ifdef BZ_HAVE_SYSTEM_V_MATH
4278
template<class T_numtype1, int N_rank1>
4280
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4281
_bz_rsqrt<T_numtype1> > >
4282
rsqrt(const Array<T_numtype1, N_rank1>& d1)
4284
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4285
_bz_rsqrt<T_numtype1> >(d1.begin());
4288
template<class P_expr1>
4290
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4291
_bz_rsqrt<typename P_expr1::T_numtype> > >
4292
rsqrt(_bz_ArrayExpr<P_expr1> d1)
4294
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4295
_bz_rsqrt<typename P_expr1::T_numtype> >(d1);
4298
template<int N_index1>
4300
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4302
rsqrt(IndexPlaceholder<N_index1> d1)
4304
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4305
_bz_rsqrt<int> >(d1);
4310
/****************************************************************************
4312
****************************************************************************/
4314
#ifdef BZ_HAVE_SYSTEM_V_MATH
4315
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
4317
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
4318
_bz_scalb<T_numtype1,T_numtype2> > >
4319
scalb(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
4321
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
4322
_bz_scalb<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
4325
template<class T_numtype1, int N_rank1, class P_expr2>
4327
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
4328
_bz_scalb<T_numtype1,typename P_expr2::T_numtype> > >
4329
scalb(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
4331
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
4332
_bz_scalb<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
4335
template<class T_numtype1, int N_rank1, int N_index2>
4337
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
4338
_bz_scalb<T_numtype1,int> > >
4339
scalb(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
4341
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
4342
_bz_scalb<T_numtype1,int> >(d1.begin(), d2);
4345
template<class T_numtype1, int N_rank1>
4347
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
4348
_bz_scalb<T_numtype1,float> > >
4349
scalb(const Array<T_numtype1, N_rank1>& d1, float d2)
4351
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
4352
_bz_scalb<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
4355
template<class T_numtype1, int N_rank1>
4357
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
4358
_bz_scalb<T_numtype1,double> > >
4359
scalb(const Array<T_numtype1, N_rank1>& d1, double d2)
4361
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
4362
_bz_scalb<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
4365
template<class T_numtype1, int N_rank1>
4367
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
4368
_bz_scalb<T_numtype1,long double> > >
4369
scalb(const Array<T_numtype1, N_rank1>& d1, long double d2)
4371
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
4372
_bz_scalb<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
4375
#ifdef BZ_HAVE_COMPLEX
4376
template<class T_numtype1, int N_rank1, class T2>
4378
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
4379
_bz_scalb<T_numtype1,complex<T2> > > >
4380
scalb(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
4382
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
4383
_bz_scalb<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
4386
#endif // BZ_HAVE_COMPLEX
4388
template<class P_expr1, class T_numtype2, int N_rank2>
4390
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
4391
_bz_scalb<typename P_expr1::T_numtype,T_numtype2> > >
4392
scalb(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
4394
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
4395
_bz_scalb<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
4398
template<class P_expr1, class P_expr2>
4400
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
4401
_bz_scalb<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
4402
scalb(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
4404
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
4405
_bz_scalb<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
4408
template<class P_expr1, int N_index2>
4410
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
4411
_bz_scalb<typename P_expr1::T_numtype,int> > >
4412
scalb(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
4414
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
4415
_bz_scalb<typename P_expr1::T_numtype,int> >(d1, d2);
4418
template<class P_expr1>
4420
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
4421
_bz_scalb<typename P_expr1::T_numtype,float> > >
4422
scalb(_bz_ArrayExpr<P_expr1> d1, float d2)
4424
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
4425
_bz_scalb<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
4428
template<class P_expr1>
4430
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
4431
_bz_scalb<typename P_expr1::T_numtype,double> > >
4432
scalb(_bz_ArrayExpr<P_expr1> d1, double d2)
4434
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
4435
_bz_scalb<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
4438
template<class P_expr1>
4440
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
4441
_bz_scalb<typename P_expr1::T_numtype,long double> > >
4442
scalb(_bz_ArrayExpr<P_expr1> d1, long double d2)
4444
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
4445
_bz_scalb<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
4448
#ifdef BZ_HAVE_COMPLEX
4449
template<class P_expr1, class T2>
4451
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
4452
_bz_scalb<typename P_expr1::T_numtype,complex<T2> > > >
4453
scalb(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
4455
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
4456
_bz_scalb<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
4459
#endif // BZ_HAVE_COMPLEX
4461
template<int N_index1, class T_numtype2, int N_rank2>
4463
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
4464
_bz_scalb<int,T_numtype2> > >
4465
scalb(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
4467
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
4468
_bz_scalb<int,T_numtype2> >(d1, d2.begin());
4471
template<int N_index1, class P_expr2>
4473
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
4474
_bz_scalb<int,typename P_expr2::T_numtype> > >
4475
scalb(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
4477
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
4478
_bz_scalb<int,typename P_expr2::T_numtype> >(d1, d2);
4481
template<int N_index1, int N_index2>
4483
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
4484
_bz_scalb<int,int> > >
4485
scalb(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
4487
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
4488
_bz_scalb<int,int> >(d1, d2);
4491
template<int N_index1>
4493
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
4494
_bz_scalb<int,float> > >
4495
scalb(IndexPlaceholder<N_index1> d1, float d2)
4497
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
4498
_bz_scalb<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
4501
template<int N_index1>
4503
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
4504
_bz_scalb<int,double> > >
4505
scalb(IndexPlaceholder<N_index1> d1, double d2)
4507
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
4508
_bz_scalb<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
4511
template<int N_index1>
4513
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
4514
_bz_scalb<int,long double> > >
4515
scalb(IndexPlaceholder<N_index1> d1, long double d2)
4517
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
4518
_bz_scalb<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
4521
#ifdef BZ_HAVE_COMPLEX
4522
template<int N_index1, class T2>
4524
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
4525
_bz_scalb<int,complex<T2> > > >
4526
scalb(IndexPlaceholder<N_index1> d1, complex<T2> d2)
4528
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
4529
_bz_scalb<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
4532
#endif // BZ_HAVE_COMPLEX
4534
template<class T_numtype2, int N_rank2>
4536
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
4537
_bz_scalb<float,T_numtype2> > >
4538
scalb(float d1, const Array<T_numtype2, N_rank2>& d2)
4540
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
4541
_bz_scalb<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
4544
template<class P_expr2>
4546
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
4547
_bz_scalb<float,typename P_expr2::T_numtype> > >
4548
scalb(float d1, _bz_ArrayExpr<P_expr2> d2)
4550
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
4551
_bz_scalb<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
4554
template<int N_index2>
4556
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
4557
_bz_scalb<float,int> > >
4558
scalb(float d1, IndexPlaceholder<N_index2> d2)
4560
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
4561
_bz_scalb<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
4564
template<class T_numtype2, int N_rank2>
4566
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
4567
_bz_scalb<double,T_numtype2> > >
4568
scalb(double d1, const Array<T_numtype2, N_rank2>& d2)
4570
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
4571
_bz_scalb<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
4574
template<class P_expr2>
4576
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
4577
_bz_scalb<double,typename P_expr2::T_numtype> > >
4578
scalb(double d1, _bz_ArrayExpr<P_expr2> d2)
4580
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
4581
_bz_scalb<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
4584
template<int N_index2>
4586
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
4587
_bz_scalb<double,int> > >
4588
scalb(double d1, IndexPlaceholder<N_index2> d2)
4590
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
4591
_bz_scalb<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
4594
template<class T_numtype2, int N_rank2>
4596
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
4597
_bz_scalb<long double,T_numtype2> > >
4598
scalb(long double d1, const Array<T_numtype2, N_rank2>& d2)
4600
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
4601
_bz_scalb<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
4604
template<class P_expr2>
4606
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
4607
_bz_scalb<long double,typename P_expr2::T_numtype> > >
4608
scalb(long double d1, _bz_ArrayExpr<P_expr2> d2)
4610
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
4611
_bz_scalb<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
4614
template<int N_index2>
4616
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
4617
_bz_scalb<long double,int> > >
4618
scalb(long double d1, IndexPlaceholder<N_index2> d2)
4620
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
4621
_bz_scalb<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
4624
#ifdef BZ_HAVE_COMPLEX
4625
template<class T1, class T_numtype2, int N_rank2>
4627
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
4628
_bz_scalb<complex<T1> ,T_numtype2> > >
4629
scalb(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
4631
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
4632
_bz_scalb<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
4635
#endif // BZ_HAVE_COMPLEX
4637
#ifdef BZ_HAVE_COMPLEX
4638
template<class T1, class P_expr2>
4640
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
4641
_bz_scalb<complex<T1> ,typename P_expr2::T_numtype> > >
4642
scalb(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
4644
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
4645
_bz_scalb<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
4648
#endif // BZ_HAVE_COMPLEX
4650
#ifdef BZ_HAVE_COMPLEX
4651
template<class T1, int N_index2>
4653
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
4654
_bz_scalb<complex<T1> ,int> > >
4655
scalb(complex<T1> d1, IndexPlaceholder<N_index2> d2)
4657
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
4658
_bz_scalb<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
4661
#endif // BZ_HAVE_COMPLEX
4665
/****************************************************************************
4667
****************************************************************************/
4669
template<class T_numtype1, int N_rank1>
4671
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4672
_bz_sin<T_numtype1> > >
4673
sin(const Array<T_numtype1, N_rank1>& d1)
4675
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4676
_bz_sin<T_numtype1> >(d1.begin());
4679
template<class P_expr1>
4681
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4682
_bz_sin<typename P_expr1::T_numtype> > >
4683
sin(_bz_ArrayExpr<P_expr1> d1)
4685
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4686
_bz_sin<typename P_expr1::T_numtype> >(d1);
4689
template<int N_index1>
4691
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4693
sin(IndexPlaceholder<N_index1> d1)
4695
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4700
/****************************************************************************
4702
****************************************************************************/
4704
template<class T_numtype1, int N_rank1>
4706
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4707
_bz_sinh<T_numtype1> > >
4708
sinh(const Array<T_numtype1, N_rank1>& d1)
4710
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4711
_bz_sinh<T_numtype1> >(d1.begin());
4714
template<class P_expr1>
4716
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4717
_bz_sinh<typename P_expr1::T_numtype> > >
4718
sinh(_bz_ArrayExpr<P_expr1> d1)
4720
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4721
_bz_sinh<typename P_expr1::T_numtype> >(d1);
4724
template<int N_index1>
4726
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4728
sinh(IndexPlaceholder<N_index1> d1)
4730
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4731
_bz_sinh<int> >(d1);
4735
/****************************************************************************
4737
****************************************************************************/
4739
template<class T_numtype1, int N_rank1>
4741
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4742
_bz_sqr<T_numtype1> > >
4743
sqr(const Array<T_numtype1, N_rank1>& d1)
4745
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4746
_bz_sqr<T_numtype1> >(d1.begin());
4749
template<class P_expr1>
4751
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4752
_bz_sqr<typename P_expr1::T_numtype> > >
4753
sqr(_bz_ArrayExpr<P_expr1> d1)
4755
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4756
_bz_sqr<typename P_expr1::T_numtype> >(d1);
4759
template<int N_index1>
4761
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4763
sqr(IndexPlaceholder<N_index1> d1)
4765
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4770
/****************************************************************************
4772
****************************************************************************/
4774
template<class T_numtype1, int N_rank1>
4776
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4777
_bz_sqrt<T_numtype1> > >
4778
sqrt(const Array<T_numtype1, N_rank1>& d1)
4780
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4781
_bz_sqrt<T_numtype1> >(d1.begin());
4784
template<class P_expr1>
4786
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4787
_bz_sqrt<typename P_expr1::T_numtype> > >
4788
sqrt(_bz_ArrayExpr<P_expr1> d1)
4790
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4791
_bz_sqrt<typename P_expr1::T_numtype> >(d1);
4794
template<int N_index1>
4796
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4798
sqrt(IndexPlaceholder<N_index1> d1)
4800
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4801
_bz_sqrt<int> >(d1);
4805
/****************************************************************************
4807
****************************************************************************/
4809
template<class T_numtype1, int N_rank1>
4811
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4812
_bz_tan<T_numtype1> > >
4813
tan(const Array<T_numtype1, N_rank1>& d1)
4815
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4816
_bz_tan<T_numtype1> >(d1.begin());
4819
template<class P_expr1>
4821
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4822
_bz_tan<typename P_expr1::T_numtype> > >
4823
tan(_bz_ArrayExpr<P_expr1> d1)
4825
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4826
_bz_tan<typename P_expr1::T_numtype> >(d1);
4829
template<int N_index1>
4831
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4833
tan(IndexPlaceholder<N_index1> d1)
4835
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4840
/****************************************************************************
4842
****************************************************************************/
4844
template<class T_numtype1, int N_rank1>
4846
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4847
_bz_tanh<T_numtype1> > >
4848
tanh(const Array<T_numtype1, N_rank1>& d1)
4850
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4851
_bz_tanh<T_numtype1> >(d1.begin());
4854
template<class P_expr1>
4856
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4857
_bz_tanh<typename P_expr1::T_numtype> > >
4858
tanh(_bz_ArrayExpr<P_expr1> d1)
4860
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4861
_bz_tanh<typename P_expr1::T_numtype> >(d1);
4864
template<int N_index1>
4866
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4868
tanh(IndexPlaceholder<N_index1> d1)
4870
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4871
_bz_tanh<int> >(d1);
4875
/****************************************************************************
4877
****************************************************************************/
4879
#ifdef BZ_HAVE_SYSTEM_V_MATH
4880
template<class T_numtype1, int N_rank1>
4882
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4883
_bz_uitrunc<T_numtype1> > >
4884
uitrunc(const Array<T_numtype1, N_rank1>& d1)
4886
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
4887
_bz_uitrunc<T_numtype1> >(d1.begin());
4890
template<class P_expr1>
4892
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4893
_bz_uitrunc<typename P_expr1::T_numtype> > >
4894
uitrunc(_bz_ArrayExpr<P_expr1> d1)
4896
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
4897
_bz_uitrunc<typename P_expr1::T_numtype> >(d1);
4900
template<int N_index1>
4902
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4903
_bz_uitrunc<int> > >
4904
uitrunc(IndexPlaceholder<N_index1> d1)
4906
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
4907
_bz_uitrunc<int> >(d1);
4912
/****************************************************************************
4914
****************************************************************************/
4916
#ifdef BZ_HAVE_SYSTEM_V_MATH
4917
template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
4919
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
4920
_bz_unordered<T_numtype1,T_numtype2> > >
4921
unordered(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
4923
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
4924
_bz_unordered<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
4927
template<class T_numtype1, int N_rank1, class P_expr2>
4929
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
4930
_bz_unordered<T_numtype1,typename P_expr2::T_numtype> > >
4931
unordered(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
4933
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
4934
_bz_unordered<T_numtype1,typename P_expr2::T_numtype> >(d1.begin(), d2);
4937
template<class T_numtype1, int N_rank1, int N_index2>
4939
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
4940
_bz_unordered<T_numtype1,int> > >
4941
unordered(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
4943
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
4944
_bz_unordered<T_numtype1,int> >(d1.begin(), d2);
4947
template<class T_numtype1, int N_rank1>
4949
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
4950
_bz_unordered<T_numtype1,float> > >
4951
unordered(const Array<T_numtype1, N_rank1>& d1, float d2)
4953
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
4954
_bz_unordered<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
4957
template<class T_numtype1, int N_rank1>
4959
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
4960
_bz_unordered<T_numtype1,double> > >
4961
unordered(const Array<T_numtype1, N_rank1>& d1, double d2)
4963
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
4964
_bz_unordered<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
4967
template<class T_numtype1, int N_rank1>
4969
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
4970
_bz_unordered<T_numtype1,long double> > >
4971
unordered(const Array<T_numtype1, N_rank1>& d1, long double d2)
4973
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
4974
_bz_unordered<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
4977
#ifdef BZ_HAVE_COMPLEX
4978
template<class T_numtype1, int N_rank1, class T2>
4980
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
4981
_bz_unordered<T_numtype1,complex<T2> > > >
4982
unordered(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
4984
return _bz_ArrayExprBinaryOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
4985
_bz_unordered<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
4988
#endif // BZ_HAVE_COMPLEX
4990
template<class P_expr1, class T_numtype2, int N_rank2>
4992
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
4993
_bz_unordered<typename P_expr1::T_numtype,T_numtype2> > >
4994
unordered(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
4996
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
4997
_bz_unordered<typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
5000
template<class P_expr1, class P_expr2>
5002
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
5003
_bz_unordered<typename P_expr1::T_numtype,typename P_expr2::T_numtype> > >
5004
unordered(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
5006
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
5007
_bz_unordered<typename P_expr1::T_numtype,typename P_expr2::T_numtype> >(d1, d2);
5010
template<class P_expr1, int N_index2>
5012
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
5013
_bz_unordered<typename P_expr1::T_numtype,int> > >
5014
unordered(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
5016
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
5017
_bz_unordered<typename P_expr1::T_numtype,int> >(d1, d2);
5020
template<class P_expr1>
5022
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
5023
_bz_unordered<typename P_expr1::T_numtype,float> > >
5024
unordered(_bz_ArrayExpr<P_expr1> d1, float d2)
5026
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
5027
_bz_unordered<typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
5030
template<class P_expr1>
5032
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
5033
_bz_unordered<typename P_expr1::T_numtype,double> > >
5034
unordered(_bz_ArrayExpr<P_expr1> d1, double d2)
5036
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
5037
_bz_unordered<typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
5040
template<class P_expr1>
5042
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
5043
_bz_unordered<typename P_expr1::T_numtype,long double> > >
5044
unordered(_bz_ArrayExpr<P_expr1> d1, long double d2)
5046
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
5047
_bz_unordered<typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
5050
#ifdef BZ_HAVE_COMPLEX
5051
template<class P_expr1, class T2>
5053
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
5054
_bz_unordered<typename P_expr1::T_numtype,complex<T2> > > >
5055
unordered(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
5057
return _bz_ArrayExprBinaryOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
5058
_bz_unordered<typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
5061
#endif // BZ_HAVE_COMPLEX
5063
template<int N_index1, class T_numtype2, int N_rank2>
5065
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
5066
_bz_unordered<int,T_numtype2> > >
5067
unordered(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
5069
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
5070
_bz_unordered<int,T_numtype2> >(d1, d2.begin());
5073
template<int N_index1, class P_expr2>
5075
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
5076
_bz_unordered<int,typename P_expr2::T_numtype> > >
5077
unordered(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
5079
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
5080
_bz_unordered<int,typename P_expr2::T_numtype> >(d1, d2);
5083
template<int N_index1, int N_index2>
5085
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
5086
_bz_unordered<int,int> > >
5087
unordered(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
5089
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
5090
_bz_unordered<int,int> >(d1, d2);
5093
template<int N_index1>
5095
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
5096
_bz_unordered<int,float> > >
5097
unordered(IndexPlaceholder<N_index1> d1, float d2)
5099
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
5100
_bz_unordered<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
5103
template<int N_index1>
5105
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
5106
_bz_unordered<int,double> > >
5107
unordered(IndexPlaceholder<N_index1> d1, double d2)
5109
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
5110
_bz_unordered<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
5113
template<int N_index1>
5115
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
5116
_bz_unordered<int,long double> > >
5117
unordered(IndexPlaceholder<N_index1> d1, long double d2)
5119
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
5120
_bz_unordered<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
5123
#ifdef BZ_HAVE_COMPLEX
5124
template<int N_index1, class T2>
5126
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
5127
_bz_unordered<int,complex<T2> > > >
5128
unordered(IndexPlaceholder<N_index1> d1, complex<T2> d2)
5130
return _bz_ArrayExprBinaryOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
5131
_bz_unordered<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
5134
#endif // BZ_HAVE_COMPLEX
5136
template<class T_numtype2, int N_rank2>
5138
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
5139
_bz_unordered<float,T_numtype2> > >
5140
unordered(float d1, const Array<T_numtype2, N_rank2>& d2)
5142
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
5143
_bz_unordered<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
5146
template<class P_expr2>
5148
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
5149
_bz_unordered<float,typename P_expr2::T_numtype> > >
5150
unordered(float d1, _bz_ArrayExpr<P_expr2> d2)
5152
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
5153
_bz_unordered<float,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
5156
template<int N_index2>
5158
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
5159
_bz_unordered<float,int> > >
5160
unordered(float d1, IndexPlaceholder<N_index2> d2)
5162
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
5163
_bz_unordered<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
5166
template<class T_numtype2, int N_rank2>
5168
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
5169
_bz_unordered<double,T_numtype2> > >
5170
unordered(double d1, const Array<T_numtype2, N_rank2>& d2)
5172
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
5173
_bz_unordered<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
5176
template<class P_expr2>
5178
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
5179
_bz_unordered<double,typename P_expr2::T_numtype> > >
5180
unordered(double d1, _bz_ArrayExpr<P_expr2> d2)
5182
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
5183
_bz_unordered<double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
5186
template<int N_index2>
5188
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
5189
_bz_unordered<double,int> > >
5190
unordered(double d1, IndexPlaceholder<N_index2> d2)
5192
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
5193
_bz_unordered<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
5196
template<class T_numtype2, int N_rank2>
5198
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
5199
_bz_unordered<long double,T_numtype2> > >
5200
unordered(long double d1, const Array<T_numtype2, N_rank2>& d2)
5202
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
5203
_bz_unordered<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
5206
template<class P_expr2>
5208
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
5209
_bz_unordered<long double,typename P_expr2::T_numtype> > >
5210
unordered(long double d1, _bz_ArrayExpr<P_expr2> d2)
5212
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
5213
_bz_unordered<long double,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
5216
template<int N_index2>
5218
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
5219
_bz_unordered<long double,int> > >
5220
unordered(long double d1, IndexPlaceholder<N_index2> d2)
5222
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
5223
_bz_unordered<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
5226
#ifdef BZ_HAVE_COMPLEX
5227
template<class T1, class T_numtype2, int N_rank2>
5229
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
5230
_bz_unordered<complex<T1> ,T_numtype2> > >
5231
unordered(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
5233
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
5234
_bz_unordered<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
5237
#endif // BZ_HAVE_COMPLEX
5239
#ifdef BZ_HAVE_COMPLEX
5240
template<class T1, class P_expr2>
5242
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
5243
_bz_unordered<complex<T1> ,typename P_expr2::T_numtype> > >
5244
unordered(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
5246
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
5247
_bz_unordered<complex<T1> ,typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
5250
#endif // BZ_HAVE_COMPLEX
5252
#ifdef BZ_HAVE_COMPLEX
5253
template<class T1, int N_index2>
5255
_bz_ArrayExpr<_bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
5256
_bz_unordered<complex<T1> ,int> > >
5257
unordered(complex<T1> d1, IndexPlaceholder<N_index2> d2)
5259
return _bz_ArrayExprBinaryOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
5260
_bz_unordered<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
5263
#endif // BZ_HAVE_COMPLEX
5267
/****************************************************************************
5269
****************************************************************************/
5271
#ifdef BZ_HAVE_IEEE_MATH
5272
template<class T_numtype1, int N_rank1>
5274
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
5275
_bz_y0<T_numtype1> > >
5276
y0(const Array<T_numtype1, N_rank1>& d1)
5278
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
5279
_bz_y0<T_numtype1> >(d1.begin());
5282
template<class P_expr1>
5284
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
5285
_bz_y0<typename P_expr1::T_numtype> > >
5286
y0(_bz_ArrayExpr<P_expr1> d1)
5288
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
5289
_bz_y0<typename P_expr1::T_numtype> >(d1);
5292
template<int N_index1>
5294
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
5296
y0(IndexPlaceholder<N_index1> d1)
5298
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
5304
/****************************************************************************
5306
****************************************************************************/
5308
#ifdef BZ_HAVE_IEEE_MATH
5309
template<class T_numtype1, int N_rank1>
5311
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
5312
_bz_y1<T_numtype1> > >
5313
y1(const Array<T_numtype1, N_rank1>& d1)
5315
return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
5316
_bz_y1<T_numtype1> >(d1.begin());
5319
template<class P_expr1>
5321
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
5322
_bz_y1<typename P_expr1::T_numtype> > >
5323
y1(_bz_ArrayExpr<P_expr1> d1)
5325
return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
5326
_bz_y1<typename P_expr1::T_numtype> >(d1);
5329
template<int N_index1>
5331
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
5333
y1(IndexPlaceholder<N_index1> d1)
5335
return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,