mirror of
https://github.com/obra/superpowers.git
synced 2026-05-09 10:39:06 +08:00
rsync of obra/drill@013fcb8b7d into superpowers/evals/, excluding .git/, .venv/, results/, .env/, __pycache__/, *.egg-info/, .private-journal/. The drill repo is unaffected by this commit; archival is a separate manual step after this PR merges. Source SHA recorded at evals/.drill-source-sha for divergence detection.
18 lines
523 B
Python
18 lines
523 B
Python
"""Statistical utilities for drill result analysis."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import math
|
|
|
|
|
|
def wilson_ci(passed: int, total: int, z: float = 1.96) -> tuple[float, float]:
|
|
if total == 0:
|
|
return (0.0, 0.0)
|
|
if passed > total:
|
|
passed = total
|
|
p = passed / total
|
|
denom = 1 + z**2 / total
|
|
center = (p + z**2 / (2 * total)) / denom
|
|
margin = (z / denom) * math.sqrt(p * (1 - p) / total + z**2 / (4 * total**2))
|
|
return (max(0.0, center - margin), min(1.0, center + margin))
|