It can be helpful to write up a spec of exactly what you want for types of input.
Presumably:
f.value(number) – you’d like an array consisting of each 1…16 element times the number.
f.value(array) – an array of arrays, consisting of each array element times 1…16… that is, the two arrays would be multiplied into a table – 1…16 across the top, the input array down the side.
This isn’t convenient to search in the help, but in fact SC does support table-style math ops on arrays.
Go back and take another look at my post: “1…16 across the top, the input array down the side.”
Now look at the expression: f = { |x| x *.t (1..16) }; – so the “across the top” (rows) is the second operand, and “down the side” (columns) is the first operand.
What you’re saying here is that you want 1…16 down the side (columns), and the input array across the top (rows).
And we know that the expression is written in terms of columns *.t rows.
Now… given that, do you think you can adapt the *.t expression on your own?