public Vector ElementMult(Vector target, Vector source)
{
EnsureValid(source, "Source vector");
EnsureValid(target, "Target vector");
EnsureCompatible(target, source);
var v = new Vector(target.NRows);
Parallel.For(0, NRows, i => v[i] = target[i] * source[i]);
return v;
}