From bc246e8d16b948037c2ac35668c468215b35e373 Mon Sep 17 00:00:00 2001 From: upstream Date: Fri, 4 Sep 2026 02:56:39 +0200 Subject: [PATCH] Upstream montanaflynn/stats state of the touched files before e61f9a13db --- quartile.go | 33 +++++++-------------------------- quartile_test.go | 27 --------------------------- 2 files changed, 7 insertions(+), 53 deletions(-) diff --git a/quartile.go b/quartile.go index e36d52d..40bbf6e 100644 --- a/quartile.go +++ b/quartile.go @@ -32,20 +32,10 @@ func Quartile(input Float64Data) (Quartiles, error) { c2 = c1 + 1 } - // Empty halves make Median return ErrEmptyInput; propagate it instead of - // returning NaN quartiles. - Q1, err := Median(copy[:c1]) - if err != nil { - return Quartiles{}, err - } - Q2, err := Median(copy) - if err != nil { - return Quartiles{}, err - } - Q3, err := Median(copy[c2:]) - if err != nil { - return Quartiles{}, err - } + // Find the Medians with the cutoff points + Q1, _ := Median(copy[:c1]) + Q2, _ := Median(copy) + Q3, _ := Median(copy[c2:]) return Quartiles{Q1, Q2, Q3}, nil @@ -56,10 +46,7 @@ func InterQuartileRange(input Float64Data) (float64, error) { if input.Len() == 0 { return math.NaN(), EmptyInputErr } - qs, err := Quartile(input) - if err != nil { - return math.NaN(), err - } + qs, _ := Quartile(input) iqr := qs.Q3 - qs.Q1 return iqr, nil } @@ -69,10 +56,7 @@ func Midhinge(input Float64Data) (float64, error) { if input.Len() == 0 { return math.NaN(), EmptyInputErr } - qs, err := Quartile(input) - if err != nil { - return math.NaN(), err - } + qs, _ := Quartile(input) mh := (qs.Q1 + qs.Q3) / 2 return mh, nil } @@ -84,10 +68,7 @@ func Trimean(input Float64Data) (float64, error) { } c := sortedCopy(input) - q, err := Quartile(c) - if err != nil { - return math.NaN(), err - } + q, _ := Quartile(c) return (q.Q1 + (q.Q2 * 2) + q.Q3) / 4, nil } diff --git a/quartile_test.go b/quartile_test.go index 9f4bf8a..93d524e 100644 --- a/quartile_test.go +++ b/quartile_test.go @@ -41,18 +41,6 @@ func TestQuartile(t *testing.T) { } } -func TestQuartileSingleElement(t *testing.T) { - // A single element has no halves, so Quartile must error rather than - // return NaN with a nil error. - quartiles, err := stats.Quartile([]float64{1}) - if err == nil { - t.Errorf("Single element slice should have returned an error") - } - if quartiles != (stats.Quartiles{}) { - t.Errorf("Errored result should be the zero Quartiles value, got %+v", quartiles) - } -} - func TestInterQuartileRange(t *testing.T) { s1 := []float64{102, 104, 105, 107, 108, 109, 110, 112, 115, 116, 118} iqr, _ := stats.InterQuartileRange(s1) @@ -65,11 +53,6 @@ func TestInterQuartileRange(t *testing.T) { if err == nil { t.Errorf("Empty slice should have returned an error") } - - _, err = stats.InterQuartileRange([]float64{1}) - if err == nil { - t.Errorf("Single element slice should have returned an error") - } } func TestMidhinge(t *testing.T) { @@ -84,11 +67,6 @@ func TestMidhinge(t *testing.T) { if err == nil { t.Errorf("Empty slice should have returned an error") } - - _, err = stats.Midhinge([]float64{1}) - if err == nil { - t.Errorf("Single element slice should have returned an error") - } } func TestTrimean(t *testing.T) { @@ -103,9 +81,4 @@ func TestTrimean(t *testing.T) { if err == nil { t.Errorf("Empty slice should have returned an error") } - - _, err = stats.Trimean([]float64{1}) - if err == nil { - t.Errorf("Single element slice should have returned an error") - } }