In some case the Compile's syntax is quite straightforward. Es. for rank 1 e rank 2 tensors:
Quiet[Remove[cf]];
cf = Compile[
{{x, _Real, 1}}
, Total[x]
];
and
Quiet[Remove[cf]];
cf = Compile[
{{x, _Real, 2}}
, Inverse[x]
];
Or, even,
Quiet[Remove[cf]];
cf = Compile[
{{x, _Real, 2}, {y, _Real, 2}}
, Det[x] + Det[y]
];
cf[matrixA, matrixB]
But what if the arguments are intricated ? What is the syntax needed ?
A workaround to circumvent this question was proposed here : Not the most elegant but could you flatten and join and then "unflatten" and separate afterwards ?
Please, can you elucidate the topic and give examples for a function having as argument (all atomic expression are understood Real):
- a matrix of lists
- a matrix of matrices
- a matrix whose element are {x_Real , a matrix }
- a matrix whose element are {x_List , a matrix }
- etc.