В вашей формуле, судя по описанию, фигурируют только данные из одной матрицы. Как вы тогда две сравниваете? По вычисленным по формуле значениям? Не могу точно утверждать, но формула выглядит странно.
Если вы для каждой матрицы считаете среднее и дисперсию, не проще ли сделать сумму квадратов разностей A_ij-B_ij с подходящей нормировкой? Или в общем виде ||A-B||/(|A|*|B|). А норму можно выбрать по вкусу: bit.ly/fW06Eb
Ничто не мешает это учесть. Берёте одну из вершин треугольника за рефер, рассчитываете координаты остальных в относительных метрах и дальше по формулам.
gcov пришлось отбросить из-за поддержки только gcc, хотя это и не самый большой минус.
Поиск в интернете подсказал как наиболее подходящие варианты: BullsEye, TestCocoon, COVTOOL, xCover, Testwell CTC++, либо выпиливать часть CppUnit.
Из них бесплатны только TestCocoon, Covtool и xCover, но они уж больно реждко обновляются, да и собрать сходу получилось только Covtool, остальные требуют напильника.
Если вы для каждой матрицы считаете среднее и дисперсию, не проще ли сделать сумму квадратов разностей A_ij-B_ij с подходящей нормировкой? Или в общем виде ||A-B||/(|A|*|B|). А норму можно выбрать по вкусу: bit.ly/fW06Eb