Nesting dolls

A console that runs a console, which runs a tiny network.

N, the tiny network

w₁₁
w₂₁
w₁₂
w₂₂
b₁
b₂
v₁
v₂
c

Its 9 numbers. Pick Custom to change them.

The answers

x₁x₂console 1console 2
00
01
10
11

Computed live by your browser, for all four inputs at once.

How it works (for the curious)

I1, as I2 sees it

The 103 numbers of I1 (weights offset to unsigned, then biases), fed to I2 as inputs. I2 knows I1's wiring, which unit feeds which, but none of these values.

The tower

Netinputsunitsweights
Nthe program2—9
I1 = interpret(N)runs any N113482in CSS, ×4
I2 = interpret(I1)runs I1 running N1141,8663,324in CSS, ×4
I3 = interpret(I2)runs I2 running I1 running N4,795191,288270,246numpy only

Each level costs roughly the previous one's weights times their bit width. I3 is exact too (checked in numpy), but its activation bounds, which it needs for the products, reach 10¹⁸, far past what CSS computes exactly. So the tower stops at two in the browser.

Checked in numpy for the five presets and 400 random N (every weight −4…3, every bias −4…4) on all four inputs: I1 and I2 equal N exactly, and every sum stays under 2²⁴. The browser test checks every preset and some custom N's in Chromium, Firefox and WebKit. Built by handwired/scripts/tower.py.