| 1764 | } |
| 1765 | |
| 1766 | func errorRate(baselineResults, testResults traceql.SeriesSet) (err float64, worstErr float64) { |
| 1767 | for k, baseline := range baselineResults { |
| 1768 | if test, ok := testResults[k]; ok { |
| 1769 | for i := 0; i < len(baseline.Values) && i < len(test.Values); i++ { |
| 1770 | err += (baseline.Values[i] - test.Values[i]) * (baseline.Values[i] - test.Values[i]) |
| 1771 | ePct := math.Abs(baseline.Values[i]-test.Values[i]) / baseline.Values[i] |
| 1772 | if ePct > worstErr { |
| 1773 | worstErr = ePct |
| 1774 | } |
| 1775 | } |
| 1776 | } |
| 1777 | } |
| 1778 | return |
| 1779 | } |
| 1780 | |
| 1781 | func ptr[T any](v T) *T { |
| 1782 | return &v |