struct v2 { double el[2]; }; struct v4 { struct v2 el[2]; }; struct m22 { double el[2][2]; }; struct m24 { struct m22 el[2]; }; struct m42 { struct m22 el[2]; }; struct m44 { struct m22 A; struct m22 B; struct m22 C; struct m22 D; }; struct triblock22 { struct v2 *c; struct m22 *a; struct v2 *b; }; struct triblock24 { struct m22 *c; struct m24 *a; struct m22 *b; }; struct triblock44 { struct m42 *c; struct m44 *a; struct m42 *b; }; struct collmat { struct triblock22 *CF; struct triblock24 *C; struct triblock24 *CL; struct triblock22 *AF; struct triblock44 *A; struct triblock22 *AL; struct triblock24 *BF; struct triblock24 *B; struct triblock22 *BL; }; struct first_proc_collmat { struct triblock22 *CF; struct triblock24 *C; struct triblock22 *AF; struct triblock44 *A; struct triblock22 *AL; struct triblock24 *BF; struct triblock24 *B; }; struct last_proc_collmat { struct triblock24 *C; struct triblock24 *CL; struct triblock44 *A; struct triblock24 *B; struct triblock22 *BL; }; struct proc_collmat { struct triblock24 *C; struct triblock44 *A; struct triblock24 *B; }; struct kvec2 { struct v2 *el; }; struct kvec4 { struct v4 *el; }; struct collvec { struct kvec2 *F; struct kvec4 *M; struct kvec2 *L; }; struct mat_collvec { struct collvec *el; }; struct mat_kvec4 { struct kvec4 *el; }; struct gvec2 { struct v2 *el; }; struct gvec4 { struct m42 *el; };