◄ WORLD V · SONNY 5DART 056 · a helldive at the net

PASCAL'S TRIANGLE not Pascal's; where two additions meet a wall

Start with 1s down the edges; every inside number is the sum of the two above it. Out falls the whole of combinatorics — the binomial coefficients, the counts of how many ways to choose. The name is a 700-year misattribution: India, Persia and China had it centuries before Blaise Pascal. And it is the dart that finds a real edge: small rows run in I-13’s array, but the big ones need an array of bignums — and the campaign’s two value-model additions do not yet compose.

THE TECHNIQUE C(n,k) = C(n−1,k−1) + C(n−1,k)

Each entry is the sum of the two directly above. Row n is the coefficients of (x+y)n; the k-th entry is C(n,k), the number of ways to choose k of n. Slide a row into the next by adding neighbours. The middle entries explode — ask for the centre of row 100 and watch it need every digit. live demo

HISTORY & CREDIT a triangle with a different name in every land

“Pascal’s” triangle — and Pascal (1654) was among the first last to arrive. cited

India · Pingala (c. 200 BCE) and his commentator Halayudha (10th c.) describe the Meru-prastaara, the “staircase of Mount Meru.”
Persia · Al-Karaji (c. 1000) and Omar Khayyam (c. 1100) give the triangle and the binomial rule — in Iran it is Khayyam’s triangle.
China · Jia Xian (11th c.) and Yang Hui (1261) tabulate it — it is Yang Hui’s triangle there; Europe later called it Tartaglia’s in Italy, and Apianus printed it on a 1527 book cover.
1654 · Blaise Pascal’s Traite du triangle arithmetique studies it deeply and ties it to probability — earning the Western name, if not priority.

Every culture drew the same triangle; only the West’s name stuck to the whole world. misnamed, like Fibonacci-051

RECOMMEND FOR I-13 the first dart where two additions don't compose

A row is a bounded array; slide it into the next by adding neighbours right-to-left in place (so each write uses the old left value) — the same downward scan as knapsack-053. Small rows run exactly:

def build(I r, I k) { // grow one row in place if k <= 0 { -> r } r[k] <- r[k] + r[k - 1] -> build(r, k - 1) }
$ i13 run pascal.i13 # row 10 in an f64 array C(10,5) = 252 C(10,2) = 45 # exact

But the big rows need bignum entries (C(100,50) is 30 digits; f64 can’t hold row 57 exactly — it is the first row past 2⁵³, the last exact central term being C(56,28)) — and an array cannot hold a bignum:

$ i13 run pascal_big.i13 error[E0501] MakeArray requires a plain number here, got a bignum
Recommend: a genuinely new want — suggestion-box PS-014. The array (arena of f64) and bignum (an arena handle) both landed this campaign, but they do not compose: an array’s elements must be plain numbers, so an array of bignums is rejected. Pascal is the first dart to hit that seam. Small rows run today; a Pascal triangle to arbitrary depth wants elements that are themselves bignum handles.
Honest scope: this is an author-level call (it touches what an array element may be), so it is flagged, not smuggled — and the credit stands on its own: “Pascal’s” is a Western honorific retrofitted by Montmort (1708), a name for the organizer, not the origin.