1 #ifndef _RHEOLEF_FIELD_NONLINEAR_EXPR_OPS_H
2 #define _RHEOLEF_FIELD_NONLINEAR_EXPR_OPS_H
6 #include "rheolef/promote.h"
7 #include "rheolef/field_nonlinear_expr.h"
9 namespace detail_nonlinear_expr {
11 template <
class T> T
operator() (
const T& a)
const {
return +a; }
34 field_nonlinear_expr_uf<
35 detail_nonlinear_expr::unary_plus
36 ,field_nonlinear_expr<Expr>
45 template<
class Function>
48 field_nonlinear_expr_uf<
49 detail_nonlinear_expr::unary_plus
50 ,field_expr_terminal_function<Function>
59 namespace detail_nonlinear_expr {
61 template <
class T> T
operator() (
const T& a)
const {
return -a; }
84 field_nonlinear_expr_uf<
85 detail_nonlinear_expr::negate
86 ,field_nonlinear_expr<Expr>
95 template<
class Function>
98 field_nonlinear_expr_uf<
99 detail_nonlinear_expr::negate
100 ,field_expr_terminal_function<Function>
109 namespace detail_nonlinear_expr {
111 template <
class T> T
operator() (
const T& a,
const T& b)
const {
return a+b; }
123 template <
class Arg1,
class Arg2>
134 field_nonlinear_expr<
135 field_nonlinear_expr_uf<
136 std::binder1st<std::plus<typename field_nonlinear_expr<Expr>::scalar_type> >
137 ,field_nonlinear_expr<Expr>
143 typedef std::binder1st<std::plus<scalar_t> > fun_t;
148 template<
class Function>
150 field_nonlinear_expr<
151 field_nonlinear_expr_uf<
152 std::binder1st<std::plus<typename field_expr_terminal_function<Function>::scalar_type> >
153 ,field_expr_terminal_function<Function>
159 typedef std::binder1st<std::plus<scalar_t> > fun_t;
166 field_nonlinear_expr<
167 field_nonlinear_expr_uf<
168 std::binder2nd<std::plus<typename field_nonlinear_expr<Expr>::scalar_type> >
169 ,field_nonlinear_expr<Expr>
175 typedef std::binder2nd<std::plus<scalar_t> > fun_t;
180 template<
class Function>
182 field_nonlinear_expr<
183 field_nonlinear_expr_uf<
184 std::binder2nd<std::plus<typename field_expr_terminal_function<Function>::scalar_type> >
185 ,field_expr_terminal_function<Function>
191 typedef std::binder2nd<std::plus<scalar_t> > fun_t;
196 template<
class Function,
class T,
class M>
198 field_nonlinear_expr<
199 field_nonlinear_expr_bf<
200 detail_nonlinear_expr::plus
201 ,field_expr_terminal_field<T,M>
202 ,field_expr_terminal_function<Function>
212 template<
class Function,
class T,
class M>
214 field_nonlinear_expr<
215 field_nonlinear_expr_bf<
216 detail_nonlinear_expr::plus
217 ,field_expr_terminal_function<Function>
218 ,field_expr_terminal_field<T,M>
228 template<
class Expr,
class T,
class M>
230 field_nonlinear_expr<
231 field_nonlinear_expr_bf<
232 detail_nonlinear_expr::plus
233 ,field_nonlinear_expr<Expr>
234 ,field_expr_terminal_field<T,M>
244 template<
class Expr,
class T,
class M>
246 field_nonlinear_expr<
247 field_nonlinear_expr_bf<
248 detail_nonlinear_expr::plus
249 ,field_expr_terminal_field<T,M>
250 ,field_nonlinear_expr<Expr>
260 template<
class Function,
class T,
class M>
262 field_nonlinear_expr<
263 field_nonlinear_expr_bf<
264 detail_nonlinear_expr::plus
265 ,field_expr_terminal_field<T,M>
266 ,field_expr_terminal_function<Function>
276 template<
class Function,
class T,
class M>
278 field_nonlinear_expr<
279 field_nonlinear_expr_bf<
280 detail_nonlinear_expr::plus
281 ,field_expr_terminal_function<Function>
282 ,field_expr_terminal_field<T,M>
292 template<
class Expr,
class T,
class M>
294 field_nonlinear_expr<
295 field_nonlinear_expr_bf<
296 detail_nonlinear_expr::plus
297 ,field_nonlinear_expr<Expr>
298 ,field_expr_terminal_field<T,M>
308 template<
class Expr,
class T,
class M>
310 field_nonlinear_expr<
311 field_nonlinear_expr_bf<
312 detail_nonlinear_expr::plus
313 ,field_expr_terminal_field<T,M>
314 ,field_nonlinear_expr<Expr>
324 template<
class Function,
class T,
class M>
326 field_nonlinear_expr<
327 field_nonlinear_expr_bf<
328 detail_nonlinear_expr::plus
329 ,field_expr_terminal_field<T,M>
330 ,field_expr_terminal_function<Function>
340 template<
class Function,
class T,
class M>
342 field_nonlinear_expr<
343 field_nonlinear_expr_bf<
344 detail_nonlinear_expr::plus
345 ,field_expr_terminal_function<Function>
346 ,field_expr_terminal_field<T,M>
356 template<
class Expr,
class T,
class M>
358 field_nonlinear_expr<
359 field_nonlinear_expr_bf<
360 detail_nonlinear_expr::plus
361 ,field_nonlinear_expr<Expr>
362 ,field_expr_terminal_field<T,M>
372 template<
class Expr,
class T,
class M>
374 field_nonlinear_expr<
375 field_nonlinear_expr_bf<
376 detail_nonlinear_expr::plus
377 ,field_expr_terminal_field<T,M>
378 ,field_nonlinear_expr<Expr>
388 template<
class Function,
class T,
class M>
390 field_nonlinear_expr<
391 field_nonlinear_expr_bf<
392 detail_nonlinear_expr::plus
393 ,field_expr_terminal_field<T,M>
394 ,field_expr_terminal_function<Function>
404 template<
class Function,
class T,
class M>
406 field_nonlinear_expr<
407 field_nonlinear_expr_bf<
408 detail_nonlinear_expr::plus
409 ,field_expr_terminal_function<Function>
410 ,field_expr_terminal_field<T,M>
420 template<
class Expr,
class T,
class M>
422 field_nonlinear_expr<
423 field_nonlinear_expr_bf<
424 detail_nonlinear_expr::plus
425 ,field_nonlinear_expr<Expr>
426 ,field_expr_terminal_field<T,M>
436 template<
class Expr,
class T,
class M>
438 field_nonlinear_expr<
439 field_nonlinear_expr_bf<
440 detail_nonlinear_expr::plus
441 ,field_expr_terminal_field<T,M>
442 ,field_nonlinear_expr<Expr>
452 template<
class Function,
class T,
class M>
454 field_nonlinear_expr<
455 field_nonlinear_expr_bf<
456 detail_nonlinear_expr::plus
457 ,field_expr_terminal_field<T,M>
458 ,field_expr_terminal_function<Function>
468 template<
class Function,
class T,
class M>
470 field_nonlinear_expr<
471 field_nonlinear_expr_bf<
472 detail_nonlinear_expr::plus
473 ,field_expr_terminal_function<Function>
474 ,field_expr_terminal_field<T,M>
484 template<
class Expr,
class T,
class M>
486 field_nonlinear_expr<
487 field_nonlinear_expr_bf<
488 detail_nonlinear_expr::plus
489 ,field_nonlinear_expr<Expr>
490 ,field_expr_terminal_field<T,M>
500 template<
class Expr,
class T,
class M>
502 field_nonlinear_expr<
503 field_nonlinear_expr_bf<
504 detail_nonlinear_expr::plus
505 ,field_expr_terminal_field<T,M>
506 ,field_nonlinear_expr<Expr>
516 template<
class Expr,
class Function>
518 field_nonlinear_expr<
519 field_nonlinear_expr_bf<
520 detail_nonlinear_expr::plus
521 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
522 ,field_expr_terminal_function<Function>
532 template<
class Expr,
class Function>
534 field_nonlinear_expr<
535 field_nonlinear_expr_bf<
536 detail_nonlinear_expr::plus
537 ,field_expr_terminal_function<Function>
538 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
548 template<
class Expr,
class Function>
550 field_nonlinear_expr<
551 field_nonlinear_expr_bf<
552 detail_nonlinear_expr::plus
553 ,field_nonlinear_expr<Expr>
554 ,field_expr_terminal_function<Function>
564 template<
class Expr,
class Function>
566 field_nonlinear_expr<
567 field_nonlinear_expr_bf<
568 detail_nonlinear_expr::plus
569 ,field_expr_terminal_function<Function>
570 ,field_nonlinear_expr<Expr>
580 template<
class Expr1,
class Expr2>
582 field_nonlinear_expr<
583 field_nonlinear_expr_bf<
584 detail_nonlinear_expr::plus
585 ,field_expr_terminal_field<typename field_expr<Expr1>::scalar_type,
typename field_expr<Expr1>::memory_type>
586 ,field_nonlinear_expr<Expr2>
596 template<
class Expr1,
class Expr2>
598 field_nonlinear_expr<
599 field_nonlinear_expr_bf<
600 detail_nonlinear_expr::plus
601 ,field_nonlinear_expr<Expr1>
602 ,field_expr_terminal_field<typename field_expr<Expr2>::scalar_type,
typename field_expr<Expr2>::memory_type>
612 template<
class Function1,
class Function2>
614 field_nonlinear_expr<
615 field_nonlinear_expr_bf<
616 detail_nonlinear_expr::plus
617 ,field_expr_terminal_function<Function1>
618 ,field_expr_terminal_function<Function2>
628 template<
class Expr1,
class Expr2>
630 field_nonlinear_expr<
631 field_nonlinear_expr_bf<
632 detail_nonlinear_expr::plus
633 ,field_nonlinear_expr<Expr1>
634 ,field_nonlinear_expr<Expr2>
644 namespace detail_nonlinear_expr {
646 template <
class T> T
operator() (
const T& a,
const T& b)
const {
return a-b; }
658 template <
class Arg1,
class Arg2>
669 field_nonlinear_expr<
670 field_nonlinear_expr_uf<
671 std::binder1st<std::minus<typename field_nonlinear_expr<Expr>::scalar_type> >
672 ,field_nonlinear_expr<Expr>
678 typedef std::binder1st<std::minus<scalar_t> > fun_t;
683 template<
class Function>
685 field_nonlinear_expr<
686 field_nonlinear_expr_uf<
687 std::binder1st<std::minus<typename field_expr_terminal_function<Function>::scalar_type> >
688 ,field_expr_terminal_function<Function>
694 typedef std::binder1st<std::minus<scalar_t> > fun_t;
701 field_nonlinear_expr<
702 field_nonlinear_expr_uf<
703 std::binder2nd<std::minus<typename field_nonlinear_expr<Expr>::scalar_type> >
704 ,field_nonlinear_expr<Expr>
710 typedef std::binder2nd<std::minus<scalar_t> > fun_t;
715 template<
class Function>
717 field_nonlinear_expr<
718 field_nonlinear_expr_uf<
719 std::binder2nd<std::minus<typename field_expr_terminal_function<Function>::scalar_type> >
720 ,field_expr_terminal_function<Function>
726 typedef std::binder2nd<std::minus<scalar_t> > fun_t;
731 template<
class Function,
class T,
class M>
733 field_nonlinear_expr<
734 field_nonlinear_expr_bf<
735 detail_nonlinear_expr::minus
736 ,field_expr_terminal_field<T,M>
737 ,field_expr_terminal_function<Function>
747 template<
class Function,
class T,
class M>
749 field_nonlinear_expr<
750 field_nonlinear_expr_bf<
751 detail_nonlinear_expr::minus
752 ,field_expr_terminal_function<Function>
753 ,field_expr_terminal_field<T,M>
763 template<
class Expr,
class T,
class M>
765 field_nonlinear_expr<
766 field_nonlinear_expr_bf<
767 detail_nonlinear_expr::minus
768 ,field_nonlinear_expr<Expr>
769 ,field_expr_terminal_field<T,M>
779 template<
class Expr,
class T,
class M>
781 field_nonlinear_expr<
782 field_nonlinear_expr_bf<
783 detail_nonlinear_expr::minus
784 ,field_expr_terminal_field<T,M>
785 ,field_nonlinear_expr<Expr>
795 template<
class Function,
class T,
class M>
797 field_nonlinear_expr<
798 field_nonlinear_expr_bf<
799 detail_nonlinear_expr::minus
800 ,field_expr_terminal_field<T,M>
801 ,field_expr_terminal_function<Function>
811 template<
class Function,
class T,
class M>
813 field_nonlinear_expr<
814 field_nonlinear_expr_bf<
815 detail_nonlinear_expr::minus
816 ,field_expr_terminal_function<Function>
817 ,field_expr_terminal_field<T,M>
827 template<
class Expr,
class T,
class M>
829 field_nonlinear_expr<
830 field_nonlinear_expr_bf<
831 detail_nonlinear_expr::minus
832 ,field_nonlinear_expr<Expr>
833 ,field_expr_terminal_field<T,M>
843 template<
class Expr,
class T,
class M>
845 field_nonlinear_expr<
846 field_nonlinear_expr_bf<
847 detail_nonlinear_expr::minus
848 ,field_expr_terminal_field<T,M>
849 ,field_nonlinear_expr<Expr>
859 template<
class Function,
class T,
class M>
861 field_nonlinear_expr<
862 field_nonlinear_expr_bf<
863 detail_nonlinear_expr::minus
864 ,field_expr_terminal_field<T,M>
865 ,field_expr_terminal_function<Function>
875 template<
class Function,
class T,
class M>
877 field_nonlinear_expr<
878 field_nonlinear_expr_bf<
879 detail_nonlinear_expr::minus
880 ,field_expr_terminal_function<Function>
881 ,field_expr_terminal_field<T,M>
891 template<
class Expr,
class T,
class M>
893 field_nonlinear_expr<
894 field_nonlinear_expr_bf<
895 detail_nonlinear_expr::minus
896 ,field_nonlinear_expr<Expr>
897 ,field_expr_terminal_field<T,M>
907 template<
class Expr,
class T,
class M>
909 field_nonlinear_expr<
910 field_nonlinear_expr_bf<
911 detail_nonlinear_expr::minus
912 ,field_expr_terminal_field<T,M>
913 ,field_nonlinear_expr<Expr>
923 template<
class Function,
class T,
class M>
925 field_nonlinear_expr<
926 field_nonlinear_expr_bf<
927 detail_nonlinear_expr::minus
928 ,field_expr_terminal_field<T,M>
929 ,field_expr_terminal_function<Function>
939 template<
class Function,
class T,
class M>
941 field_nonlinear_expr<
942 field_nonlinear_expr_bf<
943 detail_nonlinear_expr::minus
944 ,field_expr_terminal_function<Function>
945 ,field_expr_terminal_field<T,M>
955 template<
class Expr,
class T,
class M>
957 field_nonlinear_expr<
958 field_nonlinear_expr_bf<
959 detail_nonlinear_expr::minus
960 ,field_nonlinear_expr<Expr>
961 ,field_expr_terminal_field<T,M>
971 template<
class Expr,
class T,
class M>
973 field_nonlinear_expr<
974 field_nonlinear_expr_bf<
975 detail_nonlinear_expr::minus
976 ,field_expr_terminal_field<T,M>
977 ,field_nonlinear_expr<Expr>
987 template<
class Function,
class T,
class M>
989 field_nonlinear_expr<
990 field_nonlinear_expr_bf<
991 detail_nonlinear_expr::minus
992 ,field_expr_terminal_field<T,M>
993 ,field_expr_terminal_function<Function>
1003 template<
class Function,
class T,
class M>
1005 field_nonlinear_expr<
1006 field_nonlinear_expr_bf<
1007 detail_nonlinear_expr::minus
1008 ,field_expr_terminal_function<Function>
1009 ,field_expr_terminal_field<T,M>
1019 template<
class Expr,
class T,
class M>
1021 field_nonlinear_expr<
1022 field_nonlinear_expr_bf<
1023 detail_nonlinear_expr::minus
1024 ,field_nonlinear_expr<Expr>
1025 ,field_expr_terminal_field<T,M>
1035 template<
class Expr,
class T,
class M>
1037 field_nonlinear_expr<
1038 field_nonlinear_expr_bf<
1039 detail_nonlinear_expr::minus
1040 ,field_expr_terminal_field<T,M>
1041 ,field_nonlinear_expr<Expr>
1051 template<
class Expr,
class Function>
1053 field_nonlinear_expr<
1054 field_nonlinear_expr_bf<
1055 detail_nonlinear_expr::minus
1056 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1057 ,field_expr_terminal_function<Function>
1067 template<
class Expr,
class Function>
1069 field_nonlinear_expr<
1070 field_nonlinear_expr_bf<
1071 detail_nonlinear_expr::minus
1072 ,field_expr_terminal_function<Function>
1073 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1083 template<
class Expr,
class Function>
1085 field_nonlinear_expr<
1086 field_nonlinear_expr_bf<
1087 detail_nonlinear_expr::minus
1088 ,field_nonlinear_expr<Expr>
1089 ,field_expr_terminal_function<Function>
1099 template<
class Expr,
class Function>
1101 field_nonlinear_expr<
1102 field_nonlinear_expr_bf<
1103 detail_nonlinear_expr::minus
1104 ,field_expr_terminal_function<Function>
1105 ,field_nonlinear_expr<Expr>
1115 template<
class Expr1,
class Expr2>
1117 field_nonlinear_expr<
1118 field_nonlinear_expr_bf<
1119 detail_nonlinear_expr::minus
1120 ,field_expr_terminal_field<typename field_expr<Expr1>::scalar_type,
typename field_expr<Expr1>::memory_type>
1121 ,field_nonlinear_expr<Expr2>
1131 template<
class Expr1,
class Expr2>
1133 field_nonlinear_expr<
1134 field_nonlinear_expr_bf<
1135 detail_nonlinear_expr::minus
1136 ,field_nonlinear_expr<Expr1>
1137 ,field_expr_terminal_field<typename field_expr<Expr2>::scalar_type,
typename field_expr<Expr2>::memory_type>
1147 template<
class Function1,
class Function2>
1149 field_nonlinear_expr<
1150 field_nonlinear_expr_bf<
1151 detail_nonlinear_expr::minus
1152 ,field_expr_terminal_function<Function1>
1153 ,field_expr_terminal_function<Function2>
1163 template<
class Expr1,
class Expr2>
1165 field_nonlinear_expr<
1166 field_nonlinear_expr_bf<
1167 detail_nonlinear_expr::minus
1168 ,field_nonlinear_expr<Expr1>
1169 ,field_nonlinear_expr<Expr2>
1179 namespace detail_nonlinear_expr {
1180 template <
class T1,
class T2>
1217 template <
class T1,
class T2>
1224 template<
class Result>
1232 template <
class Arg1,
class Arg2>
1233 struct result_hint {
1241 template<
class Expr>
1243 field_nonlinear_expr<
1244 field_nonlinear_expr_uf<
1245 std::binder1st<std::multiplies<typename field_nonlinear_expr<Expr>::scalar_type> >
1246 ,field_nonlinear_expr<Expr>
1252 typedef std::binder1st<std::multiplies<scalar_t> > fun_t;
1257 template<
class Function>
1259 field_nonlinear_expr<
1260 field_nonlinear_expr_uf<
1261 std::binder1st<std::multiplies<typename field_expr_terminal_function<Function>::scalar_type> >
1262 ,field_expr_terminal_function<Function>
1268 typedef std::binder1st<std::multiplies<scalar_t> > fun_t;
1273 template<
class Expr>
1275 field_nonlinear_expr<
1276 field_nonlinear_expr_uf<
1277 std::binder2nd<std::multiplies<typename field_nonlinear_expr<Expr>::scalar_type> >
1278 ,field_nonlinear_expr<Expr>
1284 typedef std::binder2nd<std::multiplies<scalar_t> > fun_t;
1289 template<
class Function>
1291 field_nonlinear_expr<
1292 field_nonlinear_expr_uf<
1293 std::binder2nd<std::multiplies<typename field_expr_terminal_function<Function>::scalar_type> >
1294 ,field_expr_terminal_function<Function>
1300 typedef std::binder2nd<std::multiplies<scalar_t> > fun_t;
1305 template<
class T,
class M>
1307 field_nonlinear_expr<
1308 field_nonlinear_expr_bf<
1309 detail_nonlinear_expr::multiplies
1310 ,field_expr_terminal_field<T,M>
1311 ,field_expr_terminal_field<T,M>
1321 template<
class T,
class M>
1323 field_nonlinear_expr<
1324 field_nonlinear_expr_bf<
1325 detail_nonlinear_expr::multiplies
1326 ,field_expr_terminal_field<T,M>
1327 ,field_expr_terminal_field<T,M>
1337 template<
class T,
class M>
1339 field_nonlinear_expr<
1340 field_nonlinear_expr_bf<
1341 detail_nonlinear_expr::multiplies
1342 ,field_expr_terminal_field<T,M>
1343 ,field_expr_terminal_field<T,M>
1353 template<
class T,
class M>
1355 field_nonlinear_expr<
1356 field_nonlinear_expr_bf<
1357 detail_nonlinear_expr::multiplies
1358 ,field_expr_terminal_field<T,M>
1359 ,field_expr_terminal_field<T,M>
1369 template<
class T,
class M>
1371 field_nonlinear_expr<
1372 field_nonlinear_expr_bf<
1373 detail_nonlinear_expr::multiplies
1374 ,field_expr_terminal_field<T,M>
1375 ,field_expr_terminal_field<T,M>
1385 template<
class T,
class M>
1387 field_nonlinear_expr<
1388 field_nonlinear_expr_bf<
1389 detail_nonlinear_expr::multiplies
1390 ,field_expr_terminal_field<T,M>
1391 ,field_expr_terminal_field<T,M>
1401 template<
class T,
class M>
1403 field_nonlinear_expr<
1404 field_nonlinear_expr_bf<
1405 detail_nonlinear_expr::multiplies
1406 ,field_expr_terminal_field<T,M>
1407 ,field_expr_terminal_field<T,M>
1417 template<
class T,
class M>
1419 field_nonlinear_expr<
1420 field_nonlinear_expr_bf<
1421 detail_nonlinear_expr::multiplies
1422 ,field_expr_terminal_field<T,M>
1423 ,field_expr_terminal_field<T,M>
1433 template<
class T,
class M>
1435 field_nonlinear_expr<
1436 field_nonlinear_expr_bf<
1437 detail_nonlinear_expr::multiplies
1438 ,field_expr_terminal_field<T,M>
1439 ,field_expr_terminal_field<T,M>
1449 template<
class T,
class M>
1451 field_nonlinear_expr<
1452 field_nonlinear_expr_bf<
1453 detail_nonlinear_expr::multiplies
1454 ,field_expr_terminal_field<T,M>
1455 ,field_expr_terminal_field<T,M>
1465 template<
class T,
class M>
1467 field_nonlinear_expr<
1468 field_nonlinear_expr_bf<
1469 detail_nonlinear_expr::multiplies
1470 ,field_expr_terminal_field<T,M>
1471 ,field_expr_terminal_field<T,M>
1481 template<
class T,
class M>
1483 field_nonlinear_expr<
1484 field_nonlinear_expr_bf<
1485 detail_nonlinear_expr::multiplies
1486 ,field_expr_terminal_field<T,M>
1487 ,field_expr_terminal_field<T,M>
1497 template<
class T,
class M>
1499 field_nonlinear_expr<
1500 field_nonlinear_expr_bf<
1501 detail_nonlinear_expr::multiplies
1502 ,field_expr_terminal_field<T,M>
1503 ,field_expr_terminal_field<T,M>
1513 template<
class T,
class M>
1515 field_nonlinear_expr<
1516 field_nonlinear_expr_bf<
1517 detail_nonlinear_expr::multiplies
1518 ,field_expr_terminal_field<T,M>
1519 ,field_expr_terminal_field<T,M>
1529 template<
class T,
class M>
1531 field_nonlinear_expr<
1532 field_nonlinear_expr_bf<
1533 detail_nonlinear_expr::multiplies
1534 ,field_expr_terminal_field<T,M>
1535 ,field_expr_terminal_field<T,M>
1545 template<
class T,
class M>
1547 field_nonlinear_expr<
1548 field_nonlinear_expr_bf<
1549 detail_nonlinear_expr::multiplies
1550 ,field_expr_terminal_field<T,M>
1551 ,field_expr_terminal_field<T,M>
1561 template<
class T,
class M>
1563 field_nonlinear_expr<
1564 field_nonlinear_expr_bf<
1565 detail_nonlinear_expr::multiplies
1566 ,field_expr_terminal_field<T,M>
1567 ,field_expr_terminal_field<T,M>
1577 template<
class T,
class M>
1579 field_nonlinear_expr<
1580 field_nonlinear_expr_bf<
1581 detail_nonlinear_expr::multiplies
1582 ,field_expr_terminal_field<T,M>
1583 ,field_expr_terminal_field<T,M>
1593 template<
class T,
class M>
1595 field_nonlinear_expr<
1596 field_nonlinear_expr_bf<
1597 detail_nonlinear_expr::multiplies
1598 ,field_expr_terminal_field<T,M>
1599 ,field_expr_terminal_field<T,M>
1609 template<
class T,
class M>
1611 field_nonlinear_expr<
1612 field_nonlinear_expr_bf<
1613 detail_nonlinear_expr::multiplies
1614 ,field_expr_terminal_field<T,M>
1615 ,field_expr_terminal_field<T,M>
1625 template<
class T,
class M>
1627 field_nonlinear_expr<
1628 field_nonlinear_expr_bf<
1629 detail_nonlinear_expr::multiplies
1630 ,field_expr_terminal_field<T,M>
1631 ,field_expr_terminal_field<T,M>
1641 template<
class T,
class M>
1643 field_nonlinear_expr<
1644 field_nonlinear_expr_bf<
1645 detail_nonlinear_expr::multiplies
1646 ,field_expr_terminal_field<T,M>
1647 ,field_expr_terminal_field<T,M>
1657 template<
class T,
class M>
1659 field_nonlinear_expr<
1660 field_nonlinear_expr_bf<
1661 detail_nonlinear_expr::multiplies
1662 ,field_expr_terminal_field<T,M>
1663 ,field_expr_terminal_field<T,M>
1673 template<
class T,
class M>
1675 field_nonlinear_expr<
1676 field_nonlinear_expr_bf<
1677 detail_nonlinear_expr::multiplies
1678 ,field_expr_terminal_field<T,M>
1679 ,field_expr_terminal_field<T,M>
1689 template<
class T,
class M>
1691 field_nonlinear_expr<
1692 field_nonlinear_expr_bf<
1693 detail_nonlinear_expr::multiplies
1694 ,field_expr_terminal_field<T,M>
1695 ,field_expr_terminal_field<T,M>
1705 template<
class Expr,
class T,
class M>
1707 field_nonlinear_expr<
1708 field_nonlinear_expr_bf<
1709 detail_nonlinear_expr::multiplies
1710 ,field_expr_terminal_field<T,M>
1711 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1721 template<
class Expr,
class T,
class M>
1723 field_nonlinear_expr<
1724 field_nonlinear_expr_bf<
1725 detail_nonlinear_expr::multiplies
1726 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1727 ,field_expr_terminal_field<T,M>
1737 template<
class Function,
class T,
class M>
1739 field_nonlinear_expr<
1740 field_nonlinear_expr_bf<
1741 detail_nonlinear_expr::multiplies
1742 ,field_expr_terminal_field<T,M>
1743 ,field_expr_terminal_function<Function>
1753 template<
class Function,
class T,
class M>
1755 field_nonlinear_expr<
1756 field_nonlinear_expr_bf<
1757 detail_nonlinear_expr::multiplies
1758 ,field_expr_terminal_function<Function>
1759 ,field_expr_terminal_field<T,M>
1769 template<
class Expr,
class T,
class M>
1771 field_nonlinear_expr<
1772 field_nonlinear_expr_bf<
1773 detail_nonlinear_expr::multiplies
1774 ,field_nonlinear_expr<Expr>
1775 ,field_expr_terminal_field<T,M>
1785 template<
class Expr,
class T,
class M>
1787 field_nonlinear_expr<
1788 field_nonlinear_expr_bf<
1789 detail_nonlinear_expr::multiplies
1790 ,field_expr_terminal_field<T,M>
1791 ,field_nonlinear_expr<Expr>
1801 template<
class Expr,
class T,
class M>
1803 field_nonlinear_expr<
1804 field_nonlinear_expr_bf<
1805 detail_nonlinear_expr::multiplies
1806 ,field_expr_terminal_field<T,M>
1807 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1817 template<
class Expr,
class T,
class M>
1819 field_nonlinear_expr<
1820 field_nonlinear_expr_bf<
1821 detail_nonlinear_expr::multiplies
1822 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1823 ,field_expr_terminal_field<T,M>
1833 template<
class Function,
class T,
class M>
1835 field_nonlinear_expr<
1836 field_nonlinear_expr_bf<
1837 detail_nonlinear_expr::multiplies
1838 ,field_expr_terminal_field<T,M>
1839 ,field_expr_terminal_function<Function>
1849 template<
class Function,
class T,
class M>
1851 field_nonlinear_expr<
1852 field_nonlinear_expr_bf<
1853 detail_nonlinear_expr::multiplies
1854 ,field_expr_terminal_function<Function>
1855 ,field_expr_terminal_field<T,M>
1865 template<
class Expr,
class T,
class M>
1867 field_nonlinear_expr<
1868 field_nonlinear_expr_bf<
1869 detail_nonlinear_expr::multiplies
1870 ,field_nonlinear_expr<Expr>
1871 ,field_expr_terminal_field<T,M>
1881 template<
class Expr,
class T,
class M>
1883 field_nonlinear_expr<
1884 field_nonlinear_expr_bf<
1885 detail_nonlinear_expr::multiplies
1886 ,field_expr_terminal_field<T,M>
1887 ,field_nonlinear_expr<Expr>
1897 template<
class Expr,
class T,
class M>
1899 field_nonlinear_expr<
1900 field_nonlinear_expr_bf<
1901 detail_nonlinear_expr::multiplies
1902 ,field_expr_terminal_field<T,M>
1903 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1913 template<
class Expr,
class T,
class M>
1915 field_nonlinear_expr<
1916 field_nonlinear_expr_bf<
1917 detail_nonlinear_expr::multiplies
1918 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
1919 ,field_expr_terminal_field<T,M>
1929 template<
class Function,
class T,
class M>
1931 field_nonlinear_expr<
1932 field_nonlinear_expr_bf<
1933 detail_nonlinear_expr::multiplies
1934 ,field_expr_terminal_field<T,M>
1935 ,field_expr_terminal_function<Function>
1945 template<
class Function,
class T,
class M>
1947 field_nonlinear_expr<
1948 field_nonlinear_expr_bf<
1949 detail_nonlinear_expr::multiplies
1950 ,field_expr_terminal_function<Function>
1951 ,field_expr_terminal_field<T,M>
1961 template<
class Expr,
class T,
class M>
1963 field_nonlinear_expr<
1964 field_nonlinear_expr_bf<
1965 detail_nonlinear_expr::multiplies
1966 ,field_nonlinear_expr<Expr>
1967 ,field_expr_terminal_field<T,M>
1977 template<
class Expr,
class T,
class M>
1979 field_nonlinear_expr<
1980 field_nonlinear_expr_bf<
1981 detail_nonlinear_expr::multiplies
1982 ,field_expr_terminal_field<T,M>
1983 ,field_nonlinear_expr<Expr>
1993 template<
class Expr,
class T,
class M>
1995 field_nonlinear_expr<
1996 field_nonlinear_expr_bf<
1997 detail_nonlinear_expr::multiplies
1998 ,field_expr_terminal_field<T,M>
1999 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2009 template<
class Expr,
class T,
class M>
2011 field_nonlinear_expr<
2012 field_nonlinear_expr_bf<
2013 detail_nonlinear_expr::multiplies
2014 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2015 ,field_expr_terminal_field<T,M>
2025 template<
class Function,
class T,
class M>
2027 field_nonlinear_expr<
2028 field_nonlinear_expr_bf<
2029 detail_nonlinear_expr::multiplies
2030 ,field_expr_terminal_field<T,M>
2031 ,field_expr_terminal_function<Function>
2041 template<
class Function,
class T,
class M>
2043 field_nonlinear_expr<
2044 field_nonlinear_expr_bf<
2045 detail_nonlinear_expr::multiplies
2046 ,field_expr_terminal_function<Function>
2047 ,field_expr_terminal_field<T,M>
2057 template<
class Expr,
class T,
class M>
2059 field_nonlinear_expr<
2060 field_nonlinear_expr_bf<
2061 detail_nonlinear_expr::multiplies
2062 ,field_nonlinear_expr<Expr>
2063 ,field_expr_terminal_field<T,M>
2073 template<
class Expr,
class T,
class M>
2075 field_nonlinear_expr<
2076 field_nonlinear_expr_bf<
2077 detail_nonlinear_expr::multiplies
2078 ,field_expr_terminal_field<T,M>
2079 ,field_nonlinear_expr<Expr>
2089 template<
class Expr,
class T,
class M>
2091 field_nonlinear_expr<
2092 field_nonlinear_expr_bf<
2093 detail_nonlinear_expr::multiplies
2094 ,field_expr_terminal_field<T,M>
2095 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2105 template<
class Expr,
class T,
class M>
2107 field_nonlinear_expr<
2108 field_nonlinear_expr_bf<
2109 detail_nonlinear_expr::multiplies
2110 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2111 ,field_expr_terminal_field<T,M>
2121 template<
class Function,
class T,
class M>
2123 field_nonlinear_expr<
2124 field_nonlinear_expr_bf<
2125 detail_nonlinear_expr::multiplies
2126 ,field_expr_terminal_field<T,M>
2127 ,field_expr_terminal_function<Function>
2137 template<
class Function,
class T,
class M>
2139 field_nonlinear_expr<
2140 field_nonlinear_expr_bf<
2141 detail_nonlinear_expr::multiplies
2142 ,field_expr_terminal_function<Function>
2143 ,field_expr_terminal_field<T,M>
2153 template<
class Expr,
class T,
class M>
2155 field_nonlinear_expr<
2156 field_nonlinear_expr_bf<
2157 detail_nonlinear_expr::multiplies
2158 ,field_nonlinear_expr<Expr>
2159 ,field_expr_terminal_field<T,M>
2169 template<
class Expr,
class T,
class M>
2171 field_nonlinear_expr<
2172 field_nonlinear_expr_bf<
2173 detail_nonlinear_expr::multiplies
2174 ,field_expr_terminal_field<T,M>
2175 ,field_nonlinear_expr<Expr>
2185 template<
class Expr1,
class Expr2>
2187 field_nonlinear_expr<
2188 field_nonlinear_expr_bf<
2189 detail_nonlinear_expr::multiplies
2190 ,field_expr_terminal_field<typename field_expr<Expr1>::scalar_type,
typename field_expr<Expr1>::memory_type>
2191 ,field_expr_terminal_field<typename field_expr<Expr2>::scalar_type,
typename field_expr<Expr2>::memory_type>
2201 template<
class Expr,
class Function>
2203 field_nonlinear_expr<
2204 field_nonlinear_expr_bf<
2205 detail_nonlinear_expr::multiplies
2206 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2207 ,field_expr_terminal_function<Function>
2217 template<
class Expr,
class Function>
2219 field_nonlinear_expr<
2220 field_nonlinear_expr_bf<
2221 detail_nonlinear_expr::multiplies
2222 ,field_expr_terminal_function<Function>
2223 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2233 template<
class Expr,
class Function>
2235 field_nonlinear_expr<
2236 field_nonlinear_expr_bf<
2237 detail_nonlinear_expr::multiplies
2238 ,field_nonlinear_expr<Expr>
2239 ,field_expr_terminal_function<Function>
2249 template<
class Expr,
class Function>
2251 field_nonlinear_expr<
2252 field_nonlinear_expr_bf<
2253 detail_nonlinear_expr::multiplies
2254 ,field_expr_terminal_function<Function>
2255 ,field_nonlinear_expr<Expr>
2265 template<
class Expr1,
class Expr2>
2267 field_nonlinear_expr<
2268 field_nonlinear_expr_bf<
2269 detail_nonlinear_expr::multiplies
2270 ,field_expr_terminal_field<typename field_expr<Expr1>::scalar_type,
typename field_expr<Expr1>::memory_type>
2271 ,field_nonlinear_expr<Expr2>
2281 template<
class Expr1,
class Expr2>
2283 field_nonlinear_expr<
2284 field_nonlinear_expr_bf<
2285 detail_nonlinear_expr::multiplies
2286 ,field_nonlinear_expr<Expr1>
2287 ,field_expr_terminal_field<typename field_expr<Expr2>::scalar_type,
typename field_expr<Expr2>::memory_type>
2297 template<
class Function1,
class Function2>
2299 field_nonlinear_expr<
2300 field_nonlinear_expr_bf<
2301 detail_nonlinear_expr::multiplies
2302 ,field_expr_terminal_function<Function1>
2303 ,field_expr_terminal_function<Function2>
2313 template<
class Expr1,
class Expr2>
2315 field_nonlinear_expr<
2316 field_nonlinear_expr_bf<
2317 detail_nonlinear_expr::multiplies
2318 ,field_nonlinear_expr<Expr1>
2319 ,field_nonlinear_expr<Expr2>
2329 namespace detail_nonlinear_expr {
2330 template <
class T1,
class T2>
2347 template <
class T1,
class T2>
2354 template<
class Result>
2362 template <
class Arg1,
class Arg2>
2363 struct result_hint {
2371 template<
class T,
class M>
2373 field_nonlinear_expr<
2374 field_nonlinear_expr_uf<
2375 std::binder1st<std::divides<typename field_basic<T,M>::scalar_type> >
2376 ,field_expr_terminal_field<T,M>
2382 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2387 template<
class T,
class M>
2389 field_nonlinear_expr<
2390 field_nonlinear_expr_uf<
2391 std::binder1st<std::divides<typename field_indirect<T,M>::scalar_type> >
2392 ,field_expr_terminal_field<T,M>
2398 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2403 template<
class T,
class M>
2405 field_nonlinear_expr<
2406 field_nonlinear_expr_uf<
2407 std::binder1st<std::divides<typename field_indirect_const<T,M>::scalar_type> >
2408 ,field_expr_terminal_field<T,M>
2414 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2419 template<
class T,
class M>
2421 field_nonlinear_expr<
2422 field_nonlinear_expr_uf<
2423 std::binder1st<std::divides<typename field_component<T,M>::scalar_type> >
2424 ,field_expr_terminal_field<T,M>
2430 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2435 template<
class T,
class M>
2437 field_nonlinear_expr<
2438 field_nonlinear_expr_uf<
2439 std::binder1st<std::divides<typename field_component_const<T,M>::scalar_type> >
2440 ,field_expr_terminal_field<T,M>
2446 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2451 template<
class Expr>
2453 field_nonlinear_expr<
2454 field_nonlinear_expr_uf<
2455 std::binder1st<std::divides<typename field_expr<Expr>::scalar_type> >
2456 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2462 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2467 template<
class Expr>
2469 field_nonlinear_expr<
2470 field_nonlinear_expr_uf<
2471 std::binder1st<std::divides<typename field_nonlinear_expr<Expr>::scalar_type> >
2472 ,field_nonlinear_expr<Expr>
2478 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2483 template<
class Function>
2485 field_nonlinear_expr<
2486 field_nonlinear_expr_uf<
2487 std::binder1st<std::divides<typename field_expr_terminal_function<Function>::scalar_type> >
2488 ,field_expr_terminal_function<Function>
2494 typedef std::binder1st<std::divides<scalar_t> > fun_t;
2499 template<
class Expr>
2501 field_nonlinear_expr<
2502 field_nonlinear_expr_uf<
2503 std::binder2nd<std::divides<typename field_nonlinear_expr<Expr>::scalar_type> >
2504 ,field_nonlinear_expr<Expr>
2510 typedef std::binder2nd<std::divides<scalar_t> > fun_t;
2515 template<
class Function>
2517 field_nonlinear_expr<
2518 field_nonlinear_expr_uf<
2519 std::binder2nd<std::divides<typename field_expr_terminal_function<Function>::scalar_type> >
2520 ,field_expr_terminal_function<Function>
2526 typedef std::binder2nd<std::divides<scalar_t> > fun_t;
2531 template<
class T,
class M>
2533 field_nonlinear_expr<
2534 field_nonlinear_expr_bf<
2535 detail_nonlinear_expr::divides
2536 ,field_expr_terminal_field<T,M>
2537 ,field_expr_terminal_field<T,M>
2547 template<
class T,
class M>
2549 field_nonlinear_expr<
2550 field_nonlinear_expr_bf<
2551 detail_nonlinear_expr::divides
2552 ,field_expr_terminal_field<T,M>
2553 ,field_expr_terminal_field<T,M>
2563 template<
class T,
class M>
2565 field_nonlinear_expr<
2566 field_nonlinear_expr_bf<
2567 detail_nonlinear_expr::divides
2568 ,field_expr_terminal_field<T,M>
2569 ,field_expr_terminal_field<T,M>
2579 template<
class T,
class M>
2581 field_nonlinear_expr<
2582 field_nonlinear_expr_bf<
2583 detail_nonlinear_expr::divides
2584 ,field_expr_terminal_field<T,M>
2585 ,field_expr_terminal_field<T,M>
2595 template<
class T,
class M>
2597 field_nonlinear_expr<
2598 field_nonlinear_expr_bf<
2599 detail_nonlinear_expr::divides
2600 ,field_expr_terminal_field<T,M>
2601 ,field_expr_terminal_field<T,M>
2611 template<
class T,
class M>
2613 field_nonlinear_expr<
2614 field_nonlinear_expr_bf<
2615 detail_nonlinear_expr::divides
2616 ,field_expr_terminal_field<T,M>
2617 ,field_expr_terminal_field<T,M>
2627 template<
class T,
class M>
2629 field_nonlinear_expr<
2630 field_nonlinear_expr_bf<
2631 detail_nonlinear_expr::divides
2632 ,field_expr_terminal_field<T,M>
2633 ,field_expr_terminal_field<T,M>
2643 template<
class T,
class M>
2645 field_nonlinear_expr<
2646 field_nonlinear_expr_bf<
2647 detail_nonlinear_expr::divides
2648 ,field_expr_terminal_field<T,M>
2649 ,field_expr_terminal_field<T,M>
2659 template<
class T,
class M>
2661 field_nonlinear_expr<
2662 field_nonlinear_expr_bf<
2663 detail_nonlinear_expr::divides
2664 ,field_expr_terminal_field<T,M>
2665 ,field_expr_terminal_field<T,M>
2675 template<
class T,
class M>
2677 field_nonlinear_expr<
2678 field_nonlinear_expr_bf<
2679 detail_nonlinear_expr::divides
2680 ,field_expr_terminal_field<T,M>
2681 ,field_expr_terminal_field<T,M>
2691 template<
class T,
class M>
2693 field_nonlinear_expr<
2694 field_nonlinear_expr_bf<
2695 detail_nonlinear_expr::divides
2696 ,field_expr_terminal_field<T,M>
2697 ,field_expr_terminal_field<T,M>
2707 template<
class T,
class M>
2709 field_nonlinear_expr<
2710 field_nonlinear_expr_bf<
2711 detail_nonlinear_expr::divides
2712 ,field_expr_terminal_field<T,M>
2713 ,field_expr_terminal_field<T,M>
2723 template<
class T,
class M>
2725 field_nonlinear_expr<
2726 field_nonlinear_expr_bf<
2727 detail_nonlinear_expr::divides
2728 ,field_expr_terminal_field<T,M>
2729 ,field_expr_terminal_field<T,M>
2739 template<
class T,
class M>
2741 field_nonlinear_expr<
2742 field_nonlinear_expr_bf<
2743 detail_nonlinear_expr::divides
2744 ,field_expr_terminal_field<T,M>
2745 ,field_expr_terminal_field<T,M>
2755 template<
class T,
class M>
2757 field_nonlinear_expr<
2758 field_nonlinear_expr_bf<
2759 detail_nonlinear_expr::divides
2760 ,field_expr_terminal_field<T,M>
2761 ,field_expr_terminal_field<T,M>
2771 template<
class T,
class M>
2773 field_nonlinear_expr<
2774 field_nonlinear_expr_bf<
2775 detail_nonlinear_expr::divides
2776 ,field_expr_terminal_field<T,M>
2777 ,field_expr_terminal_field<T,M>
2787 template<
class T,
class M>
2789 field_nonlinear_expr<
2790 field_nonlinear_expr_bf<
2791 detail_nonlinear_expr::divides
2792 ,field_expr_terminal_field<T,M>
2793 ,field_expr_terminal_field<T,M>
2803 template<
class T,
class M>
2805 field_nonlinear_expr<
2806 field_nonlinear_expr_bf<
2807 detail_nonlinear_expr::divides
2808 ,field_expr_terminal_field<T,M>
2809 ,field_expr_terminal_field<T,M>
2819 template<
class T,
class M>
2821 field_nonlinear_expr<
2822 field_nonlinear_expr_bf<
2823 detail_nonlinear_expr::divides
2824 ,field_expr_terminal_field<T,M>
2825 ,field_expr_terminal_field<T,M>
2835 template<
class T,
class M>
2837 field_nonlinear_expr<
2838 field_nonlinear_expr_bf<
2839 detail_nonlinear_expr::divides
2840 ,field_expr_terminal_field<T,M>
2841 ,field_expr_terminal_field<T,M>
2851 template<
class T,
class M>
2853 field_nonlinear_expr<
2854 field_nonlinear_expr_bf<
2855 detail_nonlinear_expr::divides
2856 ,field_expr_terminal_field<T,M>
2857 ,field_expr_terminal_field<T,M>
2867 template<
class T,
class M>
2869 field_nonlinear_expr<
2870 field_nonlinear_expr_bf<
2871 detail_nonlinear_expr::divides
2872 ,field_expr_terminal_field<T,M>
2873 ,field_expr_terminal_field<T,M>
2883 template<
class T,
class M>
2885 field_nonlinear_expr<
2886 field_nonlinear_expr_bf<
2887 detail_nonlinear_expr::divides
2888 ,field_expr_terminal_field<T,M>
2889 ,field_expr_terminal_field<T,M>
2899 template<
class T,
class M>
2901 field_nonlinear_expr<
2902 field_nonlinear_expr_bf<
2903 detail_nonlinear_expr::divides
2904 ,field_expr_terminal_field<T,M>
2905 ,field_expr_terminal_field<T,M>
2915 template<
class T,
class M>
2917 field_nonlinear_expr<
2918 field_nonlinear_expr_bf<
2919 detail_nonlinear_expr::divides
2920 ,field_expr_terminal_field<T,M>
2921 ,field_expr_terminal_field<T,M>
2931 template<
class Expr,
class T,
class M>
2933 field_nonlinear_expr<
2934 field_nonlinear_expr_bf<
2935 detail_nonlinear_expr::divides
2936 ,field_expr_terminal_field<T,M>
2937 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2947 template<
class Expr,
class T,
class M>
2949 field_nonlinear_expr<
2950 field_nonlinear_expr_bf<
2951 detail_nonlinear_expr::divides
2952 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
2953 ,field_expr_terminal_field<T,M>
2963 template<
class Function,
class T,
class M>
2965 field_nonlinear_expr<
2966 field_nonlinear_expr_bf<
2967 detail_nonlinear_expr::divides
2968 ,field_expr_terminal_field<T,M>
2969 ,field_expr_terminal_function<Function>
2979 template<
class Function,
class T,
class M>
2981 field_nonlinear_expr<
2982 field_nonlinear_expr_bf<
2983 detail_nonlinear_expr::divides
2984 ,field_expr_terminal_function<Function>
2985 ,field_expr_terminal_field<T,M>
2995 template<
class Expr,
class T,
class M>
2997 field_nonlinear_expr<
2998 field_nonlinear_expr_bf<
2999 detail_nonlinear_expr::divides
3000 ,field_nonlinear_expr<Expr>
3001 ,field_expr_terminal_field<T,M>
3011 template<
class Expr,
class T,
class M>
3013 field_nonlinear_expr<
3014 field_nonlinear_expr_bf<
3015 detail_nonlinear_expr::divides
3016 ,field_expr_terminal_field<T,M>
3017 ,field_nonlinear_expr<Expr>
3027 template<
class Expr,
class T,
class M>
3029 field_nonlinear_expr<
3030 field_nonlinear_expr_bf<
3031 detail_nonlinear_expr::divides
3032 ,field_expr_terminal_field<T,M>
3033 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3043 template<
class Expr,
class T,
class M>
3045 field_nonlinear_expr<
3046 field_nonlinear_expr_bf<
3047 detail_nonlinear_expr::divides
3048 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3049 ,field_expr_terminal_field<T,M>
3059 template<
class Function,
class T,
class M>
3061 field_nonlinear_expr<
3062 field_nonlinear_expr_bf<
3063 detail_nonlinear_expr::divides
3064 ,field_expr_terminal_field<T,M>
3065 ,field_expr_terminal_function<Function>
3075 template<
class Function,
class T,
class M>
3077 field_nonlinear_expr<
3078 field_nonlinear_expr_bf<
3079 detail_nonlinear_expr::divides
3080 ,field_expr_terminal_function<Function>
3081 ,field_expr_terminal_field<T,M>
3091 template<
class Expr,
class T,
class M>
3093 field_nonlinear_expr<
3094 field_nonlinear_expr_bf<
3095 detail_nonlinear_expr::divides
3096 ,field_nonlinear_expr<Expr>
3097 ,field_expr_terminal_field<T,M>
3107 template<
class Expr,
class T,
class M>
3109 field_nonlinear_expr<
3110 field_nonlinear_expr_bf<
3111 detail_nonlinear_expr::divides
3112 ,field_expr_terminal_field<T,M>
3113 ,field_nonlinear_expr<Expr>
3123 template<
class Expr,
class T,
class M>
3125 field_nonlinear_expr<
3126 field_nonlinear_expr_bf<
3127 detail_nonlinear_expr::divides
3128 ,field_expr_terminal_field<T,M>
3129 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3139 template<
class Expr,
class T,
class M>
3141 field_nonlinear_expr<
3142 field_nonlinear_expr_bf<
3143 detail_nonlinear_expr::divides
3144 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3145 ,field_expr_terminal_field<T,M>
3155 template<
class Function,
class T,
class M>
3157 field_nonlinear_expr<
3158 field_nonlinear_expr_bf<
3159 detail_nonlinear_expr::divides
3160 ,field_expr_terminal_field<T,M>
3161 ,field_expr_terminal_function<Function>
3171 template<
class Function,
class T,
class M>
3173 field_nonlinear_expr<
3174 field_nonlinear_expr_bf<
3175 detail_nonlinear_expr::divides
3176 ,field_expr_terminal_function<Function>
3177 ,field_expr_terminal_field<T,M>
3187 template<
class Expr,
class T,
class M>
3189 field_nonlinear_expr<
3190 field_nonlinear_expr_bf<
3191 detail_nonlinear_expr::divides
3192 ,field_nonlinear_expr<Expr>
3193 ,field_expr_terminal_field<T,M>
3203 template<
class Expr,
class T,
class M>
3205 field_nonlinear_expr<
3206 field_nonlinear_expr_bf<
3207 detail_nonlinear_expr::divides
3208 ,field_expr_terminal_field<T,M>
3209 ,field_nonlinear_expr<Expr>
3219 template<
class Expr,
class T,
class M>
3221 field_nonlinear_expr<
3222 field_nonlinear_expr_bf<
3223 detail_nonlinear_expr::divides
3224 ,field_expr_terminal_field<T,M>
3225 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3235 template<
class Expr,
class T,
class M>
3237 field_nonlinear_expr<
3238 field_nonlinear_expr_bf<
3239 detail_nonlinear_expr::divides
3240 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3241 ,field_expr_terminal_field<T,M>
3251 template<
class Function,
class T,
class M>
3253 field_nonlinear_expr<
3254 field_nonlinear_expr_bf<
3255 detail_nonlinear_expr::divides
3256 ,field_expr_terminal_field<T,M>
3257 ,field_expr_terminal_function<Function>
3267 template<
class Function,
class T,
class M>
3269 field_nonlinear_expr<
3270 field_nonlinear_expr_bf<
3271 detail_nonlinear_expr::divides
3272 ,field_expr_terminal_function<Function>
3273 ,field_expr_terminal_field<T,M>
3283 template<
class Expr,
class T,
class M>
3285 field_nonlinear_expr<
3286 field_nonlinear_expr_bf<
3287 detail_nonlinear_expr::divides
3288 ,field_nonlinear_expr<Expr>
3289 ,field_expr_terminal_field<T,M>
3299 template<
class Expr,
class T,
class M>
3301 field_nonlinear_expr<
3302 field_nonlinear_expr_bf<
3303 detail_nonlinear_expr::divides
3304 ,field_expr_terminal_field<T,M>
3305 ,field_nonlinear_expr<Expr>
3315 template<
class Expr,
class T,
class M>
3317 field_nonlinear_expr<
3318 field_nonlinear_expr_bf<
3319 detail_nonlinear_expr::divides
3320 ,field_expr_terminal_field<T,M>
3321 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3331 template<
class Expr,
class T,
class M>
3333 field_nonlinear_expr<
3334 field_nonlinear_expr_bf<
3335 detail_nonlinear_expr::divides
3336 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3337 ,field_expr_terminal_field<T,M>
3347 template<
class Function,
class T,
class M>
3349 field_nonlinear_expr<
3350 field_nonlinear_expr_bf<
3351 detail_nonlinear_expr::divides
3352 ,field_expr_terminal_field<T,M>
3353 ,field_expr_terminal_function<Function>
3363 template<
class Function,
class T,
class M>
3365 field_nonlinear_expr<
3366 field_nonlinear_expr_bf<
3367 detail_nonlinear_expr::divides
3368 ,field_expr_terminal_function<Function>
3369 ,field_expr_terminal_field<T,M>
3379 template<
class Expr,
class T,
class M>
3381 field_nonlinear_expr<
3382 field_nonlinear_expr_bf<
3383 detail_nonlinear_expr::divides
3384 ,field_nonlinear_expr<Expr>
3385 ,field_expr_terminal_field<T,M>
3395 template<
class Expr,
class T,
class M>
3397 field_nonlinear_expr<
3398 field_nonlinear_expr_bf<
3399 detail_nonlinear_expr::divides
3400 ,field_expr_terminal_field<T,M>
3401 ,field_nonlinear_expr<Expr>
3411 template<
class Expr1,
class Expr2>
3413 field_nonlinear_expr<
3414 field_nonlinear_expr_bf<
3415 detail_nonlinear_expr::divides
3416 ,field_expr_terminal_field<typename field_expr<Expr1>::scalar_type,
typename field_expr<Expr1>::memory_type>
3417 ,field_expr_terminal_field<typename field_expr<Expr2>::scalar_type,
typename field_expr<Expr2>::memory_type>
3427 template<
class Expr,
class Function>
3429 field_nonlinear_expr<
3430 field_nonlinear_expr_bf<
3431 detail_nonlinear_expr::divides
3432 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3433 ,field_expr_terminal_function<Function>
3443 template<
class Expr,
class Function>
3445 field_nonlinear_expr<
3446 field_nonlinear_expr_bf<
3447 detail_nonlinear_expr::divides
3448 ,field_expr_terminal_function<Function>
3449 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3459 template<
class Expr,
class Function>
3461 field_nonlinear_expr<
3462 field_nonlinear_expr_bf<
3463 detail_nonlinear_expr::divides
3464 ,field_nonlinear_expr<Expr>
3465 ,field_expr_terminal_function<Function>
3475 template<
class Expr,
class Function>
3477 field_nonlinear_expr<
3478 field_nonlinear_expr_bf<
3479 detail_nonlinear_expr::divides
3480 ,field_expr_terminal_function<Function>
3481 ,field_nonlinear_expr<Expr>
3491 template<
class Expr1,
class Expr2>
3493 field_nonlinear_expr<
3494 field_nonlinear_expr_bf<
3495 detail_nonlinear_expr::divides
3496 ,field_expr_terminal_field<typename field_expr<Expr1>::scalar_type,
typename field_expr<Expr1>::memory_type>
3497 ,field_nonlinear_expr<Expr2>
3507 template<
class Expr1,
class Expr2>
3509 field_nonlinear_expr<
3510 field_nonlinear_expr_bf<
3511 detail_nonlinear_expr::divides
3512 ,field_nonlinear_expr<Expr1>
3513 ,field_expr_terminal_field<typename field_expr<Expr2>::scalar_type,
typename field_expr<Expr2>::memory_type>
3523 template<
class Function1,
class Function2>
3525 field_nonlinear_expr<
3526 field_nonlinear_expr_bf<
3527 detail_nonlinear_expr::divides
3528 ,field_expr_terminal_function<Function1>
3529 ,field_expr_terminal_function<Function2>
3539 template<
class Expr1,
class Expr2>
3541 field_nonlinear_expr<
3542 field_nonlinear_expr_bf<
3543 detail_nonlinear_expr::divides
3544 ,field_nonlinear_expr<Expr1>
3545 ,field_nonlinear_expr<Expr2>
3555 namespace detail_nonlinear_expr {
3557 struct cos_ : std::unary_function<T,T> {
3561 template<
class T,
class M>
3563 field_nonlinear_expr<
3564 field_nonlinear_expr_uf<
3565 detail_nonlinear_expr::cos_<typename field_basic<T,M>::scalar_type>
3566 ,field_expr_terminal_field<T,M>
3575 template<
class T,
class M>
3577 field_nonlinear_expr<
3578 field_nonlinear_expr_uf<
3579 detail_nonlinear_expr::cos_<typename field_indirect<T,M>::scalar_type>
3580 ,field_expr_terminal_field<T,M>
3589 template<
class T,
class M>
3591 field_nonlinear_expr<
3592 field_nonlinear_expr_uf<
3593 detail_nonlinear_expr::cos_<typename field_indirect_const<T,M>::scalar_type>
3594 ,field_expr_terminal_field<T,M>
3603 template<
class T,
class M>
3605 field_nonlinear_expr<
3606 field_nonlinear_expr_uf<
3607 detail_nonlinear_expr::cos_<typename field_component<T,M>::scalar_type>
3608 ,field_expr_terminal_field<T,M>
3617 template<
class T,
class M>
3619 field_nonlinear_expr<
3620 field_nonlinear_expr_uf<
3621 detail_nonlinear_expr::cos_<typename field_component_const<T,M>::scalar_type>
3622 ,field_expr_terminal_field<T,M>
3631 template<
class Expr>
3633 field_nonlinear_expr<
3634 field_nonlinear_expr_uf<
3635 detail_nonlinear_expr::cos_<typename field_expr<Expr>::scalar_type>
3636 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3645 template<
class Expr>
3647 field_nonlinear_expr<
3648 field_nonlinear_expr_uf<
3649 detail_nonlinear_expr::cos_<typename field_nonlinear_expr<Expr>::scalar_type>
3650 ,field_nonlinear_expr<Expr>
3659 namespace detail_nonlinear_expr {
3661 struct sin_ : std::unary_function<T,T> {
3665 template<
class T,
class M>
3667 field_nonlinear_expr<
3668 field_nonlinear_expr_uf<
3669 detail_nonlinear_expr::sin_<typename field_basic<T,M>::scalar_type>
3670 ,field_expr_terminal_field<T,M>
3679 template<
class T,
class M>
3681 field_nonlinear_expr<
3682 field_nonlinear_expr_uf<
3683 detail_nonlinear_expr::sin_<typename field_indirect<T,M>::scalar_type>
3684 ,field_expr_terminal_field<T,M>
3693 template<
class T,
class M>
3695 field_nonlinear_expr<
3696 field_nonlinear_expr_uf<
3697 detail_nonlinear_expr::sin_<typename field_indirect_const<T,M>::scalar_type>
3698 ,field_expr_terminal_field<T,M>
3707 template<
class T,
class M>
3709 field_nonlinear_expr<
3710 field_nonlinear_expr_uf<
3711 detail_nonlinear_expr::sin_<typename field_component<T,M>::scalar_type>
3712 ,field_expr_terminal_field<T,M>
3721 template<
class T,
class M>
3723 field_nonlinear_expr<
3724 field_nonlinear_expr_uf<
3725 detail_nonlinear_expr::sin_<typename field_component_const<T,M>::scalar_type>
3726 ,field_expr_terminal_field<T,M>
3735 template<
class Expr>
3737 field_nonlinear_expr<
3738 field_nonlinear_expr_uf<
3739 detail_nonlinear_expr::sin_<typename field_expr<Expr>::scalar_type>
3740 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3749 template<
class Expr>
3751 field_nonlinear_expr<
3752 field_nonlinear_expr_uf<
3753 detail_nonlinear_expr::sin_<typename field_nonlinear_expr<Expr>::scalar_type>
3754 ,field_nonlinear_expr<Expr>
3763 namespace detail_nonlinear_expr {
3765 struct tan_ : std::unary_function<T,T> {
3769 template<
class T,
class M>
3771 field_nonlinear_expr<
3772 field_nonlinear_expr_uf<
3773 detail_nonlinear_expr::tan_<typename field_basic<T,M>::scalar_type>
3774 ,field_expr_terminal_field<T,M>
3783 template<
class T,
class M>
3785 field_nonlinear_expr<
3786 field_nonlinear_expr_uf<
3787 detail_nonlinear_expr::tan_<typename field_indirect<T,M>::scalar_type>
3788 ,field_expr_terminal_field<T,M>
3797 template<
class T,
class M>
3799 field_nonlinear_expr<
3800 field_nonlinear_expr_uf<
3801 detail_nonlinear_expr::tan_<typename field_indirect_const<T,M>::scalar_type>
3802 ,field_expr_terminal_field<T,M>
3811 template<
class T,
class M>
3813 field_nonlinear_expr<
3814 field_nonlinear_expr_uf<
3815 detail_nonlinear_expr::tan_<typename field_component<T,M>::scalar_type>
3816 ,field_expr_terminal_field<T,M>
3825 template<
class T,
class M>
3827 field_nonlinear_expr<
3828 field_nonlinear_expr_uf<
3829 detail_nonlinear_expr::tan_<typename field_component_const<T,M>::scalar_type>
3830 ,field_expr_terminal_field<T,M>
3839 template<
class Expr>
3841 field_nonlinear_expr<
3842 field_nonlinear_expr_uf<
3843 detail_nonlinear_expr::tan_<typename field_expr<Expr>::scalar_type>
3844 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3853 template<
class Expr>
3855 field_nonlinear_expr<
3856 field_nonlinear_expr_uf<
3857 detail_nonlinear_expr::tan_<typename field_nonlinear_expr<Expr>::scalar_type>
3858 ,field_nonlinear_expr<Expr>
3867 namespace detail_nonlinear_expr {
3869 struct acos_ : std::unary_function<T,T> {
3873 template<
class T,
class M>
3875 field_nonlinear_expr<
3876 field_nonlinear_expr_uf<
3877 detail_nonlinear_expr::acos_<typename field_basic<T,M>::scalar_type>
3878 ,field_expr_terminal_field<T,M>
3887 template<
class T,
class M>
3889 field_nonlinear_expr<
3890 field_nonlinear_expr_uf<
3891 detail_nonlinear_expr::acos_<typename field_indirect<T,M>::scalar_type>
3892 ,field_expr_terminal_field<T,M>
3901 template<
class T,
class M>
3903 field_nonlinear_expr<
3904 field_nonlinear_expr_uf<
3905 detail_nonlinear_expr::acos_<typename field_indirect_const<T,M>::scalar_type>
3906 ,field_expr_terminal_field<T,M>
3915 template<
class T,
class M>
3917 field_nonlinear_expr<
3918 field_nonlinear_expr_uf<
3919 detail_nonlinear_expr::acos_<typename field_component<T,M>::scalar_type>
3920 ,field_expr_terminal_field<T,M>
3929 template<
class T,
class M>
3931 field_nonlinear_expr<
3932 field_nonlinear_expr_uf<
3933 detail_nonlinear_expr::acos_<typename field_component_const<T,M>::scalar_type>
3934 ,field_expr_terminal_field<T,M>
3943 template<
class Expr>
3945 field_nonlinear_expr<
3946 field_nonlinear_expr_uf<
3947 detail_nonlinear_expr::acos_<typename field_expr<Expr>::scalar_type>
3948 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
3957 template<
class Expr>
3959 field_nonlinear_expr<
3960 field_nonlinear_expr_uf<
3961 detail_nonlinear_expr::acos_<typename field_nonlinear_expr<Expr>::scalar_type>
3962 ,field_nonlinear_expr<Expr>
3971 namespace detail_nonlinear_expr {
3973 struct asin_ : std::unary_function<T,T> {
3977 template<
class T,
class M>
3979 field_nonlinear_expr<
3980 field_nonlinear_expr_uf<
3981 detail_nonlinear_expr::asin_<typename field_basic<T,M>::scalar_type>
3982 ,field_expr_terminal_field<T,M>
3991 template<
class T,
class M>
3993 field_nonlinear_expr<
3994 field_nonlinear_expr_uf<
3995 detail_nonlinear_expr::asin_<typename field_indirect<T,M>::scalar_type>
3996 ,field_expr_terminal_field<T,M>
4005 template<
class T,
class M>
4007 field_nonlinear_expr<
4008 field_nonlinear_expr_uf<
4009 detail_nonlinear_expr::asin_<typename field_indirect_const<T,M>::scalar_type>
4010 ,field_expr_terminal_field<T,M>
4019 template<
class T,
class M>
4021 field_nonlinear_expr<
4022 field_nonlinear_expr_uf<
4023 detail_nonlinear_expr::asin_<typename field_component<T,M>::scalar_type>
4024 ,field_expr_terminal_field<T,M>
4033 template<
class T,
class M>
4035 field_nonlinear_expr<
4036 field_nonlinear_expr_uf<
4037 detail_nonlinear_expr::asin_<typename field_component_const<T,M>::scalar_type>
4038 ,field_expr_terminal_field<T,M>
4047 template<
class Expr>
4049 field_nonlinear_expr<
4050 field_nonlinear_expr_uf<
4051 detail_nonlinear_expr::asin_<typename field_expr<Expr>::scalar_type>
4052 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4061 template<
class Expr>
4063 field_nonlinear_expr<
4064 field_nonlinear_expr_uf<
4065 detail_nonlinear_expr::asin_<typename field_nonlinear_expr<Expr>::scalar_type>
4066 ,field_nonlinear_expr<Expr>
4075 namespace detail_nonlinear_expr {
4077 struct atan_ : std::unary_function<T,T> {
4081 template<
class T,
class M>
4083 field_nonlinear_expr<
4084 field_nonlinear_expr_uf<
4085 detail_nonlinear_expr::atan_<typename field_basic<T,M>::scalar_type>
4086 ,field_expr_terminal_field<T,M>
4095 template<
class T,
class M>
4097 field_nonlinear_expr<
4098 field_nonlinear_expr_uf<
4099 detail_nonlinear_expr::atan_<typename field_indirect<T,M>::scalar_type>
4100 ,field_expr_terminal_field<T,M>
4109 template<
class T,
class M>
4111 field_nonlinear_expr<
4112 field_nonlinear_expr_uf<
4113 detail_nonlinear_expr::atan_<typename field_indirect_const<T,M>::scalar_type>
4114 ,field_expr_terminal_field<T,M>
4123 template<
class T,
class M>
4125 field_nonlinear_expr<
4126 field_nonlinear_expr_uf<
4127 detail_nonlinear_expr::atan_<typename field_component<T,M>::scalar_type>
4128 ,field_expr_terminal_field<T,M>
4137 template<
class T,
class M>
4139 field_nonlinear_expr<
4140 field_nonlinear_expr_uf<
4141 detail_nonlinear_expr::atan_<typename field_component_const<T,M>::scalar_type>
4142 ,field_expr_terminal_field<T,M>
4151 template<
class Expr>
4153 field_nonlinear_expr<
4154 field_nonlinear_expr_uf<
4155 detail_nonlinear_expr::atan_<typename field_expr<Expr>::scalar_type>
4156 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4165 template<
class Expr>
4167 field_nonlinear_expr<
4168 field_nonlinear_expr_uf<
4169 detail_nonlinear_expr::atan_<typename field_nonlinear_expr<Expr>::scalar_type>
4170 ,field_nonlinear_expr<Expr>
4179 namespace detail_nonlinear_expr {
4181 struct cosh_ : std::unary_function<T,T> {
4185 template<
class T,
class M>
4187 field_nonlinear_expr<
4188 field_nonlinear_expr_uf<
4189 detail_nonlinear_expr::cosh_<typename field_basic<T,M>::scalar_type>
4190 ,field_expr_terminal_field<T,M>
4199 template<
class T,
class M>
4201 field_nonlinear_expr<
4202 field_nonlinear_expr_uf<
4203 detail_nonlinear_expr::cosh_<typename field_indirect<T,M>::scalar_type>
4204 ,field_expr_terminal_field<T,M>
4213 template<
class T,
class M>
4215 field_nonlinear_expr<
4216 field_nonlinear_expr_uf<
4217 detail_nonlinear_expr::cosh_<typename field_indirect_const<T,M>::scalar_type>
4218 ,field_expr_terminal_field<T,M>
4227 template<
class T,
class M>
4229 field_nonlinear_expr<
4230 field_nonlinear_expr_uf<
4231 detail_nonlinear_expr::cosh_<typename field_component<T,M>::scalar_type>
4232 ,field_expr_terminal_field<T,M>
4241 template<
class T,
class M>
4243 field_nonlinear_expr<
4244 field_nonlinear_expr_uf<
4245 detail_nonlinear_expr::cosh_<typename field_component_const<T,M>::scalar_type>
4246 ,field_expr_terminal_field<T,M>
4255 template<
class Expr>
4257 field_nonlinear_expr<
4258 field_nonlinear_expr_uf<
4259 detail_nonlinear_expr::cosh_<typename field_expr<Expr>::scalar_type>
4260 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4269 template<
class Expr>
4271 field_nonlinear_expr<
4272 field_nonlinear_expr_uf<
4273 detail_nonlinear_expr::cosh_<typename field_nonlinear_expr<Expr>::scalar_type>
4274 ,field_nonlinear_expr<Expr>
4283 namespace detail_nonlinear_expr {
4285 struct sinh_ : std::unary_function<T,T> {
4289 template<
class T,
class M>
4291 field_nonlinear_expr<
4292 field_nonlinear_expr_uf<
4293 detail_nonlinear_expr::sinh_<typename field_basic<T,M>::scalar_type>
4294 ,field_expr_terminal_field<T,M>
4303 template<
class T,
class M>
4305 field_nonlinear_expr<
4306 field_nonlinear_expr_uf<
4307 detail_nonlinear_expr::sinh_<typename field_indirect<T,M>::scalar_type>
4308 ,field_expr_terminal_field<T,M>
4317 template<
class T,
class M>
4319 field_nonlinear_expr<
4320 field_nonlinear_expr_uf<
4321 detail_nonlinear_expr::sinh_<typename field_indirect_const<T,M>::scalar_type>
4322 ,field_expr_terminal_field<T,M>
4331 template<
class T,
class M>
4333 field_nonlinear_expr<
4334 field_nonlinear_expr_uf<
4335 detail_nonlinear_expr::sinh_<typename field_component<T,M>::scalar_type>
4336 ,field_expr_terminal_field<T,M>
4345 template<
class T,
class M>
4347 field_nonlinear_expr<
4348 field_nonlinear_expr_uf<
4349 detail_nonlinear_expr::sinh_<typename field_component_const<T,M>::scalar_type>
4350 ,field_expr_terminal_field<T,M>
4359 template<
class Expr>
4361 field_nonlinear_expr<
4362 field_nonlinear_expr_uf<
4363 detail_nonlinear_expr::sinh_<typename field_expr<Expr>::scalar_type>
4364 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4373 template<
class Expr>
4375 field_nonlinear_expr<
4376 field_nonlinear_expr_uf<
4377 detail_nonlinear_expr::sinh_<typename field_nonlinear_expr<Expr>::scalar_type>
4378 ,field_nonlinear_expr<Expr>
4387 namespace detail_nonlinear_expr {
4389 struct tanh_ : std::unary_function<T,T> {
4393 template<
class T,
class M>
4395 field_nonlinear_expr<
4396 field_nonlinear_expr_uf<
4397 detail_nonlinear_expr::tanh_<typename field_basic<T,M>::scalar_type>
4398 ,field_expr_terminal_field<T,M>
4407 template<
class T,
class M>
4409 field_nonlinear_expr<
4410 field_nonlinear_expr_uf<
4411 detail_nonlinear_expr::tanh_<typename field_indirect<T,M>::scalar_type>
4412 ,field_expr_terminal_field<T,M>
4421 template<
class T,
class M>
4423 field_nonlinear_expr<
4424 field_nonlinear_expr_uf<
4425 detail_nonlinear_expr::tanh_<typename field_indirect_const<T,M>::scalar_type>
4426 ,field_expr_terminal_field<T,M>
4435 template<
class T,
class M>
4437 field_nonlinear_expr<
4438 field_nonlinear_expr_uf<
4439 detail_nonlinear_expr::tanh_<typename field_component<T,M>::scalar_type>
4440 ,field_expr_terminal_field<T,M>
4449 template<
class T,
class M>
4451 field_nonlinear_expr<
4452 field_nonlinear_expr_uf<
4453 detail_nonlinear_expr::tanh_<typename field_component_const<T,M>::scalar_type>
4454 ,field_expr_terminal_field<T,M>
4463 template<
class Expr>
4465 field_nonlinear_expr<
4466 field_nonlinear_expr_uf<
4467 detail_nonlinear_expr::tanh_<typename field_expr<Expr>::scalar_type>
4468 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4477 template<
class Expr>
4479 field_nonlinear_expr<
4480 field_nonlinear_expr_uf<
4481 detail_nonlinear_expr::tanh_<typename field_nonlinear_expr<Expr>::scalar_type>
4482 ,field_nonlinear_expr<Expr>
4491 namespace detail_nonlinear_expr {
4493 struct exp_ : std::unary_function<T,T> {
4497 template<
class T,
class M>
4499 field_nonlinear_expr<
4500 field_nonlinear_expr_uf<
4501 detail_nonlinear_expr::exp_<typename field_basic<T,M>::scalar_type>
4502 ,field_expr_terminal_field<T,M>
4511 template<
class T,
class M>
4513 field_nonlinear_expr<
4514 field_nonlinear_expr_uf<
4515 detail_nonlinear_expr::exp_<typename field_indirect<T,M>::scalar_type>
4516 ,field_expr_terminal_field<T,M>
4525 template<
class T,
class M>
4527 field_nonlinear_expr<
4528 field_nonlinear_expr_uf<
4529 detail_nonlinear_expr::exp_<typename field_indirect_const<T,M>::scalar_type>
4530 ,field_expr_terminal_field<T,M>
4539 template<
class T,
class M>
4541 field_nonlinear_expr<
4542 field_nonlinear_expr_uf<
4543 detail_nonlinear_expr::exp_<typename field_component<T,M>::scalar_type>
4544 ,field_expr_terminal_field<T,M>
4553 template<
class T,
class M>
4555 field_nonlinear_expr<
4556 field_nonlinear_expr_uf<
4557 detail_nonlinear_expr::exp_<typename field_component_const<T,M>::scalar_type>
4558 ,field_expr_terminal_field<T,M>
4567 template<
class Expr>
4569 field_nonlinear_expr<
4570 field_nonlinear_expr_uf<
4571 detail_nonlinear_expr::exp_<typename field_expr<Expr>::scalar_type>
4572 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4581 template<
class Expr>
4583 field_nonlinear_expr<
4584 field_nonlinear_expr_uf<
4585 detail_nonlinear_expr::exp_<typename field_nonlinear_expr<Expr>::scalar_type>
4586 ,field_nonlinear_expr<Expr>
4595 namespace detail_nonlinear_expr {
4597 struct log_ : std::unary_function<T,T> {
4601 template<
class T,
class M>
4603 field_nonlinear_expr<
4604 field_nonlinear_expr_uf<
4605 detail_nonlinear_expr::log_<typename field_basic<T,M>::scalar_type>
4606 ,field_expr_terminal_field<T,M>
4615 template<
class T,
class M>
4617 field_nonlinear_expr<
4618 field_nonlinear_expr_uf<
4619 detail_nonlinear_expr::log_<typename field_indirect<T,M>::scalar_type>
4620 ,field_expr_terminal_field<T,M>
4629 template<
class T,
class M>
4631 field_nonlinear_expr<
4632 field_nonlinear_expr_uf<
4633 detail_nonlinear_expr::log_<typename field_indirect_const<T,M>::scalar_type>
4634 ,field_expr_terminal_field<T,M>
4643 template<
class T,
class M>
4645 field_nonlinear_expr<
4646 field_nonlinear_expr_uf<
4647 detail_nonlinear_expr::log_<typename field_component<T,M>::scalar_type>
4648 ,field_expr_terminal_field<T,M>
4657 template<
class T,
class M>
4659 field_nonlinear_expr<
4660 field_nonlinear_expr_uf<
4661 detail_nonlinear_expr::log_<typename field_component_const<T,M>::scalar_type>
4662 ,field_expr_terminal_field<T,M>
4671 template<
class Expr>
4673 field_nonlinear_expr<
4674 field_nonlinear_expr_uf<
4675 detail_nonlinear_expr::log_<typename field_expr<Expr>::scalar_type>
4676 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4685 template<
class Expr>
4687 field_nonlinear_expr<
4688 field_nonlinear_expr_uf<
4689 detail_nonlinear_expr::log_<typename field_nonlinear_expr<Expr>::scalar_type>
4690 ,field_nonlinear_expr<Expr>
4699 namespace detail_nonlinear_expr {
4705 template<
class T,
class M>
4707 field_nonlinear_expr<
4708 field_nonlinear_expr_uf<
4709 detail_nonlinear_expr::log10_<typename field_basic<T,M>::scalar_type>
4710 ,field_expr_terminal_field<T,M>
4719 template<
class T,
class M>
4721 field_nonlinear_expr<
4722 field_nonlinear_expr_uf<
4723 detail_nonlinear_expr::log10_<typename field_indirect<T,M>::scalar_type>
4724 ,field_expr_terminal_field<T,M>
4733 template<
class T,
class M>
4735 field_nonlinear_expr<
4736 field_nonlinear_expr_uf<
4737 detail_nonlinear_expr::log10_<typename field_indirect_const<T,M>::scalar_type>
4738 ,field_expr_terminal_field<T,M>
4747 template<
class T,
class M>
4749 field_nonlinear_expr<
4750 field_nonlinear_expr_uf<
4751 detail_nonlinear_expr::log10_<typename field_component<T,M>::scalar_type>
4752 ,field_expr_terminal_field<T,M>
4761 template<
class T,
class M>
4763 field_nonlinear_expr<
4764 field_nonlinear_expr_uf<
4765 detail_nonlinear_expr::log10_<typename field_component_const<T,M>::scalar_type>
4766 ,field_expr_terminal_field<T,M>
4775 template<
class Expr>
4777 field_nonlinear_expr<
4778 field_nonlinear_expr_uf<
4779 detail_nonlinear_expr::log10_<typename field_expr<Expr>::scalar_type>
4780 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4789 template<
class Expr>
4791 field_nonlinear_expr<
4792 field_nonlinear_expr_uf<
4793 detail_nonlinear_expr::log10_<typename field_nonlinear_expr<Expr>::scalar_type>
4794 ,field_nonlinear_expr<Expr>
4803 namespace detail_nonlinear_expr {
4805 struct sqrt_ : std::unary_function<T,T> {
4809 template<
class T,
class M>
4811 field_nonlinear_expr<
4812 field_nonlinear_expr_uf<
4813 detail_nonlinear_expr::sqrt_<typename field_basic<T,M>::scalar_type>
4814 ,field_expr_terminal_field<T,M>
4823 template<
class T,
class M>
4825 field_nonlinear_expr<
4826 field_nonlinear_expr_uf<
4827 detail_nonlinear_expr::sqrt_<typename field_indirect<T,M>::scalar_type>
4828 ,field_expr_terminal_field<T,M>
4837 template<
class T,
class M>
4839 field_nonlinear_expr<
4840 field_nonlinear_expr_uf<
4841 detail_nonlinear_expr::sqrt_<typename field_indirect_const<T,M>::scalar_type>
4842 ,field_expr_terminal_field<T,M>
4851 template<
class T,
class M>
4853 field_nonlinear_expr<
4854 field_nonlinear_expr_uf<
4855 detail_nonlinear_expr::sqrt_<typename field_component<T,M>::scalar_type>
4856 ,field_expr_terminal_field<T,M>
4865 template<
class T,
class M>
4867 field_nonlinear_expr<
4868 field_nonlinear_expr_uf<
4869 detail_nonlinear_expr::sqrt_<typename field_component_const<T,M>::scalar_type>
4870 ,field_expr_terminal_field<T,M>
4879 template<
class Expr>
4881 field_nonlinear_expr<
4882 field_nonlinear_expr_uf<
4883 detail_nonlinear_expr::sqrt_<typename field_expr<Expr>::scalar_type>
4884 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4893 template<
class Expr>
4895 field_nonlinear_expr<
4896 field_nonlinear_expr_uf<
4897 detail_nonlinear_expr::sqrt_<typename field_nonlinear_expr<Expr>::scalar_type>
4898 ,field_nonlinear_expr<Expr>
4907 namespace detail_nonlinear_expr {
4909 struct abs_ : std::unary_function<T,T> {
4913 template<
class T,
class M>
4915 field_nonlinear_expr<
4916 field_nonlinear_expr_uf<
4917 detail_nonlinear_expr::abs_<typename field_basic<T,M>::scalar_type>
4918 ,field_expr_terminal_field<T,M>
4927 template<
class T,
class M>
4929 field_nonlinear_expr<
4930 field_nonlinear_expr_uf<
4931 detail_nonlinear_expr::abs_<typename field_indirect<T,M>::scalar_type>
4932 ,field_expr_terminal_field<T,M>
4941 template<
class T,
class M>
4943 field_nonlinear_expr<
4944 field_nonlinear_expr_uf<
4945 detail_nonlinear_expr::abs_<typename field_indirect_const<T,M>::scalar_type>
4946 ,field_expr_terminal_field<T,M>
4955 template<
class T,
class M>
4957 field_nonlinear_expr<
4958 field_nonlinear_expr_uf<
4959 detail_nonlinear_expr::abs_<typename field_component<T,M>::scalar_type>
4960 ,field_expr_terminal_field<T,M>
4969 template<
class T,
class M>
4971 field_nonlinear_expr<
4972 field_nonlinear_expr_uf<
4973 detail_nonlinear_expr::abs_<typename field_component_const<T,M>::scalar_type>
4974 ,field_expr_terminal_field<T,M>
4983 template<
class Expr>
4985 field_nonlinear_expr<
4986 field_nonlinear_expr_uf<
4987 detail_nonlinear_expr::abs_<typename field_expr<Expr>::scalar_type>
4988 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
4997 template<
class Expr>
4999 field_nonlinear_expr<
5000 field_nonlinear_expr_uf<
5001 detail_nonlinear_expr::abs_<typename field_nonlinear_expr<Expr>::scalar_type>
5002 ,field_nonlinear_expr<Expr>
5011 namespace detail_nonlinear_expr {
5013 struct fabs_ : std::unary_function<T,T> {
5017 template<
class T,
class M>
5019 field_nonlinear_expr<
5020 field_nonlinear_expr_uf<
5021 detail_nonlinear_expr::fabs_<typename field_basic<T,M>::scalar_type>
5022 ,field_expr_terminal_field<T,M>
5031 template<
class T,
class M>
5033 field_nonlinear_expr<
5034 field_nonlinear_expr_uf<
5035 detail_nonlinear_expr::fabs_<typename field_indirect<T,M>::scalar_type>
5036 ,field_expr_terminal_field<T,M>
5045 template<
class T,
class M>
5047 field_nonlinear_expr<
5048 field_nonlinear_expr_uf<
5049 detail_nonlinear_expr::fabs_<typename field_indirect_const<T,M>::scalar_type>
5050 ,field_expr_terminal_field<T,M>
5059 template<
class T,
class M>
5061 field_nonlinear_expr<
5062 field_nonlinear_expr_uf<
5063 detail_nonlinear_expr::fabs_<typename field_component<T,M>::scalar_type>
5064 ,field_expr_terminal_field<T,M>
5073 template<
class T,
class M>
5075 field_nonlinear_expr<
5076 field_nonlinear_expr_uf<
5077 detail_nonlinear_expr::fabs_<typename field_component_const<T,M>::scalar_type>
5078 ,field_expr_terminal_field<T,M>
5087 template<
class Expr>
5089 field_nonlinear_expr<
5090 field_nonlinear_expr_uf<
5091 detail_nonlinear_expr::fabs_<typename field_expr<Expr>::scalar_type>
5092 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
5101 template<
class Expr>
5103 field_nonlinear_expr<
5104 field_nonlinear_expr_uf<
5105 detail_nonlinear_expr::fabs_<typename field_nonlinear_expr<Expr>::scalar_type>
5106 ,field_nonlinear_expr<Expr>
5115 namespace detail_nonlinear_expr {
5121 template<
class T,
class M>
5123 field_nonlinear_expr<
5124 field_nonlinear_expr_uf<
5125 detail_nonlinear_expr::floor_<typename field_basic<T,M>::scalar_type>
5126 ,field_expr_terminal_field<T,M>
5135 template<
class T,
class M>
5137 field_nonlinear_expr<
5138 field_nonlinear_expr_uf<
5139 detail_nonlinear_expr::floor_<typename field_indirect<T,M>::scalar_type>
5140 ,field_expr_terminal_field<T,M>
5149 template<
class T,
class M>
5151 field_nonlinear_expr<
5152 field_nonlinear_expr_uf<
5153 detail_nonlinear_expr::floor_<typename field_indirect_const<T,M>::scalar_type>
5154 ,field_expr_terminal_field<T,M>
5163 template<
class T,
class M>
5165 field_nonlinear_expr<
5166 field_nonlinear_expr_uf<
5167 detail_nonlinear_expr::floor_<typename field_component<T,M>::scalar_type>
5168 ,field_expr_terminal_field<T,M>
5177 template<
class T,
class M>
5179 field_nonlinear_expr<
5180 field_nonlinear_expr_uf<
5181 detail_nonlinear_expr::floor_<typename field_component_const<T,M>::scalar_type>
5182 ,field_expr_terminal_field<T,M>
5191 template<
class Expr>
5193 field_nonlinear_expr<
5194 field_nonlinear_expr_uf<
5195 detail_nonlinear_expr::floor_<typename field_expr<Expr>::scalar_type>
5196 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
5205 template<
class Expr>
5207 field_nonlinear_expr<
5208 field_nonlinear_expr_uf<
5209 detail_nonlinear_expr::floor_<typename field_nonlinear_expr<Expr>::scalar_type>
5210 ,field_nonlinear_expr<Expr>
5219 namespace detail_nonlinear_expr {
5221 struct ceil_ : std::unary_function<T,T> {
5225 template<
class T,
class M>
5227 field_nonlinear_expr<
5228 field_nonlinear_expr_uf<
5229 detail_nonlinear_expr::ceil_<typename field_basic<T,M>::scalar_type>
5230 ,field_expr_terminal_field<T,M>
5239 template<
class T,
class M>
5241 field_nonlinear_expr<
5242 field_nonlinear_expr_uf<
5243 detail_nonlinear_expr::ceil_<typename field_indirect<T,M>::scalar_type>
5244 ,field_expr_terminal_field<T,M>
5253 template<
class T,
class M>
5255 field_nonlinear_expr<
5256 field_nonlinear_expr_uf<
5257 detail_nonlinear_expr::ceil_<typename field_indirect_const<T,M>::scalar_type>
5258 ,field_expr_terminal_field<T,M>
5267 template<
class T,
class M>
5269 field_nonlinear_expr<
5270 field_nonlinear_expr_uf<
5271 detail_nonlinear_expr::ceil_<typename field_component<T,M>::scalar_type>
5272 ,field_expr_terminal_field<T,M>
5281 template<
class T,
class M>
5283 field_nonlinear_expr<
5284 field_nonlinear_expr_uf<
5285 detail_nonlinear_expr::ceil_<typename field_component_const<T,M>::scalar_type>
5286 ,field_expr_terminal_field<T,M>
5295 template<
class Expr>
5297 field_nonlinear_expr<
5298 field_nonlinear_expr_uf<
5299 detail_nonlinear_expr::ceil_<typename field_expr<Expr>::scalar_type>
5300 ,field_expr_terminal_field<typename field_expr<Expr>::scalar_type,
typename field_expr<Expr>::memory_type>
5309 template<
class Expr>
5311 field_nonlinear_expr<
5312 field_nonlinear_expr_uf<
5313 detail_nonlinear_expr::ceil_<typename field_nonlinear_expr<Expr>::scalar_type>
5314 ,field_nonlinear_expr<Expr>