Re: Hacking with Winograd
Posted: Wed Oct 17, 2018 7:04 pm
I still forgot to rename some variables. For instance first branch should be
Code: Select all
if (l >= 0)
{
unchecked
{
var sliceRow0 = slice.Value[l];
var weightRow = w[0];
var w00 = weightRow[0];
var w01 = weightRow[1];
var w02 = weightRow[2];
var winoGradfactorPair0 = winoGradFactors[0][0];
var win01 = winoGradfactorPair0.Item1;
var win02 = winoGradfactorPair0.Item2;
var u00 = (m >= 0) ? sliceRow0[m] : 0;
var u01 = sliceRow0[m + 1];
var u02 = sliceRow0[m + 2];
var u03 = sliceRow0[m + 3];
var u04 = sliceRow0[m + 4];
var u05 = (m + 5 < startHeight) ? sliceRow0[m + 5] : 0;
var m01 = (u00 - u02) * w00;
var m02 = (u01 + u02) * win01;
var m03 = (u02 - u01) * win02;
var m04 = (u01 - u03) * w02;
var m31 = (u02 - u04) * w00;
var m32 = (u03 + u04) * win01;
var m33 = (u04 - u03) * win02;
var m34 = (u03 - u05) * w02;
sum1 += m01 + m02 + m03;
sum2 += m02 - m03 - m04;
sum3 += m31 + m32 + m33;
sum4 += m32 - m33 - m34;
Debug.Assert(Math.Abs(m01 + m02 + m03 - (u00 * w00 + u01 * w01 + u02 * w02)) <= 1E-7);
Debug.Assert(Math.Abs(m02 - m03 - m04 - (u01 * w00 + u02 * w01 + u03 * w02)) <= 1E-7);
Debug.Assert(Math.Abs(m31 + m32 + m33 - (u02 * w00 + u03 * w01 + u04 * w02)) <= 1E-7);
Debug.Assert(Math.Abs(m32 - m33 - m34 - (u03 * w00 + u04 * w01 + u05 * w02)) <= 1E-7);
}
}