@c9up/atom 0.1.13 → 0.1.14
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 +57 -0
- package/dist/Decimal.d.ts +32 -0
- package/dist/Decimal.d.ts.map +1 -1
- package/dist/Decimal.js +50 -0
- package/dist/Decimal.js.map +1 -1
- package/dist/bulk.d.ts +193 -0
- package/dist/bulk.d.ts.map +1 -0
- package/dist/bulk.js +826 -0
- package/dist/bulk.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -16
- package/dist/index.js.map +1 -1
- package/dist/native/generated.d.ts +23 -0
- package/dist/native/generated.d.ts.map +1 -1
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +5 -3
- package/scripts/bench-bulk.mjs +98 -0
- package/scripts/verify-wasm.mjs +20 -1
- package/src/Decimal.ts +58 -0
- package/src/bulk.ts +1054 -0
- package/src/index.ts +34 -16
- package/src/native/generated.ts +33 -0
- package/wasm/atom_engine_wasm.d.ts +27 -1
- package/wasm/atom_engine_wasm.js +167 -0
- package/wasm/atom_engine_wasm_bg.wasm +0 -0
- package/wasm/atom_engine_wasm_bg.wasm.d.ts +6 -1
package/dist/bulk.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk.js","sourceRoot":"","sources":["../src/bulk.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* The Rust engine is preferred (NAPI in Node, WASM in browser), with a
|
|
4
4
|
* pure TypeScript BigInt fallback for unsupported platforms.
|
|
5
5
|
*/
|
|
6
|
+
export type { BulkDivOptions, BulkStddevOptions } from "./bulk.js";
|
|
7
|
+
export { Bulk, BulkColumn, BulkScalar, bulk } from "./bulk.js";
|
|
6
8
|
export type { AtomContext, AtomContextOptions } from "./context.js";
|
|
7
9
|
export { configureAtomContext, getAtomContext, resetAtomContext, withAtomContext, } from "./context.js";
|
|
8
10
|
export type { BetweenOptions, DecimalInput, DecimalSafeParseResult, DecimalScaled, DivOptions, MedianOptions, PowOptions, QuantizeOptions, RoundMode, SqrtOptions, StddevOptions, ToMinorUnitsOptions, } from "./Decimal.js";
|
|
@@ -10,6 +12,7 @@ export { Decimal } from "./Decimal.js";
|
|
|
10
12
|
export type { MoneyFormatOptions, MoneyOptions, MoneyRoundingOptions, } from "./Money.js";
|
|
11
13
|
export { Money, money } from "./Money.js";
|
|
12
14
|
export { isNativeAvailable } from "./native.js";
|
|
15
|
+
import { bulk as bulkFn } from "./bulk.js";
|
|
13
16
|
import type { MedianOptions, StddevOptions } from "./Decimal.js";
|
|
14
17
|
import { Decimal, type DecimalInput } from "./Decimal.js";
|
|
15
18
|
import { money } from "./Money.js";
|
|
@@ -36,6 +39,15 @@ declare function stddevFn(...args: [Iterable<DecimalInput>, StddevOptions?] | De
|
|
|
36
39
|
export declare const Atom: {
|
|
37
40
|
/** Construct a `Decimal` from a string / number / bigint / Decimal. Alias for `Decimal.from`. */
|
|
38
41
|
decimal: typeof decimal;
|
|
42
|
+
/**
|
|
43
|
+
* Plan a computation and run it in one crossing.
|
|
44
|
+
*
|
|
45
|
+
* For chains of dependent operations — a schedule, a rate solver, a
|
|
46
|
+
* statistic over a column — where the cost is the boundary rather than the
|
|
47
|
+
* arithmetic. Not for a lone sum: below about three operations per element a
|
|
48
|
+
* plain loop wins.
|
|
49
|
+
*/
|
|
50
|
+
bulk: typeof bulkFn;
|
|
39
51
|
/** Exact sum of N values. Empty input → `Decimal('0')`. */
|
|
40
52
|
sum: typeof sumFn;
|
|
41
53
|
/** Arithmetic mean of N values. Throws on empty input. */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,aAAa,EACb,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACX,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,aAAa,EACb,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACX,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAEpD;AAkMD,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,EAAE,CAE7E;AAED,iBAAS,QAAQ,CAChB,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,YAAY,EAAE,GAChE,OAAO,CAGT;AAED,iBAAS,QAAQ,CAChB,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,YAAY,EAAE,GAChE,OAAO,CAGT;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI;IAChB,iGAAiG;;IAEjG;;;;;;;OAOG;;IAEH,2DAA2D;;IAE3D,0DAA0D;;IAE1D,kKAAkK;;IAElK;;;;;;;;OAQG;;IAEH;;;;;OAKG;;IAEH,mDAAmD;;IAEnD,kDAAkD;;IAElD,8EAA8E;yBACzD,MAAM,YAAY,IAAI,CAAC,eAAe;IAE3D,gDAAgD;;CAEhD,CAAC;AAEF,eAAO,MAAM,GAAG,cAAQ,CAAC;AACzB,eAAO,MAAM,GAAG,cAAQ,CAAC;AACzB,eAAO,MAAM,MAAM,iBAAW,CAAC;AAC/B,eAAO,MAAM,IAAI,eAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,iBAAW,CAAC;AAC/B,eAAO,MAAM,GAAG,cAAQ,CAAC;AACzB,eAAO,MAAM,GAAG,cAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
* The Rust engine is preferred (NAPI in Node, WASM in browser), with a
|
|
4
4
|
* pure TypeScript BigInt fallback for unsupported platforms.
|
|
5
5
|
*/
|
|
6
|
+
export { Bulk, BulkColumn, BulkScalar, bulk } from "./bulk.js";
|
|
6
7
|
export { configureAtomContext, getAtomContext, resetAtomContext, withAtomContext, } from "./context.js";
|
|
7
8
|
export { Decimal } from "./Decimal.js";
|
|
8
9
|
export { Money, money } from "./Money.js";
|
|
9
10
|
export { isNativeAvailable } from "./native.js";
|
|
11
|
+
import { bulk as bulkFn } from "./bulk.js";
|
|
10
12
|
import { defaultPrecision, defaultRoundMode } from "./context.js";
|
|
11
13
|
import { Decimal } from "./Decimal.js";
|
|
12
14
|
import { money } from "./Money.js";
|
|
@@ -43,20 +45,27 @@ function resolveValues(args) {
|
|
|
43
45
|
return head;
|
|
44
46
|
return args.map(toDecimalValue);
|
|
45
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Exact sum — through the engine's BATCH entry point, not a fold.
|
|
50
|
+
*
|
|
51
|
+
* The result is identical either way; the cost is not. Every `plus` from
|
|
52
|
+
* JavaScript serialises both operands, crosses into the native engine and
|
|
53
|
+
* comes back with a string, and that crossing is where the time goes — around
|
|
54
|
+
* a microsecond an operation, against nanoseconds for the arithmetic itself.
|
|
55
|
+
* `Decimal.sum` hands the whole list over once, so summing a column of a
|
|
56
|
+
* hundred thousand figures costs one crossing rather than a hundred thousand.
|
|
57
|
+
*
|
|
58
|
+
* Nothing changed for callers: this is what `Atom.sum` always meant.
|
|
59
|
+
*/
|
|
46
60
|
function sumImpl(values) {
|
|
47
|
-
|
|
48
|
-
for (const value of values) {
|
|
49
|
-
total = total.plus(value);
|
|
50
|
-
}
|
|
51
|
-
return total;
|
|
61
|
+
return Decimal.sum(values);
|
|
52
62
|
}
|
|
53
63
|
function avgImpl(values) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
64
|
+
// Materialised so the count and the batch see the same values: an iterable
|
|
65
|
+
// consumed by one is not there for the other.
|
|
66
|
+
const list = [...values];
|
|
67
|
+
const total = Decimal.sum(list);
|
|
68
|
+
const count = list.length;
|
|
60
69
|
if (count === 0) {
|
|
61
70
|
throw new Error("Atom.avg requires at least one value");
|
|
62
71
|
}
|
|
@@ -139,11 +148,10 @@ function stddevImpl(values, options = {}) {
|
|
|
139
148
|
throw new Error("Atom.stddev sample mode requires at least two values");
|
|
140
149
|
}
|
|
141
150
|
const mean = avgImpl(list);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
151
|
+
// `Σ diff²` is a dot product of the deviations with themselves: one
|
|
152
|
+
// crossing, where the fold made two per value — a multiply and an add.
|
|
153
|
+
const deviations = list.map((value) => value.minus(mean));
|
|
154
|
+
const sumSquares = Decimal.dot(deviations, deviations);
|
|
147
155
|
const variance = sumSquares.div(String(divisor), {
|
|
148
156
|
precision: precision + 8,
|
|
149
157
|
});
|
|
@@ -215,6 +223,15 @@ function stddevFn(...args) {
|
|
|
215
223
|
export const Atom = {
|
|
216
224
|
/** Construct a `Decimal` from a string / number / bigint / Decimal. Alias for `Decimal.from`. */
|
|
217
225
|
decimal,
|
|
226
|
+
/**
|
|
227
|
+
* Plan a computation and run it in one crossing.
|
|
228
|
+
*
|
|
229
|
+
* For chains of dependent operations — a schedule, a rate solver, a
|
|
230
|
+
* statistic over a column — where the cost is the boundary rather than the
|
|
231
|
+
* arithmetic. Not for a lone sum: below about three operations per element a
|
|
232
|
+
* plain loop wins.
|
|
233
|
+
*/
|
|
234
|
+
bulk: bulkFn,
|
|
218
235
|
/** Exact sum of N values. Empty input → `Decimal('0')`. */
|
|
219
236
|
sum: sumFn,
|
|
220
237
|
/** Arithmetic mean of N values. Throws on empty input. */
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,GACf,MAAM,cAAc,CAAC;AAetB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAElE,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,OAAO,CAAC,KAAmB;IAC1C,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CACvE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,KAAc;IACrC,OAAO,CACN,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ,CACzB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACrC,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,IAAI,KAAK,CACd,iEACC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAClC,EAAE,CACF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAwB;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CAAC,MAA8B;IAC9C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run a bulk program over a resident column buffer.
|
|
3
|
+
*
|
|
4
|
+
* `values` holds every column laid end to end, `rows` values each, followed by
|
|
5
|
+
* the scalar literals the program refers to by absolute index. `program` is
|
|
6
|
+
* six-word bytecode. Returns the scalars the program emitted, in order.
|
|
7
|
+
*
|
|
8
|
+
* An overflow of the 128-bit working width is reported with a message opening
|
|
9
|
+
* `[ATOM_BULK_OVERFLOW]`, which is the caller's signal to re-run the same
|
|
10
|
+
* program on the BigInt executor rather than to give up: the fast path is
|
|
11
|
+
* allowed to be too narrow, never to be wrong.
|
|
12
|
+
*/
|
|
13
|
+
export declare function runBulk(values: BigInt64Array, rows: number, program: Int32Array): Array<string>;
|
|
1
14
|
export declare function add(a: string, b: string): string;
|
|
2
15
|
export declare function sub(a: string, b: string): string;
|
|
3
16
|
export declare function mul(a: string, b: string): string;
|
|
@@ -5,5 +18,15 @@ export declare function div(a: string, b: string, precision: number): string;
|
|
|
5
18
|
export declare function rem(a: string, b: string): string;
|
|
6
19
|
export declare function pow(a: string, exp: number, precision: number): string;
|
|
7
20
|
export declare function sqrt(a: string, precision: number): string;
|
|
21
|
+
/**
|
|
22
|
+
* Batch addition — one crossing for the whole list.
|
|
23
|
+
*
|
|
24
|
+
* `Vec<String>` rather than a stream of calls, because the crossing IS the
|
|
25
|
+
* cost: parsing and formatting a decimal is cheap, and doing it once per
|
|
26
|
+
* pair from JavaScript is what makes a long fold expensive.
|
|
27
|
+
*/
|
|
28
|
+
export declare function sum(values: Array<string>): string;
|
|
29
|
+
/** Batch `Σ aᵢ·bᵢ` — the shape of every valuation, in one crossing. */
|
|
30
|
+
export declare function dot(a: Array<string>, b: Array<string>): string;
|
|
8
31
|
export declare function cmp(a: string, b: string): number;
|
|
9
32
|
//# sourceMappingURL=generated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/native/generated.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;AAE7E,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;AAE/E,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/native/generated.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,OAAO,UAAU,OAAO,CAC9B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,UAAU,GACjB,KAAK,CAAC,MAAM,CAAC,CAAC;AAEjB,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;AAE7E,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;AAE/E,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;AAEnE;;;;;;GAMG;AAEH,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE3D,uEAAuE;AAEvE,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAExE,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC"}
|
package/index.darwin-arm64.node
CHANGED
|
Binary file
|
package/index.darwin-x64.node
CHANGED
|
Binary file
|
|
Binary file
|
package/index.linux-x64-gnu.node
CHANGED
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c9up/atom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Atom — exact decimal arithmetic for the Ream ecosystem (TypeScript + Rust N-API)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -32,8 +32,9 @@
|
|
|
32
32
|
"typescript": "^6.0.3",
|
|
33
33
|
"vitest": "4.1.11"
|
|
34
34
|
},
|
|
35
|
+
"//engines": "Node 24, not 22, because AsyncLocalStorage sits on the request hot path — the container resolves through it, HttpContext is it, and the emitter reads it on every event. Node 24 backs it with AsyncContextFrame by default, and measured on that exact pattern (one context per request, six async boundaries, several reads) it costs 0.61 us per request instead of 1.55 us: 2.5x, on every request, for free. Before 24 the same mechanism existed only behind an experimental flag, and a framework cannot base its performance on a flag the application has to remember to pass. This is NOT 'track the current LTS' — security fixes still land in 22 until 2027, npm 11 is irrelevant under pnpm, and node:sqlite is not what atlas uses.",
|
|
35
36
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
37
|
+
"node": ">=24.0.0"
|
|
37
38
|
},
|
|
38
39
|
"publishConfig": {
|
|
39
40
|
"access": "public"
|
|
@@ -54,6 +55,7 @@
|
|
|
54
55
|
"bench": "pnpm build && node scripts/bench.mjs",
|
|
55
56
|
"build:wasm": "wasm-pack build --target web crates/atom-engine-wasm --out-dir ../../wasm && node scripts/clean-wasm-pack-meta.mjs",
|
|
56
57
|
"lint": "biome check src/ tests/",
|
|
57
|
-
"test:coverage": "vitest run --coverage"
|
|
58
|
+
"test:coverage": "vitest run --coverage",
|
|
59
|
+
"bench:bulk": "pnpm build && node scripts/bench-bulk.mjs"
|
|
58
60
|
}
|
|
59
61
|
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// What bulk is for, and what it is not for — the measurements that decided the
|
|
2
|
+
// design, kept runnable so a change that undoes them is visible.
|
|
3
|
+
//
|
|
4
|
+
// pnpm bench:bulk [rows]
|
|
5
|
+
import { performance } from 'node:perf_hooks'
|
|
6
|
+
import { createRequire } from 'node:module'
|
|
7
|
+
import { Atom, Bulk, Decimal, isNativeAvailable, sum } from '../dist/index.js'
|
|
8
|
+
|
|
9
|
+
const native = createRequire(import.meta.url)('../index.linux-x64-gnu.node')
|
|
10
|
+
const ROWS = Number(process.argv[2] ?? 200_000)
|
|
11
|
+
|
|
12
|
+
const time = (label, runs, fn) => {
|
|
13
|
+
fn()
|
|
14
|
+
const start = performance.now()
|
|
15
|
+
for (let i = 0; i < runs; i++) fn()
|
|
16
|
+
const ms = (performance.now() - start) / runs
|
|
17
|
+
console.log(` ${label.padEnd(42)} ${ms.toFixed(3).padStart(10)} ms`)
|
|
18
|
+
return ms
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
console.log(`native engine: ${isNativeAvailable()}`)
|
|
22
|
+
|
|
23
|
+
// --- 1. the crossing itself -------------------------------------------------
|
|
24
|
+
// A typed array crosses as a pointer, so the cost must not follow the size.
|
|
25
|
+
console.log('\n1. Crossing cost against buffer size')
|
|
26
|
+
const noop = Int32Array.from([1, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0])
|
|
27
|
+
for (const size of [1_000, 1_000_000, 10_000_000]) {
|
|
28
|
+
const buffer = new BigInt64Array(size).fill(1n)
|
|
29
|
+
time(`runBulk over ${size.toLocaleString('en-US')} values`, 200, () =>
|
|
30
|
+
native.runBulk(buffer, 1, noop),
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// --- 2. a chain of dependent operations -------------------------------------
|
|
35
|
+
// The shape bulk exists for: a schedule, where every step reads the last.
|
|
36
|
+
console.log('\n2. A 2160-step schedule (360 rows x 6 operations)')
|
|
37
|
+
const STEPS = 2160
|
|
38
|
+
const viaBulk = time(`bulk ${STEPS} operations, one crossing`, 100, () => {
|
|
39
|
+
const plan = new Bulk()
|
|
40
|
+
let running = plan.of('1000.00')
|
|
41
|
+
const payment = plan.of('12.50')
|
|
42
|
+
for (let i = 0; i < STEPS; i++) running = running.plus(payment)
|
|
43
|
+
return plan.run({ balance: running })
|
|
44
|
+
})
|
|
45
|
+
const viaCalls = time(`napi ${STEPS} operations, ${STEPS} crossings`, 100, () => {
|
|
46
|
+
let x = '1000.00'
|
|
47
|
+
for (let i = 0; i < STEPS; i++) x = native.add(x, '12.50')
|
|
48
|
+
return x
|
|
49
|
+
})
|
|
50
|
+
const viaDecimal = time(`Decimal ${STEPS} operations`, 100, () => {
|
|
51
|
+
let x = new Decimal('1000.00')
|
|
52
|
+
for (let i = 0; i < STEPS; i++) x = x.plus('12.50')
|
|
53
|
+
return x
|
|
54
|
+
})
|
|
55
|
+
console.log(` -> against one call per operation : ${(viaCalls / viaBulk).toFixed(0)}x`)
|
|
56
|
+
console.log(` -> against Decimal : ${(viaDecimal / viaBulk).toFixed(0)}x`)
|
|
57
|
+
|
|
58
|
+
// --- 3. a column reduction --------------------------------------------------
|
|
59
|
+
// The shape bulk is NOT for: one operation per element, where a plain loop wins
|
|
60
|
+
// and crossing at all is the mistake. Kept here so that stays visible.
|
|
61
|
+
console.log(`\n3. A column reduction over ${ROWS.toLocaleString('en-US')} values`)
|
|
62
|
+
const quantities = Array.from({ length: ROWS }, (_, i) => `${(i % 1000) + 1}.0000`)
|
|
63
|
+
const prices = Array.from({ length: ROWS }, (_, i) => `10.${String((i % 97) * 100).padStart(4, '0')}`)
|
|
64
|
+
const minor = new BigInt64Array(2 * ROWS)
|
|
65
|
+
for (let i = 0; i < ROWS; i++) {
|
|
66
|
+
minor[i] = BigInt(((i % 1000) + 1) * 10_000)
|
|
67
|
+
minor[ROWS + i] = BigInt(100_000 + (i % 97) * 100)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const bulkDot = time('bulk column.dot(column)', 10, () =>
|
|
71
|
+
Atom.bulk((b) => ({ total: b.column(quantities).dot(b.column(prices)) })),
|
|
72
|
+
)
|
|
73
|
+
const decimalDot = time('Decimal.dot (strings)', 10, () => Decimal.dot(quantities, prices))
|
|
74
|
+
const publicSum = time('sum() over one column', 10, () => sum(quantities))
|
|
75
|
+
const plainJs = time('a plain for over a BigInt64Array', 10, () => {
|
|
76
|
+
let total = 0n
|
|
77
|
+
for (let i = 0; i < ROWS; i++) total += minor[i] * minor[ROWS + i]
|
|
78
|
+
return total
|
|
79
|
+
})
|
|
80
|
+
console.log(` -> bulk against Decimal.dot : ${(decimalDot / bulkDot).toFixed(1)}x`)
|
|
81
|
+
console.log(` -> bulk against a plain loop: ${(plainJs / bulkDot).toFixed(2)}x <- below 1 means do not cross`)
|
|
82
|
+
console.log(` (sum() shown for scale: ${publicSum.toFixed(1)} ms)`)
|
|
83
|
+
|
|
84
|
+
// --- 4. taking the data in ---------------------------------------------------
|
|
85
|
+
// Where the time actually goes once the engine is cheap: turning what the
|
|
86
|
+
// database handed over into integers. A column already held as minor units
|
|
87
|
+
// skips all of it.
|
|
88
|
+
console.log(`\n4. Taking ${ROWS.toLocaleString('en-US')} values into a plan`)
|
|
89
|
+
const cents = quantities.map((value) => BigInt(Math.round(Number(value) * 10_000)))
|
|
90
|
+
const asStrings = time('column(decimal strings)', 10, () => {
|
|
91
|
+
const plan = new Bulk()
|
|
92
|
+
return plan.run({ total: plan.column(quantities).sum() })
|
|
93
|
+
})
|
|
94
|
+
const asMinor = time('minorUnits(bigints, 4)', 10, () => {
|
|
95
|
+
const plan = new Bulk()
|
|
96
|
+
return plan.run({ total: plan.minorUnits(cents, 4).sum() })
|
|
97
|
+
})
|
|
98
|
+
console.log(` -> minor units against decimal strings: ${(asStrings / asMinor).toFixed(1)}x`)
|
package/scripts/verify-wasm.mjs
CHANGED
|
@@ -35,7 +35,8 @@ await wasm.default({
|
|
|
35
35
|
module_or_path: readFileSync(join(wasmDir, 'atom_engine_wasm_bg.wasm')),
|
|
36
36
|
})
|
|
37
37
|
|
|
38
|
-
for (const fn of ['add', 'sub', 'mul', 'div', 'rem', 'pow', 'sqrt', 'cmp'
|
|
38
|
+
for (const fn of ['add', 'sub', 'mul', 'div', 'rem', 'pow', 'sqrt', 'cmp',
|
|
39
|
+
'sum', 'dot', 'runBulk']) {
|
|
39
40
|
if (typeof wasm[fn] !== 'function') {
|
|
40
41
|
throw new Error(`[atom:wasm] invalid exports: missing ${fn}()`)
|
|
41
42
|
}
|
|
@@ -47,6 +48,24 @@ if (wasm.add('1.2', '3.4') !== '4.6') {
|
|
|
47
48
|
if (wasm.pow('2', -2, 18) !== '0.25') {
|
|
48
49
|
throw new Error('[atom:wasm] pow smoke test failed')
|
|
49
50
|
}
|
|
51
|
+
// The bulk VM, exercised rather than merely exported: a browser build that
|
|
52
|
+
// carries the opcode table but computes something else is the failure this
|
|
53
|
+
// gate exists to catch. Quantities 1.50 and 2.25 against prices 10.00 and
|
|
54
|
+
// 4.00 — the same program as the engine's own dot-product test.
|
|
55
|
+
{
|
|
56
|
+
const values = new BigInt64Array([150n, 225n, 1000n, 400n])
|
|
57
|
+
const program = new Int32Array([
|
|
58
|
+
0, 0, 0, 0, 2, 0, // LOAD_C c0 <- column 0, scale 2
|
|
59
|
+
0, 1, 1, 0, 2, 0, // LOAD_C c1 <- column 1, scale 2
|
|
60
|
+
23, 0, 0, 1, 0, 0, // DOT_CC s0 <- c0 . c1
|
|
61
|
+
40, 0, 0, 0, 0, 0, // OUT_S s0
|
|
62
|
+
])
|
|
63
|
+
const [total] = wasm.runBulk(values, 2, program)
|
|
64
|
+
if (total !== '24') {
|
|
65
|
+
throw new Error(`[atom:wasm] runBulk smoke test failed: got ${total}, want 24`)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
50
69
|
if (wasm.sqrt('2', 6) !== '1.414213') {
|
|
51
70
|
throw new Error('[atom:wasm] sqrt smoke test failed')
|
|
52
71
|
}
|
package/src/Decimal.ts
CHANGED
|
@@ -124,6 +124,64 @@ export class Decimal {
|
|
|
124
124
|
return value instanceof Decimal;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Add a whole batch in ONE crossing of the native boundary.
|
|
129
|
+
*
|
|
130
|
+
* **This exists for the crossing, not for the arithmetic.** Parsing and
|
|
131
|
+
* adding a decimal is cheap; doing it from JavaScript one pair at a time is
|
|
132
|
+
* not, because every call serialises both operands to strings, crosses into
|
|
133
|
+
* Rust and comes back with a third. Folding `plus` over a hundred thousand
|
|
134
|
+
* values pays that toll a hundred thousand times for work the engine does
|
|
135
|
+
* in one pass — measured at roughly a microsecond per operation, which is
|
|
136
|
+
* where a multi-year portfolio rebuild spends almost all of its time.
|
|
137
|
+
*
|
|
138
|
+
* Exactly equal to folding {@link plus} over the same values, by
|
|
139
|
+
* construction and by test: decimal addition is exact and associative, and
|
|
140
|
+
* every value is raised to the common scale rather than rounded to it.
|
|
141
|
+
*
|
|
142
|
+
* An empty batch is zero — the additive identity, and the only answer that
|
|
143
|
+
* keeps `sum(a) + sum(b) === sum([...a, ...b])` true when one side is
|
|
144
|
+
* empty.
|
|
145
|
+
*/
|
|
146
|
+
static sum(values: Iterable<DecimalInput>): Decimal {
|
|
147
|
+
const parts = [...values].map(normalizeInput);
|
|
148
|
+
const native = tryNativeAtom();
|
|
149
|
+
if (native) return new Decimal(native.sum(parts));
|
|
150
|
+
// The fallback folds, because the TypeScript engine has no boundary to
|
|
151
|
+
// cross and therefore nothing to save by batching.
|
|
152
|
+
return new Decimal(parts.reduce((total, part) => addTs(total, part), "0"));
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* The sum of pairwise products — `Σ aᵢ·bᵢ` — in one crossing.
|
|
157
|
+
*
|
|
158
|
+
* The shape of every valuation in this ecosystem: a quantity times a price,
|
|
159
|
+
* added up. Two crossings per position become one for the whole book.
|
|
160
|
+
*
|
|
161
|
+
* Throws on mismatched lengths rather than stopping at the shorter list: a
|
|
162
|
+
* quantity list and a price list of different lengths is a caller's bug,
|
|
163
|
+
* and valuing the first n positions would return a plausible figure for a
|
|
164
|
+
* portfolio nobody holds.
|
|
165
|
+
*/
|
|
166
|
+
static dot(a: Iterable<DecimalInput>, b: Iterable<DecimalInput>): Decimal {
|
|
167
|
+
const left = [...a].map(normalizeInput);
|
|
168
|
+
const right = [...b].map(normalizeInput);
|
|
169
|
+
if (left.length !== right.length) {
|
|
170
|
+
throw new Error(
|
|
171
|
+
`Mismatched batch lengths: ${left.length} and ${right.length}`,
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
const native = tryNativeAtom();
|
|
175
|
+
if (native) return new Decimal(native.dot(left, right));
|
|
176
|
+
return new Decimal(
|
|
177
|
+
left.reduce(
|
|
178
|
+
(total, value, index) =>
|
|
179
|
+
addTs(total, mulTs(value, right[index] as string)),
|
|
180
|
+
"0",
|
|
181
|
+
),
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
|
|
127
185
|
static zero(): Decimal {
|
|
128
186
|
return new Decimal("0");
|
|
129
187
|
}
|