aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-25 10:37:35 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-25 10:37:35 -0400
commit4a00aae2c0e6f42e203b13033c2bd8a6b84baee9 (patch)
tree18baace2d5fe2955da8b87c9ff7246f7a0bb64d5
parentb2806d7af02e46069c5604baab70592f3e6096bc (diff)
Handle numeric literal base decoding with a compound scan, not Group
-rw-r--r--docs/bqn.js4
-rw-r--r--docs/implementation/codfns.html6
-rw-r--r--implementation/codfns.md6
-rw-r--r--src/c.bqn9
4 files changed, 13 insertions, 12 deletions
diff --git a/docs/bqn.js b/docs/bqn.js
index e99e111c..7c9f3829 100644
--- a/docs/bqn.js
+++ b/docs/bqn.js
@@ -177,9 +177,9 @@ let runtime = run(
// Compiler
runtime[42] = assertFn("Compiler");
let compile = run(
- new Uint8Array([0,54,0,0,0,75,17,22,0,0,11,14,0,81,0,82,0,83,0,84,0,21,21,0,0,17,0,85,0,86,0,87,0,88,0,89,0,20,0,54,0,47,3,2,17,0,40,0,31,7,0,55,17,0,54,0,25,16,0,0,0,76,17,0,90,0,56,22,0,1,11,0,25,16,0,42,0,0,7,0,92,17,0,20,16,0,39,0,21,7,0,91,17,0,57,0,0,0,75,17,0,21,0,94,17,0,21,0,93,0,24,0,55,17,17,0,95,3,14,0,41,0,13,7,0,11,0,48,0,22,8,0,21,19,16,22,0,2,22,0,3,4,2,11,14,15,1,22,0,4,11,14,15,2,21,0,2,7,22,0,5,11,14,21,0,3,0,27,0,46,0,0,7,9,0,50,0,39,0,41,0,22,7,7,8,16,22,0,6,22,0,7,22,0,8,22,0,9,22,0,10,22,0,11,22,0,12,22,0,13,22,0,14,22,0,15,22,0,16,22,0,17,22,0,18,22,0,19,4,14,11,14,0,32,0,50,0,1,8,0,12,0,9,0,15,0,49,0,59,8,19,0,32,0,49,0,58,8,19,22,0,20,11,14,21,0,15,0,32,16,22,0,21,11,14,0,59,0,21,0,62,0,25,16,0,28,16,0,29,0,61,17,17,0,21,21,0,3,0,23,0,60,17,0,21,0,59,17,0,29,16,0,23,21,0,14,0,32,16,17,17,22,0,22,11,14,0,60,0,59,3,2,0,42,0,1,7,0,60,0,61,0,63,3,3,17,0,20,16,22,0,23,11,14,15,3,22,0,24,11,14,15,4,22,0,25,11,14,15,5,22,0,26,11,14,15,6,22,0,27,11,14,15,7,22,0,28,11,14,15,8,22,0,29,11,14,15,9,22,0,30,11,14,15,10,22,0,31,11,25,0,59,0,38,0,49,0,21,8,0,96,21,0,1,0,13,16,0,11,0,58,17,0,39,0,29,7,0,97,17,0,98,21,0,1,3,4,17,25,21,0,1,0,50,0,31,8,0,50,0,17,0,53,0,18,0,29,0,13,19,0,47,21,1,4,8,8,8,0,18,0,19,19,22,0,2,11,14,21,0,1,0,30,16,22,0,3,11,14,0,19,0,30,21,0,1,0,31,21,0,3,17,19,0,6,0,58,19,0,39,0,1,7,0,58,19,0,39,0,31,7,21,0,3,19,21,0,2,0,19,19,25,0,77,0,14,21,0,1,17,22,0,3,11,14,0,78,0,14,21,0,1,17,22,0,4,11,0,9,0,49,0,26,0,49,0,59,0,59,3,2,8,8,16,0,29,16,22,0,5,11,14,0,79,0,14,21,0,1,17,22,0,6,11,0,29,16,22,0,7,11,14,21,0,5,21,0,7,0,24,0,55,17,21,0,3,0,29,16,3,3,0,21,16,22,0,8,11,0,30,16,22,0,9,11,14,21,0,8,0,31,21,0,9,17,22,0,8,12,14,21,0,5,0,0,0,62,17,21,0,7,0,24,0,58,17,0,58,0,21,21,1,0,0,14,21,0,1,17,17,0,29,16,0,29,0,49,21,0,3,0,46,0,0,7,16,0,21,0,59,17,0,50,0,31,0,47,0,27,0,50,0,1,8,8,8,8,16,3,3,0,21,16,0,31,21,0,9,17,22,0,10,11,14,15,11,0,53,15,12,8,22,0,11,11,14,21,0,10,0,30,21,0,8,17,0,13,0,50,0,21,8,16,0,13,0,39,0,23,7,0,58,19,0,50,21,0,11,8,16,0,24,0,55,17,22,0,12,11,14,21,0,12,0,39,0,29,7,22,0,8,13,14,21,0,12,0,39,0,29,7,22,0,10,13,14,21,0,1,0,13,16,22,0,13,11,14,21,0,8,0,43,0,29,7,16,0,23,21,0,13,17,22,0,14,11,14,21,0,10,0,43,0,29,7,16,0,23,21,0,13,17,22,0,15,11,14,21,0,6,0,9,0,49,0,27,8,16,0,9,21,0,14,17,22,0,16,11,0,26,16,0,10,21,0,15,0,10,21,0,14,17,0,46,0,13,7,16,17,0,8,16,22,0,17,11,14,21,0,17,0,11,21,0,15,17,0,9,21,0,6,0,10,21,0,4,17,17,0,44,0,10,7,16,0,8,16,0,38,0,99,17,14,0,80,0,14,21,0,1,17,0,9,21,0,17,17,22,0,18,11,14,21,0,4,0,9,21,0,14,17,0,27,16,0,10,21,0,18,17,0,29,16,22,0,19,11,14,0,75,0,1,0,80,17,0,2,21,0,18,0,31,21,0,19,17,17,0,1,21,0,1,0,31,21,0,19,17,17,22,0,20,11,14,21,0,15,0,10,21,0,14,17,0,9,21,0,6,17,0,46,0,13,7,16,0,2,21,0,16,0,12,21,0,14,17,0,9,21,0,6,17,22,0,21,11,0,46,0,0,7,16,17,0,39,0,1,7,0,58,17,0,39,0,37,7,21,0,1,17,0,41,0,24,7,0,58,17,22,0,22,11,14,21,0,1,0,29,21,0,17,17,21,1,5,16,22,0,23,11,14,21,1,18,0,32,0,48,0,39,0,1,7,0,22,0,18,19,8,21,1,15,17,21,1,20,21,0,23,17,22,0,24,11,0,11,0,49,0,27,8,16,22,0,25,11,14,21,1,17,0,44,0,0,7,16,0,0,0,55,17,0,14,21,0,23,17,22,0,26,11,14,21,0,23,0,29,21,0,25,17,0,39,0,1,7,21,1,17,0,32,16,17,0,39,0,3,0,47,0,5,8,7,21,1,1,17,22,0,27,11,14,21,1,17,0,32,16,0,0,21,1,1,17,0,16,21,0,23,17,0,9,21,0,24,17,0,2,21,1,1,17,0,1,22,0,23,13,14,0,59,0,11,21,0,27,17,0,21,0,59,17,0,31,21,0,25,0,46,0,0,7,16,17,0,9,21,0,24,17,22,0,28,11,0,12,21,0,24,17,22,0,29,11,14,21,0,24,0,2,21,0,23,17,0,21,0,49,0,59,8,0,48,0,29,0,49,0,26,0,50,0,10,8,8,8,21,0,28,17,21,1,26,16,22,0,30,11,14,21,0,27,0,29,0,49,0,15,0,49,0,59,8,8,16,0,14,0,49,0,62,8,0,50,0,9,8,0,0,0,19,19,21,0,29,0,11,0,49,0,26,8,16,0,39,0,29,7,21,0,26,17,17,22,0,31,11,14,21,0,23,0,37,21,0,28,0,12,21,0,25,17,0,46,0,0,7,16,0,2,21,0,26,0,12,21,0,29,17,17,0,39,0,1,7,0,58,17,17,22,0,32,11,14,21,0,17,0,27,16,0,46,0,0,7,16,0,31,21,0,21,0,29,16,0,21,21,0,19,17,17,0,21,21,0,25,0,29,16,0,31,0,49,21,0,28,0,50,0,31,8,0,30,9,8,16,17,22,0,33,11,14,21,0,32,21,0,30,21,0,20,21,0,22,3,4,22,0,34,11,14,21,0,34,0,41,0,33,7,16,22,0,35,11,0,39,0,41,0,29,0,49,0,46,0,6,7,0,27,0,55,19,0,12,0,19,19,8,7,7,22,0,34,13,14,21,0,23,0,31,0,49,21,0,33,8,0,51,21,0,34,0,41,0,13,7,16,0,27,21,1,21,17,0,46,0,0,7,16,0,0,21,0,35,17,0,21,16,8,16,0,29,21,1,18,21,1,20,21,0,23,17,0,10,21,0,24,17,0,8,16,0,10,21,0,25,17,17,22,0,23,12,14,21,1,9,21,1,20,21,0,23,17,0,9,0,49,0,19,0,10,21,1,11,0,32,16,0,0,0,62,0,64,3,2,17,0,35,21,0,23,17,19,0,27,0,58,19,8,16,0,8,16,0,39,0,29,7,22,0,23,13,14,21,1,9,21,1,20,21,0,23,17,0,9,21,1,11,0,32,16,0,0,0,60,0,61,3,2,17,0,35,21,0,23,17,0,26,0,58,17,17,0,8,16,0,39,0,29,7,22,0,23,13,14,21,1,22,0,31,21,0,23,0,5,21,1,21,17,17,0,29,0,49,21,0,34,0,32,16,0,13,16,0,21,21,1,21,17,21,1,20,21,0,23,17,8,0,51,21,0,31,8,16,22,0,36,11,14,21,1,14,0,32,16,0,39,0,22,7,0,61,17,21,1,20,21,0,23,17,0,2,0,61,17,0,0,22,0,23,13,14,21,0,23,21,0,36,21,0,34,0,32,16,0,13,16,21,0,34,0,24,0,58,17,0,21,16,3,4,25,0,59,0,38,0,49,0,21,8,0,100,21,0,1,0,13,16,0,11,0,58,17,0,39,0,29,7,0,97,17,0,101,21,1,2,0,31,21,0,1,17,0,102,3,5,17,25,21,1,16,0,44,0,25,0,50,0,0,8,7,16,0,21,0,103,0,44,0,1,7,16,0,0,21,1,17,0,32,16,17,17,0,41,21,0,1,0,50,0,14,8,7,16,22,0,3,22,0,4,22,0,5,22,0,6,22,0,7,4,5,11,14,21,1,17,0,32,16,0,11,21,0,1,17,0,10,21,0,3,17,0,8,16,0,44,0,10,7,0,53,21,0,1,0,50,0,29,8,0,47,21,1,25,8,8,16,14,21,0,1,0,14,0,59,17,22,0,8,11,0,10,21,0,3,17,22,0,9,11,0,10,21,0,7,17,22,0,10,11,0,10,21,0,6,17,0,8,16,22,0,11,11,14,21,0,9,0,27,16,0,15,21,0,6,17,0,44,0,9,7,16,0,38,0,104,17,14,21,0,10,0,9,21,0,11,0,8,16,0,27,16,17,0,44,0,10,7,16,0,8,16,0,38,0,105,17,14,21,0,1,0,29,21,0,10,17,0,11,0,49,0,27,8,0,10,0,14,0,49,0,59,8,19,16,0,44,0,9,7,16,0,38,0,106,17,14,21,0,6,0,10,21,0,8,17,0,26,0,10,21,0,3,0,26,16,0,9,21,0,4,17,19,0,9,0,27,19,0,58,17,0,15,21,0,5,0,10,21,0,4,17,17,0,44,0,9,7,16,0,38,0,107,17,14,21,1,15,0,32,16,0,1,21,0,1,17,0,29,21,0,11,17,0,39,0,31,7,0,54,0,25,16,0,39,0,21,7,0,65,0,66,3,2,17,17,22,0,12,11,14,21,0,6,0,27,16,0,29,21,0,11,17,22,0,13,11,0,10,21,0,9,0,27,16,0,29,21,0,11,17,17,22,0,14,11,14,21,0,12,0,37,21,0,14,0,46,0,0,7,16,0,39,0,1,7,0,58,17,17,0,41,0,28,0,47,0,44,0,2,0,49,0,54,8,0,50,0,0,8,7,8,7,16,0,2,21,0,13,0,29,21,0,14,17,0,39,0,31,7,0,58,0,55,3,2,17,17,22,0,15,11,14,21,0,8,0,29,21,0,9,17,22,0,16,11,14,0,59,0,21,21,0,7,17,0,13,0,47,0,25,8,0,0,0,58,19,0,2,0,19,19,0,46,0,6,7,9,16,22,0,17,11,14,21,0,9,0,29,0,26,0,13,19,16,21,0,17,0,50,0,31,8,0,50,0,1,0,2,0,11,0,49,0,27,8,19,8,16,0,29,21,0,16,17,22,0,18,11,14,21,0,16,21,0,15,0,50,0,41,0,18,0,53,0,59,8,7,8,0,39,0,21,7,0,59,19,0,29,0,21,0,49,0,59,8,19,16,0,39,0,1,7,21,0,18,17,22,0,19,11,0,7,16,0,4,0,54,17,22,0,20,11,14,21,0,15,0,29,21,0,16,17,0,29,0,49,21,0,19,0,11,0,59,17,8,0,51,0,2,8,21,0,20,17,0,29,0,49,21,0,19,0,12,0,59,17,8,0,51,0,39,0,3,7,8,21,0,20,17,25,0,67,22,0,3,11,14,21,0,1,0,6,0,58,17,0,43,0,4,7,21,0,3,17,0,5,16,22,0,4,11,14,21,0,4,0,0,0,58,17,0,46,0,0,7,0,50,0,27,0,50,0,29,8,0,1,0,19,0,32,0,55,19,0,25,9,19,8,16,0,30,16,0,30,16,22,0,5,11,14,21,0,1,15,13,21,0,4,17,0,31,21,0,5,17,25,0,42,0,14,7,0,45,15,14,7,0,19,0,47,0,40,0,59,7,8,19,0,32,0,55,19,22,0,3,11,14,15,15,22,0,4,11,14,0,59,21,0,4,0,109,8,0,39,0,58,21,0,4,0,110,8,7,3,2,0,52,0,13,0,48,0,12,8,8,22,0,5,11,14,21,0,1,21,0,5,0,111,3,2,0,52,0,13,0,48,0,5,8,0,11,21,0,3,19,8,21,0,2,17,0,39,0,38,7,0,59,17,25,0,97,0,29,21,0,1,0,13,16,0,11,0,58,17,17,0,21,0,112,17,0,39,0,38,7,0,59,17,25,21,0,2,22,0,3,22,0,4,4,2,11,14,21,1,11,0,32,0,50,0,1,8,0,7,0,62,19,0,4,0,55,19,0,2,21,1,20,19,21,0,1,17,22,0,5,11,0,46,0,0,7,16,22,0,6,11,0,30,16,22,0,7,11,14,21,1,11,0,32,16,0,0,0,62,17,0,39,0,22,7,0,62,17,21,1,20,21,0,1,17,0,2,21,0,5,17,22,0,8,11,14,21,0,1,0,31,0,49,21,0,7,8,0,48,0,29,0,49,0,55,0,50,0,14,8,8,0,39,0,1,7,0,58,19,0,17,0,53,21,1,28,8,0,29,0,49,0,58,0,50,0,14,8,8,19,8,21,0,5,17,14,21,0,6,0,32,21,0,7,0,32,16,17,0,15,0,59,17,0,38,0,113,17,14,21,1,12,21,1,20,21,0,1,17,0,10,0,49,0,26,8,16,22,0,9,11,14,21,0,9,0,31,0,49,21,0,7,8,0,51,0,27,8,16,22,0,10,11,14,21,0,10,0,10,21,0,9,17,22,0,11,11,14,21,0,9,0,31,21,0,7,17,0,30,16,0,39,0,31,7,22,0,7,13,14,21,0,11,0,8,16,0,2,22,0,4,13,14,0,59,0,12,21,0,5,17,22,0,12,11,14,21,1,11,0,32,16,0,0,0,58,17,0,14,21,0,1,17,0,11,21,0,11,17,22,0,13,11,14,21,1,9,21,1,20,21,0,1,17,0,10,21,0,9,17,0,10,21,0,12,17,0,31,0,39,0,21,7,0,1,0,21,0,47,0,46,0,0,7,8,19,0,58,19,0,30,0,50,0,30,0,50,0,39,0,31,7,8,0,1,0,39,0,31,7,19,0,31,0,49,0,30,8,0,18,19,8,0,18,0,21,0,55,19,19,21,0,7,17,0,24,0,55,17,0,0,0,58,17,0,46,0,0,7,16,0,30,16,22,0,14,11,14,21,0,8,0,31,21,0,14,17,0,46,0,0,7,16,22,0,15,11,0,30,16,22,0,16,11,14,21,0,16,0,39,0,31,7,22,0,14,13,14,21,0,16,0,39,0,31,7,22,0,15,13,14,21,0,14,0,39,0,31,7,22,0,1,13,14,21,0,8,0,31,21,0,14,17,22,0,17,11,14,0,59,0,11,21,0,17,17,0,29,16,22,0,18,11,14,0,59,0,12,21,0,17,17,22,0,19,11,0,46,0,0,7,16,22,0,20,11,14,0,14,0,18,0,29,0,10,19,21,0,19,19,0,29,0,49,0,26,0,49,0,58,8,8,9,0,8,9,22,0,21,11,14,21,0,1,0,30,21,1,14,0,32,16,0,0,0,61,17,0,0,0,59,0,60,0,64,0,61,3,4,17,17,21,0,21,0,49,0,60,8,0,2,0,62,19,0,6,21,0,21,0,49,0,62,8,19,0,2,0,62,19,0,0,21,0,21,0,49,0,58,8,19,0,21,0,59,19,16,22,0,22,11,14,21,1,23,0,31,21,0,22,17,22,0,23,11,14,21,0,4,0,31,0,49,21,0,14,0,31,21,0,18,17,8,0,51,0,64,0,25,16,0,29,0,49,0,15,0,49,0,62,8,0,0,0,58,19,8,16,0,31,21,0,22,0,24,0,58,17,17,8,16,22,0,4,12,14,21,0,4,0,15,0,58,17,0,10,21,0,4,0,14,0,60,17,0,31,0,49,21,0,7,8,0,51,0,27,8,16,17,0,19,0,2,0,49,0,13,0,47,0,25,8,0,0,0,58,19,8,0,46,0,6,7,9,0,48,0,14,8,0,10,0,49,0,8,8,19,0,9,0,18,19,21,0,13,17,0,0,22,0,4,13,14,21,1,21,0,1,21,0,1,17,22,0,24,11,21,0,3,0,50,0,11,8,0,9,0,15,0,49,0,59,8,19,16,22,0,25,11,0,29,16,22,0,26,11,14,21,0,1,0,31,21,0,26,17,22,0,27,11,14,21,1,14,21,1,20,21,0,1,17,0,29,16,22,0,28,11,14,21,1,10,0,32,16,0,14,21,0,1,17,0,31,21,1,10,21,1,20,21,0,1,17,0,2,0,49,0,13,0,47,0,25,8,8,16,0,46,0,6,7,16,17,22,0,29,11,14,21,0,8,0,1,21,0,5,17,0,31,21,0,14,17,0,46,0,0,7,16,0,30,16,22,0,7,12,14,21,0,14,0,31,21,0,7,17,22,0,30,11,14,21,0,9,0,1,21,0,10,17,0,31,21,0,30,17,0,12,0,29,0,48,0,1,8,0,11,19,0,59,17,0,39,0,3,7,0,62,17,0,0,0,58,17,22,0,31,11,14,21,1,11,0,32,16,0,0,0,61,17,0,14,21,0,1,17,0,31,21,0,7,17,0,29,16,22,0,32,11,14,21,0,9,0,31,21,0,30,17,0,30,16,22,0,33,11,0,39,0,31,7,22,0,7,13,14,21,0,14,0,31,21,0,7,17,22,0,30,12,14,21,0,7,0,39,0,31,7,22,0,1,13,14,21,0,30,0,39,0,31,7,22,0,4,13,14,21,0,30,0,39,0,31,7,22,0,12,13,14,21,0,9,0,12,21,0,10,17,0,31,21,0,30,17,0,29,16,22,0,34,11,14,21,0,7,0,30,16,22,0,35,11,14,21,0,33,0,30,16,0,31,22,0,32,13,14,21,1,9,21,1,20,21,0,1,17,22,0,36,11,14,21,0,9,0,31,21,0,30,17,0,10,21,0,12,17,0,10,21,0,36,17,22,0,37,11,14,21,1,10,0,32,16,0,39,0,22,7,0,62,17,21,1,20,21,0,1,17,22,0,38,11,14,21,0,38,0,10,21,0,37,17,0,1,22,0,4,13,14,0,62,0,16,21,0,4,17,22,0,39,11,14,0,60,0,14,21,0,4,17,0,26,16,0,10,0,58,0,16,21,0,4,17,17,22,0,40,11,14,21,0,40,0,31,21,0,37,0,27,16,0,2,0,49,0,13,0,47,0,25,8,8,16,0,46,0,6,7,16,17,22,0,41,11,14,21,0,40,0,26,16,0,9,21,1,10,0,32,16,0,0,0,58,17,0,14,21,0,1,17,17,0,11,21,0,41,17,22,0,42,11,14,0,60,0,14,21,0,4,17,0,26,16,0,11,21,0,38,17,0,10,21,0,39,17,22,0,43,11,14,21,0,42,0,10,21,0,43,17,0,8,16,0,28,16,0,2,0,47,0,46,0,6,7,8,0,1,0,18,19,0,49,0,13,0,47,0,25,8,8,16,0,28,16,22,0,44,11,14,21,0,38,0,29,16,21,0,44,0,50,0,31,8,0,0,0,58,19,0,0,0,19,19,16,22,0,45,11,14,0,58,0,1,21,0,45,17,0,43,0,29,7,16,0,23,21,0,1,0,13,16,17,0,27,0,50,0,1,8,16,0,31,21,0,35,17,0,46,0,0,7,16,0,27,16,22,0,46,11,0,31,21,0,7,17,22,0,47,11,14,21,0,4,0,29,0,49,21,0,47,8,0,51,0,41,0,55,7,8,16,22,0,4,12,14,21,0,43,0,8,16,0,46,0,0,7,0,2,0,47,0,46,0,6,7,8,0,1,0,19,19,21,0,37,19,0,15,0,11,0,7,19,0,62,19,0,9,0,19,19,16,0,9,21,0,37,0,2,0,49,0,13,0,47,0,25,8,0,0,0,58,19,8,0,46,0,6,7,9,0,48,0,15,8,21,0,38,17,17,22,0,48,11,14,21,0,38,0,10,21,0,37,17,0,26,16,0,12,21,0,39,17,22,0,49,11,14,21,0,49,0,29,16,0,28,16,22,0,50,11,14,21,0,49,0,27,16,0,11,21,0,39,17,0,10,0,58,0,14,21,0,4,17,17,0,11,21,0,49,0,26,16,0,9,21,0,43,17,17,0,9,21,0,41,0,8,16,0,10,21,0,48,17,17,0,11,21,0,47,0,26,16,17,0,29,16,22,0,51,11,14,0,59,0,14,21,0,4,17,0,11,21,0,43,17,0,10,0,59,0,16,21,0,4,17,0,9,21,0,41,17,17,0,9,21,1,13,0,32,16,0,13,21,0,1,17,17,0,26,16,0,31,21,0,51,17,22,0,52,11,14,21,0,3,0,0,21,1,21,17,0,16,21,0,1,17,22,0,53,11,14,21,1,8,0,44,0,0,7,16,0,0,0,55,17,0,15,21,0,1,17,0,10,21,0,53,17,0,29,16,22,0,54,11,14,21,0,1,0,31,21,0,54,17,22,0,55,11,0,36,16,0,9,16,22,0,56,11,14,21,1,11,0,32,16,0,0,0,64,17,0,14,21,0,1,0,29,21,0,12,17,17,22,0,57,11,14,0,58,0,21,21,0,37,17,0,9,21,0,12,0,21,0,58,17,17,0,1,0,59,0,21,21,0,36,17,17,0,46,0,0,7,16,0,29,0,58,0,21,21,0,12,17,17,0,24,0,49,0,1,8,0,1,0,24,19,0,58,17,0,29,21,0,57,17,0,0,0,58,17,22,0,58,11,14,21,0,57,0,21,0,59,17,0,31,0,49,0,46,0,0,7,8,21,0,12,17,0,12,21,0,36,17,0,29,16,22,0,59,11,14,21,1,11,0,32,16,0,0,0,62,17,0,14,21,0,1,17,0,29,16,22,0,60,11,14,21,0,46,0,9,21,0,29,17,0,9,21,0,25,17,22,0,61,11,0,31,21,0,26,17,22,0,62,11,14,0,59,0,21,21,0,61,17,0,46,0,0,7,16,0,29,0,58,0,21,21,0,19,17,17,0,27,0,50,0,1,8,16,22,0,63,11,14,21,0,20,0,31,21,0,26,17,0,39,21,0,16,0,31,21,0,18,17,0,21,21,0,1,0,13,16,17,7,0,31,0,29,0,49,21,0,62,8,19,0,21,21,0,16,0,29,21,0,19,17,0,21,0,55,17,0,50,0,31,8,19,16,22,0,64,11,14,21,0,64,0,30,16,0,31,0,49,21,0,27,0,29,0,49,21,0,62,8,0,50,0,21,8,16,22,0,65,11,0,50,0,31,8,0,30,9,8,16,22,0,66,11,14,21,0,64,0,19,0,31,21,0,66,0,29,0,49,0,15,0,49,21,0,26,0,13,16,8,8,16,19,0,13,0,49,0,27,8,9,0,48,0,10,8,21,0,65,17,0,44,0,9,7,0,58,17,0,38,0,114,17,14,21,0,66,0,31,0,49,21,0,62,0,39,0,29,7,16,0,1,16,0,21,21,0,62,17,0,50,0,31,0,47,0,46,0,0,7,8,8,0,30,9,8,16,0,29,0,49,21,0,26,0,13,16,0,50,0,11,8,8,16,22,0,66,12,14,21,0,66,0,39,0,31,7,22,0,62,13,14,21,0,27,0,31,21,0,66,17,0,13,0,49,0,27,8,0,11,21,0,62,19,0,50,0,19,0,44,0,10,7,0,59,19,0,53,0,39,0,29,0,47,21,1,29,8,7,8,8,16,14,21,0,26,0,31,0,49,21,0,66,8,0,51,0,31,0,49,21,0,62,0,2,0,49,0,13,0,47,0,25,8,8,16,0,46,0,6,7,16,8,8,16,22,0,67,11,14,21,0,24,0,31,21,0,28,17,0,0,0,62,17,0,15,0,49,0,59,8,0,50,0,0,8,16,0,0,21,0,22,0,7,0,62,17,0,2,0,60,17,0,31,21,0,20,0,31,21,0,28,17,17,17,0,21,21,0,61,0,46,0,0,7,16,0,8,0,49,0,2,0,49,21,0,19,8,0,46,0,6,7,9,8,16,0,1,21,0,23,0,31,21,0,20,17,17,0,31,21,0,67,17,17,22,0,68,11,14,21,0,28,0,21,21,0,26,17,22,0,69,11,0,11,16,0,20,0,60,17,0,21,16,22,0,70,11,14,21,0,46,0,31,21,0,69,17,0,0,0,68,17,21,0,28,0,41,0,59,7,16,0,21,21,0,67,21,0,15,0,50,0,31,8,0,48,0,1,8,21,0,26,17,17,21,0,68,3,3,22,0,71,11,14,21,0,35,0,31,22,0,18,13,14,21,0,54,21,0,54,21,0,18,21,0,18,21,0,60,21,0,59,21,0,32,21,0,32,21,0,34,21,0,34,21,0,45,21,0,44,0,31,21,0,50,17,0,6,0,58,17,0,0,21,0,50,17,21,0,52,0,0,21,0,51,17,0,0,0,49,21,0,44,0,50,0,31,8,0,2,21,0,52,19,8,16,3,13,0,21,16,0,39,0,31,7,21,0,7,17,0,21,21,0,70,17,0,30,16,22,0,72,11,14,21,0,54,0,41,0,59,7,16,21,0,55,0,33,21,0,56,17,21,0,18,0,41,0,69,7,16,21,0,18,0,13,16,0,25,16,0,0,0,58,17,3,4,0,21,21,0,71,17,0,21,16,22,0,73,11,14,21,0,60,0,41,0,70,7,16,21,0,59,0,41,0,71,7,16,21,0,47,0,31,21,0,32,17,0,0,0,60,17,21,0,58,21,0,47,0,31,21,0,34,17,0,0,0,60,17,21,0,31,21,0,1,0,0,21,0,42,17,0,29,21,0,38,17,0,0,21,1,10,0,32,16,0,1,0,72,17,17,21,0,4,0,31,21,0,50,17,0,0,0,61,17,21,0,41,0,31,21,0,51,17,0,2,0,74,17,0,1,21,0,52,17,0,0,0,73,17,0,14,0,49,0,54,8,0,2,0,57,19,0,0,0,19,19,16,3,9,0,21,16,0,21,21,0,73,17,0,31,21,0,72,17,22,0,74,11,14,21,0,23,0,0,21,0,63,17,0,41,0,11,0,48,0,22,8,7,21,0,60,0,13,0,48,0,22,8,21,0,73,17,21,1,20,21,0,72,17,0,21,0,58,17,0,29,16,0,39,0,31,7,21,0,74,0,6,0,58,17,0,43,0,4,7,0,67,17,0,5,16,0,0,0,58,17,0,21,0,59,17,0,46,0,0,7,16,17,17,0,41,0,21,7,0,62,0,25,0,48,0,28,0,50,0,42,0,22,7,8,8,0,60,17,0,20,16,0,31,21,0,22,17,17,22,0,75,11,14,0,70,0,21,21,0,74,17,21,1,27,16,21,0,56,21,0,75,3,3,25,21,0,1,21,1,24,16,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,0,3,21,1,30,21,0,5,21,0,4,3,2,17,22,0,7,22,0,8,22,0,9,4,3,11,14,21,0,6,0,21,21,0,2,17,0,31,21,1,21,0,16,21,0,8,17,0,2,21,0,2,0,13,16,0,1,21,0,5,17,0,0,21,1,21,17,17,0,1,21,0,8,17,17,22,0,10,11,14,21,0,7,21,0,10,21,0,9,3,3,25,21,0,1,0,32,0,55,17,0,14,0,59,17,25,21,0,1,0,31,0,49,21,0,2,0,29,21,0,1,17,8,0,51,0,41,0,58,7,8,16,21,1,11,21,0,2,0,39,0,31,7,16,17,25,21,0,2,0,2,16,22,0,3,11,14,21,0,1,21,0,3,0,44,0,10,7,16,0,53,0,29,0,49,21,0,3,8,0,48,21,1,3,0,50,0,3,8,0,5,9,0,50,21,0,0,8,8,0,21,0,7,0,0,21,0,3,0,50,0,2,8,19,0,49,21,1,3,8,19,8,0,58,0,1,21,0,2,17,17,25,21,0,1,0,26,16,0,0,21,0,2,17,0,46,0,6,7,16,0,6,21,0,1,17,25,0,34,0,14,0,18,0,47,0,13,8,19,0,39,0,29,7,0,19,19,0,0,21,0,2,19,0,39,0,31,7,21,2,2,19,0,21,0,94,19,0,21,21,0,1,19,0,21,0,108,19,25])
+ new Uint8Array([0,54,0,0,0,75,17,22,0,0,11,14,0,81,0,82,0,83,0,84,0,21,21,0,0,17,0,85,0,86,0,87,0,88,0,89,0,20,0,54,0,47,3,2,17,0,40,0,31,7,0,55,17,0,54,0,25,16,0,0,0,76,17,0,90,0,56,22,0,1,11,0,25,16,0,42,0,0,7,0,92,17,0,20,16,0,39,0,21,7,0,91,17,0,57,0,0,0,75,17,0,21,0,94,17,0,21,0,93,0,24,0,55,17,17,0,95,3,14,0,41,0,13,7,0,11,0,48,0,22,8,0,21,19,16,22,0,2,22,0,3,4,2,11,14,15,1,22,0,4,11,14,15,2,21,0,2,7,22,0,5,11,14,21,0,3,0,27,0,46,0,0,7,9,0,50,0,39,0,41,0,22,7,7,8,16,22,0,6,22,0,7,22,0,8,22,0,9,22,0,10,22,0,11,22,0,12,22,0,13,22,0,14,22,0,15,22,0,16,22,0,17,22,0,18,22,0,19,4,14,11,14,0,32,0,50,0,1,8,0,12,0,9,0,15,0,49,0,59,8,19,0,32,0,49,0,58,8,19,22,0,20,11,14,21,0,15,0,32,16,22,0,21,11,14,0,59,0,21,0,62,0,25,16,0,28,16,0,29,0,61,17,17,0,21,21,0,3,0,23,0,60,17,0,21,0,59,17,0,29,16,0,23,21,0,14,0,32,16,17,17,22,0,22,11,14,0,60,0,59,3,2,0,42,0,1,7,0,60,0,61,0,63,3,3,17,0,20,16,22,0,23,11,14,15,3,22,0,24,11,14,15,4,22,0,25,11,14,15,5,22,0,26,11,14,15,6,22,0,27,11,14,15,7,22,0,28,11,14,15,8,22,0,29,11,14,15,9,22,0,30,11,14,15,10,22,0,31,11,25,0,59,0,38,0,49,0,21,8,0,96,21,0,1,0,13,16,0,11,0,58,17,0,39,0,29,7,0,97,17,0,98,21,0,1,3,4,17,25,21,0,1,0,50,0,31,8,0,50,0,17,0,53,0,18,0,29,0,13,19,0,47,21,1,4,8,8,8,0,18,0,19,19,22,0,2,11,14,21,0,1,0,30,16,22,0,3,11,14,0,19,0,30,21,0,1,0,31,21,0,3,17,19,0,6,0,58,19,0,39,0,1,7,0,58,19,0,39,0,31,7,21,0,3,19,21,0,2,0,19,19,25,0,77,0,14,21,0,1,17,22,0,3,11,14,0,78,0,14,21,0,1,17,22,0,4,11,0,9,0,49,0,26,0,49,0,59,0,59,3,2,8,8,16,0,29,16,22,0,5,11,14,0,79,0,14,21,0,1,17,22,0,6,11,0,29,16,22,0,7,11,14,21,0,5,21,0,7,0,24,0,55,17,21,0,3,0,29,16,3,3,0,21,16,22,0,8,11,0,30,16,22,0,9,11,14,21,0,8,0,31,21,0,9,17,22,0,8,12,14,21,0,5,0,0,0,62,17,21,0,7,0,24,0,58,17,0,58,0,21,21,1,0,0,14,21,0,1,17,17,0,29,16,0,29,0,49,21,0,3,0,46,0,0,7,16,0,21,0,59,17,0,50,0,31,0,47,0,27,0,50,0,1,8,8,8,8,16,3,3,0,21,16,0,31,21,0,9,17,22,0,10,11,14,15,11,0,53,15,12,8,22,0,11,11,14,21,0,10,0,30,21,0,8,17,0,13,0,50,0,21,8,16,0,13,0,39,0,23,7,0,58,19,0,50,21,0,11,8,16,0,24,0,55,17,22,0,12,11,14,21,0,12,0,39,0,29,7,22,0,8,13,14,21,0,12,0,39,0,29,7,22,0,10,13,14,21,0,1,0,13,16,22,0,13,11,14,21,0,8,0,43,0,29,7,16,0,23,21,0,13,17,22,0,14,11,14,21,0,10,0,43,0,29,7,16,0,23,21,0,13,17,22,0,15,11,14,21,0,6,0,9,0,49,0,27,8,16,0,9,21,0,14,17,22,0,16,11,0,26,16,0,10,21,0,15,0,10,21,0,14,17,0,46,0,13,7,16,17,0,8,16,22,0,17,11,14,21,0,17,0,11,21,0,15,17,0,9,21,0,6,0,10,21,0,4,17,17,0,44,0,10,7,16,0,8,16,0,38,0,99,17,14,0,80,0,14,21,0,1,17,0,9,21,0,17,17,22,0,18,11,14,21,0,4,0,9,21,0,14,17,0,27,16,0,10,21,0,18,17,0,29,16,22,0,19,11,14,0,75,0,1,0,80,17,0,2,21,0,18,0,31,21,0,19,17,17,0,1,21,0,1,0,31,21,0,19,17,17,22,0,20,11,14,21,0,15,0,10,21,0,14,17,0,9,21,0,6,17,0,46,0,13,7,16,0,2,21,0,16,0,12,21,0,14,17,0,9,21,0,6,17,22,0,21,11,0,46,0,0,7,16,17,0,39,0,1,7,0,58,17,0,39,0,37,7,21,0,1,17,0,41,0,24,7,0,58,17,22,0,22,11,14,21,0,1,0,29,21,0,17,17,21,1,5,16,22,0,23,11,14,21,1,18,0,32,0,48,0,39,0,1,7,0,22,0,18,19,8,21,1,15,17,21,1,20,21,0,23,17,22,0,24,11,0,11,0,49,0,27,8,16,22,0,25,11,14,21,1,17,0,44,0,0,7,16,0,0,0,55,17,0,14,21,0,23,17,22,0,26,11,14,21,0,23,0,29,21,0,25,17,0,39,0,1,7,21,1,17,0,32,16,17,0,39,0,3,0,47,0,5,8,7,21,1,1,17,22,0,27,11,14,21,1,17,0,32,16,0,0,21,1,1,17,0,16,21,0,23,17,0,9,21,0,24,17,0,2,21,1,1,17,0,1,22,0,23,13,14,0,59,0,11,21,0,27,17,0,21,0,59,17,0,31,21,0,25,0,46,0,0,7,16,17,0,9,21,0,24,17,22,0,28,11,0,12,21,0,24,17,22,0,29,11,14,21,0,24,0,2,21,0,23,17,0,21,0,49,0,59,8,0,48,0,29,0,49,0,26,0,50,0,10,8,8,8,21,0,28,17,21,1,26,16,22,0,30,11,14,21,0,27,0,29,0,49,0,15,0,49,0,59,8,8,16,0,14,0,49,0,62,8,0,50,0,9,8,0,0,0,19,19,21,0,29,0,11,0,49,0,26,8,16,0,39,0,29,7,21,0,26,17,17,22,0,31,11,14,21,0,23,0,37,21,0,28,0,12,21,0,25,17,0,46,0,0,7,16,0,2,21,0,26,0,12,21,0,29,17,17,0,39,0,1,7,0,58,17,17,22,0,32,11,14,21,0,17,0,27,16,0,46,0,0,7,16,0,31,21,0,21,0,29,16,0,21,21,0,19,17,17,0,21,21,0,25,0,29,16,0,31,0,49,21,0,28,0,50,0,31,8,0,30,9,8,16,17,22,0,33,11,14,21,0,32,21,0,30,21,0,20,21,0,22,3,4,22,0,34,11,14,21,0,34,0,41,0,33,7,16,22,0,35,11,0,39,0,41,0,29,0,49,0,46,0,6,7,0,27,0,55,19,0,12,0,19,19,8,7,7,22,0,34,13,14,21,0,23,0,31,0,49,21,0,33,8,0,51,21,0,34,0,41,0,13,7,16,0,27,21,1,21,17,0,46,0,0,7,16,0,0,21,0,35,17,0,21,16,8,16,0,29,21,1,18,21,1,20,21,0,23,17,0,10,21,0,24,17,0,8,16,0,10,21,0,25,17,17,22,0,23,12,14,21,1,9,21,1,20,21,0,23,17,0,9,0,49,0,19,0,10,21,1,11,0,32,16,0,0,0,62,0,64,3,2,17,0,35,21,0,23,17,19,0,27,0,58,19,8,16,0,8,16,0,39,0,29,7,22,0,23,13,14,21,1,9,21,1,20,21,0,23,17,0,9,21,1,11,0,32,16,0,0,0,60,0,61,3,2,17,0,35,21,0,23,17,0,26,0,58,17,17,0,8,16,0,39,0,29,7,22,0,23,13,14,21,1,22,0,31,21,0,23,0,5,21,1,21,17,17,0,29,0,49,21,0,34,0,32,16,0,13,16,0,21,21,1,21,17,21,1,20,21,0,23,17,8,0,51,21,0,31,8,16,22,0,36,11,14,21,1,14,0,32,16,0,39,0,22,7,0,61,17,21,1,20,21,0,23,17,0,2,0,61,17,0,0,22,0,23,13,14,21,0,23,21,0,36,21,0,34,0,32,16,0,13,16,21,0,34,0,24,0,58,17,0,21,16,3,4,25,0,59,0,38,0,49,0,21,8,0,100,21,0,1,0,13,16,0,11,0,58,17,0,39,0,29,7,0,97,17,0,101,21,1,2,0,31,21,0,1,17,0,102,3,5,17,25,21,1,16,0,44,0,25,0,50,0,0,8,7,16,0,21,0,103,0,44,0,1,7,16,0,0,21,1,17,0,32,16,17,17,0,41,21,0,1,0,50,0,14,8,7,16,22,0,3,22,0,4,22,0,5,22,0,6,22,0,7,4,5,11,14,21,1,17,0,32,16,0,11,21,0,1,17,0,10,21,0,3,17,0,8,16,0,44,0,10,7,0,53,21,0,1,0,50,0,29,8,0,47,21,1,25,8,8,16,14,21,0,1,0,14,0,59,17,22,0,8,11,0,10,21,0,3,17,22,0,9,11,0,10,21,0,7,17,22,0,10,11,0,10,21,0,6,17,0,8,16,22,0,11,11,14,21,0,9,0,27,16,0,15,21,0,6,17,0,44,0,9,7,16,0,38,0,104,17,14,21,0,10,0,9,21,0,11,0,8,16,0,27,16,17,0,44,0,10,7,16,0,8,16,0,38,0,105,17,14,21,0,1,0,29,21,0,10,17,0,11,0,49,0,27,8,0,10,0,14,0,49,0,59,8,19,16,0,44,0,9,7,16,0,38,0,106,17,14,21,0,6,0,10,21,0,8,17,0,26,0,10,21,0,3,0,26,16,0,9,21,0,4,17,19,0,9,0,27,19,0,58,17,0,15,21,0,5,0,10,21,0,4,17,17,0,44,0,9,7,16,0,38,0,107,17,14,21,1,15,0,32,16,0,39,0,1,7,0,58,17,0,1,21,0,1,17,0,2,21,0,11,17,0,29,21,0,7,0,8,16,17,0,39,0,31,7,0,54,0,25,16,0,39,0,21,7,0,65,0,58,3,2,17,0,21,0,55,17,17,22,0,12,11,14,21,0,12,0,26,16,0,27,16,0,46,0,0,0,49,0,54,0,50,0,2,8,8,0,2,0,15,0,49,0,59,8,19,7,16,0,29,21,0,12,0,15,0,59,17,0,26,0,50,0,12,8,16,17,22,0,13,11,14,21,0,6,0,27,16,0,29,21,0,11,0,10,21,0,7,17,0,27,0,50,0,12,8,16,22,0,14,11,17,0,39,0,31,7,0,58,0,55,3,2,17,0,2,22,0,13,13,14,21,0,8,0,29,21,0,9,17,22,0,15,11,14,0,59,0,21,21,0,7,17,0,13,0,47,0,25,8,0,0,0,58,19,0,2,0,19,19,0,46,0,6,7,9,16,22,0,16,11,14,21,0,9,0,29,0,26,0,13,19,16,21,0,16,0,50,0,31,8,0,50,0,1,0,2,0,11,0,49,0,27,8,19,8,16,0,29,21,0,15,17,22,0,17,11,14,21,0,15,0,8,16,0,2,21,0,13,17,0,26,16,0,29,21,0,15,17,0,39,0,1,7,21,0,17,17,22,0,18,11,0,7,16,0,4,0,54,17,22,0,19,11,14,0,58,0,66,3,2,0,31,21,0,5,0,29,21,0,14,17,17,0,2,21,0,13,17,0,29,21,0,15,17,0,29,0,49,21,0,18,0,11,0,59,17,8,0,51,0,2,8,21,0,19,17,0,29,0,49,21,0,18,0,12,0,59,17,8,0,51,0,39,0,3,7,8,21,0,19,17,25,0,67,22,0,3,11,14,21,0,1,0,6,0,58,17,0,43,0,4,7,21,0,3,17,0,5,16,22,0,4,11,14,21,0,4,0,0,0,58,17,0,46,0,0,7,0,50,0,27,0,50,0,29,8,0,1,0,19,0,32,0,55,19,0,25,9,19,8,16,0,30,16,0,30,16,22,0,5,11,14,21,0,1,15,13,21,0,4,17,0,31,21,0,5,17,25,0,42,0,14,7,0,45,15,14,7,0,19,0,47,0,40,0,59,7,8,19,0,32,0,55,19,22,0,3,11,14,15,15,22,0,4,11,14,0,59,21,0,4,0,109,8,0,39,0,58,21,0,4,0,110,8,7,3,2,0,52,0,13,0,48,0,12,8,8,22,0,5,11,14,21,0,1,21,0,5,0,111,3,2,0,52,0,13,0,48,0,5,8,0,11,21,0,3,19,8,21,0,2,17,0,39,0,38,7,0,59,17,25,0,97,0,29,21,0,1,0,13,16,0,11,0,58,17,17,0,21,0,112,17,0,39,0,38,7,0,59,17,25,21,0,2,22,0,3,22,0,4,4,2,11,14,21,1,11,0,32,0,50,0,1,8,0,7,0,62,19,0,4,0,55,19,0,2,21,1,20,19,21,0,1,17,22,0,5,11,0,46,0,0,7,16,22,0,6,11,0,30,16,22,0,7,11,14,21,1,11,0,32,16,0,0,0,62,17,0,39,0,22,7,0,62,17,21,1,20,21,0,1,17,0,2,21,0,5,17,22,0,8,11,14,21,0,1,0,31,0,49,21,0,7,8,0,48,0,29,0,49,0,55,0,50,0,14,8,8,0,39,0,1,7,0,58,19,0,17,0,53,21,1,28,8,0,29,0,49,0,58,0,50,0,14,8,8,19,8,21,0,5,17,14,21,0,6,0,32,21,0,7,0,32,16,17,0,15,0,59,17,0,38,0,113,17,14,21,1,12,21,1,20,21,0,1,17,0,10,0,49,0,26,8,16,22,0,9,11,14,21,0,9,0,31,0,49,21,0,7,8,0,51,0,27,8,16,22,0,10,11,14,21,0,10,0,10,21,0,9,17,22,0,11,11,14,21,0,9,0,31,21,0,7,17,0,30,16,0,39,0,31,7,22,0,7,13,14,21,0,11,0,8,16,0,2,22,0,4,13,14,0,59,0,12,21,0,5,17,22,0,12,11,14,21,1,11,0,32,16,0,0,0,58,17,0,14,21,0,1,17,0,11,21,0,11,17,22,0,13,11,14,21,1,9,21,1,20,21,0,1,17,0,10,21,0,9,17,0,10,21,0,12,17,0,31,0,39,0,21,7,0,1,0,21,0,47,0,46,0,0,7,8,19,0,58,19,0,30,0,50,0,30,0,50,0,39,0,31,7,8,0,1,0,39,0,31,7,19,0,31,0,49,0,30,8,0,18,19,8,0,18,0,21,0,55,19,19,21,0,7,17,0,24,0,55,17,0,0,0,58,17,0,46,0,0,7,16,0,30,16,22,0,14,11,14,21,0,8,0,31,21,0,14,17,0,46,0,0,7,16,22,0,15,11,0,30,16,22,0,16,11,14,21,0,16,0,39,0,31,7,22,0,14,13,14,21,0,16,0,39,0,31,7,22,0,15,13,14,21,0,14,0,39,0,31,7,22,0,1,13,14,21,0,8,0,31,21,0,14,17,22,0,17,11,14,0,59,0,11,21,0,17,17,0,29,16,22,0,18,11,14,0,59,0,12,21,0,17,17,22,0,19,11,0,46,0,0,7,16,22,0,20,11,14,0,14,0,18,0,29,0,10,19,21,0,19,19,0,29,0,49,0,26,0,49,0,58,8,8,9,0,8,9,22,0,21,11,14,21,0,1,0,30,21,1,14,0,32,16,0,0,0,61,17,0,0,0,59,0,60,0,64,0,61,3,4,17,17,21,0,21,0,49,0,60,8,0,2,0,62,19,0,6,21,0,21,0,49,0,62,8,19,0,2,0,62,19,0,0,21,0,21,0,49,0,58,8,19,0,21,0,59,19,16,22,0,22,11,14,21,1,23,0,31,21,0,22,17,22,0,23,11,14,21,0,4,0,31,0,49,21,0,14,0,31,21,0,18,17,8,0,51,0,64,0,25,16,0,29,0,49,0,15,0,49,0,62,8,0,0,0,58,19,8,16,0,31,21,0,22,0,24,0,58,17,17,8,16,22,0,4,12,14,21,0,4,0,15,0,58,17,0,10,21,0,4,0,14,0,60,17,0,31,0,49,21,0,7,8,0,51,0,27,8,16,17,0,19,0,2,0,49,0,13,0,47,0,25,8,0,0,0,58,19,8,0,46,0,6,7,9,0,48,0,14,8,0,10,0,49,0,8,8,19,0,9,0,18,19,21,0,13,17,0,0,22,0,4,13,14,21,1,21,0,1,21,0,1,17,22,0,24,11,21,0,3,0,50,0,11,8,0,9,0,15,0,49,0,59,8,19,16,22,0,25,11,0,29,16,22,0,26,11,14,21,0,1,0,31,21,0,26,17,22,0,27,11,14,21,1,14,21,1,20,21,0,1,17,0,29,16,22,0,28,11,14,21,1,10,0,32,16,0,14,21,0,1,17,0,31,21,1,10,21,1,20,21,0,1,17,0,2,0,49,0,13,0,47,0,25,8,8,16,0,46,0,6,7,16,17,22,0,29,11,14,21,0,8,0,1,21,0,5,17,0,31,21,0,14,17,0,46,0,0,7,16,0,30,16,22,0,7,12,14,21,0,14,0,31,21,0,7,17,22,0,30,11,14,21,0,9,0,1,21,0,10,17,0,31,21,0,30,17,0,12,0,29,0,48,0,1,8,0,11,19,0,59,17,0,39,0,3,7,0,62,17,0,0,0,58,17,22,0,31,11,14,21,1,11,0,32,16,0,0,0,61,17,0,14,21,0,1,17,0,31,21,0,7,17,0,29,16,22,0,32,11,14,21,0,9,0,31,21,0,30,17,0,30,16,22,0,33,11,0,39,0,31,7,22,0,7,13,14,21,0,14,0,31,21,0,7,17,22,0,30,12,14,21,0,7,0,39,0,31,7,22,0,1,13,14,21,0,30,0,39,0,31,7,22,0,4,13,14,21,0,30,0,39,0,31,7,22,0,12,13,14,21,0,9,0,12,21,0,10,17,0,31,21,0,30,17,0,29,16,22,0,34,11,14,21,0,7,0,30,16,22,0,35,11,14,21,0,33,0,30,16,0,31,22,0,32,13,14,21,1,9,21,1,20,21,0,1,17,22,0,36,11,14,21,0,9,0,31,21,0,30,17,0,10,21,0,12,17,0,10,21,0,36,17,22,0,37,11,14,21,1,10,0,32,16,0,39,0,22,7,0,62,17,21,1,20,21,0,1,17,22,0,38,11,14,21,0,38,0,10,21,0,37,17,0,1,22,0,4,13,14,0,62,0,16,21,0,4,17,22,0,39,11,14,0,60,0,14,21,0,4,17,0,26,16,0,10,0,58,0,16,21,0,4,17,17,22,0,40,11,14,21,0,40,0,31,21,0,37,0,27,16,0,2,0,49,0,13,0,47,0,25,8,8,16,0,46,0,6,7,16,17,22,0,41,11,14,21,0,40,0,26,16,0,9,21,1,10,0,32,16,0,0,0,58,17,0,14,21,0,1,17,17,0,11,21,0,41,17,22,0,42,11,14,0,60,0,14,21,0,4,17,0,26,16,0,11,21,0,38,17,0,10,21,0,39,17,22,0,43,11,14,21,0,42,0,10,21,0,43,17,0,8,16,0,28,16,0,2,0,47,0,46,0,6,7,8,0,1,0,18,19,0,49,0,13,0,47,0,25,8,8,16,0,28,16,22,0,44,11,14,21,0,38,0,29,16,21,0,44,0,50,0,31,8,0,0,0,58,19,0,0,0,19,19,16,22,0,45,11,14,0,58,0,1,21,0,45,17,0,43,0,29,7,16,0,23,21,0,1,0,13,16,17,0,27,0,50,0,1,8,16,0,31,21,0,35,17,0,46,0,0,7,16,0,27,16,22,0,46,11,0,31,21,0,7,17,22,0,47,11,14,21,0,4,0,29,0,49,21,0,47,8,0,51,0,41,0,55,7,8,16,22,0,4,12,14,21,0,43,0,8,16,0,46,0,0,7,0,2,0,47,0,46,0,6,7,8,0,1,0,19,19,21,0,37,19,0,15,0,11,0,7,19,0,62,19,0,9,0,19,19,16,0,9,21,0,37,0,2,0,49,0,13,0,47,0,25,8,0,0,0,58,19,8,0,46,0,6,7,9,0,48,0,15,8,21,0,38,17,17,22,0,48,11,14,21,0,38,0,10,21,0,37,17,0,26,16,0,12,21,0,39,17,22,0,49,11,14,21,0,49,0,29,16,0,28,16,22,0,50,11,14,21,0,49,0,27,16,0,11,21,0,39,17,0,10,0,58,0,14,21,0,4,17,17,0,11,21,0,49,0,26,16,0,9,21,0,43,17,17,0,9,21,0,41,0,8,16,0,10,21,0,48,17,17,0,11,21,0,47,0,26,16,17,0,29,16,22,0,51,11,14,0,59,0,14,21,0,4,17,0,11,21,0,43,17,0,10,0,59,0,16,21,0,4,17,0,9,21,0,41,17,17,0,9,21,1,13,0,32,16,0,13,21,0,1,17,17,0,26,16,0,31,21,0,51,17,22,0,52,11,14,21,0,3,0,0,21,1,21,17,0,16,21,0,1,17,22,0,53,11,14,21,1,8,0,44,0,0,7,16,0,0,0,55,17,0,15,21,0,1,17,0,10,21,0,53,17,0,29,16,22,0,54,11,14,21,0,1,0,31,21,0,54,17,22,0,55,11,0,36,16,0,9,16,22,0,56,11,14,21,1,11,0,32,16,0,0,0,64,17,0,14,21,0,1,0,29,21,0,12,17,17,22,0,57,11,14,0,58,0,21,21,0,37,17,0,9,21,0,12,0,21,0,58,17,17,0,1,0,59,0,21,21,0,36,17,17,0,46,0,0,7,16,0,29,0,58,0,21,21,0,12,17,17,0,24,0,49,0,1,8,0,1,0,24,19,0,58,17,0,29,21,0,57,17,0,0,0,58,17,22,0,58,11,14,21,0,57,0,21,0,59,17,0,31,0,49,0,46,0,0,7,8,21,0,12,17,0,12,21,0,36,17,0,29,16,22,0,59,11,14,21,1,11,0,32,16,0,0,0,62,17,0,14,21,0,1,17,0,29,16,22,0,60,11,14,21,0,46,0,9,21,0,29,17,0,9,21,0,25,17,22,0,61,11,0,31,21,0,26,17,22,0,62,11,14,0,59,0,21,21,0,61,17,0,46,0,0,7,16,0,29,0,58,0,21,21,0,19,17,17,0,27,0,50,0,1,8,16,22,0,63,11,14,21,0,20,0,31,21,0,26,17,0,39,21,0,16,0,31,21,0,18,17,0,21,21,0,1,0,13,16,17,7,0,31,0,29,0,49,21,0,62,8,19,0,21,21,0,16,0,29,21,0,19,17,0,21,0,55,17,0,50,0,31,8,19,16,22,0,64,11,14,21,0,64,0,30,16,0,31,0,49,21,0,27,0,29,0,49,21,0,62,8,0,50,0,21,8,16,22,0,65,11,0,50,0,31,8,0,30,9,8,16,22,0,66,11,14,21,0,64,0,19,0,31,21,0,66,0,29,0,49,0,15,0,49,21,0,26,0,13,16,8,8,16,19,0,13,0,49,0,27,8,9,0,48,0,10,8,21,0,65,17,0,44,0,9,7,0,58,17,0,38,0,114,17,14,21,0,66,0,31,0,49,21,0,62,0,39,0,29,7,16,0,1,16,0,21,21,0,62,17,0,50,0,31,0,47,0,46,0,0,7,8,8,0,30,9,8,16,0,29,0,49,21,0,26,0,13,16,0,50,0,11,8,8,16,22,0,66,12,14,21,0,66,0,39,0,31,7,22,0,62,13,14,21,0,27,0,31,21,0,66,17,0,13,0,49,0,27,8,0,11,21,0,62,19,0,50,0,19,0,44,0,10,7,0,59,19,0,53,0,39,0,29,0,47,21,1,29,8,7,8,8,16,14,21,0,26,0,31,0,49,21,0,66,8,0,51,0,31,0,49,21,0,62,0,2,0,49,0,13,0,47,0,25,8,8,16,0,46,0,6,7,16,8,8,16,22,0,67,11,14,21,0,24,0,31,21,0,28,17,0,0,0,62,17,0,15,0,49,0,59,8,0,50,0,0,8,16,0,0,21,0,22,0,7,0,62,17,0,2,0,60,17,0,31,21,0,20,0,31,21,0,28,17,17,17,0,21,21,0,61,0,46,0,0,7,16,0,8,0,49,0,2,0,49,21,0,19,8,0,46,0,6,7,9,8,16,0,1,21,0,23,0,31,21,0,20,17,17,0,31,21,0,67,17,17,22,0,68,11,14,21,0,28,0,21,21,0,26,17,22,0,69,11,0,11,16,0,20,0,60,17,0,21,16,22,0,70,11,14,21,0,46,0,31,21,0,69,17,0,0,0,68,17,21,0,28,0,41,0,59,7,16,0,21,21,0,67,21,0,15,0,50,0,31,8,0,48,0,1,8,21,0,26,17,17,21,0,68,3,3,22,0,71,11,14,21,0,35,0,31,22,0,18,13,14,21,0,54,21,0,54,21,0,18,21,0,18,21,0,60,21,0,59,21,0,32,21,0,32,21,0,34,21,0,34,21,0,45,21,0,44,0,31,21,0,50,17,0,6,0,58,17,0,0,21,0,50,17,21,0,52,0,0,21,0,51,17,0,0,0,49,21,0,44,0,50,0,31,8,0,2,21,0,52,19,8,16,3,13,0,21,16,0,39,0,31,7,21,0,7,17,0,21,21,0,70,17,0,30,16,22,0,72,11,14,21,0,54,0,41,0,59,7,16,21,0,55,0,33,21,0,56,17,21,0,18,0,41,0,69,7,16,21,0,18,0,13,16,0,25,16,0,0,0,58,17,3,4,0,21,21,0,71,17,0,21,16,22,0,73,11,14,21,0,60,0,41,0,70,7,16,21,0,59,0,41,0,71,7,16,21,0,47,0,31,21,0,32,17,0,0,0,60,17,21,0,58,21,0,47,0,31,21,0,34,17,0,0,0,60,17,21,0,31,21,0,1,0,0,21,0,42,17,0,29,21,0,38,17,0,0,21,1,10,0,32,16,0,1,0,72,17,17,21,0,4,0,31,21,0,50,17,0,0,0,61,17,21,0,41,0,31,21,0,51,17,0,2,0,74,17,0,1,21,0,52,17,0,0,0,73,17,0,14,0,49,0,54,8,0,2,0,57,19,0,0,0,19,19,16,3,9,0,21,16,0,21,21,0,73,17,0,31,21,0,72,17,22,0,74,11,14,21,0,23,0,0,21,0,63,17,0,41,0,11,0,48,0,22,8,7,21,0,60,0,13,0,48,0,22,8,21,0,73,17,21,1,20,21,0,72,17,0,21,0,58,17,0,29,16,0,39,0,31,7,21,0,74,0,6,0,58,17,0,43,0,4,7,0,67,17,0,5,16,0,0,0,58,17,0,21,0,59,17,0,46,0,0,7,16,17,17,0,41,0,21,7,0,62,0,25,0,48,0,28,0,50,0,42,0,22,7,8,8,0,60,17,0,20,16,0,31,21,0,22,17,17,22,0,75,11,14,0,70,0,21,21,0,74,17,21,1,27,16,21,0,56,21,0,75,3,3,25,21,0,1,21,1,24,16,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,0,3,21,1,30,21,0,5,21,0,4,3,2,17,22,0,7,22,0,8,22,0,9,4,3,11,14,21,0,6,0,21,21,0,2,17,0,31,21,1,21,0,16,21,0,8,17,0,2,21,0,2,0,13,16,0,1,21,0,5,17,0,0,21,1,21,17,17,0,1,21,0,8,17,17,22,0,10,11,14,21,0,7,21,0,10,21,0,9,3,3,25,21,0,1,0,32,0,55,17,0,14,0,59,17,25,21,0,1,0,31,0,49,21,0,2,0,29,21,0,1,17,8,0,51,0,41,0,58,7,8,16,21,1,11,21,0,2,0,39,0,31,7,16,17,25,21,0,2,0,2,16,22,0,3,11,14,21,0,1,21,0,3,0,44,0,10,7,16,0,53,0,29,0,49,21,0,3,8,0,48,21,1,3,0,50,0,3,8,0,5,9,0,50,21,0,0,8,8,0,21,0,7,0,0,21,0,3,0,50,0,2,8,19,0,49,21,1,3,8,19,8,0,58,0,1,21,0,2,17,17,25,21,0,1,0,26,16,0,0,21,0,2,17,0,46,0,6,7,16,0,6,21,0,1,17,25,0,34,0,14,0,18,0,47,0,13,8,19,0,39,0,29,7,0,19,19,0,0,21,0,2,19,0,39,0,31,7,21,2,2,19,0,21,0,94,19,0,21,21,0,1,19,0,21,0,108,19,25])
,[runtime[0],runtime[1],runtime[2],runtime[3],runtime[4],runtime[6],runtime[7],runtime[8],runtime[9],runtime[10],runtime[11],runtime[12],runtime[13],runtime[14],runtime[15],runtime[16],runtime[17],runtime[19],runtime[20],runtime[21],runtime[22],runtime[23],runtime[24],runtime[25],runtime[26],runtime[27],runtime[28],runtime[29],runtime[30],runtime[32],runtime[33],runtime[35],runtime[36],runtime[37],runtime[38],runtime[39],runtime[40],runtime[41],runtime[42],runtime[44],runtime[45],runtime[46],runtime[47],runtime[48],runtime[49],runtime[50],runtime[51],runtime[52],runtime[53],runtime[54],runtime[55],runtime[56],runtime[58],runtime[61],10,-1,26,9,1,0,3,5,2,6,4,3.14159265358979,Infinity,128,21,15,25,14,11,16,7,'
- ,[[0,1,0,32],[0,0,410,3],[1,1,449,4],[0,0,542,37],[0,0,1911,3],[0,0,1958,21],[0,0,2641,6],[0,0,2737,6],[0,0,2850,3],[0,0,2880,76],[0,0,6073,11],[0,0,6189,3],[0,0,6203,3],[0,0,6243,4],[0,0,6329,3],[2,1,6354,3]]
+ ,[[0,1,0,32],[0,0,410,3],[1,1,449,4],[0,0,542,37],[0,0,1911,3],[0,0,1958,20],[0,0,2663,6],[0,0,2759,6],[0,0,2872,3],[0,0,2902,76],[0,0,6095,11],[0,0,6211,3],[0,0,6225,3],[0,0,6265,4],[0,0,6351,3],[2,1,6376,3]]
);
runtime[42] = assertFn("!");
runtime.map((r,i) => {
diff --git a/docs/implementation/codfns.html b/docs/implementation/codfns.html
index 563c4bfe..1cb63eaf 100644
--- a/docs/implementation/codfns.html
+++ b/docs/implementation/codfns.html
@@ -8,9 +8,9 @@
<p>The BQN self-hosted compiler is directly inspired by the <a href="https://github.com/Co-dfns/Co-dfns">Co-dfns</a> project, a compiler for a subset of <a href="../doc/fromDyalog.html">Dyalog APL</a>. I'm very grateful to Aaron for showing that array-oriented compilation is even possible! In addition to the obvious difference of target language, BQN differs from Co-dfns both in goals and methods.</p>
<p>The shared goals of BQN and Co-dfns are to implement a compiler for an array language with whole-array operations. This provides the theoretical benefit of a short <em>critical path</em>, which in practice means that both compilers can make good use of a GPU or a CPU's vector instructions simply by providing an appropriate runtime (however, only Co-dfns has such a runtime—an ArrayFire program on the GPU and Dyalog APL on the CPU). The two implementations also share a preference for working &quot;close to the metal&quot; by passing around arrays of numbers rather than creating abstract types to work with data. Objects are right out. These choices lead to a compact source code implementation, and may have some benefits in terms of how easy it is to write and understand the compiler.</p>
<h2 id="current-differences">Current differences</h2>
-<p>Co-dfns development has primarily been focused on the core compiler, and not parsing, code generation, or the runtime. The associated Ph.D. thesis and famous 17 lines figure refer to this section, which transforms the abstract syntax tree (AST) of a program to a lower-level form, and resolves lexical scoping by linking variables to their definitions. While all of Co-dfns is written in APL, other sections aren't necessarily designed to be data-parallel and don't have the same performance guarantees. For example, the parser appears to be written with some sort of parser combinator. In contrast, BQN is almost entirely written in a data-parallel style (identifier processing and literal evaluation are currently the only exceptions). It does not maintain the same clean separation between compiler sections: <a href="../spec/token.html">token formation</a> is separated into its own function, but parsing, AST manipulation, and code generation overlap.</p>
-<p>The core Co-dfns compiler is based on manipulating the syntax tree, which is mostly stored as parent and sibling vectors—that is, lists of indices of other nodes in the tree. BQN is less methodical, but generally treats the source tokens as a simple list. This list is reordered in various ways, allowing operations that behave like tree traversals to be performed with scans under the right ordering. This strategy allows BQN to be much stricter in the kinds of operations it uses. Co-dfns regularly uses <code><span class='Value'>⍣</span><span class='Function'>≡</span></code> (repeat until convergence) for iteration and creates nested arrays with <code><span class='Value'>⌸</span></code> (Key, like <a href="../doc/group.html">Group</a>), but BQN has only a single instance of iteration to resolve quotes and comments, and only uses Group to extract identifiers and literals. This means that most primitives, if we count simple reductions and scans as single primitives, are executed a fixed number of times during execution, making complexity analysis even easier than in Co-dfns.</p>
-<p>A goal for BQN was to not only write the compiler in BQN but to use BQN for the runtime as much as possible, while Co-dfns uses conventional runtimes written without mainly in C/C++. This goal has largely been achieved and the current BQN runtime uses a very small number of basic array operations currently provided by Javascript, but more basic operations may be added in the future for performance reasons.</p>
+<p>Co-dfns development has primarily been focused on the core compiler, and not parsing, code generation, or the runtime. The associated Ph.D. thesis and famous 17 lines figure refer to this section, which transforms the abstract syntax tree (AST) of a program to a lower-level form, and resolves lexical scoping by linking variables to their definitions. While all of Co-dfns is written in APL, other sections aren't necessarily designed to be data-parallel and don't have the same performance guarantees. For example, the parser appears to be written with some sort of parser combinators. In contrast, BQN is entirely written in a data-parallel style. It does not maintain the same clean separation between compiler sections: <a href="../spec/token.html">token formation</a> and literal evaluation is separated into its own function, but parsing, AST manipulation, and code generation overlap.</p>
+<p>The core Co-dfns compiler is based on manipulating the syntax tree, which is mostly stored as parent and sibling vectors—that is, lists of indices of other nodes in the tree. BQN is less methodical, but generally treats the source tokens as a simple list. This list is reordered in various ways, allowing operations that behave like tree traversals to be performed with scans under the right ordering. This strategy allows BQN to be much stricter in the kinds of operations it uses. Co-dfns regularly uses <code><span class='Value'>⍣</span><span class='Function'>≡</span></code> (repeat until convergence) for iteration and creates nested arrays with <code><span class='Value'>⌸</span></code> (Key, like <a href="../doc/group.html">Group</a>), but BQN has only a single instance of iteration to resolve quotes and comments, plus one complex but parallelizable scan for numeric literal processing, and only uses Group to extract identifiers and strings. This means that most primitives, if we count simple reductions and scans as single primitives, are executed a fixed number of times during execution, making complexity analysis even easier than in Co-dfns.</p>
+<p>A goal for BQN was to not only write the compiler in BQN but to use BQN for the runtime as much as possible, while Co-dfns uses a conventional runtime written in C with ArrayFire. This goal has largely been achieved, so that the current BQN runtime uses a very small number of basic array operations currently provided by Javascript. However, more basic operations may be added in the future for performance reasons.</p>
<h2 id="future-differences">Future differences</h2>
<p>BQN shares several design decisions with Co-dfns that are not intended to be permanent. This is primarily because I wanted to quickly have a working BQN implementation and reach parity with the Co-dfns compiler (not the runtime!). I think these goals have been achieved and will shift BQN's style to support other goals:</p>
<ul>
diff --git a/implementation/codfns.md b/implementation/codfns.md
index 633e498a..ab452ff6 100644
--- a/implementation/codfns.md
+++ b/implementation/codfns.md
@@ -8,11 +8,11 @@ The shared goals of BQN and Co-dfns are to implement a compiler for an array lan
## Current differences
-Co-dfns development has primarily been focused on the core compiler, and not parsing, code generation, or the runtime. The associated Ph.D. thesis and famous 17 lines figure refer to this section, which transforms the abstract syntax tree (AST) of a program to a lower-level form, and resolves lexical scoping by linking variables to their definitions. While all of Co-dfns is written in APL, other sections aren't necessarily designed to be data-parallel and don't have the same performance guarantees. For example, the parser appears to be written with some sort of parser combinator. In contrast, BQN is almost entirely written in a data-parallel style (identifier processing and literal evaluation are currently the only exceptions). It does not maintain the same clean separation between compiler sections: [token formation](../spec/token.md) is separated into its own function, but parsing, AST manipulation, and code generation overlap.
+Co-dfns development has primarily been focused on the core compiler, and not parsing, code generation, or the runtime. The associated Ph.D. thesis and famous 17 lines figure refer to this section, which transforms the abstract syntax tree (AST) of a program to a lower-level form, and resolves lexical scoping by linking variables to their definitions. While all of Co-dfns is written in APL, other sections aren't necessarily designed to be data-parallel and don't have the same performance guarantees. For example, the parser appears to be written with some sort of parser combinators. In contrast, BQN is entirely written in a data-parallel style. It does not maintain the same clean separation between compiler sections: [token formation](../spec/token.md) and literal evaluation is separated into its own function, but parsing, AST manipulation, and code generation overlap.
-The core Co-dfns compiler is based on manipulating the syntax tree, which is mostly stored as parent and sibling vectors—that is, lists of indices of other nodes in the tree. BQN is less methodical, but generally treats the source tokens as a simple list. This list is reordered in various ways, allowing operations that behave like tree traversals to be performed with scans under the right ordering. This strategy allows BQN to be much stricter in the kinds of operations it uses. Co-dfns regularly uses `⍣≡` (repeat until convergence) for iteration and creates nested arrays with `⌸` (Key, like [Group](../doc/group.md)), but BQN has only a single instance of iteration to resolve quotes and comments, and only uses Group to extract identifiers and literals. This means that most primitives, if we count simple reductions and scans as single primitives, are executed a fixed number of times during execution, making complexity analysis even easier than in Co-dfns.
+The core Co-dfns compiler is based on manipulating the syntax tree, which is mostly stored as parent and sibling vectors—that is, lists of indices of other nodes in the tree. BQN is less methodical, but generally treats the source tokens as a simple list. This list is reordered in various ways, allowing operations that behave like tree traversals to be performed with scans under the right ordering. This strategy allows BQN to be much stricter in the kinds of operations it uses. Co-dfns regularly uses `⍣≡` (repeat until convergence) for iteration and creates nested arrays with `⌸` (Key, like [Group](../doc/group.md)), but BQN has only a single instance of iteration to resolve quotes and comments, plus one complex but parallelizable scan for numeric literal processing, and only uses Group to extract identifiers and strings. This means that most primitives, if we count simple reductions and scans as single primitives, are executed a fixed number of times during execution, making complexity analysis even easier than in Co-dfns.
-A goal for BQN was to not only write the compiler in BQN but to use BQN for the runtime as much as possible, while Co-dfns uses conventional runtimes written without mainly in C/C++. This goal has largely been achieved and the current BQN runtime uses a very small number of basic array operations currently provided by Javascript, but more basic operations may be added in the future for performance reasons.
+A goal for BQN was to not only write the compiler in BQN but to use BQN for the runtime as much as possible, while Co-dfns uses a conventional runtime written in C with ArrayFire. This goal has largely been achieved, so that the current BQN runtime uses a very small number of basic array operations currently provided by Javascript. However, more basic operations may be added in the future for performance reasons.
## Future differences
diff --git a/src/c.bqn b/src/c.bqn
index 4d8230dd..27ca7297 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -72,13 +72,14 @@ ReadNums←{
"Portion of a number is empty" ! ¬∨´(»¬m)∧s
"Ill-formed decimal or exponent use" ! ∧´(0⊸=∨»⊸<)s/𝕩
"π and ∞ must occur alone" ! ∧´(p∨i)≤1(»∧(p∧«e)∨«)z∨n
- l←(π‿∞∾˜↕10)⊏˜m/𝕩-⊑bD⋄b←(m/»c)∨nl←m/»n
- v←(1‿¯1⊏˜b/nl)×+⟜(10⊸×)´∘⌽¨(1-˜+`b)⊔l
+ l←(¯1∾π‿1∾˜↕10)⊏˜(¬d)/m×𝕩-1-˜⊑bD
+ v←(>⟜«0≤l)/(0⊸≤××⟜10⊸+)`»«l
+ v×↩1‿¯1⊏˜(r←>⟜»d∨m)/»n
vm←c/z
ld←(⌈`⊢×1+↕∘≠)d∾0
dp←vm/(»⊸<×-)⟜(⊏⟜ld)(≠«/)c
- t←10⋆|ee←dp-˜(0⊸∾/0∾˜0⍟⊣¨⟜v)vm
- t÷˜⌾((0>ee)⊸/)t×⌾((0<ee)⊸/)vm/v
+ t←10⋆|ee←dp-˜vm/«v׬vm
+ t÷˜⌾((0>ee)⊸/)t×⌾((0<ee)⊸/)vm/v×(r/i)⊏1‿∞
}