@cavelang/solver 0.35.0 → 0.36.1
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 +2155 -3
- package/dist/src/adapter.d.ts +6 -0
- package/dist/src/adapter.d.ts.map +1 -1
- package/dist/src/adapter.js +3 -0
- package/dist/src/adapter.js.map +1 -1
- package/dist/src/balanced-reduce.d.ts +3 -0
- package/dist/src/balanced-reduce.d.ts.map +1 -0
- package/dist/src/balanced-reduce.js +10 -0
- package/dist/src/balanced-reduce.js.map +1 -0
- package/dist/src/canonical-owned.d.ts +5 -0
- package/dist/src/canonical-owned.d.ts.map +1 -0
- package/dist/src/canonical-owned.js +206 -0
- package/dist/src/canonical-owned.js.map +1 -0
- package/dist/src/canonical.d.ts +3 -2
- package/dist/src/canonical.d.ts.map +1 -1
- package/dist/src/canonical.js +12 -85
- package/dist/src/canonical.js.map +1 -1
- package/dist/src/capability.d.ts.map +1 -1
- package/dist/src/capability.js +43 -33
- package/dist/src/capability.js.map +1 -1
- package/dist/src/clone.d.ts +3 -0
- package/dist/src/clone.d.ts.map +1 -0
- package/dist/src/clone.js +54 -0
- package/dist/src/clone.js.map +1 -0
- package/dist/src/constant-sign.d.ts +5 -0
- package/dist/src/constant-sign.d.ts.map +1 -0
- package/dist/src/constant-sign.js +54 -0
- package/dist/src/constant-sign.js.map +1 -0
- package/dist/src/context.d.ts +6 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +151 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/diagnostic-text.d.ts +3 -0
- package/dist/src/diagnostic-text.d.ts.map +1 -0
- package/dist/src/diagnostic-text.js +5 -0
- package/dist/src/diagnostic-text.js.map +1 -0
- package/dist/src/evaluate-expression.d.ts +4 -0
- package/dist/src/evaluate-expression.d.ts.map +1 -0
- package/dist/src/evaluate-expression.js +24 -0
- package/dist/src/evaluate-expression.js.map +1 -0
- package/dist/src/exact.d.ts +2 -0
- package/dist/src/exact.d.ts.map +1 -1
- package/dist/src/exact.js +125 -28
- package/dist/src/exact.js.map +1 -1
- package/dist/src/explain.d.ts +4 -0
- package/dist/src/explain.d.ts.map +1 -1
- package/dist/src/explain.js +330 -91
- package/dist/src/explain.js.map +1 -1
- package/dist/src/explanation-budget.d.ts +14 -0
- package/dist/src/explanation-budget.d.ts.map +1 -0
- package/dist/src/explanation-budget.js +46 -0
- package/dist/src/explanation-budget.js.map +1 -0
- package/dist/src/expression-key.d.ts +8 -0
- package/dist/src/expression-key.d.ts.map +1 -0
- package/dist/src/expression-key.js +54 -0
- package/dist/src/expression-key.js.map +1 -0
- package/dist/src/fraction-product.d.ts +3 -0
- package/dist/src/fraction-product.d.ts.map +1 -0
- package/dist/src/fraction-product.js +13 -0
- package/dist/src/fraction-product.js.map +1 -0
- package/dist/src/fraction-sum.d.ts +3 -0
- package/dist/src/fraction-sum.d.ts.map +1 -0
- package/dist/src/fraction-sum.js +23 -0
- package/dist/src/fraction-sum.js.map +1 -0
- package/dist/src/integer-gcd.d.ts +3 -0
- package/dist/src/integer-gcd.d.ts.map +1 -0
- package/dist/src/integer-gcd.js +50 -0
- package/dist/src/integer-gcd.js.map +1 -0
- package/dist/src/linear.d.ts +2 -1
- package/dist/src/linear.d.ts.map +1 -1
- package/dist/src/linear.js +85 -17
- package/dist/src/linear.js.map +1 -1
- package/dist/src/numeric-size.d.ts +2 -0
- package/dist/src/numeric-size.d.ts.map +1 -0
- package/dist/src/numeric-size.js +33 -0
- package/dist/src/numeric-size.js.map +1 -0
- package/dist/src/options.d.ts +4 -0
- package/dist/src/options.d.ts.map +1 -0
- package/dist/src/options.js +18 -0
- package/dist/src/options.js.map +1 -0
- package/dist/src/result.d.ts +4 -0
- package/dist/src/result.d.ts.map +1 -0
- package/dist/src/result.js +29 -0
- package/dist/src/result.js.map +1 -0
- package/dist/src/solve.d.ts.map +1 -1
- package/dist/src/solve.js +34 -3
- package/dist/src/solve.js.map +1 -1
- package/dist/src/validate.d.ts +5 -0
- package/dist/src/validate.d.ts.map +1 -1
- package/dist/src/validate.js +323 -65
- package/dist/src/validate.js.map +1 -1
- package/dist/src/workflow.d.ts.map +1 -1
- package/dist/src/workflow.js +98 -26
- package/dist/src/workflow.js.map +1 -1
- package/package.json +2 -2
- package/src/adapter.ts +9 -0
- package/src/balanced-reduce.ts +9 -0
- package/src/canonical-owned.ts +186 -0
- package/src/canonical.ts +14 -90
- package/src/capability.ts +41 -30
- package/src/clone.ts +47 -0
- package/src/constant-sign.ts +59 -0
- package/src/context.ts +114 -0
- package/src/diagnostic-text.ts +4 -0
- package/src/evaluate-expression.ts +21 -0
- package/src/exact.ts +122 -27
- package/src/explain.ts +342 -94
- package/src/explanation-budget.ts +47 -0
- package/src/expression-key.ts +45 -0
- package/src/fraction-product.ts +10 -0
- package/src/fraction-sum.ts +20 -0
- package/src/integer-gcd.ts +47 -0
- package/src/linear.ts +82 -16
- package/src/numeric-size.ts +26 -0
- package/src/options.ts +18 -0
- package/src/result.ts +28 -0
- package/src/solve.ts +34 -3
- package/src/validate.ts +312 -66
- package/src/workflow.ts +92 -26
package/dist/src/explain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/explain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/explain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Rational } from './model.ts';
|
|
2
|
+
/** Conservative pre-allocation bounds for local fraction arithmetic, not a time or heap limit. */
|
|
3
|
+
export declare class ExplanationBudget {
|
|
4
|
+
readonly maximum: number;
|
|
5
|
+
readonly maximumWork: number;
|
|
6
|
+
private used;
|
|
7
|
+
constructor(maximum: number, maximumWork?: number);
|
|
8
|
+
check(...bounds: number[]): void;
|
|
9
|
+
input(value: Rational): void;
|
|
10
|
+
bits(value: bigint): number;
|
|
11
|
+
product(left: bigint, right: bigint): number;
|
|
12
|
+
sum(left: bigint, right: bigint): number;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=explanation-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explanation-budget.d.ts","sourceRoot":"","sources":["../../src/explanation-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,kGAAkG;AAClG,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAI;gBACJ,OAAO,EAAE,MAAM,EAAE,WAAW,SAA0B;IAKlE,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAWhC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAM5B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAO5C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAKzC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { numericDigits } from "./numeric-size.js";
|
|
2
|
+
/** Conservative pre-allocation bounds for local fraction arithmetic, not a time or heap limit. */
|
|
3
|
+
export class ExplanationBudget {
|
|
4
|
+
maximum;
|
|
5
|
+
maximumWork;
|
|
6
|
+
used = 0;
|
|
7
|
+
constructor(maximum, maximumWork = Number.MAX_SAFE_INTEGER) {
|
|
8
|
+
this.maximum = maximum;
|
|
9
|
+
this.maximumWork = maximumWork;
|
|
10
|
+
}
|
|
11
|
+
check(...bounds) {
|
|
12
|
+
const actual = Math.max(0, ...bounds);
|
|
13
|
+
if (actual > this.maximum) {
|
|
14
|
+
throw new RangeError(`explanation exceeds maxExplanationBits: estimated ${actual} > ${this.maximum}`);
|
|
15
|
+
}
|
|
16
|
+
if (actual > this.maximumWork - this.used) {
|
|
17
|
+
throw new RangeError(`explanation exceeds maxExplanationWork: estimated ${actual} with ${this.maximumWork - this.used} remaining`);
|
|
18
|
+
}
|
|
19
|
+
this.used += actual;
|
|
20
|
+
}
|
|
21
|
+
input(value) {
|
|
22
|
+
// Four bits per decimal digit also bounds either member of an unreduced pair.
|
|
23
|
+
// Charge text before Exact can allocate powers of ten or parse large BigInts.
|
|
24
|
+
this.check(numericDigits(value, 'real') * 4);
|
|
25
|
+
}
|
|
26
|
+
bits(value) {
|
|
27
|
+
return value === 0n ? 0 : (value < 0n ? -value : value).toString(2).length;
|
|
28
|
+
}
|
|
29
|
+
product(left, right) {
|
|
30
|
+
if (left === 0n || right === 0n)
|
|
31
|
+
return 0;
|
|
32
|
+
if (left === 1n || left === -1n)
|
|
33
|
+
return this.bits(right);
|
|
34
|
+
if (right === 1n || right === -1n)
|
|
35
|
+
return this.bits(left);
|
|
36
|
+
return this.bits(left) + this.bits(right);
|
|
37
|
+
}
|
|
38
|
+
sum(left, right) {
|
|
39
|
+
if (left === 0n)
|
|
40
|
+
return this.bits(right);
|
|
41
|
+
if (right === 0n)
|
|
42
|
+
return this.bits(left);
|
|
43
|
+
return Math.max(this.bits(left), this.bits(right)) + 1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=explanation-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explanation-budget.js","sourceRoot":"","sources":["../../src/explanation-budget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,kGAAkG;AAClG,MAAM,OAAO,iBAAiB;IACnB,OAAO,CAAQ;IACf,WAAW,CAAQ;IACpB,IAAI,GAAG,CAAC,CAAA;IAChB,YAAY,OAAe,EAAE,WAAW,GAAG,MAAM,CAAC,gBAAgB;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,GAAG,MAAgB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAA;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAAC,qDAAqD,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACvG,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,UAAU,CAAC,qDAAqD,MAAM,SAAS,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,YAAY,CAAC,CAAA;QACpI,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,MAAM,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,KAAe;QACnB,8EAA8E;QAC9E,8EAA8E;QAC9E,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC5E,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,KAAa;QACjC,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,CAAC,CAAA;QACzC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,KAAa;QAC7B,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Expression } from './model.ts';
|
|
2
|
+
/** Ordered syntax identity for an already captured, validated expression.
|
|
3
|
+
* Unlike model canonicalization, this preserves operand order and literal
|
|
4
|
+
* representation because local evaluation can fail before later operands run.
|
|
5
|
+
* The string-ID table must share the evaluation cache's report lifetime.
|
|
6
|
+
*/
|
|
7
|
+
export declare const expressionKey: (expression: Expression, strings: Map<string, number>) => string;
|
|
8
|
+
//# sourceMappingURL=expression-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-key.d.ts","sourceRoot":"","sources":["../../src/expression-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,UAAU,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAqCpF,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Ordered syntax identity for an already captured, validated expression.
|
|
2
|
+
* Unlike model canonicalization, this preserves operand order and literal
|
|
3
|
+
* representation because local evaluation can fail before later operands run.
|
|
4
|
+
* The string-ID table must share the evaluation cache's report lifetime.
|
|
5
|
+
*/
|
|
6
|
+
export const expressionKey = (expression, strings) => {
|
|
7
|
+
const intern = (value) => {
|
|
8
|
+
let id = strings.get(value);
|
|
9
|
+
if (id === undefined) {
|
|
10
|
+
id = strings.size;
|
|
11
|
+
strings.set(value, id);
|
|
12
|
+
}
|
|
13
|
+
return id;
|
|
14
|
+
};
|
|
15
|
+
const parts = [];
|
|
16
|
+
const pending = [expression];
|
|
17
|
+
while (pending.length > 0) {
|
|
18
|
+
const node = pending.pop();
|
|
19
|
+
switch (node.kind) {
|
|
20
|
+
case 'literal': {
|
|
21
|
+
const value = node.sort === 'enum' ? intern(node.value) : node.sort === 'real' && typeof node.value === 'object'
|
|
22
|
+
? [node.value.numerator, node.value.denominator] : node.value;
|
|
23
|
+
parts.push(JSON.stringify([node.kind, node.sort, node.sort === 'enum' ? intern(node.domain) : null, value]));
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
case 'variable': {
|
|
27
|
+
parts.push(JSON.stringify([node.kind, intern(node.id)]));
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
case 'not':
|
|
31
|
+
case 'negate':
|
|
32
|
+
parts.push(node.kind);
|
|
33
|
+
pending.push(node.value);
|
|
34
|
+
break;
|
|
35
|
+
case 'and':
|
|
36
|
+
case 'or':
|
|
37
|
+
case 'add':
|
|
38
|
+
case 'multiply':
|
|
39
|
+
parts.push(JSON.stringify([node.kind, node.operands.length]));
|
|
40
|
+
for (let index = node.operands.length - 1; index >= 0; index--)
|
|
41
|
+
pending.push(node.operands[index]);
|
|
42
|
+
break;
|
|
43
|
+
case 'if':
|
|
44
|
+
parts.push(node.kind);
|
|
45
|
+
pending.push(node.else, node.then, node.condition);
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
parts.push(node.kind);
|
|
49
|
+
pending.push(node.right, node.left);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return parts.join('\n');
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=expression-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-key.js","sourceRoot":"","sources":["../../src/expression-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fraction-product.d.ts","sourceRoot":"","sources":["../../src/fraction-product.ts"],"names":[],"mappings":"AACA,kFAAkF;AAClF,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAO5F,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { gcd } from "./integer-gcd.js";
|
|
2
|
+
/** Cancel across factors before allocating a rational product's intermediates. */
|
|
3
|
+
export const product = (a, b, c, d) => {
|
|
4
|
+
// Leave zero-denominator diagnostics to the caller's existing normalizer.
|
|
5
|
+
if (b === 0n || d === 0n)
|
|
6
|
+
return [0n, 0n];
|
|
7
|
+
if (a === 0n || c === 0n)
|
|
8
|
+
return [0n, 1n];
|
|
9
|
+
const left = gcd(a, d);
|
|
10
|
+
const right = gcd(c, b);
|
|
11
|
+
return [(a / left) * (c / right), (b / right) * (d / left)];
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=fraction-product.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fraction-product.js","sourceRoot":"","sources":["../../src/fraction-product.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,kFAAkF;AAClF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAA6B,EAAE;IAC/F,0EAA0E;IAC1E,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;AAC7D,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fraction-sum.d.ts","sourceRoot":"","sources":["../../src/fraction-sum.ts"],"names":[],"mappings":"AAEA,wFAAwF;AACxF,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAgBxF,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const probeThreshold = 1n << 1024n;
|
|
2
|
+
/** Avoid repeated large denominator factors when a short Euclidean probe finds them. */
|
|
3
|
+
export const sum = (a, b, c, d) => {
|
|
4
|
+
if (b === d)
|
|
5
|
+
return [a + c, b];
|
|
6
|
+
let x = b < 0n ? -b : b;
|
|
7
|
+
let y = d < 0n ? -d : d;
|
|
8
|
+
if (x >= probeThreshold && y >= probeThreshold) {
|
|
9
|
+
if (x < y)
|
|
10
|
+
[x, y] = [y, x];
|
|
11
|
+
// A full GCD can cost more than the products it avoids for coprime inputs.
|
|
12
|
+
// An unfinished probe leaves the ordinary exact addition unchanged.
|
|
13
|
+
for (let step = 0; step < 6 && y !== 0n; step++)
|
|
14
|
+
[x, y] = [y, x % y];
|
|
15
|
+
if (y === 0n && x > 1n) {
|
|
16
|
+
const leftScale = d / x;
|
|
17
|
+
const rightScale = b / x;
|
|
18
|
+
return [a * leftScale + c * rightScale, b * leftScale];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return [a * d + c * b, b * d];
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=fraction-sum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fraction-sum.js","sourceRoot":"","sources":["../../src/fraction-sum.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,EAAE,IAAI,KAAK,CAAA;AAElC,wFAAwF;AACxF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAA6B,EAAE;IAC3F,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1B,2EAA2E;QAC3E,oEAAoE;QACpE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;YAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACpE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAA;YACvB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAA;YACxB,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/B,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer-gcd.d.ts","sourceRoot":"","sources":["../../src/integer-gcd.ts"],"names":[],"mappings":"AAEA,qEAAqE;AACrE,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,MA2CjD,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const batchThreshold = 1n << 1024n;
|
|
2
|
+
/** Exact nonnegative GCD, with Lehmer batches for large operands. */
|
|
3
|
+
export const gcd = (left, right) => {
|
|
4
|
+
let a = left < 0n ? -left : left;
|
|
5
|
+
let b = right < 0n ? -right : right;
|
|
6
|
+
if (a < b)
|
|
7
|
+
[a, b] = [b, a];
|
|
8
|
+
while (b !== 0n) {
|
|
9
|
+
if (a === b)
|
|
10
|
+
return a;
|
|
11
|
+
if (b < batchThreshold) {
|
|
12
|
+
while (b !== 0n) {
|
|
13
|
+
const remainder = a % b;
|
|
14
|
+
a = b;
|
|
15
|
+
b = remainder;
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
}
|
|
19
|
+
{
|
|
20
|
+
// Hex length gives a cheap common shift retaining at most 64 leading bits.
|
|
21
|
+
const shift = BigInt(Math.max(0, a.toString(16).length * 4 - 64));
|
|
22
|
+
let x = a >> shift;
|
|
23
|
+
let y = b >> shift;
|
|
24
|
+
let A = 1n, B = 0n, C = 0n, D = 1n;
|
|
25
|
+
for (let step = 0; step < 64 && x >= y && y > 0n && y + C > 0n && y + D > 0n; step++) {
|
|
26
|
+
const q = (x + A) / (y + C);
|
|
27
|
+
if (q <= 0n || q !== (x + B) / (y + D))
|
|
28
|
+
break;
|
|
29
|
+
[A, B, C, D] = [C, D, A - q * C, B - q * D];
|
|
30
|
+
[x, y] = [y, x - q * y];
|
|
31
|
+
}
|
|
32
|
+
if (B !== 0n) {
|
|
33
|
+
const nextA = A * a + B * b;
|
|
34
|
+
const nextB = C * a + D * b;
|
|
35
|
+
// Each matrix step has determinant -1, preserving the GCD exactly.
|
|
36
|
+
// Check full-width progress before accepting the approximate batch.
|
|
37
|
+
if (nextA >= nextB && nextB >= 0n && nextA < a && nextB < b) {
|
|
38
|
+
a = nextA;
|
|
39
|
+
b = nextB;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const remainder = a % b;
|
|
45
|
+
a = b;
|
|
46
|
+
b = remainder;
|
|
47
|
+
}
|
|
48
|
+
return a;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=integer-gcd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer-gcd.js","sourceRoot":"","sources":["../../src/integer-gcd.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,EAAE,IAAI,KAAK,CAAA;AAElC,qEAAqE;AACrE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE;IACzD,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAChC,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IACnC,IAAI,CAAC,GAAG,CAAC;QAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACrB,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAA;gBACvB,CAAC,GAAG,CAAC,CAAA;gBACL,CAAC,GAAG,SAAS,CAAA;YACf,CAAC;YACD,OAAO,CAAC,CAAA;QACV,CAAC;QACD,CAAC;YACC,2EAA2E;YAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACjE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;YAClB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAA;YAClC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;gBACrF,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC3B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBAAE,MACvC;gBAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAC3C;gBAAA,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1B,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAC3B,mEAAmE;gBACnE,oEAAoE;gBACpE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC5D,CAAC,GAAG,KAAK,CAAA;oBACT,CAAC,GAAG,KAAK,CAAA;oBACT,SAAQ;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,SAAS,CAAA;IACf,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA"}
|
package/dist/src/linear.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Model } from './model.ts';
|
|
2
|
+
import type { Limits } from './adapter.ts';
|
|
2
3
|
export type Analysis = {
|
|
3
4
|
readonly linear: boolean;
|
|
4
5
|
readonly problems: readonly string[];
|
|
5
6
|
};
|
|
6
7
|
/** Recognizes the portable LP/MIP subset without consulting a backend AST. */
|
|
7
|
-
export declare const model: (input: Model) => Analysis;
|
|
8
|
+
export declare const model: (input: Model, limits?: Partial<Limits>) => Analysis;
|
|
8
9
|
//# sourceMappingURL=linear.d.ts.map
|
package/dist/src/linear.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/linear.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/linear.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAI1C,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC,CAAA;AAuFD,8EAA8E;AAC9E,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,SAAQ,OAAO,CAAC,MAAM,CAAM,KAAG,QAqBlE,CAAA"}
|
package/dist/src/linear.js
CHANGED
|
@@ -1,46 +1,114 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { evaluate } from "./evaluate-expression.js";
|
|
2
|
+
import { constantSign } from "./constant-sign.js";
|
|
3
|
+
import { balancedReduce } from "./balanced-reduce.js";
|
|
4
|
+
import { sum } from "./fraction-sum.js";
|
|
5
|
+
import { product } from "./fraction-product.js";
|
|
6
|
+
import { clone } from "./clone.js";
|
|
7
|
+
import { mergeLimits, model as validate } from "./validate.js";
|
|
8
|
+
import * as Exact from "./exact.js";
|
|
9
|
+
const combine = (left, right, kind) => {
|
|
10
|
+
const a = BigInt(left.numerator);
|
|
11
|
+
const b = BigInt(left.denominator);
|
|
12
|
+
const c = BigInt(right.numerator);
|
|
13
|
+
const d = BigInt(right.denominator);
|
|
14
|
+
const [numerator, denominator] = kind === 'add' ? sum(a, b, c, d)
|
|
15
|
+
: kind === 'subtract' ? sum(a, b, -c, d)
|
|
16
|
+
: kind === 'multiply' ? product(a, b, c, d) : product(a, b, d, c);
|
|
17
|
+
return Exact.fromBigInts(numerator, denominator);
|
|
18
|
+
};
|
|
19
|
+
/** Called only for numeric constant expressions already classified as affine. */
|
|
20
|
+
function* constantSteps(expression) {
|
|
21
|
+
switch (expression.kind) {
|
|
22
|
+
case 'literal':
|
|
23
|
+
if (expression.sort === 'int')
|
|
24
|
+
return Exact.rational(String(Exact.integer(expression.value)));
|
|
25
|
+
if (expression.sort === 'real')
|
|
26
|
+
return Exact.rational(expression.value);
|
|
27
|
+
break;
|
|
28
|
+
case 'negate': return combine(Exact.rational('0'), (yield expression.value), 'subtract');
|
|
29
|
+
case 'add':
|
|
30
|
+
case 'multiply': {
|
|
31
|
+
const values = [];
|
|
32
|
+
for (const value of expression.operands)
|
|
33
|
+
values.push(yield value);
|
|
34
|
+
if (expression.kind === 'add')
|
|
35
|
+
return balancedReduce(values, (left, right) => combine(left, right, 'add'));
|
|
36
|
+
let numerator = 1n, denominator = 1n;
|
|
37
|
+
for (const value of values) {
|
|
38
|
+
[numerator, denominator] = product(numerator, denominator, BigInt(value.numerator), BigInt(value.denominator));
|
|
39
|
+
}
|
|
40
|
+
return Exact.fromBigInts(numerator, denominator);
|
|
41
|
+
}
|
|
42
|
+
case 'subtract':
|
|
43
|
+
case 'divide': return combine((yield expression.left), (yield expression.right), expression.kind);
|
|
44
|
+
}
|
|
45
|
+
throw new TypeError('expected an affine numeric constant');
|
|
46
|
+
}
|
|
47
|
+
function* affineSteps(expression, constants, signs) {
|
|
3
48
|
switch (expression.kind) {
|
|
4
49
|
case 'literal': return { linear: expression.sort === 'int' || expression.sort === 'real', constant: true };
|
|
5
50
|
case 'variable': return { linear: true, constant: false };
|
|
6
|
-
case 'negate': return
|
|
51
|
+
case 'negate': return (yield expression.value);
|
|
7
52
|
case 'add': {
|
|
8
|
-
|
|
9
|
-
|
|
53
|
+
let linear = true, constant = true;
|
|
54
|
+
for (const value of expression.operands) {
|
|
55
|
+
const part = yield value;
|
|
56
|
+
linear = linear && part.linear;
|
|
57
|
+
constant = constant && part.constant;
|
|
58
|
+
}
|
|
59
|
+
return { linear, constant };
|
|
10
60
|
}
|
|
11
61
|
case 'subtract': {
|
|
12
|
-
const left =
|
|
13
|
-
const right =
|
|
62
|
+
const left = (yield expression.left);
|
|
63
|
+
const right = (yield expression.right);
|
|
14
64
|
return { linear: left.linear && right.linear, constant: left.constant && right.constant };
|
|
15
65
|
}
|
|
16
66
|
case 'multiply': {
|
|
17
|
-
|
|
18
|
-
|
|
67
|
+
let linear = true, variableParts = 0;
|
|
68
|
+
for (const value of expression.operands) {
|
|
69
|
+
const part = yield value;
|
|
70
|
+
linear = linear && part.linear;
|
|
71
|
+
if (!part.constant)
|
|
72
|
+
variableParts++;
|
|
73
|
+
}
|
|
74
|
+
return { linear: linear && variableParts <= 1, constant: variableParts === 0 };
|
|
19
75
|
}
|
|
20
76
|
case 'divide': {
|
|
21
|
-
const left =
|
|
22
|
-
const right =
|
|
23
|
-
|
|
77
|
+
const left = (yield expression.left);
|
|
78
|
+
const right = (yield expression.right);
|
|
79
|
+
let linear = false;
|
|
80
|
+
if (left.linear && right.linear && right.constant) {
|
|
81
|
+
const sign = constantSign(expression.right, signs, value => evaluate(value, constantSteps, constants));
|
|
82
|
+
linear = sign === undefined ? !Exact.isZero(evaluate(expression.right, constantSteps, constants)) : sign !== 0;
|
|
83
|
+
}
|
|
84
|
+
return { linear, constant: left.constant && right.constant };
|
|
24
85
|
}
|
|
25
86
|
default: return { linear: false, constant: false };
|
|
26
87
|
}
|
|
27
|
-
}
|
|
28
|
-
const constraintIsLinear = (expression) => {
|
|
88
|
+
}
|
|
89
|
+
const constraintIsLinear = (expression, affine) => {
|
|
29
90
|
if (expression.kind !== 'eq' && expression.kind !== 'lte' && expression.kind !== 'gte')
|
|
30
91
|
return false;
|
|
31
92
|
return affine(expression.left).linear && affine(expression.right).linear;
|
|
32
93
|
};
|
|
33
94
|
/** Recognizes the portable LP/MIP subset without consulting a backend AST. */
|
|
34
|
-
export const model = (input) => {
|
|
35
|
-
|
|
95
|
+
export const model = (input, limits = {}) => {
|
|
96
|
+
limits = mergeLimits(limits);
|
|
97
|
+
validate(input, limits);
|
|
98
|
+
input = clone(input);
|
|
99
|
+
validate(input, limits);
|
|
36
100
|
const problems = [];
|
|
101
|
+
const constants = new WeakMap();
|
|
102
|
+
const classifications = new WeakMap();
|
|
103
|
+
const signs = new WeakMap();
|
|
104
|
+
const affine = (value) => evaluate(value, expression => affineSteps(expression, constants, signs), classifications);
|
|
37
105
|
if (input.variables.some(variable => variable.sort === 'bool' || variable.sort === 'enum')) {
|
|
38
106
|
problems.push('Boolean and enum variables are outside the linear subset');
|
|
39
107
|
}
|
|
40
108
|
if ((input.softConstraints?.length ?? 0) > 0)
|
|
41
109
|
problems.push('soft constraints are outside the linear subset');
|
|
42
110
|
input.constraints.forEach(constraint => {
|
|
43
|
-
if (!constraintIsLinear(constraint.expression))
|
|
111
|
+
if (!constraintIsLinear(constraint.expression, affine))
|
|
44
112
|
problems.push(`constraint ${constraint.id} is not a non-strict linear comparison`);
|
|
45
113
|
});
|
|
46
114
|
(input.objectives ?? []).forEach(objective => {
|
package/dist/src/linear.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/linear.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/linear.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numeric-size.d.ts","sourceRoot":"","sources":["../../src/numeric-size.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,EAAE,MAAM,KAAK,GAAG,MAAM,KAAG,MAkBpE,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Estimate pre-reduction decimal digits without constructing a BigInt. */
|
|
2
|
+
const integerDigits = (value) => {
|
|
3
|
+
if (typeof value === 'number')
|
|
4
|
+
return Number.isSafeInteger(value) ? String(Math.abs(value)).length : 0;
|
|
5
|
+
if (typeof value !== 'string' || !/^[+-]?\d+$/.test(value))
|
|
6
|
+
return 0;
|
|
7
|
+
return value.length - (/^[+-]/.test(value) ? 1 : 0);
|
|
8
|
+
};
|
|
9
|
+
export const numericDigits = (value, sort) => {
|
|
10
|
+
if (sort === 'int')
|
|
11
|
+
return integerDigits(value);
|
|
12
|
+
if (typeof value !== 'string') {
|
|
13
|
+
if (value === null || typeof value !== 'object')
|
|
14
|
+
return 0;
|
|
15
|
+
const pair = value;
|
|
16
|
+
return integerDigits(pair.numerator) + integerDigits(pair.denominator);
|
|
17
|
+
}
|
|
18
|
+
const match = /^([+-]?)(\d+(?:\.\d*)?|\.\d+)(?:[eE]([+-]?\d+))?$/.exec(value);
|
|
19
|
+
if (match === null)
|
|
20
|
+
return 0;
|
|
21
|
+
const coefficient = match[2];
|
|
22
|
+
const digits = coefficient.replace('.', '');
|
|
23
|
+
const exponent = match[3] === undefined ? 0 : Number(match[3]);
|
|
24
|
+
if (!Number.isSafeInteger(exponent))
|
|
25
|
+
return 0; // Exact reports invalid exponent syntax.
|
|
26
|
+
// Zero never constructs a power of ten, but reading its coefficient still counts.
|
|
27
|
+
if (!/[1-9]/.test(digits))
|
|
28
|
+
return digits.length + 1;
|
|
29
|
+
const dot = coefficient.indexOf('.');
|
|
30
|
+
const scale = (dot === -1 ? 0 : coefficient.length - dot - 1) - exponent;
|
|
31
|
+
return digits.length + Math.max(0, -scale) + (scale > 0 ? scale + 1 : 1);
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=numeric-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numeric-size.js","sourceRoot":"","sources":["../../src/numeric-size.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,aAAa,GAAG,CAAC,KAAc,EAAU,EAAE;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACtG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IACpE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,IAAoB,EAAU,EAAE;IAC5E,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,KAAuD,CAAA;QACpE,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACxE,CAAC;IACD,MAAM,KAAK,GAAG,mDAAmD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,CAAA,CAAC,yCAAyC;IACvF,kFAAkF;IAClF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IACnD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAA;IACxE,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1E,CAAC,CAAA"}
|