All expressions have to have the same number of variables. They do not need to appear in the same spot, they only need to be labled x1 through xn. However, they can have a different number of parameters. These can also appear at any given point and must be labled p1 through pn. Parameters and variables can not have the label x0 or p0.
The Matrix is being read in column-major order. This means that each column corresponds to a set of variables to use for the expressions. Row 1 through row n are then used to retrieve the values for x1 through xn.
Every inner vector of the parameters corresponds to an expression. So the i-th inner vector stores the parameter values for the i-th expression. Parameter pi corresponds to the value stored at index i of the inner vector.
The figure below demonstrates how the input data is structured and how they work together. Note that all x1..xn and p1..pn are the markers for the variables and parameters used in the expressions and can have an arbitrary value. Not every p1 needs to have the same value and not every x1 needs to have the ame value.
![Explanation of the input data](images/input-explanation.png)