diff --git a/CHANGELOG.md b/CHANGELOG.md index 01af30e..06f6aa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,15 @@ different event from one that moved because it was wrong. ### Fixed +- The site printed some figures one step off from the report, such as a + measured ECE of 0.00125 as `0.0012` where the report prints `0.0013` (#48). + Its formatter meant to round half to even only on an exact tie, but its tie + test compared a product with itself, so every near tie was rounded to even. + It now detects exact binary ties alone (odd multiples of 1/32, the only + values a double can hold exactly on a tie) and otherwise rounds the exact + value, as Python does. The golden fixture gains 890 values on and beside + ties, and near-tie measured values, so the parity check covers them. + - The release workflow gave its whole run a write token while it executed the project's code and every dependency's, expanded the tag, which a manual run takes as free text, straight into shell, and let a tag push and a manual run diff --git a/scripts/check_floor_parity.mjs b/scripts/check_floor_parity.mjs index d94d945..4d4981f 100644 --- a/scripts/check_floor_parity.mjs +++ b/scripts/check_floor_parity.mjs @@ -53,6 +53,16 @@ for (const c of fixture.cases) { console.log(`${label.padEnd(36)} mean ${band.mean.toFixed(6)} p95 ${band.p95.toFixed(6)} ${elapsed}ms`); } +// Every figure on the page is printed through fixed4, which must round as +// Python's "%.4f" does, including on and beside a tie. +const formats = Object.entries(fixture.fixed4); +const misformatted = formats.filter(([value, expected]) => floor.fixed4(Number(value)) !== expected); +for (const [value, expected] of misformatted.slice(0, 5)) { + failures.push(`fixed4(${value}) is ${floor.fixed4(Number(value))}, Python's %.4f prints ${expected}`); +} +if (misformatted.length > 5) failures.push(`...and ${misformatted.length - 5} more fixed4 disagreements`); +console.log(`${formats.length} values formatted, ${misformatted.length} differ from Python's %.4f`); + console.log(`\n${fixture.cases.length} cases, largest difference ${worst.toExponential(2)}, tolerance ${tolerance}`); // The worked example, when a built site is given: the page derives the example diff --git a/scripts/floor_golden.py b/scripts/floor_golden.py index f921285..2129fe2 100644 --- a/scripts/floor_golden.py +++ b/scripts/floor_golden.py @@ -18,6 +18,7 @@ import argparse import json +import math import sys from pathlib import Path from typing import Any @@ -72,7 +73,24 @@ #: Measured ECE values each case's verdict sentence is exported for, so the #: wording, the formatting, and the side of the line a value falls on are all #: checked, not only the floor. -MEASURED = [0.005, 0.02, 0.05, 0.074, 0.1, 0.2] +MEASURED = [0.00125, 0.005, 0.02, 0.03125, 0.05, 0.074, 0.1, 0.2] + + +def _formatting_cases() -> dict[str, str]: + """Values on and beside a rounding tie, with what the report prints for them. + + The report formats with ``:.4f``, which rounds the exact binary value, half + to even. A value that looks like a tie in decimal, such as 0.00125, is not + one in binary and rounds by which side of the tie it really lies on; the + only exact ties are odd multiples of 1/32. The measured values above held + none of either, which is how a formatter that rounded every near tie to + even passed this check. + """ + values = {j / 32 for j in range(1, 64, 2)} + for k in range(0, 2000, 7): + tie = (k + 0.5) / 10000 + values.update({tie, math.nextafter(tie, 0.0), math.nextafter(tie, 1.0)}) + return {repr(value): f"{value:.4f}" for value in sorted(values)} def _pcg64_state(seed: int) -> dict[str, str]: @@ -116,6 +134,7 @@ def build() -> dict[str, Any]: "tolerance": TOLERANCE, "pcg64_initial_state": {"0": _pcg64_state(0), "1": _pcg64_state(1)}, "cases": cases, + "fixed4": _formatting_cases(), } @@ -126,6 +145,8 @@ def _check(fresh: dict[str, Any]) -> list[str]: problems = [] if committed["pcg64_initial_state"] != fresh["pcg64_initial_state"]: problems.append("numpy's seeded PCG64 states differ from the fixture") + if committed.get("fixed4") != fresh["fixed4"]: + problems.append("the :.4f formatting cases differ from the fixture") if len(committed["cases"]) != len(fresh["cases"]): problems.append("the fixture holds a different set of cases; regenerate it") return problems diff --git a/site/floor-golden.json b/site/floor-golden.json index 07603cd..20b0296 100644 --- a/site/floor-golden.json +++ b/site/floor-golden.json @@ -27,8 +27,10 @@ "mean": 0.3800222137274552, "p95": 0.7463609574384902, "statements": { + "0.00125": "ECE 0.0013 over 1 rows (10 equal width bins), against a calibrated-model floor of 0.3800 (95th percentile 0.7464): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 1 rows (10 equal width bins), against a calibrated-model floor of 0.3800 (95th percentile 0.7464): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 1 rows (10 equal width bins), against a calibrated-model floor of 0.3800 (95th percentile 0.7464): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 1 rows (10 equal width bins), against a calibrated-model floor of 0.3800 (95th percentile 0.7464): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 1 rows (10 equal width bins), against a calibrated-model floor of 0.3800 (95th percentile 0.7464): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 1 rows (10 equal width bins), against a calibrated-model floor of 0.3800 (95th percentile 0.7464): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 1 rows (10 equal width bins), against a calibrated-model floor of 0.3800 (95th percentile 0.7464): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -42,8 +44,10 @@ "mean": 0.2847577610479967, "p95": 0.42849582212750476, "statements": { + "0.00125": "ECE 0.0013 over 5 rows (10 equal width bins), against a calibrated-model floor of 0.2848 (95th percentile 0.4285): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 5 rows (10 equal width bins), against a calibrated-model floor of 0.2848 (95th percentile 0.4285): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 5 rows (10 equal width bins), against a calibrated-model floor of 0.2848 (95th percentile 0.4285): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 5 rows (10 equal width bins), against a calibrated-model floor of 0.2848 (95th percentile 0.4285): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 5 rows (10 equal width bins), against a calibrated-model floor of 0.2848 (95th percentile 0.4285): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 5 rows (10 equal width bins), against a calibrated-model floor of 0.2848 (95th percentile 0.4285): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 5 rows (10 equal width bins), against a calibrated-model floor of 0.2848 (95th percentile 0.4285): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -57,8 +61,10 @@ "mean": 0.4039633559253163, "p95": 0.555938114043049, "statements": { + "0.00125": "ECE 0.0013 over 5 rows (20 equal width bins), against a calibrated-model floor of 0.4040 (95th percentile 0.5559): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 5 rows (20 equal width bins), against a calibrated-model floor of 0.4040 (95th percentile 0.5559): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 5 rows (20 equal width bins), against a calibrated-model floor of 0.4040 (95th percentile 0.5559): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 5 rows (20 equal width bins), against a calibrated-model floor of 0.4040 (95th percentile 0.5559): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 5 rows (20 equal width bins), against a calibrated-model floor of 0.4040 (95th percentile 0.5559): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 5 rows (20 equal width bins), against a calibrated-model floor of 0.4040 (95th percentile 0.5559): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 5 rows (20 equal width bins), against a calibrated-model floor of 0.4040 (95th percentile 0.5559): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -72,8 +78,10 @@ "mean": 0.27711625440709153, "p95": 0.39266384333888094, "statements": { + "0.00125": "ECE 0.0013 over 10 rows (50 equal width bins), against a calibrated-model floor of 0.2771 (95th percentile 0.3927): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 10 rows (50 equal width bins), against a calibrated-model floor of 0.2771 (95th percentile 0.3927): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 10 rows (50 equal width bins), against a calibrated-model floor of 0.2771 (95th percentile 0.3927): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 10 rows (50 equal width bins), against a calibrated-model floor of 0.2771 (95th percentile 0.3927): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 10 rows (50 equal width bins), against a calibrated-model floor of 0.2771 (95th percentile 0.3927): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 10 rows (50 equal width bins), against a calibrated-model floor of 0.2771 (95th percentile 0.3927): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 10 rows (50 equal width bins), against a calibrated-model floor of 0.2771 (95th percentile 0.3927): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -87,8 +95,10 @@ "mean": 0.11220229222944622, "p95": 0.16500137870960746, "statements": { + "0.00125": "ECE 0.0013 over 20 rows (10 equal width bins), against a calibrated-model floor of 0.1122 (95th percentile 0.1650): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 20 rows (10 equal width bins), against a calibrated-model floor of 0.1122 (95th percentile 0.1650): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 20 rows (10 equal width bins), against a calibrated-model floor of 0.1122 (95th percentile 0.1650): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 20 rows (10 equal width bins), against a calibrated-model floor of 0.1122 (95th percentile 0.1650): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 20 rows (10 equal width bins), against a calibrated-model floor of 0.1122 (95th percentile 0.1650): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 20 rows (10 equal width bins), against a calibrated-model floor of 0.1122 (95th percentile 0.1650): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 20 rows (10 equal width bins), against a calibrated-model floor of 0.1122 (95th percentile 0.1650): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -102,8 +112,10 @@ "mean": 0.12139637539943718, "p95": 0.20461675476596455, "statements": { + "0.00125": "ECE 0.0013 over 30 rows (5 equal width bins), against a calibrated-model floor of 0.1214 (95th percentile 0.2046): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 30 rows (5 equal width bins), against a calibrated-model floor of 0.1214 (95th percentile 0.2046): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 30 rows (5 equal width bins), against a calibrated-model floor of 0.1214 (95th percentile 0.2046): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 30 rows (5 equal width bins), against a calibrated-model floor of 0.1214 (95th percentile 0.2046): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 30 rows (5 equal width bins), against a calibrated-model floor of 0.1214 (95th percentile 0.2046): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 30 rows (5 equal width bins), against a calibrated-model floor of 0.1214 (95th percentile 0.2046): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 30 rows (5 equal width bins), against a calibrated-model floor of 0.1214 (95th percentile 0.2046): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -117,8 +129,10 @@ "mean": 0.13313113466264428, "p95": 0.18497730704057386, "statements": { + "0.00125": "ECE 0.0013 over 50 rows (15 equal width bins), against a calibrated-model floor of 0.1331 (95th percentile 0.1850): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 50 rows (15 equal width bins), against a calibrated-model floor of 0.1331 (95th percentile 0.1850): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 50 rows (15 equal width bins), against a calibrated-model floor of 0.1331 (95th percentile 0.1850): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 50 rows (15 equal width bins), against a calibrated-model floor of 0.1331 (95th percentile 0.1850): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 50 rows (15 equal width bins), against a calibrated-model floor of 0.1331 (95th percentile 0.1850): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 50 rows (15 equal width bins), against a calibrated-model floor of 0.1331 (95th percentile 0.1850): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 50 rows (15 equal width bins), against a calibrated-model floor of 0.1331 (95th percentile 0.1850): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -132,8 +146,10 @@ "mean": 0.10154939772542025, "p95": 0.1506344546031062, "statements": { + "0.00125": "ECE 0.0013 over 100 rows (10 equal width bins), against a calibrated-model floor of 0.1015 (95th percentile 0.1506): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 100 rows (10 equal width bins), against a calibrated-model floor of 0.1015 (95th percentile 0.1506): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 100 rows (10 equal width bins), against a calibrated-model floor of 0.1015 (95th percentile 0.1506): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 100 rows (10 equal width bins), against a calibrated-model floor of 0.1015 (95th percentile 0.1506): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 100 rows (10 equal width bins), against a calibrated-model floor of 0.1015 (95th percentile 0.1506): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 100 rows (10 equal width bins), against a calibrated-model floor of 0.1015 (95th percentile 0.1506): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 100 rows (10 equal width bins), against a calibrated-model floor of 0.1015 (95th percentile 0.1506): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -147,8 +163,10 @@ "mean": 0.07507178247177257, "p95": 0.11790988562838273, "statements": { + "0.00125": "ECE 0.0013 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0751 (95th percentile 0.1179): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0751 (95th percentile 0.1179): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0751 (95th percentile 0.1179): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0751 (95th percentile 0.1179): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0751 (95th percentile 0.1179): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0751 (95th percentile 0.1179): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0751 (95th percentile 0.1179): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -162,8 +180,10 @@ "mean": 0.07199355208097018, "p95": 0.11196474547538811, "statements": { + "0.00125": "ECE 0.0013 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0720 (95th percentile 0.1120): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0720 (95th percentile 0.1120): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0720 (95th percentile 0.1120): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0720 (95th percentile 0.1120): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0720 (95th percentile 0.1120): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0720 (95th percentile 0.1120): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 105 rows (10 equal width bins), against a calibrated-model floor of 0.0720 (95th percentile 0.1120): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -177,8 +197,10 @@ "mean": 0.09645611455860527, "p95": 0.1281392861832022, "statements": { + "0.00125": "ECE 0.0013 over 200 rows (20 equal width bins), against a calibrated-model floor of 0.0965 (95th percentile 0.1281): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 200 rows (20 equal width bins), against a calibrated-model floor of 0.0965 (95th percentile 0.1281): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 200 rows (20 equal width bins), against a calibrated-model floor of 0.0965 (95th percentile 0.1281): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 200 rows (20 equal width bins), against a calibrated-model floor of 0.0965 (95th percentile 0.1281): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 200 rows (20 equal width bins), against a calibrated-model floor of 0.0965 (95th percentile 0.1281): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 200 rows (20 equal width bins), against a calibrated-model floor of 0.0965 (95th percentile 0.1281): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 200 rows (20 equal width bins), against a calibrated-model floor of 0.0965 (95th percentile 0.1281): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -192,8 +214,10 @@ "mean": 0.14023235095799594, "p95": 0.1626327053033523, "statements": { + "0.00125": "ECE 0.0013 over 250 rows (100 equal width bins), against a calibrated-model floor of 0.1402 (95th percentile 0.1626): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 250 rows (100 equal width bins), against a calibrated-model floor of 0.1402 (95th percentile 0.1626): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 250 rows (100 equal width bins), against a calibrated-model floor of 0.1402 (95th percentile 0.1626): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 250 rows (100 equal width bins), against a calibrated-model floor of 0.1402 (95th percentile 0.1626): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 250 rows (100 equal width bins), against a calibrated-model floor of 0.1402 (95th percentile 0.1626): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 250 rows (100 equal width bins), against a calibrated-model floor of 0.1402 (95th percentile 0.1626): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.1": "ECE 0.1000 over 250 rows (100 equal width bins), against a calibrated-model floor of 0.1402 (95th percentile 0.1626): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", @@ -207,8 +231,10 @@ "mean": 0.023666559618355967, "p95": 0.03662071112951838, "statements": { + "0.00125": "ECE 0.0013 over 300 rows (10 equal width bins), against a calibrated-model floor of 0.0237 (95th percentile 0.0366): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 300 rows (10 equal width bins), against a calibrated-model floor of 0.0237 (95th percentile 0.0366): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 300 rows (10 equal width bins), against a calibrated-model floor of 0.0237 (95th percentile 0.0366): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 300 rows (10 equal width bins), against a calibrated-model floor of 0.0237 (95th percentile 0.0366): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 300 rows (10 equal width bins), against a calibrated-model floor of 0.0237 (95th percentile 0.0366): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 300 rows (10 equal width bins), against a calibrated-model floor of 0.0237 (95th percentile 0.0366): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 300 rows (10 equal width bins), against a calibrated-model floor of 0.0237 (95th percentile 0.0366): miscalibration is distinguishable from sampling noise.", @@ -222,8 +248,10 @@ "mean": 0.0355612696325439, "p95": 0.053085240536494605, "statements": { + "0.00125": "ECE 0.0013 over 500 rows (10 equal width bins), against a calibrated-model floor of 0.0356 (95th percentile 0.0531): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 500 rows (10 equal width bins), against a calibrated-model floor of 0.0356 (95th percentile 0.0531): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 500 rows (10 equal width bins), against a calibrated-model floor of 0.0356 (95th percentile 0.0531): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 500 rows (10 equal width bins), against a calibrated-model floor of 0.0356 (95th percentile 0.0531): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 500 rows (10 equal width bins), against a calibrated-model floor of 0.0356 (95th percentile 0.0531): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 500 rows (10 equal width bins), against a calibrated-model floor of 0.0356 (95th percentile 0.0531): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 500 rows (10 equal width bins), against a calibrated-model floor of 0.0356 (95th percentile 0.0531): miscalibration is distinguishable from sampling noise.", @@ -237,8 +265,10 @@ "mean": 0.02784884432264174, "p95": 0.040260151802465075, "statements": { + "0.00125": "ECE 0.0013 over 500 rows (15 equal width bins), against a calibrated-model floor of 0.0278 (95th percentile 0.0403): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 500 rows (15 equal width bins), against a calibrated-model floor of 0.0278 (95th percentile 0.0403): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 500 rows (15 equal width bins), against a calibrated-model floor of 0.0278 (95th percentile 0.0403): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 500 rows (15 equal width bins), against a calibrated-model floor of 0.0278 (95th percentile 0.0403): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 500 rows (15 equal width bins), against a calibrated-model floor of 0.0278 (95th percentile 0.0403): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 500 rows (15 equal width bins), against a calibrated-model floor of 0.0278 (95th percentile 0.0403): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 500 rows (15 equal width bins), against a calibrated-model floor of 0.0278 (95th percentile 0.0403): miscalibration is distinguishable from sampling noise.", @@ -252,8 +282,10 @@ "mean": 0.029970541953061883, "p95": 0.05014769842329827, "statements": { + "0.00125": "ECE 0.0013 over 500 rows (5 equal width bins), against a calibrated-model floor of 0.0300 (95th percentile 0.0501): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 500 rows (5 equal width bins), against a calibrated-model floor of 0.0300 (95th percentile 0.0501): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 500 rows (5 equal width bins), against a calibrated-model floor of 0.0300 (95th percentile 0.0501): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 500 rows (5 equal width bins), against a calibrated-model floor of 0.0300 (95th percentile 0.0501): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 500 rows (5 equal width bins), against a calibrated-model floor of 0.0300 (95th percentile 0.0501): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.074": "ECE 0.0740 over 500 rows (5 equal width bins), against a calibrated-model floor of 0.0300 (95th percentile 0.0501): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 500 rows (5 equal width bins), against a calibrated-model floor of 0.0300 (95th percentile 0.0501): miscalibration is distinguishable from sampling noise.", @@ -267,8 +299,10 @@ "mean": 0.005165671794089274, "p95": 0.00870125465515504, "statements": { + "0.00125": "ECE 0.0013 over 750 rows (10 equal width bins), against a calibrated-model floor of 0.0052 (95th percentile 0.0087): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 750 rows (10 equal width bins), against a calibrated-model floor of 0.0052 (95th percentile 0.0087): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 750 rows (10 equal width bins), against a calibrated-model floor of 0.0052 (95th percentile 0.0087): miscalibration is distinguishable from sampling noise.", + "0.03125": "ECE 0.0312 over 750 rows (10 equal width bins), against a calibrated-model floor of 0.0052 (95th percentile 0.0087): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 750 rows (10 equal width bins), against a calibrated-model floor of 0.0052 (95th percentile 0.0087): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 750 rows (10 equal width bins), against a calibrated-model floor of 0.0052 (95th percentile 0.0087): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 750 rows (10 equal width bins), against a calibrated-model floor of 0.0052 (95th percentile 0.0087): miscalibration is distinguishable from sampling noise.", @@ -282,8 +316,10 @@ "mean": 0.02675736936838183, "p95": 0.04020104887001681, "statements": { + "0.00125": "ECE 0.0013 over 1000 rows (10 equal width bins), against a calibrated-model floor of 0.0268 (95th percentile 0.0402): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 1000 rows (10 equal width bins), against a calibrated-model floor of 0.0268 (95th percentile 0.0402): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 1000 rows (10 equal width bins), against a calibrated-model floor of 0.0268 (95th percentile 0.0402): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 1000 rows (10 equal width bins), against a calibrated-model floor of 0.0268 (95th percentile 0.0402): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 1000 rows (10 equal width bins), against a calibrated-model floor of 0.0268 (95th percentile 0.0402): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 1000 rows (10 equal width bins), against a calibrated-model floor of 0.0268 (95th percentile 0.0402): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 1000 rows (10 equal width bins), against a calibrated-model floor of 0.0268 (95th percentile 0.0402): miscalibration is distinguishable from sampling noise.", @@ -297,8 +333,10 @@ "mean": 0.029019264436455913, "p95": 0.03978104831245656, "statements": { + "0.00125": "ECE 0.0013 over 1000 rows (20 equal width bins), against a calibrated-model floor of 0.0290 (95th percentile 0.0398): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 1000 rows (20 equal width bins), against a calibrated-model floor of 0.0290 (95th percentile 0.0398): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 1000 rows (20 equal width bins), against a calibrated-model floor of 0.0290 (95th percentile 0.0398): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 1000 rows (20 equal width bins), against a calibrated-model floor of 0.0290 (95th percentile 0.0398): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 1000 rows (20 equal width bins), against a calibrated-model floor of 0.0290 (95th percentile 0.0398): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 1000 rows (20 equal width bins), against a calibrated-model floor of 0.0290 (95th percentile 0.0398): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 1000 rows (20 equal width bins), against a calibrated-model floor of 0.0290 (95th percentile 0.0398): miscalibration is distinguishable from sampling noise.", @@ -312,8 +350,10 @@ "mean": 0.02521845499263482, "p95": 0.031638820373931995, "statements": { + "0.00125": "ECE 0.0013 over 1000 rows (50 equal width bins), against a calibrated-model floor of 0.0252 (95th percentile 0.0316): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 1000 rows (50 equal width bins), against a calibrated-model floor of 0.0252 (95th percentile 0.0316): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 1000 rows (50 equal width bins), against a calibrated-model floor of 0.0252 (95th percentile 0.0316): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 1000 rows (50 equal width bins), against a calibrated-model floor of 0.0252 (95th percentile 0.0316): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.05": "ECE 0.0500 over 1000 rows (50 equal width bins), against a calibrated-model floor of 0.0252 (95th percentile 0.0316): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 1000 rows (50 equal width bins), against a calibrated-model floor of 0.0252 (95th percentile 0.0316): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 1000 rows (50 equal width bins), against a calibrated-model floor of 0.0252 (95th percentile 0.0316): miscalibration is distinguishable from sampling noise.", @@ -327,8 +367,10 @@ "mean": 0.017489921485761555, "p95": 0.02596877487096666, "statements": { + "0.00125": "ECE 0.0013 over 2000 rows (10 equal width bins), against a calibrated-model floor of 0.0175 (95th percentile 0.0260): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 2000 rows (10 equal width bins), against a calibrated-model floor of 0.0175 (95th percentile 0.0260): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 2000 rows (10 equal width bins), against a calibrated-model floor of 0.0175 (95th percentile 0.0260): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 2000 rows (10 equal width bins), against a calibrated-model floor of 0.0175 (95th percentile 0.0260): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 2000 rows (10 equal width bins), against a calibrated-model floor of 0.0175 (95th percentile 0.0260): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 2000 rows (10 equal width bins), against a calibrated-model floor of 0.0175 (95th percentile 0.0260): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 2000 rows (10 equal width bins), against a calibrated-model floor of 0.0175 (95th percentile 0.0260): miscalibration is distinguishable from sampling noise.", @@ -342,8 +384,10 @@ "mean": 0.013880785016449071, "p95": 0.02054651436977377, "statements": { + "0.00125": "ECE 0.0013 over 2000 rows (15 equal width bins), against a calibrated-model floor of 0.0139 (95th percentile 0.0205): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 2000 rows (15 equal width bins), against a calibrated-model floor of 0.0139 (95th percentile 0.0205): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 2000 rows (15 equal width bins), against a calibrated-model floor of 0.0139 (95th percentile 0.0205): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", + "0.03125": "ECE 0.0312 over 2000 rows (15 equal width bins), against a calibrated-model floor of 0.0139 (95th percentile 0.0205): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 2000 rows (15 equal width bins), against a calibrated-model floor of 0.0139 (95th percentile 0.0205): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 2000 rows (15 equal width bins), against a calibrated-model floor of 0.0139 (95th percentile 0.0205): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 2000 rows (15 equal width bins), against a calibrated-model floor of 0.0139 (95th percentile 0.0205): miscalibration is distinguishable from sampling noise.", @@ -357,8 +401,10 @@ "mean": 0.012206409389429185, "p95": 0.018615275077065226, "statements": { + "0.00125": "ECE 0.0013 over 4000 rows (10 equal width bins), against a calibrated-model floor of 0.0122 (95th percentile 0.0186): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 4000 rows (10 equal width bins), against a calibrated-model floor of 0.0122 (95th percentile 0.0186): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 4000 rows (10 equal width bins), against a calibrated-model floor of 0.0122 (95th percentile 0.0186): miscalibration is distinguishable from sampling noise.", + "0.03125": "ECE 0.0312 over 4000 rows (10 equal width bins), against a calibrated-model floor of 0.0122 (95th percentile 0.0186): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 4000 rows (10 equal width bins), against a calibrated-model floor of 0.0122 (95th percentile 0.0186): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 4000 rows (10 equal width bins), against a calibrated-model floor of 0.0122 (95th percentile 0.0186): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 4000 rows (10 equal width bins), against a calibrated-model floor of 0.0122 (95th percentile 0.0186): miscalibration is distinguishable from sampling noise.", @@ -372,8 +418,10 @@ "mean": 0.005268464475778579, "p95": 0.00761369266481136, "statements": { + "0.00125": "ECE 0.0013 over 5000 rows (20 equal width bins), against a calibrated-model floor of 0.0053 (95th percentile 0.0076): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 5000 rows (20 equal width bins), against a calibrated-model floor of 0.0053 (95th percentile 0.0076): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 5000 rows (20 equal width bins), against a calibrated-model floor of 0.0053 (95th percentile 0.0076): miscalibration is distinguishable from sampling noise.", + "0.03125": "ECE 0.0312 over 5000 rows (20 equal width bins), against a calibrated-model floor of 0.0053 (95th percentile 0.0076): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 5000 rows (20 equal width bins), against a calibrated-model floor of 0.0053 (95th percentile 0.0076): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 5000 rows (20 equal width bins), against a calibrated-model floor of 0.0053 (95th percentile 0.0076): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 5000 rows (20 equal width bins), against a calibrated-model floor of 0.0053 (95th percentile 0.0076): miscalibration is distinguishable from sampling noise.", @@ -387,8 +435,10 @@ "mean": 0.007729592376046467, "p95": 0.011776573914467762, "statements": { + "0.00125": "ECE 0.0013 over 10000 rows (10 equal width bins), against a calibrated-model floor of 0.0077 (95th percentile 0.0118): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 10000 rows (10 equal width bins), against a calibrated-model floor of 0.0077 (95th percentile 0.0118): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 10000 rows (10 equal width bins), against a calibrated-model floor of 0.0077 (95th percentile 0.0118): miscalibration is distinguishable from sampling noise.", + "0.03125": "ECE 0.0312 over 10000 rows (10 equal width bins), against a calibrated-model floor of 0.0077 (95th percentile 0.0118): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 10000 rows (10 equal width bins), against a calibrated-model floor of 0.0077 (95th percentile 0.0118): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 10000 rows (10 equal width bins), against a calibrated-model floor of 0.0077 (95th percentile 0.0118): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 10000 rows (10 equal width bins), against a calibrated-model floor of 0.0077 (95th percentile 0.0118): miscalibration is distinguishable from sampling noise.", @@ -402,8 +452,10 @@ "mean": 0.008988447318912384, "p95": 0.011866513346387128, "statements": { + "0.00125": "ECE 0.0013 over 10000 rows (30 equal width bins), against a calibrated-model floor of 0.0090 (95th percentile 0.0119): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 10000 rows (30 equal width bins), against a calibrated-model floor of 0.0090 (95th percentile 0.0119): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 10000 rows (30 equal width bins), against a calibrated-model floor of 0.0090 (95th percentile 0.0119): miscalibration is distinguishable from sampling noise.", + "0.03125": "ECE 0.0312 over 10000 rows (30 equal width bins), against a calibrated-model floor of 0.0090 (95th percentile 0.0119): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 10000 rows (30 equal width bins), against a calibrated-model floor of 0.0090 (95th percentile 0.0119): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 10000 rows (30 equal width bins), against a calibrated-model floor of 0.0090 (95th percentile 0.0119): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 10000 rows (30 equal width bins), against a calibrated-model floor of 0.0090 (95th percentile 0.0119): miscalibration is distinguishable from sampling noise.", @@ -417,13 +469,907 @@ "mean": 0.006857970527670982, "p95": 0.010249792847569345, "statements": { + "0.00125": "ECE 0.0013 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.005": "ECE 0.0050 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): INCONCLUSIVE at this sample size. A perfectly calibrated model would often score this badly on this many rows, so this dataset cannot tell the two apart. This is not a clean bill of health: nothing was established either way. Collect more rows to make the question answerable.", "0.02": "ECE 0.0200 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): miscalibration is distinguishable from sampling noise.", + "0.03125": "ECE 0.0312 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): miscalibration is distinguishable from sampling noise.", "0.05": "ECE 0.0500 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): miscalibration is distinguishable from sampling noise.", "0.074": "ECE 0.0740 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): miscalibration is distinguishable from sampling noise.", "0.1": "ECE 0.1000 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): miscalibration is distinguishable from sampling noise.", "0.2": "ECE 0.2000 over 20000 rows (10 equal width bins), against a calibrated-model floor of 0.0069 (95th percentile 0.0102): miscalibration is distinguishable from sampling noise." } } - ] + ], + "fixed4": { + "4.9999999999999996e-05": "0.0000", + "5e-05": "0.0001", + "5.000000000000001e-05": "0.0001", + "0.0007499999999999999": "0.0007", + "0.00075": "0.0008", + "0.0007500000000000001": "0.0008", + "0.0014499999999999997": "0.0014", + "0.00145": "0.0014", + "0.0014500000000000001": "0.0015", + "0.0021499999999999996": "0.0021", + "0.00215": "0.0022", + "0.0021500000000000004": "0.0022", + "0.0028499999999999997": "0.0028", + "0.00285": "0.0029", + "0.0028500000000000005": "0.0029", + "0.0035499999999999998": "0.0035", + "0.00355": "0.0036", + "0.0035500000000000006": "0.0036", + "0.0042499999999999994": "0.0042", + "0.00425": "0.0043", + "0.004250000000000001": "0.0043", + "0.0049499999999999995": "0.0049", + "0.00495": "0.0050", + "0.004950000000000001": "0.0050", + "0.005649999999999999": "0.0056", + "0.00565": "0.0056", + "0.0056500000000000005": "0.0057", + "0.006349999999999999": "0.0063", + "0.00635": "0.0063", + "0.006350000000000001": "0.0064", + "0.007049999999999999": "0.0070", + "0.00705": "0.0070", + "0.007050000000000001": "0.0071", + "0.007749999999999999": "0.0077", + "0.00775": "0.0077", + "0.007750000000000001": "0.0078", + "0.008449999999999997": "0.0084", + "0.00845": "0.0084", + "0.008450000000000001": "0.0085", + "0.009149999999999998": "0.0091", + "0.00915": "0.0092", + "0.009150000000000002": "0.0092", + "0.009849999999999998": "0.0098", + "0.00985": "0.0098", + "0.009850000000000001": "0.0099", + "0.010549999999999999": "0.0105", + "0.01055": "0.0106", + "0.010550000000000002": "0.0106", + "0.011249999999999998": "0.0112", + "0.01125": "0.0112", + "0.011250000000000001": "0.0113", + "0.011949999999999999": "0.0119", + "0.01195": "0.0120", + "0.011950000000000002": "0.0120", + "0.012649999999999998": "0.0126", + "0.01265": "0.0126", + "0.012650000000000002": "0.0127", + "0.013349999999999999": "0.0133", + "0.01335": "0.0134", + "0.013350000000000002": "0.0134", + "0.014049999999999998": "0.0140", + "0.01405": "0.0140", + "0.014050000000000002": "0.0141", + "0.014749999999999997": "0.0147", + "0.01475": "0.0147", + "0.014750000000000001": "0.0148", + "0.015449999999999998": "0.0154", + "0.01545": "0.0155", + "0.015450000000000002": "0.0155", + "0.016149999999999998": "0.0161", + "0.01615": "0.0162", + "0.016150000000000005": "0.0162", + "0.016849999999999997": "0.0168", + "0.01685": "0.0169", + "0.016850000000000004": "0.0169", + "0.017549999999999996": "0.0175", + "0.01755": "0.0175", + "0.017550000000000003": "0.0176", + "0.018249999999999995": "0.0182", + "0.01825": "0.0182", + "0.018250000000000002": "0.0183", + "0.018949999999999998": "0.0189", + "0.01895": "0.0190", + "0.018950000000000005": "0.0190", + "0.019649999999999997": "0.0196", + "0.01965": "0.0197", + "0.019650000000000004": "0.0197", + "0.020349999999999997": "0.0203", + "0.02035": "0.0204", + "0.020350000000000004": "0.0204", + "0.021049999999999996": "0.0210", + "0.02105": "0.0210", + "0.021050000000000003": "0.0211", + "0.021749999999999995": "0.0217", + "0.02175": "0.0217", + "0.021750000000000002": "0.0218", + "0.022449999999999998": "0.0224", + "0.02245": "0.0225", + "0.022450000000000005": "0.0225", + "0.023149999999999997": "0.0231", + "0.02315": "0.0232", + "0.023150000000000004": "0.0232", + "0.023849999999999996": "0.0238", + "0.02385": "0.0238", + "0.023850000000000003": "0.0239", + "0.024549999999999995": "0.0245", + "0.02455": "0.0245", + "0.024550000000000002": "0.0246", + "0.025249999999999998": "0.0252", + "0.02525": "0.0253", + "0.025250000000000005": "0.0253", + "0.025949999999999997": "0.0259", + "0.02595": "0.0260", + "0.025950000000000004": "0.0260", + "0.026649999999999997": "0.0266", + "0.02665": "0.0267", + "0.026650000000000004": "0.0267", + "0.027349999999999996": "0.0273", + "0.02735": "0.0273", + "0.027350000000000003": "0.0274", + "0.028049999999999995": "0.0280", + "0.02805": "0.0280", + "0.028050000000000002": "0.0281", + "0.028749999999999998": "0.0287", + "0.02875": "0.0288", + "0.028750000000000005": "0.0288", + "0.029449999999999997": "0.0294", + "0.02945": "0.0295", + "0.029450000000000004": "0.0295", + "0.030149999999999996": "0.0301", + "0.03015": "0.0301", + "0.030150000000000003": "0.0302", + "0.030849999999999995": "0.0308", + "0.03085": "0.0308", + "0.030850000000000002": "0.0309", + "0.03125": "0.0312", + "0.031549999999999995": "0.0315", + "0.03155": "0.0316", + "0.03155000000000001": "0.0316", + "0.032249999999999994": "0.0322", + "0.03225": "0.0323", + "0.03225000000000001": "0.0323", + "0.03294999999999999": "0.0329", + "0.03295": "0.0330", + "0.03295000000000001": "0.0330", + "0.03364999999999999": "0.0336", + "0.03365": "0.0336", + "0.033650000000000006": "0.0337", + "0.03434999999999999": "0.0343", + "0.03435": "0.0343", + "0.034350000000000006": "0.0344", + "0.03504999999999999": "0.0350", + "0.03505": "0.0350", + "0.035050000000000005": "0.0351", + "0.03574999999999999": "0.0357", + "0.03575": "0.0357", + "0.035750000000000004": "0.0358", + "0.036449999999999996": "0.0364", + "0.03645": "0.0365", + "0.03645000000000001": "0.0365", + "0.037149999999999996": "0.0371", + "0.03715": "0.0372", + "0.03715000000000001": "0.0372", + "0.037849999999999995": "0.0378", + "0.03785": "0.0379", + "0.03785000000000001": "0.0379", + "0.038549999999999994": "0.0385", + "0.03855": "0.0386", + "0.03855000000000001": "0.0386", + "0.03924999999999999": "0.0392", + "0.03925": "0.0393", + "0.03925000000000001": "0.0393", + "0.03994999999999999": "0.0399", + "0.03995": "0.0399", + "0.039950000000000006": "0.0400", + "0.04064999999999999": "0.0406", + "0.04065": "0.0406", + "0.040650000000000006": "0.0407", + "0.04134999999999999": "0.0413", + "0.04135": "0.0413", + "0.041350000000000005": "0.0414", + "0.04204999999999999": "0.0420", + "0.04205": "0.0420", + "0.042050000000000004": "0.0421", + "0.042749999999999996": "0.0427", + "0.04275": "0.0428", + "0.04275000000000001": "0.0428", + "0.043449999999999996": "0.0434", + "0.04345": "0.0435", + "0.04345000000000001": "0.0435", + "0.044149999999999995": "0.0441", + "0.04415": "0.0442", + "0.04415000000000001": "0.0442", + "0.044849999999999994": "0.0448", + "0.04485": "0.0449", + "0.04485000000000001": "0.0449", + "0.04554999999999999": "0.0455", + "0.04555": "0.0456", + "0.04555000000000001": "0.0456", + "0.04624999999999999": "0.0462", + "0.04625": "0.0462", + "0.046250000000000006": "0.0463", + "0.04694999999999999": "0.0469", + "0.04695": "0.0469", + "0.046950000000000006": "0.0470", + "0.04764999999999999": "0.0476", + "0.04765": "0.0476", + "0.047650000000000005": "0.0477", + "0.04834999999999999": "0.0483", + "0.04835": "0.0483", + "0.048350000000000004": "0.0484", + "0.049049999999999996": "0.0490", + "0.04905": "0.0491", + "0.04905000000000001": "0.0491", + "0.049749999999999996": "0.0497", + "0.04975": "0.0498", + "0.04975000000000001": "0.0498", + "0.050449999999999995": "0.0504", + "0.05045": "0.0505", + "0.05045000000000001": "0.0505", + "0.051149999999999994": "0.0511", + "0.05115": "0.0512", + "0.05115000000000001": "0.0512", + "0.05184999999999999": "0.0518", + "0.05185": "0.0519", + "0.05185000000000001": "0.0519", + "0.05254999999999999": "0.0525", + "0.05255": "0.0525", + "0.052550000000000006": "0.0526", + "0.05324999999999999": "0.0532", + "0.05325": "0.0532", + "0.053250000000000006": "0.0533", + "0.05394999999999999": "0.0539", + "0.05395": "0.0539", + "0.053950000000000005": "0.0540", + "0.05464999999999999": "0.0546", + "0.05465": "0.0546", + "0.054650000000000004": "0.0547", + "0.055349999999999996": "0.0553", + "0.05535": "0.0554", + "0.05535000000000001": "0.0554", + "0.056049999999999996": "0.0560", + "0.05605": "0.0561", + "0.05605000000000001": "0.0561", + "0.056749999999999995": "0.0567", + "0.05675": "0.0568", + "0.05675000000000001": "0.0568", + "0.057449999999999994": "0.0574", + "0.05745": "0.0575", + "0.05745000000000001": "0.0575", + "0.05814999999999999": "0.0581", + "0.05815": "0.0582", + "0.05815000000000001": "0.0582", + "0.05884999999999999": "0.0588", + "0.05885": "0.0588", + "0.058850000000000006": "0.0589", + "0.05954999999999999": "0.0595", + "0.05955": "0.0595", + "0.059550000000000006": "0.0596", + "0.06024999999999999": "0.0602", + "0.06025": "0.0602", + "0.060250000000000005": "0.0603", + "0.06094999999999999": "0.0609", + "0.06095": "0.0609", + "0.060950000000000004": "0.0610", + "0.061649999999999996": "0.0616", + "0.06165": "0.0617", + "0.06165000000000001": "0.0617", + "0.062349999999999996": "0.0623", + "0.06235": "0.0624", + "0.06235000000000001": "0.0624", + "0.06304999999999998": "0.0630", + "0.06305": "0.0630", + "0.06305000000000001": "0.0631", + "0.06374999999999999": "0.0637", + "0.06375": "0.0638", + "0.06375000000000001": "0.0638", + "0.06444999999999998": "0.0644", + "0.06445": "0.0644", + "0.06445000000000001": "0.0645", + "0.06514999999999999": "0.0651", + "0.06515": "0.0651", + "0.06515000000000001": "0.0652", + "0.06584999999999999": "0.0658", + "0.06585": "0.0659", + "0.06585000000000002": "0.0659", + "0.06654999999999998": "0.0665", + "0.06655": "0.0665", + "0.06655000000000001": "0.0666", + "0.06724999999999999": "0.0672", + "0.06725": "0.0673", + "0.06725000000000002": "0.0673", + "0.06794999999999998": "0.0679", + "0.06795": "0.0679", + "0.06795000000000001": "0.0680", + "0.06864999999999999": "0.0686", + "0.06865": "0.0687", + "0.06865000000000002": "0.0687", + "0.06934999999999998": "0.0693", + "0.06935": "0.0693", + "0.06935000000000001": "0.0694", + "0.07004999999999999": "0.0700", + "0.07005": "0.0701", + "0.07005000000000002": "0.0701", + "0.07074999999999998": "0.0707", + "0.07075": "0.0707", + "0.07075000000000001": "0.0708", + "0.07144999999999999": "0.0714", + "0.07145": "0.0714", + "0.07145000000000001": "0.0715", + "0.07214999999999999": "0.0721", + "0.07215": "0.0722", + "0.07215000000000002": "0.0722", + "0.07284999999999998": "0.0728", + "0.07285": "0.0728", + "0.07285000000000001": "0.0729", + "0.07354999999999999": "0.0735", + "0.07355": "0.0736", + "0.07355000000000002": "0.0736", + "0.07424999999999998": "0.0742", + "0.07425": "0.0742", + "0.07425000000000001": "0.0743", + "0.07494999999999999": "0.0749", + "0.07495": "0.0750", + "0.07495000000000002": "0.0750", + "0.07564999999999998": "0.0756", + "0.07565": "0.0756", + "0.07565000000000001": "0.0757", + "0.07634999999999999": "0.0763", + "0.07635": "0.0764", + "0.07635000000000002": "0.0764", + "0.07704999999999998": "0.0770", + "0.07705": "0.0770", + "0.07705000000000001": "0.0771", + "0.07774999999999999": "0.0777", + "0.07775": "0.0777", + "0.07775000000000001": "0.0778", + "0.07844999999999999": "0.0784", + "0.07845": "0.0785", + "0.07845000000000002": "0.0785", + "0.07914999999999998": "0.0791", + "0.07915": "0.0791", + "0.07915000000000001": "0.0792", + "0.07984999999999999": "0.0798", + "0.07985": "0.0799", + "0.07985000000000002": "0.0799", + "0.08054999999999998": "0.0805", + "0.08055": "0.0805", + "0.08055000000000001": "0.0806", + "0.08124999999999999": "0.0812", + "0.08125": "0.0813", + "0.08125000000000002": "0.0813", + "0.08194999999999998": "0.0819", + "0.08195": "0.0819", + "0.08195000000000001": "0.0820", + "0.08264999999999999": "0.0826", + "0.08265": "0.0827", + "0.08265000000000002": "0.0827", + "0.08334999999999998": "0.0833", + "0.08335": "0.0833", + "0.08335000000000001": "0.0834", + "0.08404999999999999": "0.0840", + "0.08405": "0.0840", + "0.08405000000000001": "0.0841", + "0.08474999999999999": "0.0847", + "0.08475": "0.0848", + "0.08475000000000002": "0.0848", + "0.08544999999999998": "0.0854", + "0.08545": "0.0854", + "0.08545000000000001": "0.0855", + "0.08614999999999999": "0.0861", + "0.08615": "0.0862", + "0.08615000000000002": "0.0862", + "0.08684999999999998": "0.0868", + "0.08685": "0.0868", + "0.08685000000000001": "0.0869", + "0.08754999999999999": "0.0875", + "0.08755": "0.0876", + "0.08755000000000002": "0.0876", + "0.08824999999999998": "0.0882", + "0.08825": "0.0882", + "0.08825000000000001": "0.0883", + "0.08894999999999999": "0.0889", + "0.08895": "0.0890", + "0.08895000000000002": "0.0890", + "0.08964999999999998": "0.0896", + "0.08965": "0.0896", + "0.08965000000000001": "0.0897", + "0.09034999999999999": "0.0903", + "0.09035": "0.0903", + "0.09035000000000001": "0.0904", + "0.09104999999999999": "0.0910", + "0.09105": "0.0911", + "0.09105000000000002": "0.0911", + "0.09174999999999998": "0.0917", + "0.09175": "0.0917", + "0.09175000000000001": "0.0918", + "0.09244999999999999": "0.0924", + "0.09245": "0.0925", + "0.09245000000000002": "0.0925", + "0.09314999999999998": "0.0931", + "0.09315": "0.0931", + "0.09315000000000001": "0.0932", + "0.09375": "0.0938", + "0.09384999999999999": "0.0938", + "0.09385": "0.0939", + "0.09385000000000002": "0.0939", + "0.09454999999999998": "0.0945", + "0.09455": "0.0945", + "0.09455000000000001": "0.0946", + "0.09524999999999999": "0.0952", + "0.09525": "0.0953", + "0.09525000000000002": "0.0953", + "0.09594999999999998": "0.0959", + "0.09595": "0.0959", + "0.09595000000000001": "0.0960", + "0.09664999999999999": "0.0966", + "0.09665": "0.0966", + "0.09665000000000001": "0.0967", + "0.09734999999999999": "0.0973", + "0.09735": "0.0974", + "0.09735000000000002": "0.0974", + "0.09804999999999998": "0.0980", + "0.09805": "0.0980", + "0.09805000000000001": "0.0981", + "0.09874999999999999": "0.0987", + "0.09875": "0.0988", + "0.09875000000000002": "0.0988", + "0.09944999999999998": "0.0994", + "0.09945": "0.0994", + "0.09945000000000001": "0.0995", + "0.10014999999999999": "0.1001", + "0.10015": "0.1002", + "0.10015000000000002": "0.1002", + "0.10084999999999998": "0.1008", + "0.10085": "0.1008", + "0.10085000000000001": "0.1009", + "0.10154999999999999": "0.1015", + "0.10155": "0.1016", + "0.10155000000000002": "0.1016", + "0.10224999999999998": "0.1022", + "0.10225": "0.1022", + "0.10225000000000001": "0.1023", + "0.10294999999999999": "0.1029", + "0.10295": "0.1029", + "0.10295000000000001": "0.1030", + "0.10364999999999999": "0.1036", + "0.10365": "0.1037", + "0.10365000000000002": "0.1037", + "0.10434999999999998": "0.1043", + "0.10435": "0.1043", + "0.10435000000000001": "0.1044", + "0.10504999999999999": "0.1050", + "0.10505": "0.1051", + "0.10505000000000002": "0.1051", + "0.10574999999999998": "0.1057", + "0.10575": "0.1057", + "0.10575000000000001": "0.1058", + "0.10644999999999999": "0.1064", + "0.10645": "0.1065", + "0.10645000000000002": "0.1065", + "0.10714999999999998": "0.1071", + "0.10715": "0.1071", + "0.10715000000000001": "0.1072", + "0.10784999999999999": "0.1078", + "0.10785": "0.1079", + "0.10785000000000002": "0.1079", + "0.10854999999999998": "0.1085", + "0.10855": "0.1085", + "0.10855000000000001": "0.1086", + "0.10924999999999999": "0.1092", + "0.10925": "0.1092", + "0.10925000000000001": "0.1093", + "0.10994999999999999": "0.1099", + "0.10995": "0.1100", + "0.10995000000000002": "0.1100", + "0.11064999999999998": "0.1106", + "0.11065": "0.1106", + "0.11065000000000001": "0.1107", + "0.11134999999999999": "0.1113", + "0.11135": "0.1114", + "0.11135000000000002": "0.1114", + "0.11204999999999998": "0.1120", + "0.11205": "0.1120", + "0.11205000000000001": "0.1121", + "0.11274999999999999": "0.1127", + "0.11275": "0.1128", + "0.11275000000000002": "0.1128", + "0.11344999999999998": "0.1134", + "0.11345": "0.1134", + "0.11345000000000001": "0.1135", + "0.11414999999999999": "0.1141", + "0.11415": "0.1142", + "0.11415000000000002": "0.1142", + "0.11484999999999998": "0.1148", + "0.11485": "0.1148", + "0.11485000000000001": "0.1149", + "0.11554999999999999": "0.1155", + "0.11555": "0.1155", + "0.11555000000000001": "0.1156", + "0.11624999999999999": "0.1162", + "0.11625": "0.1163", + "0.11625000000000002": "0.1163", + "0.11694999999999998": "0.1169", + "0.11695": "0.1169", + "0.11695000000000001": "0.1170", + "0.11764999999999999": "0.1176", + "0.11765": "0.1177", + "0.11765000000000002": "0.1177", + "0.11834999999999998": "0.1183", + "0.11835": "0.1183", + "0.11835000000000001": "0.1184", + "0.11904999999999999": "0.1190", + "0.11905": "0.1191", + "0.11905000000000002": "0.1191", + "0.11974999999999998": "0.1197", + "0.11975": "0.1197", + "0.11975000000000001": "0.1198", + "0.12044999999999999": "0.1204", + "0.12045": "0.1205", + "0.12045000000000002": "0.1205", + "0.12114999999999998": "0.1211", + "0.12115": "0.1211", + "0.12115000000000001": "0.1212", + "0.12184999999999999": "0.1218", + "0.12185": "0.1218", + "0.12185000000000001": "0.1219", + "0.12254999999999999": "0.1225", + "0.12255": "0.1226", + "0.12255000000000002": "0.1226", + "0.12324999999999998": "0.1232", + "0.12325": "0.1232", + "0.12325000000000001": "0.1233", + "0.12394999999999999": "0.1239", + "0.12395": "0.1240", + "0.12395000000000002": "0.1240", + "0.12464999999999998": "0.1246", + "0.12465": "0.1246", + "0.12465000000000001": "0.1247", + "0.12534999999999996": "0.1253", + "0.12535": "0.1253", + "0.12535000000000002": "0.1254", + "0.12604999999999997": "0.1260", + "0.12605": "0.1260", + "0.12605000000000002": "0.1261", + "0.12674999999999997": "0.1267", + "0.12675": "0.1268", + "0.12675000000000003": "0.1268", + "0.12744999999999998": "0.1274", + "0.12745": "0.1275", + "0.12745000000000004": "0.1275", + "0.12814999999999996": "0.1281", + "0.12815": "0.1281", + "0.12815000000000001": "0.1282", + "0.12884999999999996": "0.1288", + "0.12885": "0.1288", + "0.12885000000000002": "0.1289", + "0.12954999999999997": "0.1295", + "0.12955": "0.1295", + "0.12955000000000003": "0.1296", + "0.13024999999999998": "0.1302", + "0.13025": "0.1303", + "0.13025000000000003": "0.1303", + "0.13094999999999998": "0.1309", + "0.13095": "0.1310", + "0.13095000000000004": "0.1310", + "0.13164999999999996": "0.1316", + "0.13165": "0.1316", + "0.13165000000000002": "0.1317", + "0.13234999999999997": "0.1323", + "0.13235": "0.1323", + "0.13235000000000002": "0.1324", + "0.13304999999999997": "0.1330", + "0.13305": "0.1331", + "0.13305000000000003": "0.1331", + "0.13374999999999998": "0.1337", + "0.13375": "0.1338", + "0.13375000000000004": "0.1338", + "0.13444999999999996": "0.1344", + "0.13445": "0.1344", + "0.13445000000000001": "0.1345", + "0.13514999999999996": "0.1351", + "0.13515": "0.1351", + "0.13515000000000002": "0.1352", + "0.13584999999999997": "0.1358", + "0.13585": "0.1358", + "0.13585000000000003": "0.1359", + "0.13654999999999998": "0.1365", + "0.13655": "0.1366", + "0.13655000000000003": "0.1366", + "0.13724999999999998": "0.1372", + "0.13725": "0.1373", + "0.13725000000000004": "0.1373", + "0.13794999999999996": "0.1379", + "0.13795": "0.1379", + "0.13795000000000002": "0.1380", + "0.13864999999999997": "0.1386", + "0.13865": "0.1386", + "0.13865000000000002": "0.1387", + "0.13934999999999997": "0.1393", + "0.13935": "0.1394", + "0.13935000000000003": "0.1394", + "0.14004999999999998": "0.1400", + "0.14005": "0.1401", + "0.14005000000000004": "0.1401", + "0.14074999999999996": "0.1407", + "0.14075": "0.1407", + "0.14075000000000001": "0.1408", + "0.14144999999999996": "0.1414", + "0.14145": "0.1414", + "0.14145000000000002": "0.1415", + "0.14214999999999997": "0.1421", + "0.14215": "0.1421", + "0.14215000000000003": "0.1422", + "0.14284999999999998": "0.1428", + "0.14285": "0.1429", + "0.14285000000000003": "0.1429", + "0.14354999999999998": "0.1435", + "0.14355": "0.1436", + "0.14355000000000004": "0.1436", + "0.14424999999999996": "0.1442", + "0.14425": "0.1442", + "0.14425000000000002": "0.1443", + "0.14494999999999997": "0.1449", + "0.14495": "0.1449", + "0.14495000000000002": "0.1450", + "0.14564999999999997": "0.1456", + "0.14565": "0.1457", + "0.14565000000000003": "0.1457", + "0.14634999999999998": "0.1463", + "0.14635": "0.1464", + "0.14635000000000004": "0.1464", + "0.14704999999999996": "0.1470", + "0.14705": "0.1470", + "0.14705000000000001": "0.1471", + "0.14774999999999996": "0.1477", + "0.14775": "0.1477", + "0.14775000000000002": "0.1478", + "0.14844999999999997": "0.1484", + "0.14845": "0.1484", + "0.14845000000000003": "0.1485", + "0.14914999999999998": "0.1491", + "0.14915": "0.1492", + "0.14915000000000003": "0.1492", + "0.14984999999999998": "0.1498", + "0.14985": "0.1499", + "0.14985000000000004": "0.1499", + "0.15054999999999996": "0.1505", + "0.15055": "0.1505", + "0.15055000000000002": "0.1506", + "0.15124999999999997": "0.1512", + "0.15125": "0.1512", + "0.15125000000000002": "0.1513", + "0.15194999999999997": "0.1519", + "0.15195": "0.1520", + "0.15195000000000003": "0.1520", + "0.15264999999999998": "0.1526", + "0.15265": "0.1527", + "0.15265000000000004": "0.1527", + "0.15334999999999996": "0.1533", + "0.15335": "0.1533", + "0.15335000000000001": "0.1534", + "0.15404999999999996": "0.1540", + "0.15405": "0.1540", + "0.15405000000000002": "0.1541", + "0.15474999999999997": "0.1547", + "0.15475": "0.1547", + "0.15475000000000003": "0.1548", + "0.15544999999999998": "0.1554", + "0.15545": "0.1555", + "0.15545000000000003": "0.1555", + "0.15614999999999998": "0.1561", + "0.15615": "0.1562", + "0.15615000000000004": "0.1562", + "0.15625": "0.1562", + "0.15684999999999996": "0.1568", + "0.15685": "0.1568", + "0.15685000000000002": "0.1569", + "0.15754999999999997": "0.1575", + "0.15755": "0.1575", + "0.15755000000000002": "0.1576", + "0.15824999999999997": "0.1582", + "0.15825": "0.1583", + "0.15825000000000003": "0.1583", + "0.15894999999999998": "0.1589", + "0.15895": "0.1590", + "0.15895000000000004": "0.1590", + "0.15964999999999996": "0.1596", + "0.15965": "0.1596", + "0.15965000000000001": "0.1597", + "0.16034999999999996": "0.1603", + "0.16035": "0.1603", + "0.16035000000000002": "0.1604", + "0.16104999999999997": "0.1610", + "0.16105": "0.1610", + "0.16105000000000003": "0.1611", + "0.16174999999999998": "0.1617", + "0.16175": "0.1618", + "0.16175000000000003": "0.1618", + "0.16244999999999998": "0.1624", + "0.16245": "0.1625", + "0.16245000000000004": "0.1625", + "0.16314999999999996": "0.1631", + "0.16315": "0.1631", + "0.16315000000000002": "0.1632", + "0.16384999999999997": "0.1638", + "0.16385": "0.1638", + "0.16385000000000002": "0.1639", + "0.16454999999999997": "0.1645", + "0.16455": "0.1646", + "0.16455000000000003": "0.1646", + "0.16524999999999998": "0.1652", + "0.16525": "0.1653", + "0.16525000000000004": "0.1653", + "0.16594999999999996": "0.1659", + "0.16595": "0.1659", + "0.16595000000000001": "0.1660", + "0.16664999999999996": "0.1666", + "0.16665": "0.1666", + "0.16665000000000002": "0.1667", + "0.16734999999999997": "0.1673", + "0.16735": "0.1673", + "0.16735000000000003": "0.1674", + "0.16804999999999998": "0.1680", + "0.16805": "0.1681", + "0.16805000000000003": "0.1681", + "0.16874999999999998": "0.1687", + "0.16875": "0.1688", + "0.16875000000000004": "0.1688", + "0.16944999999999996": "0.1694", + "0.16945": "0.1694", + "0.16945000000000002": "0.1695", + "0.17014999999999997": "0.1701", + "0.17015": "0.1701", + "0.17015000000000002": "0.1702", + "0.17084999999999997": "0.1708", + "0.17085": "0.1709", + "0.17085000000000003": "0.1709", + "0.17154999999999998": "0.1715", + "0.17155": "0.1716", + "0.17155000000000004": "0.1716", + "0.17224999999999996": "0.1722", + "0.17225": "0.1722", + "0.17225000000000001": "0.1723", + "0.17294999999999996": "0.1729", + "0.17295": "0.1729", + "0.17295000000000002": "0.1730", + "0.17364999999999997": "0.1736", + "0.17365": "0.1736", + "0.17365000000000003": "0.1737", + "0.17434999999999998": "0.1743", + "0.17435": "0.1744", + "0.17435000000000003": "0.1744", + "0.17504999999999998": "0.1750", + "0.17505": "0.1751", + "0.17505000000000004": "0.1751", + "0.17574999999999996": "0.1757", + "0.17575": "0.1757", + "0.17575000000000002": "0.1758", + "0.17644999999999997": "0.1764", + "0.17645": "0.1764", + "0.17645000000000002": "0.1765", + "0.17714999999999997": "0.1771", + "0.17715": "0.1772", + "0.17715000000000003": "0.1772", + "0.17784999999999998": "0.1778", + "0.17785": "0.1779", + "0.17785000000000004": "0.1779", + "0.17854999999999996": "0.1785", + "0.17855": "0.1785", + "0.17855000000000001": "0.1786", + "0.17924999999999996": "0.1792", + "0.17925": "0.1792", + "0.17925000000000002": "0.1793", + "0.17994999999999997": "0.1799", + "0.17995": "0.1799", + "0.17995000000000003": "0.1800", + "0.18064999999999998": "0.1806", + "0.18065": "0.1807", + "0.18065000000000003": "0.1807", + "0.18134999999999998": "0.1813", + "0.18135": "0.1814", + "0.18135000000000004": "0.1814", + "0.18204999999999996": "0.1820", + "0.18205": "0.1820", + "0.18205000000000002": "0.1821", + "0.18274999999999997": "0.1827", + "0.18275": "0.1827", + "0.18275000000000002": "0.1828", + "0.18344999999999997": "0.1834", + "0.18345": "0.1835", + "0.18345000000000003": "0.1835", + "0.18414999999999998": "0.1841", + "0.18415": "0.1842", + "0.18415000000000004": "0.1842", + "0.18484999999999996": "0.1848", + "0.18485": "0.1848", + "0.18485000000000001": "0.1849", + "0.18554999999999996": "0.1855", + "0.18555": "0.1855", + "0.18555000000000002": "0.1856", + "0.18624999999999997": "0.1862", + "0.18625": "0.1862", + "0.18625000000000003": "0.1863", + "0.18694999999999998": "0.1869", + "0.18695": "0.1870", + "0.18695000000000003": "0.1870", + "0.18764999999999998": "0.1876", + "0.18765": "0.1877", + "0.18765000000000004": "0.1877", + "0.18834999999999996": "0.1883", + "0.18835": "0.1883", + "0.18835000000000002": "0.1884", + "0.18904999999999997": "0.1890", + "0.18905": "0.1890", + "0.18905000000000002": "0.1891", + "0.18974999999999997": "0.1897", + "0.18975": "0.1898", + "0.18975000000000003": "0.1898", + "0.19044999999999998": "0.1904", + "0.19045": "0.1905", + "0.19045000000000004": "0.1905", + "0.19114999999999996": "0.1911", + "0.19115": "0.1911", + "0.19115000000000001": "0.1912", + "0.19184999999999997": "0.1918", + "0.19185": "0.1918", + "0.19185000000000002": "0.1919", + "0.19254999999999997": "0.1925", + "0.19255": "0.1925", + "0.19255000000000003": "0.1926", + "0.19324999999999998": "0.1932", + "0.19325": "0.1933", + "0.19325000000000003": "0.1933", + "0.19394999999999998": "0.1939", + "0.19395": "0.1940", + "0.19395000000000004": "0.1940", + "0.19464999999999996": "0.1946", + "0.19465": "0.1946", + "0.19465000000000002": "0.1947", + "0.19534999999999997": "0.1953", + "0.19535": "0.1953", + "0.19535000000000002": "0.1954", + "0.19604999999999997": "0.1960", + "0.19605": "0.1961", + "0.19605000000000003": "0.1961", + "0.19674999999999998": "0.1967", + "0.19675": "0.1968", + "0.19675000000000004": "0.1968", + "0.19744999999999996": "0.1974", + "0.19745": "0.1974", + "0.19745000000000001": "0.1975", + "0.19814999999999997": "0.1981", + "0.19815": "0.1981", + "0.19815000000000002": "0.1982", + "0.19884999999999997": "0.1988", + "0.19885": "0.1988", + "0.19885000000000003": "0.1989", + "0.19954999999999998": "0.1995", + "0.19955": "0.1996", + "0.19955000000000003": "0.1996", + "0.21875": "0.2188", + "0.28125": "0.2812", + "0.34375": "0.3438", + "0.40625": "0.4062", + "0.46875": "0.4688", + "0.53125": "0.5312", + "0.59375": "0.5938", + "0.65625": "0.6562", + "0.71875": "0.7188", + "0.78125": "0.7812", + "0.84375": "0.8438", + "0.90625": "0.9062", + "0.96875": "0.9688", + "1.03125": "1.0312", + "1.09375": "1.0938", + "1.15625": "1.1562", + "1.21875": "1.2188", + "1.28125": "1.2812", + "1.34375": "1.3438", + "1.40625": "1.4062", + "1.46875": "1.4688", + "1.53125": "1.5312", + "1.59375": "1.5938", + "1.65625": "1.6562", + "1.71875": "1.7188", + "1.78125": "1.7812", + "1.84375": "1.8438", + "1.90625": "1.9062", + "1.96875": "1.9688" + } } diff --git a/site/floor.js b/site/floor.js index 75e4a9d..aed8aa1 100644 --- a/site/floor.js +++ b/site/floor.js @@ -519,12 +519,17 @@ /* -------------------------------------------------------------- wording */ - // Python's "%.4f": round half to even on the exact binary value. toFixed - // rounds exact ties up, which differs only when the value is a tie exactly. + // Python's "%.4f": round the exact binary value, half to even. toFixed also + // rounds the exact value, but takes an exact tie away from zero, so the two + // differ only on exact ties. A tie is x = (2k + 1) / 20000, and a double is a + // dyadic rational, which 20000 = 32 * 625 allows only when x * 32 is an odd + // integer (0.03125, 0.09375, ...). Scaling by 32 is exact, so this finds + // exact ties and nothing else. Checking x * 10000 for a fractional .5 cannot: + // the product is itself rounded, and turns near ties into false ones. function fixed4(x) { - var scaled = x * 10000; - if (Math.abs(scaled) < 1e15 && scaled - Math.floor(scaled) === 0.5 && x * 10000 === scaled) { - var down = Math.floor(scaled); + var in32nds = x * 32; + if (Math.abs(in32nds) < 1e15 && Number.isInteger(in32nds) && in32nds % 2 !== 0) { + var down = Math.floor(x * 10000); // exact here: x * 10000 is 312.5 * in32nds var even = down % 2 === 0 ? down : down + 1; return (even / 10000).toFixed(4); }