I'll conclude also, it has been an interesting topic.
But I'll go out with a blaze, all you guys have been beautifying the final equation, my final macros are all but beautifull maths.
This is an example, the 20 dimensions are in recursive macros, the example is degree 8.
(I get an error of too many dimensions from the compiler if I go higher than eight)
Code: Select all
#define ub ubound
#define lb lbound
#define _r(arr,n) (ub(arr,n)-lb(arr,n)+1)
#define d1(a,n1) (n1-lb(a,1))
#define d2(a,n1,n2) (_r(a,2)*d1(a,n1)+(n2-lb(a,2)))
#define d3(a,n1,n2,n3) (_r(a,3)*d2(a,n1,n2)+(n3-lb(a,3)))
#define d4(a,n1,n2,n3,n4) (_r(a,4)*d3(a,n1,n2,n3)+(n4-lb(a,4)))
#define d5(a,n1,n2,n3,n4,n5) (_r(a,5)*d4(a,n1,n2,n3,n4)+(n5-lb(a,5)))
#define d6(a,n1,n2,n3,n4,n5,n6) (_r(a,6)*d5(a,n1,n2,n3,n4,n5)+(n6-lb(a,6)))
#define d7(a,n1,n2,n3,n4,n5,n6,n7) (_r(a,7)*d6(a,n1,n2,n3,n4,n5,n6)+(n7-lb(a,7)))
#define d8(a,n1,n2,n3,n4,n5,n6,n7,n8) (_r(a,8)*d7(a,n1,n2,n3,n4,n5,n6,n7)+(n8-lb(a,8)))
#define d9(a,n1,n2,n3,n4,n5,n6,n7,n8,n9) (_r(a,9)*d8(a,n1,n2,n3,n4,n5,n6,n7,n8)+(n9-lb(a,9)))
#define d10(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10) (_r(a,10)*d9(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,)+(n10-lb(a,10)))
#define d11(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11) (_r(a,11)*d10(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,)+(n11-lb(a,11)))
#define d12(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12) (_r(a,12)*d11(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,)+(n12-lb(a,12)))
#define d13(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13) (_r(a,13)*d12(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,)+(n13-lb(a,13)))
#define d14(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14) (_r(a,14)*d13(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,)+(n14-lb(a,14)))
#define d15(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15) (_r(a,15)*d14(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,)+(n15-lb(a,15)))
#define d16(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16) (_r(a,16)*d15(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,)+(n16-lb(a,16)))
#define d17(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17) (_r(a,17)*d16(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,)+(n17-lb(a,17)))
#define d18(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18) (_r(a,18)*d17(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,)+(n18-lb(a,18)))
#define d19(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19) (_r(a,19)*d18(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,)+(n19-lb(a,19)))
#define d20(a,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20) (_r(a,20)*d19(a,,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,)+(n20-lb(a,20)))
dim shared as byte a(1 to 6,3 to 7,4 to 8,2 to 6,3 to 7,4 to 8,2 to 5,4 to 9)
print d8(a,2,4,5,3,5,5,5,6)
print @a(2,4,5,3,5,5,5,6)-@a(1,3,4,2,3,4,2,4)
sleep