import math

slopes = [0.8, 1.0, 1.2]
member_variance = 0.04

def mixture(x, coefficients):
    means = [coefficient * x for coefficient in coefficients]
    mean = sum(means) / len(means)
    between = sum((value - mean) ** 2 for value in means) / len(means)
    total = member_variance + between
    second_moment = sum(member_variance + value ** 2 for value in means)
    second_moment /= len(means)
    assert abs(total - (second_moment - mean ** 2)) < 1e-12
    return mean, between, total

for x in [0.0, 0.5, 2.0]:
    mean, between, total = mixture(x, slopes)
    print(f"x={x:.1f} mean={mean:.3f} within={member_variance:.5f} "
          f"between={between:.5f} total_sd={math.sqrt(total):.3f}")

print("Shared-bias counterexample:")
for x in [0.5, 2.0]:
    mean, between, total = mixture(x, [1.0, 1.0, 1.0])
    truth = x + 0.5 * x * x
    print(f"x={x:.1f} error={abs(truth - mean):.3f} disagreement={between:.3f}")
    assert between == 0.0
print("Mixture second-moment checks: passed")
