diff --git a/tools/footprint/linear-regression.awk b/tools/footprint/linear-regression.awk index 1d16b06ef0c2..c82ed13bd056 100755 --- a/tools/footprint/linear-regression.awk +++ b/tools/footprint/linear-regression.awk @@ -29,21 +29,58 @@ # the provisions above, a recipient may use your version of this # file under either the MPL or the GPL. # + +function regress(DATAPOINTS,SX,SY,SXY,SX2) +{ + b1 = (DATAPOINTS * SXY - SX * SY) / (DATAPOINTS * SX2 - SX * SX); + b0 = (SY - b1 * SX ) / DATAPOINTS; + return b1 " * x + " b0; +} + BEGIN { if (!Skip) Skip = 0; + if (Interval) + { + Count = 0; + IntervalCount = 0; + } } NR>Skip { - sx += $1; - sy += $2; - sxy += $1 * $2; - sx2 += $1 * $1; -# print NR " " sx " " sy " " sxy " " sx2 + sx += $1; + sy += $2; + sxy += $1 * $2; + sx2 += $1 * $1; + #print NR " " sx " " sy " " sxy " " sx2 + + if (Interval) + { + if(Count == Interval-1) + { + IntervalCount += 1; + + print NR-Count, "-", NR, ": ", regress(Count,isx,isy,isxy,isx2); + + Count = 0; + isx = 0; + isy = 0; + isxy = 0; + isx2 = 0; + } + else + { + Count += 1; + isx += $1; + isy += $2; + isxy += $1 * $2; + isx2 += $1 * $1; + } + } } END { - DataPoints = NR - Skip; - b1 = (DataPoints * sxy - sx * sy) / (DataPoints * sx2 - sx * sx); - b0 = (sy - b1 * sx ) / DataPoints; - print b1, "* x +", b0; + if(Interval) { + print NR-Count, "-", NR, ": ", regress(Count,isx,isy,isxy,isx2); + } + print regress(NR-Skip, sx, sy, sxy, sx2); }