<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=The_Principia_Machina%2FTPC-PY%2Fgen_beta_corpus.py</id>
	<title>The Principia Machina/TPC-PY/gen beta corpus.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=The_Principia_Machina%2FTPC-PY%2Fgen_beta_corpus.py"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;action=history"/>
	<updated>2026-10-21T16:58:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4815&amp;oldid=prev</id>
		<title>BFP Rauch: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4815&amp;oldid=prev"/>
		<updated>2026-09-30T02:11:02Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:11, 30 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4814&amp;oldid=prev</id>
		<title>BFP Rauch: TPC-PY source gen_beta_corpus.py (0.1.0), SHA-256 4ab6b7898fac3a41; conformed TPS 0.4.0; PROPOSED, not declared (TPC-PY 0.2.0)</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4814&amp;oldid=prev"/>
		<updated>2026-09-30T02:10:58Z</updated>

		<summary type="html">&lt;p&gt;TPC-PY source gen_beta_corpus.py (0.1.0), SHA-256 4ab6b7898fac3a41; conformed TPS 0.4.0; PROPOSED, not declared (TPC-PY 0.2.0)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:10, 30 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l153&quot;&gt;Line 153:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;json.dump({&amp;quot;corpus&amp;quot;: &amp;quot;beta&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;, &amp;quot;cases&amp;quot;: cases},&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;json.dump({&amp;quot;corpus&amp;quot;: &amp;quot;beta&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;, &amp;quot;cases&amp;quot;: cases},&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           open(os.path.join(here, &quot;beta_corpus.json&quot;), &quot;w&quot;), indent=1, sort_keys=True)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           open(os.path.join(here, &quot;beta_corpus.json&quot;), &quot;w&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;, encoding=&quot;utf-8&quot;, newline=&quot;\n&lt;/ins&gt;&quot;), indent=1, sort_keys=True)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;print(&amp;quot;cases&amp;quot;, len(cases))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;print(&amp;quot;cases&amp;quot;, len(cases))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4133&amp;oldid=prev</id>
		<title>BFP Rauch: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4133&amp;oldid=prev"/>
		<updated>2026-09-28T04:32:52Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:32, 28 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4132&amp;oldid=prev</id>
		<title>BFP Rauch: TPC-PY source gen_beta_corpus.py (0.1.0), SHA-256 35cf6925b8bdc33e; conformed TPS 0.3.0; PROPOSED, not declared (CO-8)</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/TPC-PY/gen_beta_corpus.py&amp;diff=4132&amp;oldid=prev"/>
		<updated>2026-09-27T15:43:18Z</updated>

		<summary type="html">&lt;p&gt;TPC-PY source gen_beta_corpus.py (0.1.0), SHA-256 35cf6925b8bdc33e; conformed TPS 0.3.0; PROPOSED, not declared (CO-8)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;gen_beta_corpus 0.1.0: builds beta_corpus.json for tpc_beta 0.1.0.&lt;br /&gt;
Expectations are computed by tpc_beta.py and pinned; hand_checked cases&lt;br /&gt;
have a closed form (I_x(1, 1) = x, I_x(2, 1) = x^2, I_x(1, b) = 1 - (1 -&lt;br /&gt;
x)^b, I_1/2(a, a) = 1/2, the (1, 1) interval 0.025..0.975, the (2, 1)&lt;br /&gt;
quantile sqrt(p), lgamma(1) = lgamma(2) = 0, lgamma(1/2) = ln sqrt(pi))&lt;br /&gt;
checked here against the module to 1e-11 relative (the render carries&lt;br /&gt;
twelve significant digits) before pinning. Also checks&lt;br /&gt;
canon_float against the tree&amp;#039;s tpc_strike._canon_float when the tree is&lt;br /&gt;
reachable (WORK/tree/tpc).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
import json&lt;br /&gt;
import math&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
here = os.path.dirname(os.path.abspath(__file__))&lt;br /&gt;
sys.path.insert(0, here)&lt;br /&gt;
from tpc_beta import (betainc, betainc_inv, beta_interval, beta_mean,  # noqa: E402&lt;br /&gt;
                      canon_float, lgamma, run_case)&lt;br /&gt;
&lt;br /&gt;
cases = []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def add(name, fn, args, hand=False, check=None):&lt;br /&gt;
    if check is not None:&lt;br /&gt;
        got = run_case(fn, args)&lt;br /&gt;
        v = float(got.split(&amp;quot;|&amp;quot;)[0])&lt;br /&gt;
        assert abs(v - check) &amp;lt;= 1e-11 * max(1.0, abs(check)), (name, got, check)&lt;br /&gt;
    cases.append({&amp;quot;name&amp;quot;: name, &amp;quot;fn&amp;quot;: fn, &amp;quot;args&amp;quot;: args, &amp;quot;hand_checked&amp;quot;: hand,&lt;br /&gt;
                  &amp;quot;expected&amp;quot;: run_case(fn, args)})&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---- mean ------------------------------------------------------------------&lt;br /&gt;
add(&amp;quot;M01 the prior (1, 1)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1}, True, 0.5)&lt;br /&gt;
add(&amp;quot;M02 (2, 1)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 1}, True, 2 / 3)&lt;br /&gt;
add(&amp;quot;M03 (11, 3): F 10, A 2 on the prior&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 11, &amp;quot;b&amp;quot;: 3}, True, 11 / 14)&lt;br /&gt;
add(&amp;quot;M04 (1, 11)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 11}, True, 1 / 12)&lt;br /&gt;
add(&amp;quot;M05 (0.5, 0.5)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 0.5, &amp;quot;b&amp;quot;: 0.5}, True, 0.5)&lt;br /&gt;
add(&amp;quot;M06 (100, 1)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 100, &amp;quot;b&amp;quot;: 1}, True, 100 / 101)&lt;br /&gt;
add(&amp;quot;M07 (1000000, 1)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 1000000, &amp;quot;b&amp;quot;: 1}, True)&lt;br /&gt;
add(&amp;quot;M08 (3.5, 2.25) fractional weights&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 3.5, &amp;quot;b&amp;quot;: 2.25}, True, 3.5 / 5.75)&lt;br /&gt;
add(&amp;quot;M09 (1.0000001, 1) a float a&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 1.0000001, &amp;quot;b&amp;quot;: 1}, False)&lt;br /&gt;
add(&amp;quot;M10 (7, 7)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 7, &amp;quot;b&amp;quot;: 7}, True, 0.5)&lt;br /&gt;
add(&amp;quot;M11 a = 0 is refused&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 0, &amp;quot;b&amp;quot;: 1}, True)&lt;br /&gt;
add(&amp;quot;M12 b negative is refused&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: -1}, True)&lt;br /&gt;
add(&amp;quot;M13 a boolean is refused&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: True, &amp;quot;b&amp;quot;: 1}, True)&lt;br /&gt;
add(&amp;quot;M14 a string is refused&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;b&amp;quot;: 1}, True)&lt;br /&gt;
add(&amp;quot;M15 (1e-3, 1e-3)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 0.001, &amp;quot;b&amp;quot;: 0.001}, True, 0.5)&lt;br /&gt;
add(&amp;quot;M16 (2.5, 0.5)&amp;quot;, &amp;quot;mean&amp;quot;, {&amp;quot;a&amp;quot;: 2.5, &amp;quot;b&amp;quot;: 0.5}, True, 2.5 / 3)&lt;br /&gt;
&lt;br /&gt;
# ---- interval --------------------------------------------------------------&lt;br /&gt;
add(&amp;quot;I01 (1, 1) at 0.95: 0.025 and 0.975&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 0.95}, True, 0.025)&lt;br /&gt;
add(&amp;quot;I02 (2, 1) at 0.95: sqrt(0.025) and sqrt(0.975)&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 0.95}, True, math.sqrt(0.025))&lt;br /&gt;
add(&amp;quot;I03 (1, 2) at 0.95: 1 - sqrt(0.975) and 1 - sqrt(0.025)&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 2, &amp;quot;level&amp;quot;: 0.95}, True, 1 - math.sqrt(0.975))&lt;br /&gt;
add(&amp;quot;I04 (11, 3) at 0.95&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 11, &amp;quot;b&amp;quot;: 3, &amp;quot;level&amp;quot;: 0.95}, False)&lt;br /&gt;
add(&amp;quot;I05 (1, 11) at 0.95&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 11, &amp;quot;level&amp;quot;: 0.95}, False)&lt;br /&gt;
add(&amp;quot;I06 (0.5, 0.5) at 0.95&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 0.5, &amp;quot;b&amp;quot;: 0.5, &amp;quot;level&amp;quot;: 0.95}, False)&lt;br /&gt;
add(&amp;quot;I07 (50, 50) at 0.90&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 50, &amp;quot;b&amp;quot;: 50, &amp;quot;level&amp;quot;: 0.9}, False)&lt;br /&gt;
add(&amp;quot;I08 (100, 1) at 0.99&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 100, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 0.99}, False)&lt;br /&gt;
add(&amp;quot;I09 (1, 1) at 0.5: 0.25 and 0.75&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 0.5}, True, 0.25)&lt;br /&gt;
add(&amp;quot;I10 (3, 1) at 0.95: 0.025^(1/3) and 0.975^(1/3)&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 3, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 0.95}, True, 0.025 ** (1 / 3))&lt;br /&gt;
add(&amp;quot;I11 level 0 is refused&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 0}, True)&lt;br /&gt;
add(&amp;quot;I12 level 1 is refused&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 1}, True)&lt;br /&gt;
add(&amp;quot;I13 a = 0 is refused&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 0, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: 0.95}, True)&lt;br /&gt;
add(&amp;quot;I14 (1000, 1000) at 0.95&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1000, &amp;quot;b&amp;quot;: 1000, &amp;quot;level&amp;quot;: 0.95}, False)&lt;br /&gt;
add(&amp;quot;I15 (1.5, 0.25) at 0.95&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1.5, &amp;quot;b&amp;quot;: 0.25, &amp;quot;level&amp;quot;: 0.95}, False)&lt;br /&gt;
add(&amp;quot;I16 (26, 4) at 0.95: the thin file&amp;#039;s neighbour&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 26, &amp;quot;b&amp;quot;: 4, &amp;quot;level&amp;quot;: 0.95}, False)&lt;br /&gt;
add(&amp;quot;I17 a boolean level is refused&amp;quot;, &amp;quot;interval&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;level&amp;quot;: True}, True)&lt;br /&gt;
&lt;br /&gt;
# ---- betainc ---------------------------------------------------------------&lt;br /&gt;
add(&amp;quot;B01 I_x(1, 1) = x at 0.3&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;x&amp;quot;: 0.3}, True, 0.3)&lt;br /&gt;
add(&amp;quot;B02 I_x(2, 1) = x^2 at 0.3&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 1, &amp;quot;x&amp;quot;: 0.3}, True, 0.09)&lt;br /&gt;
add(&amp;quot;B03 I_x(1, 3) = 1 - (1 - x)^3 at 0.2&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 3, &amp;quot;x&amp;quot;: 0.2}, True, 1 - 0.8 ** 3)&lt;br /&gt;
add(&amp;quot;B04 I_1/2(a, a) = 1/2 at a = 7.5&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 7.5, &amp;quot;b&amp;quot;: 7.5, &amp;quot;x&amp;quot;: 0.5}, True, 0.5)&lt;br /&gt;
add(&amp;quot;B05 x = 0&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 3, &amp;quot;x&amp;quot;: 0}, True, 0.0)&lt;br /&gt;
add(&amp;quot;B06 x = 1&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 3, &amp;quot;x&amp;quot;: 1}, True, 1.0)&lt;br /&gt;
add(&amp;quot;B07 I_x(1, 1) = x at 0.999&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;x&amp;quot;: 0.999}, True, 0.999)&lt;br /&gt;
add(&amp;quot;B08 I_x(5, 1) = x^5 at 0.9&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 5, &amp;quot;b&amp;quot;: 1, &amp;quot;x&amp;quot;: 0.9}, True, 0.9 ** 5)&lt;br /&gt;
add(&amp;quot;B09 (50.5, 30.25) at 0.6&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 50.5, &amp;quot;b&amp;quot;: 30.25, &amp;quot;x&amp;quot;: 0.6}, False)&lt;br /&gt;
add(&amp;quot;B10 (0.5, 0.5) at 0.5 (arcsine: 1/2)&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 0.5, &amp;quot;b&amp;quot;: 0.5, &amp;quot;x&amp;quot;: 0.5}, True, 0.5)&lt;br /&gt;
add(&amp;quot;B11 (1000, 1000) at 0.51&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1000, &amp;quot;b&amp;quot;: 1000, &amp;quot;x&amp;quot;: 0.51}, False)&lt;br /&gt;
add(&amp;quot;B12 (1, 1000) at 0.001 = 1 - 0.999^1000&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1000, &amp;quot;x&amp;quot;: 0.001}, True, 1 - 0.999 ** 1000)&lt;br /&gt;
add(&amp;quot;B13 x below 0 is refused&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;x&amp;quot;: -0.1}, True)&lt;br /&gt;
add(&amp;quot;B14 x above 1 is refused&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;x&amp;quot;: 1.1}, True)&lt;br /&gt;
add(&amp;quot;B15 b = 0 is refused&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 0, &amp;quot;x&amp;quot;: 0.5}, True)&lt;br /&gt;
add(&amp;quot;B16 (3, 2) at 0.4 = 6 x^3 (1/3 - x/4) ... closed form 0.1792&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 3, &amp;quot;b&amp;quot;: 2, &amp;quot;x&amp;quot;: 0.4}, True, 4 * 0.4 ** 3 - 3 * 0.4 ** 4)&lt;br /&gt;
add(&amp;quot;B17 (2, 2) at 0.25 = 3x^2 - 2x^3&amp;quot;, &amp;quot;betainc&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 2, &amp;quot;x&amp;quot;: 0.25}, True, 3 * 0.25 ** 2 - 2 * 0.25 ** 3)&lt;br /&gt;
&lt;br /&gt;
# ---- betainc_inv -----------------------------------------------------------&lt;br /&gt;
add(&amp;quot;Q01 p = 0&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 3, &amp;quot;p&amp;quot;: 0}, True, 0.0)&lt;br /&gt;
add(&amp;quot;Q02 p = 1&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 3, &amp;quot;p&amp;quot;: 1}, True, 1.0)&lt;br /&gt;
add(&amp;quot;Q03 (a, a) at 1/2 is 1/2&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 4, &amp;quot;b&amp;quot;: 4, &amp;quot;p&amp;quot;: 0.5}, True, 0.5)&lt;br /&gt;
add(&amp;quot;Q04 (2, 1): sqrt(p) at 0.36&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 2, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: 0.36}, True, 0.6)&lt;br /&gt;
add(&amp;quot;Q05 (1, 3): 1 - (1 - p)^(1/3) at 0.488&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 3, &amp;quot;p&amp;quot;: 0.488}, True, 0.2)&lt;br /&gt;
add(&amp;quot;Q06 (1, 1): p itself at 0.025&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: 0.025}, True, 0.025)&lt;br /&gt;
add(&amp;quot;Q07 (1, 1): p itself at 0.975&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: 0.975}, True, 0.975)&lt;br /&gt;
add(&amp;quot;Q08 (11, 3) at 0.025&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 11, &amp;quot;b&amp;quot;: 3, &amp;quot;p&amp;quot;: 0.025}, False)&lt;br /&gt;
add(&amp;quot;Q09 (11, 3) at 0.975&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 11, &amp;quot;b&amp;quot;: 3, &amp;quot;p&amp;quot;: 0.975}, False)&lt;br /&gt;
add(&amp;quot;Q10 (0.5, 0.5) at 0.1&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 0.5, &amp;quot;b&amp;quot;: 0.5, &amp;quot;p&amp;quot;: 0.1}, False)&lt;br /&gt;
add(&amp;quot;Q11 (1000, 1) at 0.5 = 0.5^(1/1000)&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 1000, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: 0.5}, True, 0.5 ** 0.001)&lt;br /&gt;
add(&amp;quot;Q12 p below 0 is refused&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: -0.5}, True)&lt;br /&gt;
add(&amp;quot;Q13 p above 1 is refused&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 1, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: 1.5}, True)&lt;br /&gt;
add(&amp;quot;Q14 a negative is refused&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: -1, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: 0.5}, True)&lt;br /&gt;
add(&amp;quot;Q15 (5, 1): p^(1/5) at 0.59049&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 5, &amp;quot;b&amp;quot;: 1, &amp;quot;p&amp;quot;: 0.59049}, True, 0.9)&lt;br /&gt;
add(&amp;quot;Q16 (30, 70) at 0.5&amp;quot;, &amp;quot;betainc_inv&amp;quot;, {&amp;quot;a&amp;quot;: 30, &amp;quot;b&amp;quot;: 70, &amp;quot;p&amp;quot;: 0.5}, False)&lt;br /&gt;
&lt;br /&gt;
# ---- lgamma ----------------------------------------------------------------&lt;br /&gt;
add(&amp;quot;L01 lgamma(1) = 0 (to the approximation&amp;#039;s error)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 1}, True)&lt;br /&gt;
add(&amp;quot;L02 lgamma(2) = 0 (to the approximation&amp;#039;s error)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 2}, True)&lt;br /&gt;
add(&amp;quot;L03 lgamma(1/2) = ln sqrt(pi)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 0.5}, True, math.log(math.sqrt(math.pi)))&lt;br /&gt;
add(&amp;quot;L04 lgamma(10.5)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 10.5}, True, math.lgamma(10.5))&lt;br /&gt;
add(&amp;quot;L05 lgamma(100)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 100}, True, math.lgamma(100))&lt;br /&gt;
add(&amp;quot;L06 lgamma(3) = ln 2&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 3}, True, math.log(2))&lt;br /&gt;
add(&amp;quot;L07 lgamma(6) = ln 120&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 6}, True, math.log(120))&lt;br /&gt;
add(&amp;quot;L08 lgamma(0.001)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 0.001}, True, math.lgamma(0.001))&lt;br /&gt;
add(&amp;quot;L09 lgamma(0.25), reflection&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 0.25}, True, math.lgamma(0.25))&lt;br /&gt;
add(&amp;quot;L10 lgamma(1e6)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 1000000}, True, math.lgamma(1000000))&lt;br /&gt;
add(&amp;quot;L11 lgamma(1.5) = ln(sqrt(pi)/2)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 1.5}, True, math.log(math.sqrt(math.pi) / 2))&lt;br /&gt;
add(&amp;quot;L12 x = 0 is refused&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 0}, True)&lt;br /&gt;
add(&amp;quot;L13 x negative is refused&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: -2.5}, True)&lt;br /&gt;
add(&amp;quot;L14 a boolean is refused&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: True}, True)&lt;br /&gt;
add(&amp;quot;L15 lgamma(171.5)&amp;quot;, &amp;quot;lgamma&amp;quot;, {&amp;quot;x&amp;quot;: 171.5}, True, math.lgamma(171.5))&lt;br /&gt;
&lt;br /&gt;
# ---- canon -----------------------------------------------------------------&lt;br /&gt;
tree = os.path.join(here, &amp;quot;..&amp;quot;, &amp;quot;..&amp;quot;, &amp;quot;tree&amp;quot;, &amp;quot;tpc&amp;quot;)&lt;br /&gt;
strike_canon = None&lt;br /&gt;
if os.path.exists(os.path.join(tree, &amp;quot;tpc_strike.py&amp;quot;)):&lt;br /&gt;
    sys.path.insert(0, tree)&lt;br /&gt;
    from tpc_strike import _canon_float as strike_canon  # noqa: E402&lt;br /&gt;
cvals = [(&amp;quot;K01 zero&amp;quot;, 0.0), (&amp;quot;K02 negative zero&amp;quot;, -0.0), (&amp;quot;K03 one&amp;quot;, 1.0), (&amp;quot;K04 0.1&amp;quot;, 0.1), (&amp;quot;K05 1e-5 (exponent form)&amp;quot;, 1e-5),&lt;br /&gt;
         (&amp;quot;K06 1e12 (exponent form)&amp;quot;, 1e12), (&amp;quot;K07 123456789012 (fixed)&amp;quot;, 123456789012.0), (&amp;quot;K08 1/3&amp;quot;, 1 / 3),&lt;br /&gt;
         (&amp;quot;K09 2e-9 (C writes 2e-09)&amp;quot;, 2e-9), (&amp;quot;K10 1e22&amp;quot;, 1e22), (&amp;quot;K11 0.0001 (fixed)&amp;quot;, 0.0001), (&amp;quot;K12 -1.5e-10&amp;quot;, -1.5e-10),&lt;br /&gt;
         (&amp;quot;K13 an integer argument 7&amp;quot;, 7), (&amp;quot;K14 0.025 rounded from 0.024999999999999988&amp;quot;, 0.024999999999999988),&lt;br /&gt;
         (&amp;quot;K15 999999999999.5 rounds up to 1e12&amp;quot;, 999999999999.5), (&amp;quot;K16 -8.881784197001252e-16&amp;quot;, -8.881784197001252e-16),&lt;br /&gt;
         (&amp;quot;K17 12345.678901234567&amp;quot;, 12345.678901234567)]&lt;br /&gt;
for name, v in cvals:&lt;br /&gt;
    if strike_canon is not None and not isinstance(v, bool) and isinstance(v, float):&lt;br /&gt;
        assert canon_float(v) == strike_canon(v), (name, canon_float(v), strike_canon(v))&lt;br /&gt;
    add(name, &amp;quot;canon&amp;quot;, {&amp;quot;x&amp;quot;: v}, True)&lt;br /&gt;
add(&amp;quot;K18 a boolean is refused&amp;quot;, &amp;quot;canon&amp;quot;, {&amp;quot;x&amp;quot;: True}, True)&lt;br /&gt;
if strike_canon is not None:&lt;br /&gt;
    import random&lt;br /&gt;
    random.seed(20260926)&lt;br /&gt;
    same = 0&lt;br /&gt;
    for _ in range(100000):&lt;br /&gt;
        v = random.uniform(-1, 1) * 10 ** random.randint(-30, 30)&lt;br /&gt;
        if random.random() &amp;lt; 0.1:&lt;br /&gt;
            v = round(v, random.randint(0, 6))&lt;br /&gt;
        if canon_float(v) == strike_canon(v):&lt;br /&gt;
            same += 1&lt;br /&gt;
    print(&amp;quot;canon_float against tpc_strike._canon_float: 17 pinned values and %d/100000 random values identical&amp;quot; % same)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;canon_float against tpc_strike._canon_float: tree not reachable, not checked&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
json.dump({&amp;quot;corpus&amp;quot;: &amp;quot;beta&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;, &amp;quot;cases&amp;quot;: cases},&lt;br /&gt;
          open(os.path.join(here, &amp;quot;beta_corpus.json&amp;quot;), &amp;quot;w&amp;quot;), indent=1, sort_keys=True)&lt;br /&gt;
print(&amp;quot;cases&amp;quot;, len(cases))&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
</feed>