private double[] applyInverted(double[] p)
{
double[] result = new double[p.Length];
int delta = 2;
if (p.Length % 3 == 0)
delta = 3;
for (int i = 0; i < p.Length / 2; i += delta)
{
result[i] = p[i] * _inverseMatrix[0, 0] + p[i + 1] * _inverseMatrix[1, 0] + _inverseMatrix[2, 0];
result[i + 1] = p[i] * _inverseMatrix[0, 1] + p[i + 1] * _inverseMatrix[1, 1] + _inverseMatrix[2, 1];
if (delta == 3)
result[i + 2] = p[i + 2];
}
return result;
}