public MatrixValue Function(ArgumentsValue values)
{
var m = new MatrixValue();
for (var i = 1; i <= values.Length; i++)
{
var sy = m.DimensionY;
var sx = m.DimensionX;
if (values[i] is ScalarValue)
{
var s = (ScalarValue)values[i];
m[sy + 1, sx + 1] = s.Clone();
}
else if (values[i] is MatrixValue)
{
var n = (MatrixValue)values[i];
for (var l = 1; l <= n.DimensionX; l++)
{
for (var k = 1; k <= n.DimensionY; k++)
{
m[sy + k, sx + l] = n[k, l].Clone();
}
}
}
else
{
throw new YAMPArgumentInvalidException(Name, values[i].Header, i);
}
}
return m;
}