Classes var_lens_permu_body and con_lens_permu_body appear to rearrange the components of the underlying matrix according to a permutation of one subscript. The form does not appear to be changed. This example permutes the first subscript, and then the last subscript:
#include "SOME_DIRECTORY/mat_gen_dim.h" using namespace mat_gen_dim; int main () { permu const per0 {1, 2, 0}; permu const per2 {2, 1, 0, 3}; form const frm_a {blt{2,5},blt{1,3},blt{4,8}}; cout << "\nfrm_a: " << frm_a; var_matrix<double> mat_a {sub_matrix_linear (frm_a,5.0)}; cout << "\nmat_a: " << mat_a; var_lens_permu_body<double> aof_b {mat_a, per0, 0}; cout << "\naof_b: " << aof_b; con_lens_permu_body<double> aof_c {aof_b, per2, 2}; cout << "\naof_c: " << aof_c; cout << "\nmat_a (3 1 6) = " << mat_a.get (vec_si {3,1,6}); cout << "\naof_b (2 1 6) = " << aof_b.get (vec_si {2,1,6}); cout << "\naof_c (2 1 4) = " << aof_c.get (vec_si {2,1,4}); return 0; }yields this result:
frm_a: ( 2 =< 5, 1 =< 3, 4 =< 8 ) mat_a: ( 2 1 4 ) = 5.214 ( 2 1 5 ) = 5.215 ( 2 1 6 ) = 5.216 ( 2 1 7 ) = 5.217 ( 2 2 4 ) = 5.224 ( 2 2 5 ) = 5.225 ( 2 2 6 ) = 5.226 ( 2 2 7 ) = 5.227 ( 3 1 4 ) = 5.314 ( 3 1 5 ) = 5.315 ( 3 1 6 ) = 5.316 ( 3 1 7 ) = 5.317 ( 3 2 4 ) = 5.324 ( 3 2 5 ) = 5.325 ( 3 2 6 ) = 5.326 ( 3 2 7 ) = 5.327 ( 4 1 4 ) = 5.414 ( 4 1 5 ) = 5.415 ( 4 1 6 ) = 5.416 ( 4 1 7 ) = 5.417 ( 4 2 4 ) = 5.424 ( 4 2 5 ) = 5.425 ( 4 2 6 ) = 5.426 ( 4 2 7 ) = 5.427 aof_b: ( 2 1 4 ) = 5.314 ( 2 1 5 ) = 5.315 ( 2 1 6 ) = 5.316 ( 2 1 7 ) = 5.317 ( 2 2 4 ) = 5.324 ( 2 2 5 ) = 5.325 ( 2 2 6 ) = 5.326 ( 2 2 7 ) = 5.327 ( 3 1 4 ) = 5.414 ( 3 1 5 ) = 5.415 ( 3 1 6 ) = 5.416 ( 3 1 7 ) = 5.417 ( 3 2 4 ) = 5.424 ( 3 2 5 ) = 5.425 ( 3 2 6 ) = 5.426 ( 3 2 7 ) = 5.427 ( 4 1 4 ) = 5.214 ( 4 1 5 ) = 5.215 ( 4 1 6 ) = 5.216 ( 4 1 7 ) = 5.217 ( 4 2 4 ) = 5.224 ( 4 2 5 ) = 5.225 ( 4 2 6 ) = 5.226 ( 4 2 7 ) = 5.227 aof_c: ( 2 1 4 ) = 5.316 ( 2 1 5 ) = 5.315 ( 2 1 6 ) = 5.314 ( 2 1 7 ) = 5.317 ( 2 2 4 ) = 5.326 ( 2 2 5 ) = 5.325 ( 2 2 6 ) = 5.324 ( 2 2 7 ) = 5.327 ( 3 1 4 ) = 5.416 ( 3 1 5 ) = 5.415 ( 3 1 6 ) = 5.414 ( 3 1 7 ) = 5.417 ( 3 2 4 ) = 5.426 ( 3 2 5 ) = 5.425 ( 3 2 6 ) = 5.424 ( 3 2 7 ) = 5.427 ( 4 1 4 ) = 5.216 ( 4 1 5 ) = 5.215 ( 4 1 6 ) = 5.214 ( 4 1 7 ) = 5.217 ( 4 2 4 ) = 5.226 ( 4 2 5 ) = 5.225 ( 4 2 6 ) = 5.224 ( 4 2 7 ) = 5.227 mat_a (3 1 6) = 5.316 aof_b (2 1 6) = 5.316 aof_c (2 1 4) = 5.316