@vessel-dsp/compiler 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/sparse-schedule.d.ts +51 -0
- package/dist/sparse-schedule.d.ts.map +1 -1
- package/dist/sparse-schedule.js +220 -0
- package/dist/sparse-schedule.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Headless circuit compiler turning `.vdsp` / `CircuitDocument` schematic data int
|
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
7
|
-
`@vessel-dsp/compiler` 0.
|
|
7
|
+
`@vessel-dsp/compiler` 0.4.0 is on npm:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
bun add @vessel-dsp/compiler
|
|
@@ -111,6 +111,9 @@ Values on `.`:
|
|
|
111
111
|
| `zenerCatalogPartIds` | Part ids the catalog treats as zeners. |
|
|
112
112
|
| `resolveSupplyStamps` | Join document power domains to compiled `dc-source` stamps. |
|
|
113
113
|
| `attachDeviceLaws` | Stage 2: attach laws to every netlist device. |
|
|
114
|
+
| `gateOnlyFetPartIds` | Part ids (folded) whose catalog `fet` entry refines the gate junction only, so the channel stays at the class default. |
|
|
115
|
+
| `computeNumericRepivot` | Value-aware re-pivot of a block's sparse schedule from its operating-point matrix (the runtime calls it at `prepare()`; the C++ console ports it). Returns `null` when no candidate meets the threshold. |
|
|
116
|
+
| `NUMERIC_REPIVOT_TAU` | The one pivot threshold (1e-3) `computeNumericRepivot` defaults to. |
|
|
114
117
|
|
|
115
118
|
Types on `.` (import with `import type`): `CompileOptions`, `CompileResult`, `CompileSuccess`, `CompileFailure`, `CompileRefusal`, every `Program`/`Block`/`Stamp`/`Control`/cost type (`Program`, `Block`, `Stamp`, `OperatorKind`, `Control`, `ControlId`, `TaperKind`, `Ports`, `CostPredictors`, `NodeId`, `GROUND`, and the rest in `types.ts`), and the supply-join types (`SupplyAddress`, `ResolvedSupply`, `RefusedSupply`, `SupplyResolution`, `SupplyRefusalReason`).
|
|
116
119
|
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,6 @@ export { canonicalPartId } from "./part-number";
|
|
|
6
6
|
export { pedalPartCatalog, zenerCatalogPartIds, gateOnlyFetPartIds } from "./part-catalog";
|
|
7
7
|
export { resolveSupplyStamps, type RefusedSupply, type ResolvedSupply, type SupplyAddress, type SupplyRefusalReason, type SupplyResolution, } from "./supply-stamps";
|
|
8
8
|
export { attachDeviceLaws } from "./device-laws";
|
|
9
|
+
export { NUMERIC_REPIVOT_TAU, computeNumericRepivot } from "./sparse-schedule";
|
|
9
10
|
export * from "./types";
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACN,aAAa,EACb,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EACN,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACN,aAAa,EACb,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EACN,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKjD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,5 +15,10 @@ export { canonicalPartId } from "./part-number.js";
|
|
|
15
15
|
export { pedalPartCatalog, zenerCatalogPartIds, gateOnlyFetPartIds } from "./part-catalog.js";
|
|
16
16
|
export { resolveSupplyStamps, } from "./supply-stamps.js";
|
|
17
17
|
export { attachDeviceLaws } from "./device-laws.js";
|
|
18
|
+
// Order construction for the runtime's sparse path: the value-blind static
|
|
19
|
+
// schedule is built at compile time, and the value-aware re-pivot is built by
|
|
20
|
+
// the runtime from the operating-point matrix at `prepare()`. Both are
|
|
21
|
+
// schedule-builder work, so both live here; the C++ console ports the latter.
|
|
22
|
+
export { NUMERIC_REPIVOT_TAU, computeNumericRepivot } from "./sparse-schedule.js";
|
|
18
23
|
export * from "./types.js";
|
|
19
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,kFAAkF;AAClF,mFAAmF;AACnF,sFAAsF;AACtF,sFAAsF;AACtF,EAAE;AACF,uFAAuF;AACvF,oDAAoD;AAEpD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAuB,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACN,aAAa,EACb,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,GAId,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EACN,mBAAmB,GAMnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,kFAAkF;AAClF,mFAAmF;AACnF,sFAAsF;AACtF,sFAAsF;AACtF,EAAE;AACF,uFAAuF;AACvF,oDAAoD;AAEpD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAuB,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACN,aAAa,EACb,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,GAId,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EACN,mBAAmB,GAMnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,2EAA2E;AAC3E,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAC9E,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,cAAc,SAAS,CAAC"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { SparseSchedule, Stamp } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default threshold for value-aware re-pivoting (see `computeNumericRepivot`).
|
|
4
|
+
*
|
|
5
|
+
* A pivot must be at least this fraction of its column's remaining maximum to
|
|
6
|
+
* be chosen. Measured across the corpus 2026-10-08: every tau in
|
|
7
|
+
* 3e-4 .. 1e-1 fixes the `boss-aw-2` non-convergence with identical audio and
|
|
8
|
+
* fill falling as tau falls; tau = 0.3 breaks `boss-aw-2` (34 iterations, 1.2
|
|
9
|
+
* relative disagreement) and tau = 1e-4 degrades `boss-ch-1` (1.3e-5). 1e-3
|
|
10
|
+
* sits mid-window. One value for all circuits; see
|
|
11
|
+
* `docs/spikes/2026-10-08-numeric-pivoting.md`.
|
|
12
|
+
*/
|
|
13
|
+
export declare const NUMERIC_REPIVOT_TAU = 0.001;
|
|
2
14
|
/**
|
|
3
15
|
* Every matrix entry a stamp can write, over-approximated as the full square over the stamp's
|
|
4
16
|
* own terminals.
|
|
@@ -62,4 +74,43 @@ export declare function computeSparseSchedule(block: {
|
|
|
62
74
|
auxCount: number;
|
|
63
75
|
stamps: readonly Stamp[];
|
|
64
76
|
}): SparseSchedule | null;
|
|
77
|
+
/**
|
|
78
|
+
* Value-aware re-pivot: choose a sparse elimination order from a real assembled
|
|
79
|
+
* matrix instead of the compiler's value-blind pattern.
|
|
80
|
+
*
|
|
81
|
+
* The static schedule (`computeSparseSchedule`) is built from symbol sets, so a
|
|
82
|
+
* pivot that is structurally present but numerically tiny (a node diagonal
|
|
83
|
+
* whose only unconditional contributor is `gmin`) can be chosen because it
|
|
84
|
+
* minimises fill. Replaying that order divides by ~1e-12 against entries of
|
|
85
|
+
* order 1e2, which is the `boss-aw-2` non-convergence and the
|
|
86
|
+
* `hiwatt`/`tr-2` sparse-vs-dense disagreement. The runtime validates the
|
|
87
|
+
* shipped order on the assembled operating-point matrix and, when a
|
|
88
|
+
* value-aware order is warranted, adopts the order this function returns
|
|
89
|
+
* instead of dropping the block to dense.
|
|
90
|
+
*
|
|
91
|
+
* Threshold Markowitz over the shipped schedule's own filled pattern: a pivot
|
|
92
|
+
* must be at least `tau` of its column's remaining maximum. The candidate scan
|
|
93
|
+
* is in ascending row/column order so both consoles (TypeScript and the C++
|
|
94
|
+
* port in `Engine.cpp`, which mirrors this function op for op) choose the same
|
|
95
|
+
* pivots.
|
|
96
|
+
*
|
|
97
|
+
* Returns `null` when no candidate meets the threshold -- a refusal, never a
|
|
98
|
+
* silent division. The caller drops the block to dense with a named reason.
|
|
99
|
+
* The interpreter (`runSparseSchedule`) and its C++ port replay the returned
|
|
100
|
+
* schedule exactly as the compiler's; the caller re-validates it against dense
|
|
101
|
+
* before adopting it, so a failed re-pivot degrades to dense rather than to a
|
|
102
|
+
* wrong answer.
|
|
103
|
+
*
|
|
104
|
+
* This lives in the compiler package (not the runtime) because order
|
|
105
|
+
* construction -- pattern-based and value-based -- is the schedule builder's
|
|
106
|
+
* job; the runtime only supplies the matrix both consoles assemble
|
|
107
|
+
* identically at `prepare()`. The schedule stays data either way.
|
|
108
|
+
*
|
|
109
|
+
* Adoption-safety note for future editors: the returned schedule's slots are a
|
|
110
|
+
* superset of the shipped schedule's filled pattern, and every slot outside
|
|
111
|
+
* the shipped pattern is a fill cell no stamp writes, so it reads the correct
|
|
112
|
+
* zero from a matrix the runtime refreshed for the shipped pattern. Replacing
|
|
113
|
+
* the order therefore needs no refresh-pattern change on either console.
|
|
114
|
+
*/
|
|
115
|
+
export declare function computeNumericRepivot(schedule: SparseSchedule, size: number, matrix: readonly (readonly number[])[], tau?: number): SparseSchedule | null;
|
|
65
116
|
//# sourceMappingURL=sparse-schedule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sparse-schedule.d.ts","sourceRoot":"","sources":["../src/sparse-schedule.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,GACf,SAAS,MAAM,EAAE,CAQnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,EACtD,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAiLb;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,EACtD,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAkBb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,GACtE,cAAc,GAAG,IAAI,CAmMvB"}
|
|
1
|
+
{"version":3,"file":"sparse-schedule.d.ts","sourceRoot":"","sources":["../src/sparse-schedule.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,QAAO,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,GACf,SAAS,MAAM,EAAE,CAQnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,EACtD,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAiLb;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,EACtD,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAkBb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,GACtE,cAAc,GAAG,IAAI,CAmMvB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,EACtC,GAAG,GAAE,MAA4B,GAC/B,cAAc,GAAG,IAAI,CA8KvB"}
|
package/dist/sparse-schedule.js
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { stampAuxRows, stampNodeValue, stampShape, } from "./stamp-partition.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default threshold for value-aware re-pivoting (see `computeNumericRepivot`).
|
|
4
|
+
*
|
|
5
|
+
* A pivot must be at least this fraction of its column's remaining maximum to
|
|
6
|
+
* be chosen. Measured across the corpus 2026-10-08: every tau in
|
|
7
|
+
* 3e-4 .. 1e-1 fixes the `boss-aw-2` non-convergence with identical audio and
|
|
8
|
+
* fill falling as tau falls; tau = 0.3 breaks `boss-aw-2` (34 iterations, 1.2
|
|
9
|
+
* relative disagreement) and tau = 1e-4 degrades `boss-ch-1` (1.3e-5). 1e-3
|
|
10
|
+
* sits mid-window. One value for all circuits; see
|
|
11
|
+
* `docs/spikes/2026-10-08-numeric-pivoting.md`.
|
|
12
|
+
*/
|
|
13
|
+
export const NUMERIC_REPIVOT_TAU = 1e-3;
|
|
2
14
|
/**
|
|
3
15
|
* Every matrix entry a stamp can write, over-approximated as the full square over the stamp's
|
|
4
16
|
* own terminals.
|
|
@@ -418,4 +430,212 @@ export function computeSparseSchedule(block) {
|
|
|
418
430
|
unprovenPivots,
|
|
419
431
|
};
|
|
420
432
|
}
|
|
433
|
+
/**
|
|
434
|
+
* Value-aware re-pivot: choose a sparse elimination order from a real assembled
|
|
435
|
+
* matrix instead of the compiler's value-blind pattern.
|
|
436
|
+
*
|
|
437
|
+
* The static schedule (`computeSparseSchedule`) is built from symbol sets, so a
|
|
438
|
+
* pivot that is structurally present but numerically tiny (a node diagonal
|
|
439
|
+
* whose only unconditional contributor is `gmin`) can be chosen because it
|
|
440
|
+
* minimises fill. Replaying that order divides by ~1e-12 against entries of
|
|
441
|
+
* order 1e2, which is the `boss-aw-2` non-convergence and the
|
|
442
|
+
* `hiwatt`/`tr-2` sparse-vs-dense disagreement. The runtime validates the
|
|
443
|
+
* shipped order on the assembled operating-point matrix and, when a
|
|
444
|
+
* value-aware order is warranted, adopts the order this function returns
|
|
445
|
+
* instead of dropping the block to dense.
|
|
446
|
+
*
|
|
447
|
+
* Threshold Markowitz over the shipped schedule's own filled pattern: a pivot
|
|
448
|
+
* must be at least `tau` of its column's remaining maximum. The candidate scan
|
|
449
|
+
* is in ascending row/column order so both consoles (TypeScript and the C++
|
|
450
|
+
* port in `Engine.cpp`, which mirrors this function op for op) choose the same
|
|
451
|
+
* pivots.
|
|
452
|
+
*
|
|
453
|
+
* Returns `null` when no candidate meets the threshold -- a refusal, never a
|
|
454
|
+
* silent division. The caller drops the block to dense with a named reason.
|
|
455
|
+
* The interpreter (`runSparseSchedule`) and its C++ port replay the returned
|
|
456
|
+
* schedule exactly as the compiler's; the caller re-validates it against dense
|
|
457
|
+
* before adopting it, so a failed re-pivot degrades to dense rather than to a
|
|
458
|
+
* wrong answer.
|
|
459
|
+
*
|
|
460
|
+
* This lives in the compiler package (not the runtime) because order
|
|
461
|
+
* construction -- pattern-based and value-based -- is the schedule builder's
|
|
462
|
+
* job; the runtime only supplies the matrix both consoles assemble
|
|
463
|
+
* identically at `prepare()`. The schedule stays data either way.
|
|
464
|
+
*
|
|
465
|
+
* Adoption-safety note for future editors: the returned schedule's slots are a
|
|
466
|
+
* superset of the shipped schedule's filled pattern, and every slot outside
|
|
467
|
+
* the shipped pattern is a fill cell no stamp writes, so it reads the correct
|
|
468
|
+
* zero from a matrix the runtime refreshed for the shipped pattern. Replacing
|
|
469
|
+
* the order therefore needs no refresh-pattern change on either console.
|
|
470
|
+
*/
|
|
471
|
+
export function computeNumericRepivot(schedule, size, matrix, tau = NUMERIC_REPIVOT_TAU) {
|
|
472
|
+
const rows = Array.from({ length: size }, () => new Set());
|
|
473
|
+
const columns = Array.from({ length: size }, () => new Set());
|
|
474
|
+
for (let slot = 0; slot < schedule.gatherRow.length; slot += 1) {
|
|
475
|
+
const row = schedule.gatherRow[slot];
|
|
476
|
+
const column = schedule.gatherColumn[slot];
|
|
477
|
+
rows[row].add(column);
|
|
478
|
+
columns[column].add(row);
|
|
479
|
+
}
|
|
480
|
+
const working = matrix.map((row) => [...row]);
|
|
481
|
+
const doneRow = new Array(size).fill(false);
|
|
482
|
+
const doneColumn = new Array(size).fill(false);
|
|
483
|
+
const pivots = [];
|
|
484
|
+
for (let step = 0; step < size; step += 1) {
|
|
485
|
+
let bestRow = -1;
|
|
486
|
+
let bestColumn = -1;
|
|
487
|
+
let bestKey = Infinity;
|
|
488
|
+
for (let row = 0; row < size; row += 1) {
|
|
489
|
+
if (doneRow[row] === true)
|
|
490
|
+
continue;
|
|
491
|
+
const rowSet = rows[row];
|
|
492
|
+
let rowCount = 0;
|
|
493
|
+
for (const column of rowSet) {
|
|
494
|
+
if (doneColumn[column] !== true)
|
|
495
|
+
rowCount += 1;
|
|
496
|
+
}
|
|
497
|
+
if (rowCount === 0)
|
|
498
|
+
continue;
|
|
499
|
+
for (const column of rowSet) {
|
|
500
|
+
if (doneColumn[column] === true)
|
|
501
|
+
continue;
|
|
502
|
+
let columnCount = 0;
|
|
503
|
+
let columnMax = 0;
|
|
504
|
+
for (const other of columns[column]) {
|
|
505
|
+
if (doneRow[other] === true)
|
|
506
|
+
continue;
|
|
507
|
+
columnCount += 1;
|
|
508
|
+
const magnitude = Math.abs(working[other][column] ?? 0);
|
|
509
|
+
if (magnitude > columnMax)
|
|
510
|
+
columnMax = magnitude;
|
|
511
|
+
}
|
|
512
|
+
const value = Math.abs(working[row][column] ?? 0);
|
|
513
|
+
if (!(columnMax > 0) || value < tau * columnMax)
|
|
514
|
+
continue;
|
|
515
|
+
const key = (rowCount - 1) * (columnCount - 1) * 2 + (row === column ? 0 : 1);
|
|
516
|
+
if (key < bestKey ||
|
|
517
|
+
(key === bestKey &&
|
|
518
|
+
(row < bestRow || (row === bestRow && column < bestColumn)))) {
|
|
519
|
+
bestKey = key;
|
|
520
|
+
bestRow = row;
|
|
521
|
+
bestColumn = column;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
if (bestRow < 0) {
|
|
526
|
+
return null;
|
|
527
|
+
}
|
|
528
|
+
const pivotValue = working[bestRow][bestColumn];
|
|
529
|
+
const pivotRowSymbolic = [...rows[bestRow]].filter((column) => doneColumn[column] !== true && column !== bestColumn);
|
|
530
|
+
const pivotColumnSymbolic = [...columns[bestColumn]].filter((row) => doneRow[row] !== true && row !== bestRow);
|
|
531
|
+
for (const row of pivotColumnSymbolic) {
|
|
532
|
+
for (const column of pivotRowSymbolic) {
|
|
533
|
+
if (!rows[row].has(column)) {
|
|
534
|
+
rows[row].add(column);
|
|
535
|
+
columns[column].add(row);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
for (const row of pivotColumnSymbolic) {
|
|
540
|
+
const target = working[row];
|
|
541
|
+
const factor = target[bestColumn] / pivotValue;
|
|
542
|
+
if (factor !== 0) {
|
|
543
|
+
const source = working[bestRow];
|
|
544
|
+
for (let column = 0; column < size; column += 1) {
|
|
545
|
+
if (doneColumn[column] !== true && column !== bestColumn) {
|
|
546
|
+
target[column] =
|
|
547
|
+
target[column] - factor * source[column];
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
target[bestColumn] = 0;
|
|
552
|
+
}
|
|
553
|
+
pivots.push({ row: bestRow, column: bestColumn });
|
|
554
|
+
doneRow[bestRow] = true;
|
|
555
|
+
doneColumn[bestColumn] = true;
|
|
556
|
+
}
|
|
557
|
+
if (pivots.length !== size) {
|
|
558
|
+
return null;
|
|
559
|
+
}
|
|
560
|
+
const slotOf = new Map();
|
|
561
|
+
const gatherRow = [];
|
|
562
|
+
const gatherColumn = [];
|
|
563
|
+
for (let row = 0; row < size; row += 1) {
|
|
564
|
+
const sorted = [...rows[row]].sort((a, b) => a - b);
|
|
565
|
+
for (const column of sorted) {
|
|
566
|
+
slotOf.set(row * size + column, gatherRow.length);
|
|
567
|
+
gatherRow.push(row);
|
|
568
|
+
gatherColumn.push(column);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
const slot = (row, column) => {
|
|
572
|
+
const found = slotOf.get(row * size + column);
|
|
573
|
+
if (found === undefined) {
|
|
574
|
+
throw new Error(`numeric re-pivot: no slot for (${row}, ${column})`);
|
|
575
|
+
}
|
|
576
|
+
return found;
|
|
577
|
+
};
|
|
578
|
+
const liveRows = Array.from({ length: size }, () => new Set());
|
|
579
|
+
const liveColumns = Array.from({ length: size }, () => new Set());
|
|
580
|
+
for (let slotIndex = 0; slotIndex < schedule.gatherRow.length; slotIndex += 1) {
|
|
581
|
+
const row = schedule.gatherRow[slotIndex];
|
|
582
|
+
const column = schedule.gatherColumn[slotIndex];
|
|
583
|
+
liveRows[row].add(column);
|
|
584
|
+
liveColumns[column].add(row);
|
|
585
|
+
}
|
|
586
|
+
const eliminatedRow = new Array(size).fill(false);
|
|
587
|
+
const eliminatedColumn = new Array(size).fill(false);
|
|
588
|
+
const ops = [];
|
|
589
|
+
let factorCount = 0;
|
|
590
|
+
let sparseOps = 0;
|
|
591
|
+
for (const pivot of pivots) {
|
|
592
|
+
ops.push(6, slot(pivot.row, pivot.column), 0, 0);
|
|
593
|
+
const pivotRow = [...liveRows[pivot.row]]
|
|
594
|
+
.filter((column) => eliminatedColumn[column] !== true && column !== pivot.column)
|
|
595
|
+
.sort((a, b) => a - b);
|
|
596
|
+
const pivotColumn = [...liveColumns[pivot.column]]
|
|
597
|
+
.filter((row) => eliminatedRow[row] !== true && row !== pivot.row)
|
|
598
|
+
.sort((a, b) => a - b);
|
|
599
|
+
for (const row of pivotColumn) {
|
|
600
|
+
const factor = factorCount;
|
|
601
|
+
factorCount += 1;
|
|
602
|
+
ops.push(0, factor, slot(row, pivot.column), slot(pivot.row, pivot.column));
|
|
603
|
+
for (const column of pivotRow) {
|
|
604
|
+
if (!liveRows[row].has(column)) {
|
|
605
|
+
liveRows[row].add(column);
|
|
606
|
+
liveColumns[column].add(row);
|
|
607
|
+
}
|
|
608
|
+
ops.push(1, slot(row, column), factor, slot(pivot.row, column));
|
|
609
|
+
sparseOps += 1;
|
|
610
|
+
}
|
|
611
|
+
ops.push(2, row, factor, pivot.row);
|
|
612
|
+
sparseOps += 1;
|
|
613
|
+
}
|
|
614
|
+
eliminatedRow[pivot.row] = true;
|
|
615
|
+
eliminatedColumn[pivot.column] = true;
|
|
616
|
+
}
|
|
617
|
+
for (let step = pivots.length - 1; step >= 0; step -= 1) {
|
|
618
|
+
const pivot = pivots[step];
|
|
619
|
+
ops.push(3, pivot.row, 0, 0);
|
|
620
|
+
for (let later = step + 1; later < pivots.length; later += 1) {
|
|
621
|
+
const column = pivots[later].column;
|
|
622
|
+
if (liveRows[pivot.row].has(column)) {
|
|
623
|
+
ops.push(4, slot(pivot.row, column), column, 0);
|
|
624
|
+
sparseOps += 1;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
ops.push(5, pivot.column, slot(pivot.row, pivot.column), 0);
|
|
628
|
+
}
|
|
629
|
+
return {
|
|
630
|
+
ops,
|
|
631
|
+
slots: gatherRow.length,
|
|
632
|
+
factorCount,
|
|
633
|
+
gatherRow,
|
|
634
|
+
gatherColumn,
|
|
635
|
+
size,
|
|
636
|
+
sparseOps,
|
|
637
|
+
denseOps: (size * size * size - size) / 3,
|
|
638
|
+
unprovenPivots: 0,
|
|
639
|
+
};
|
|
640
|
+
}
|
|
421
641
|
//# sourceMappingURL=sparse-schedule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sparse-schedule.js","sourceRoot":"","sources":["../src/sparse-schedule.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sparse-schedule.js","sourceRoot":"","sources":["../src/sparse-schedule.ts"],"names":[],"mappings":"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"}
|