Add new macro M_CROSS_MAP

enabling to map a function to each pair
of arguments given two arglists.
This commit is contained in:
Patrick Pelissier committed 2022-09-25 00:30:23 +02:00
1 parent 3641829198
commit 5674cdbfc5
2 files changed
+123

No files matched your search

+117
View File
@@ -1889,6 +1889,123 @@ M_BEGIN_PROTECTED_CODE
#define M_MAP3_C_ID(...) __VA_ARGS__
/* Map a function f to each pair of arguments from the arglist 'a' and the arglist 'b'
M_CROSS_MAP(f, (a,b), (c,d) ) ==> f(a, c) f(a, d) f(b, c) f(b, d) */
#define M_CROSS_MAP(f, alist, blist) M_CROSSI_MAP1(f, alist, blist)
#define M_CROSSI_MAP1(f, alist, blist) M_C(M_CROSSI_MAP1_, M_NARGS alist)(f, blist, M_ID alist)
/* Generated by :
for i in $(seq 1 52) ; do
printf "#define M_CROSSI_MAP1_%d(...) M_CROSSI_MAP1_%db(__VA_ARGS__)\n" $i $i ;
printf "#define M_CROSSI_MAP1_%db(f, blist" $i ; for j in $(seq 1 $i) ; do printf ", a%d" $j ; done ; printf ") " ;
for j in $(seq 1 $i) ; do printf "M_MAP2(f, a%d, M_ID blist) " $j; done ;
printf "\n" ;
done
*/
#define M_CROSSI_MAP1_1(...) M_CROSSI_MAP1_1b(__VA_ARGS__)
#define M_CROSSI_MAP1_1b(f, blist, a1) M_MAP2(f, a1, M_ID blist)
#define M_CROSSI_MAP1_2(...) M_CROSSI_MAP1_2b(__VA_ARGS__)
#define M_CROSSI_MAP1_2b(f, blist, a1, a2) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist)
#define M_CROSSI_MAP1_3(...) M_CROSSI_MAP1_3b(__VA_ARGS__)
#define M_CROSSI_MAP1_3b(f, blist, a1, a2, a3) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist)
#define M_CROSSI_MAP1_4(...) M_CROSSI_MAP1_4b(__VA_ARGS__)
#define M_CROSSI_MAP1_4b(f, blist, a1, a2, a3, a4) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist)
#define M_CROSSI_MAP1_5(...) M_CROSSI_MAP1_5b(__VA_ARGS__)
#define M_CROSSI_MAP1_5b(f, blist, a1, a2, a3, a4, a5) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist)
#define M_CROSSI_MAP1_6(...) M_CROSSI_MAP1_6b(__VA_ARGS__)
#define M_CROSSI_MAP1_6b(f, blist, a1, a2, a3, a4, a5, a6) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist)
#define M_CROSSI_MAP1_7(...) M_CROSSI_MAP1_7b(__VA_ARGS__)
#define M_CROSSI_MAP1_7b(f, blist, a1, a2, a3, a4, a5, a6, a7) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist)
#define M_CROSSI_MAP1_8(...) M_CROSSI_MAP1_8b(__VA_ARGS__)
#define M_CROSSI_MAP1_8b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist)
#define M_CROSSI_MAP1_9(...) M_CROSSI_MAP1_9b(__VA_ARGS__)
#define M_CROSSI_MAP1_9b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist)
#define M_CROSSI_MAP1_10(...) M_CROSSI_MAP1_10b(__VA_ARGS__)
#define M_CROSSI_MAP1_10b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist)
#define M_CROSSI_MAP1_11(...) M_CROSSI_MAP1_11b(__VA_ARGS__)
#define M_CROSSI_MAP1_11b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist)
#define M_CROSSI_MAP1_12(...) M_CROSSI_MAP1_12b(__VA_ARGS__)
#define M_CROSSI_MAP1_12b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist)
#define M_CROSSI_MAP1_13(...) M_CROSSI_MAP1_13b(__VA_ARGS__)
#define M_CROSSI_MAP1_13b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist)
#define M_CROSSI_MAP1_14(...) M_CROSSI_MAP1_14b(__VA_ARGS__)
#define M_CROSSI_MAP1_14b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist)
#define M_CROSSI_MAP1_15(...) M_CROSSI_MAP1_15b(__VA_ARGS__)
#define M_CROSSI_MAP1_15b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist)
#define M_CROSSI_MAP1_16(...) M_CROSSI_MAP1_16b(__VA_ARGS__)
#define M_CROSSI_MAP1_16b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist)
#define M_CROSSI_MAP1_17(...) M_CROSSI_MAP1_17b(__VA_ARGS__)
#define M_CROSSI_MAP1_17b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist)
#define M_CROSSI_MAP1_18(...) M_CROSSI_MAP1_18b(__VA_ARGS__)
#define M_CROSSI_MAP1_18b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist)
#define M_CROSSI_MAP1_19(...) M_CROSSI_MAP1_19b(__VA_ARGS__)
#define M_CROSSI_MAP1_19b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist)
#define M_CROSSI_MAP1_20(...) M_CROSSI_MAP1_20b(__VA_ARGS__)
#define M_CROSSI_MAP1_20b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist)
#define M_CROSSI_MAP1_21(...) M_CROSSI_MAP1_21b(__VA_ARGS__)
#define M_CROSSI_MAP1_21b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist)
#define M_CROSSI_MAP1_22(...) M_CROSSI_MAP1_22b(__VA_ARGS__)
#define M_CROSSI_MAP1_22b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist)
#define M_CROSSI_MAP1_23(...) M_CROSSI_MAP1_23b(__VA_ARGS__)
#define M_CROSSI_MAP1_23b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist)
#define M_CROSSI_MAP1_24(...) M_CROSSI_MAP1_24b(__VA_ARGS__)
#define M_CROSSI_MAP1_24b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist)
#define M_CROSSI_MAP1_25(...) M_CROSSI_MAP1_25b(__VA_ARGS__)
#define M_CROSSI_MAP1_25b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist)
#define M_CROSSI_MAP1_26(...) M_CROSSI_MAP1_26b(__VA_ARGS__)
#define M_CROSSI_MAP1_26b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist)
#define M_CROSSI_MAP1_27(...) M_CROSSI_MAP1_27b(__VA_ARGS__)
#define M_CROSSI_MAP1_27b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist)
#define M_CROSSI_MAP1_28(...) M_CROSSI_MAP1_28b(__VA_ARGS__)
#define M_CROSSI_MAP1_28b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist)
#define M_CROSSI_MAP1_29(...) M_CROSSI_MAP1_29b(__VA_ARGS__)
#define M_CROSSI_MAP1_29b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist)
#define M_CROSSI_MAP1_30(...) M_CROSSI_MAP1_30b(__VA_ARGS__)
#define M_CROSSI_MAP1_30b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist)
#define M_CROSSI_MAP1_31(...) M_CROSSI_MAP1_31b(__VA_ARGS__)
#define M_CROSSI_MAP1_31b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist)
#define M_CROSSI_MAP1_32(...) M_CROSSI_MAP1_32b(__VA_ARGS__)
#define M_CROSSI_MAP1_32b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist)
#define M_CROSSI_MAP1_33(...) M_CROSSI_MAP1_33b(__VA_ARGS__)
#define M_CROSSI_MAP1_33b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist)
#define M_CROSSI_MAP1_34(...) M_CROSSI_MAP1_34b(__VA_ARGS__)
#define M_CROSSI_MAP1_34b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist)
#define M_CROSSI_MAP1_35(...) M_CROSSI_MAP1_35b(__VA_ARGS__)
#define M_CROSSI_MAP1_35b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist)
#define M_CROSSI_MAP1_36(...) M_CROSSI_MAP1_36b(__VA_ARGS__)
#define M_CROSSI_MAP1_36b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist)
#define M_CROSSI_MAP1_37(...) M_CROSSI_MAP1_37b(__VA_ARGS__)
#define M_CROSSI_MAP1_37b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist)
#define M_CROSSI_MAP1_38(...) M_CROSSI_MAP1_38b(__VA_ARGS__)
#define M_CROSSI_MAP1_38b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist)
#define M_CROSSI_MAP1_39(...) M_CROSSI_MAP1_39b(__VA_ARGS__)
#define M_CROSSI_MAP1_39b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist)
#define M_CROSSI_MAP1_40(...) M_CROSSI_MAP1_40b(__VA_ARGS__)
#define M_CROSSI_MAP1_40b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist)
#define M_CROSSI_MAP1_41(...) M_CROSSI_MAP1_41b(__VA_ARGS__)
#define M_CROSSI_MAP1_41b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist)
#define M_CROSSI_MAP1_42(...) M_CROSSI_MAP1_42b(__VA_ARGS__)
#define M_CROSSI_MAP1_42b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist)
#define M_CROSSI_MAP1_43(...) M_CROSSI_MAP1_43b(__VA_ARGS__)
#define M_CROSSI_MAP1_43b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist)
#define M_CROSSI_MAP1_44(...) M_CROSSI_MAP1_44b(__VA_ARGS__)
#define M_CROSSI_MAP1_44b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist)
#define M_CROSSI_MAP1_45(...) M_CROSSI_MAP1_45b(__VA_ARGS__)
#define M_CROSSI_MAP1_45b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist)
#define M_CROSSI_MAP1_46(...) M_CROSSI_MAP1_46b(__VA_ARGS__)
#define M_CROSSI_MAP1_46b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist) M_MAP2(f, a46, M_ID blist)
#define M_CROSSI_MAP1_47(...) M_CROSSI_MAP1_47b(__VA_ARGS__)
#define M_CROSSI_MAP1_47b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist) M_MAP2(f, a46, M_ID blist) M_MAP2(f, a47, M_ID blist)
#define M_CROSSI_MAP1_48(...) M_CROSSI_MAP1_48b(__VA_ARGS__)
#define M_CROSSI_MAP1_48b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist) M_MAP2(f, a46, M_ID blist) M_MAP2(f, a47, M_ID blist) M_MAP2(f, a48, M_ID blist)
#define M_CROSSI_MAP1_49(...) M_CROSSI_MAP1_49b(__VA_ARGS__)
#define M_CROSSI_MAP1_49b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist) M_MAP2(f, a46, M_ID blist) M_MAP2(f, a47, M_ID blist) M_MAP2(f, a48, M_ID blist) M_MAP2(f, a49, M_ID blist)
#define M_CROSSI_MAP1_50(...) M_CROSSI_MAP1_50b(__VA_ARGS__)
#define M_CROSSI_MAP1_50b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist) M_MAP2(f, a46, M_ID blist) M_MAP2(f, a47, M_ID blist) M_MAP2(f, a48, M_ID blist) M_MAP2(f, a49, M_ID blist) M_MAP2(f, a50, M_ID blist)
#define M_CROSSI_MAP1_51(...) M_CROSSI_MAP1_51b(__VA_ARGS__)
#define M_CROSSI_MAP1_51b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist) M_MAP2(f, a46, M_ID blist) M_MAP2(f, a47, M_ID blist) M_MAP2(f, a48, M_ID blist) M_MAP2(f, a49, M_ID blist) M_MAP2(f, a50, M_ID blist) M_MAP2(f, a51, M_ID blist)
#define M_CROSSI_MAP1_52(...) M_CROSSI_MAP1_52b(__VA_ARGS__)
#define M_CROSSI_MAP1_52b(f, blist, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52) M_MAP2(f, a1, M_ID blist) M_MAP2(f, a2, M_ID blist) M_MAP2(f, a3, M_ID blist) M_MAP2(f, a4, M_ID blist) M_MAP2(f, a5, M_ID blist) M_MAP2(f, a6, M_ID blist) M_MAP2(f, a7, M_ID blist) M_MAP2(f, a8, M_ID blist) M_MAP2(f, a9, M_ID blist) M_MAP2(f, a10, M_ID blist) M_MAP2(f, a11, M_ID blist) M_MAP2(f, a12, M_ID blist) M_MAP2(f, a13, M_ID blist) M_MAP2(f, a14, M_ID blist) M_MAP2(f, a15, M_ID blist) M_MAP2(f, a16, M_ID blist) M_MAP2(f, a17, M_ID blist) M_MAP2(f, a18, M_ID blist) M_MAP2(f, a19, M_ID blist) M_MAP2(f, a20, M_ID blist) M_MAP2(f, a21, M_ID blist) M_MAP2(f, a22, M_ID blist) M_MAP2(f, a23, M_ID blist) M_MAP2(f, a24, M_ID blist) M_MAP2(f, a25, M_ID blist) M_MAP2(f, a26, M_ID blist) M_MAP2(f, a27, M_ID blist) M_MAP2(f, a28, M_ID blist) M_MAP2(f, a29, M_ID blist) M_MAP2(f, a30, M_ID blist) M_MAP2(f, a31, M_ID blist) M_MAP2(f, a32, M_ID blist) M_MAP2(f, a33, M_ID blist) M_MAP2(f, a34, M_ID blist) M_MAP2(f, a35, M_ID blist) M_MAP2(f, a36, M_ID blist) M_MAP2(f, a37, M_ID blist) M_MAP2(f, a38, M_ID blist) M_MAP2(f, a39, M_ID blist) M_MAP2(f, a40, M_ID blist) M_MAP2(f, a41, M_ID blist) M_MAP2(f, a42, M_ID blist) M_MAP2(f, a43, M_ID blist) M_MAP2(f, a44, M_ID blist) M_MAP2(f, a45, M_ID blist) M_MAP2(f, a46, M_ID blist) M_MAP2(f, a47, M_ID blist) M_MAP2(f, a48, M_ID blist) M_MAP2(f, a49, M_ID blist) M_MAP2(f, a50, M_ID blist) M_MAP2(f, a51, M_ID blist) M_MAP2(f, a52, M_ID blist)
/* Sequence of numerical
Example:
+6
View File
@@ -270,6 +270,12 @@ static void test_map(void)
assert (M_MAP3 (f3, 2, 2) 0 == 4);
assert (M_MAP3 (f3, 3, 2, 4) 0 == 30);
assert (M_MAP3 (f3, 4, 2, 4, 6) 0 == 8+32+12*6);
assert (M_CROSS_MAP(f2, (1), (2)) 0 == 1*2);
assert (M_CROSS_MAP(f2, (1), (2, 3)) 0 == 1*2+1*3);
assert (M_CROSS_MAP(f2, (1, 3), (2)) 0 == 1*2+3*2);
assert (M_CROSS_MAP(f2, (1, 3), (2,4)) 0 == 1*2 + 1*4 + 3*2 + 3*4);
assert (M_CROSS_MAP(f2, (1, 3, 5), (2,4)) 0 == 1*2 + 1*4 + 3*2 + 3*4 + 5*2 + 5*4);
}
static void test_let(void)