The numericValue function returns the numeric value of a string. Here, you’re interpolating numeric values into strings and then finding the numeric value of that string. When you interpolate 10^-12 here’s what you get:
1e-12
which means your numeric value isn’t doing 0-0.000000000001, its calculating 0-1e-12, which computes to:
To avoid this, use simpleFunction and evaluate it at the numeric values.
Generally you only want to use a numericValues to perform calculations if you know that the numbers you’re interpolating are easy numbers to work with.