Fix Χ² calculation.
[lightning.git] / chisquare_test.go
index 3a59671c407d5ca70f6584b5e85de32e4237c443..c9db0c6710f0a9d7b9070daeb848516e3f7fd295 100644 (file)
@@ -24,12 +24,28 @@ func (s *pvalueSuite) TestPvalue(c *check.C) {
        for i := 25; i < 31; i++ {
                a[i] = true
        }
-       for i := 31; i < 39; i++ {
+       for i := 31; i < 40; i++ {
                b[i] = true
        }
-       c.Check(fmt.Sprintf("%.7f", pvalue(a, b)), check.Equals, "0.0006297")
+       c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "0.04147853")
+
+       a = make([]bool, 54)
+       b = make([]bool, 54)
+       for i := 0; i < 25; i++ {
+               a[i] = true
+               b[i] = true
+       }
+       c.Check(fmt.Sprintf("%.9f", pvalue(a, b)), check.Equals, "0.000000072")
+       for i := range a {
+               a[i] = !a[i]
+       }
+       c.Check(fmt.Sprintf("%.9f", pvalue(a, b)), check.Equals, "0.000000573")
+
+       a = []bool{true, true, true, false, true, false, false, false}
+       b = []bool{true, true, true, true, false, false, false, false}
+       c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "0.31731051")
        for i := range a {
                a[i] = !a[i]
        }
-       c.Check(fmt.Sprintf("%.7f", pvalue(a, b)), check.Equals, "0.0006297")
+       c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "0.31731051")
 }