+ 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("%.8f", pvalue(a, b)), check.Equals, "0.31731051")
+
+ for _, sz := range []int{128, 1024, 4096, 16384} {
+ c.Logf("sz = %d", sz)
+ a = make([]bool, sz)
+ b = make([]bool, sz)
+ c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "1.00000000")
+ for i := 0; i < len(a)/23; i++ {
+ a[i] = true
+ }
+ for i := 0; i < len(a)/2; i++ {
+ b[i] = true
+ }
+ c.Logf("pvalue(a,b) == %e", pvalue(a, b))
+ c.Logf("pvalue(b,a) == %e", pvalue(b, a))
+ c.Check(pvalue(a, b), check.Not(check.Equals), float64(0))
+ c.Check(pvalue(b, a), check.Not(check.Equals), float64(0))
+ }