openalgo-script 0.6.0 → 0.7.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/CHANGELOG.md +105 -0
- package/README.md +12 -12
- package/dist/core/engine/channels.js +2 -2
- package/dist/core/engine/channels.js.map +1 -1
- package/dist/core/engine/engine.js +2 -3
- package/dist/core/engine/engine.js.map +1 -1
- package/dist/core/engine/library/maths.js +2 -2
- package/dist/core/engine/library/maths.js.map +1 -1
- package/dist/core/engine/machine.js +5 -5
- package/dist/core/engine/machine.js.map +1 -1
- package/dist/core/engine/memory.js +2 -2
- package/dist/core/engine/memory.js.map +1 -1
- package/dist/core/engine/registers.js +2 -2
- package/dist/core/engine/registers.js.map +1 -1
- package/dist/core/engine/values/index.d.ts +1 -1
- package/dist/core/engine/values/index.d.ts.map +1 -1
- package/dist/core/engine/values/index.js +1 -1
- package/dist/core/engine/values/index.js.map +1 -1
- package/dist/core/engine/values/value.d.ts +2 -0
- package/dist/core/engine/values/value.d.ts.map +1 -1
- package/dist/core/engine/values/value.js +4 -0
- package/dist/core/engine/values/value.js.map +1 -1
- package/dist/core/stdlib/averages/exponential.d.ts.map +1 -1
- package/dist/core/stdlib/averages/exponential.js +3 -6
- package/dist/core/stdlib/averages/exponential.js.map +1 -1
- package/dist/core/stdlib/averages/gaussian.d.ts +15 -0
- package/dist/core/stdlib/averages/gaussian.d.ts.map +1 -0
- package/dist/core/stdlib/averages/gaussian.js +55 -0
- package/dist/core/stdlib/averages/gaussian.js.map +1 -0
- package/dist/core/stdlib/averages/shaped.d.ts +2 -6
- package/dist/core/stdlib/averages/shaped.d.ts.map +1 -1
- package/dist/core/stdlib/averages/shaped.js +8 -22
- package/dist/core/stdlib/averages/shaped.js.map +1 -1
- package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -1
- package/dist/core/stdlib/maths/arithmetic.js +2 -1
- package/dist/core/stdlib/maths/arithmetic.js.map +1 -1
- package/dist/core/stdlib/maths/elementary.d.ts +3 -20
- package/dist/core/stdlib/maths/elementary.d.ts.map +1 -1
- package/dist/core/stdlib/maths/elementary.js +17 -13
- package/dist/core/stdlib/maths/elementary.js.map +1 -1
- package/dist/core/stdlib/maths/hypot.d.ts +8 -0
- package/dist/core/stdlib/maths/hypot.d.ts.map +1 -0
- package/dist/core/stdlib/maths/hypot.js +68 -0
- package/dist/core/stdlib/maths/hypot.js.map +1 -0
- package/dist/core/stdlib/maths/power.d.ts +3 -0
- package/dist/core/stdlib/maths/power.d.ts.map +1 -0
- package/dist/core/stdlib/maths/power.js +83 -0
- package/dist/core/stdlib/maths/power.js.map +1 -0
- package/dist/core/stdlib/maths/transcendental.d.ts +15 -0
- package/dist/core/stdlib/maths/transcendental.d.ts.map +1 -0
- package/dist/core/stdlib/maths/transcendental.js +185 -0
- package/dist/core/stdlib/maths/transcendental.js.map +1 -0
- package/dist/core/stdlib/maths/trigonometric.d.ts +4 -0
- package/dist/core/stdlib/maths/trigonometric.d.ts.map +1 -0
- package/dist/core/stdlib/maths/trigonometric.js +196 -0
- package/dist/core/stdlib/maths/trigonometric.js.map +1 -0
- package/dist/core/stdlib/series/conditions.d.ts +2 -4
- package/dist/core/stdlib/series/conditions.d.ts.map +1 -1
- package/dist/core/stdlib/series/conditions.js +9 -13
- package/dist/core/stdlib/series/conditions.js.map +1 -1
- package/dist/core/stdlib/series/statistics.d.ts.map +1 -1
- package/dist/core/stdlib/series/statistics.js +2 -0
- package/dist/core/stdlib/series/statistics.js.map +1 -1
- package/dist/core/stdlib/values/history.d.ts +26 -0
- package/dist/core/stdlib/values/history.d.ts.map +1 -0
- package/dist/core/stdlib/values/history.js +52 -0
- package/dist/core/stdlib/values/history.js.map +1 -0
- package/dist/core/stdlib/values/index.d.ts +1 -0
- package/dist/core/stdlib/values/index.d.ts.map +1 -1
- package/dist/core/stdlib/values/index.js +1 -0
- package/dist/core/stdlib/values/index.js.map +1 -1
- package/dist/core/stdlib/values/lookback.d.ts +4 -1
- package/dist/core/stdlib/values/lookback.d.ts.map +1 -1
- package/dist/core/stdlib/values/lookback.js +48 -45
- package/dist/core/stdlib/values/lookback.js.map +1 -1
- package/dist/core/stdlib/values/region.d.ts +6 -5
- package/dist/core/stdlib/values/region.d.ts.map +1 -1
- package/dist/core/stdlib/values/region.js +3 -3
- package/dist/core/stdlib/values/region.js.map +1 -1
- package/dist/core/stdlib/volatility/measures.d.ts.map +1 -1
- package/dist/core/stdlib/volatility/measures.js +6 -4
- package/dist/core/stdlib/volatility/measures.js.map +1 -1
- package/dist/core/version/version.generated.d.ts +1 -1
- package/dist/core/version/version.generated.js +1 -1
- package/package.json +9 -1
- package/src/core/engine/channels.ts +2 -2
- package/src/core/engine/engine.ts +3 -3
- package/src/core/engine/library/maths.ts +2 -2
- package/src/core/engine/machine.ts +5 -5
- package/src/core/engine/memory.ts +2 -2
- package/src/core/engine/registers.ts +2 -2
- package/src/core/engine/values/index.ts +1 -0
- package/src/core/engine/values/value.ts +5 -0
- package/src/core/stdlib/averages/exponential.ts +3 -4
- package/src/core/stdlib/averages/gaussian.ts +52 -0
- package/src/core/stdlib/averages/shaped.ts +8 -21
- package/src/core/stdlib/maths/arithmetic.ts +2 -1
- package/src/core/stdlib/maths/elementary.ts +20 -33
- package/src/core/stdlib/maths/hypot.ts +63 -0
- package/src/core/stdlib/maths/power.ts +57 -0
- package/src/core/stdlib/maths/transcendental.ts +160 -0
- package/src/core/stdlib/maths/trigonometric.ts +160 -0
- package/src/core/stdlib/series/conditions.ts +9 -12
- package/src/core/stdlib/series/statistics.ts +1 -0
- package/src/core/stdlib/values/history.ts +70 -0
- package/src/core/stdlib/values/index.ts +1 -0
- package/src/core/stdlib/values/lookback.ts +51 -47
- package/src/core/stdlib/values/region.ts +7 -5
- package/src/core/stdlib/volatility/measures.ts +6 -4
- package/src/core/version/version.generated.ts +1 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
const view = new DataView(new ArrayBuffer(8));
|
|
2
|
+
const mask = (1n << 52n) - 1n;
|
|
3
|
+
let defaultTwo;
|
|
4
|
+
let defaultTen;
|
|
5
|
+
export const bitLength = (x) => x === 0n ? 0 : x.toString(2).length;
|
|
6
|
+
export const floor = (n, d) => n >= 0n ? n / d : -((-n + d - 1n) / d);
|
|
7
|
+
export const ceil = (n, d) => -floor(-n, d);
|
|
8
|
+
export function parts(x) {
|
|
9
|
+
view.setFloat64(0, Math.abs(x));
|
|
10
|
+
const bits = view.getBigUint64(0), exponent = Number(bits >> 52n);
|
|
11
|
+
return [exponent === 0 ? bits : (bits & mask) | (1n << 52n), exponent === 0 ? -1074 : exponent - 1075];
|
|
12
|
+
}
|
|
13
|
+
function fixed(x, precision) {
|
|
14
|
+
const [m, e] = parts(x), shift = e + precision;
|
|
15
|
+
return shift >= 0 ? [m << BigInt(shift), m << BigInt(shift)]
|
|
16
|
+
: [m >> BigInt(-shift), ceil(m, 1n << BigInt(-shift))];
|
|
17
|
+
}
|
|
18
|
+
/** Round an exact dyadic endpoint directly, with the subnormal spacing floor. */
|
|
19
|
+
export function rounded(numerator, exponent) {
|
|
20
|
+
if (numerator === 0n)
|
|
21
|
+
return 0;
|
|
22
|
+
const negative = numerator < 0n;
|
|
23
|
+
const magnitude = negative ? -numerator : numerator;
|
|
24
|
+
let spacing = Math.max(-1074, bitLength(magnitude) - 1 + exponent - 52);
|
|
25
|
+
const shift = spacing - exponent;
|
|
26
|
+
let significand;
|
|
27
|
+
if (shift <= 0)
|
|
28
|
+
significand = magnitude << BigInt(-shift);
|
|
29
|
+
else {
|
|
30
|
+
const divisor = 1n << BigInt(shift), remainder = magnitude % divisor;
|
|
31
|
+
significand = magnitude / divisor;
|
|
32
|
+
if (remainder * 2n > divisor || (remainder * 2n === divisor && (significand & 1n)))
|
|
33
|
+
significand++;
|
|
34
|
+
}
|
|
35
|
+
if (significand === 0n)
|
|
36
|
+
return 0;
|
|
37
|
+
if (significand >= 1n << 53n) {
|
|
38
|
+
significand >>= 1n;
|
|
39
|
+
spacing++;
|
|
40
|
+
}
|
|
41
|
+
if (spacing > 971)
|
|
42
|
+
return null;
|
|
43
|
+
const bits = significand < 1n << 52n ? significand
|
|
44
|
+
: (BigInt(spacing + 1075) << 52n) | (significand & mask);
|
|
45
|
+
view.setBigUint64(0, bits | (negative ? 1n << 63n : 0n));
|
|
46
|
+
return view.getFloat64(0);
|
|
47
|
+
}
|
|
48
|
+
/** Twice the positive odd-power sum, for 0 <= a/b <= 1/3. */
|
|
49
|
+
function oddSeries(a, b, precision) {
|
|
50
|
+
if (a === 0n)
|
|
51
|
+
return [0n, 0n];
|
|
52
|
+
const unit = 1n << BigInt(precision), low = a * unit / b, high = ceil(a * unit, b);
|
|
53
|
+
const squaredLow = low * low / unit, squaredHigh = ceil(high * high, unit);
|
|
54
|
+
let powerLow = low, powerHigh = high, sumLow = 0n, sumHigh = 0n, odd = 1n;
|
|
55
|
+
for (;;) {
|
|
56
|
+
sumLow += powerLow / odd;
|
|
57
|
+
sumHigh += ceil(powerHigh, odd);
|
|
58
|
+
powerLow = powerLow * squaredLow / unit;
|
|
59
|
+
powerHigh = ceil(powerHigh * squaredHigh, unit);
|
|
60
|
+
odd += 2n;
|
|
61
|
+
if (powerHigh <= 2n)
|
|
62
|
+
return [2n * sumLow, 2n * (sumHigh + ceil(9n * powerHigh, 8n * odd))];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function lnTwo(precision) {
|
|
66
|
+
if (precision !== 160)
|
|
67
|
+
return oddSeries(1n, 3n, precision);
|
|
68
|
+
return defaultTwo ??= oddSeries(1n, 3n, precision);
|
|
69
|
+
}
|
|
70
|
+
export function logarithm(x, precision) {
|
|
71
|
+
const [m, e] = parts(x), width = bitLength(m), one = 1n << BigInt(width - 1);
|
|
72
|
+
const k = BigInt(e + width - 1), [low, high] = oddSeries(m - one, m + one, precision);
|
|
73
|
+
const [constantLow, constantHigh] = lnTwo(precision);
|
|
74
|
+
return k >= 0n ? [low + k * constantLow, high + k * constantHigh]
|
|
75
|
+
: [low + k * constantHigh, high + k * constantLow];
|
|
76
|
+
}
|
|
77
|
+
function lnTen(precision) {
|
|
78
|
+
if (precision !== 160)
|
|
79
|
+
return logarithm(10, precision);
|
|
80
|
+
return defaultTen ??= logarithm(10, precision);
|
|
81
|
+
}
|
|
82
|
+
function quotient(numerator, denominator, precision) {
|
|
83
|
+
const unit = 1n << BigInt(precision);
|
|
84
|
+
let low, high;
|
|
85
|
+
for (const n of numerator)
|
|
86
|
+
for (const d of denominator) {
|
|
87
|
+
const below = floor(n * unit, d), above = ceil(n * unit, d);
|
|
88
|
+
if (low === undefined || below < low)
|
|
89
|
+
low = below;
|
|
90
|
+
if (high === undefined || above > high)
|
|
91
|
+
high = above;
|
|
92
|
+
}
|
|
93
|
+
return [low, high];
|
|
94
|
+
}
|
|
95
|
+
function exponentialRange(low, high, positive, precision) {
|
|
96
|
+
const unit = 1n << BigInt(precision);
|
|
97
|
+
const [constantLow, constantHigh] = lnTwo(precision), k = low / constantHigh;
|
|
98
|
+
const reducedLow = low - k * constantHigh, reducedHigh = high - k * constantLow;
|
|
99
|
+
if (reducedLow < 0n || reducedHigh >= unit)
|
|
100
|
+
return undefined;
|
|
101
|
+
let termLow = unit, termHigh = unit, sumLow = unit, sumHigh = unit, n = 0n;
|
|
102
|
+
for (;;) {
|
|
103
|
+
n++;
|
|
104
|
+
termLow = termLow * reducedLow / (unit * n);
|
|
105
|
+
termHigh = ceil(termHigh * reducedHigh, unit * n);
|
|
106
|
+
if (termHigh <= 1n) {
|
|
107
|
+
sumHigh += 2n * termHigh;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
sumLow += termLow;
|
|
111
|
+
sumHigh += termHigh;
|
|
112
|
+
}
|
|
113
|
+
return positive ? [sumLow, sumHigh, Number(k) - precision]
|
|
114
|
+
: [unit * unit / sumHigh, ceil(unit * unit, sumLow), -Number(k) - precision];
|
|
115
|
+
}
|
|
116
|
+
/** Enclose exp(integer / 2**precision) without a binary64 intermediate. */
|
|
117
|
+
export function exponentialEndpoint(integer, precision) {
|
|
118
|
+
const cutoff = 1024n << BigInt(precision);
|
|
119
|
+
if (integer >= cutoff)
|
|
120
|
+
return [null, null];
|
|
121
|
+
if (integer <= -cutoff)
|
|
122
|
+
return [0, 0];
|
|
123
|
+
if (integer === 0n)
|
|
124
|
+
return [1, 1];
|
|
125
|
+
const magnitude = integer < 0n ? -integer : integer;
|
|
126
|
+
const range = exponentialRange(magnitude, magnitude, integer > 0n, precision);
|
|
127
|
+
if (range === undefined)
|
|
128
|
+
return undefined;
|
|
129
|
+
const [low, high, exponent] = range;
|
|
130
|
+
return [rounded(low, exponent), rounded(high, exponent)];
|
|
131
|
+
}
|
|
132
|
+
/** Internal kernel. The optional starting precision permits refinement tests. */
|
|
133
|
+
export function transcendental(kind, x, initialPrecision = 160) {
|
|
134
|
+
if (!Number.isFinite(x) || (kind !== 'exp' && x <= 0))
|
|
135
|
+
return null;
|
|
136
|
+
if (kind === 'exp') {
|
|
137
|
+
if (x >= 1024)
|
|
138
|
+
return null;
|
|
139
|
+
if (x <= -1024)
|
|
140
|
+
return 0;
|
|
141
|
+
if (Math.abs(x) < 2 ** -60)
|
|
142
|
+
return 1;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
if (x === 1)
|
|
146
|
+
return 0;
|
|
147
|
+
if (kind === 'log2') {
|
|
148
|
+
const [m, e] = parts(x);
|
|
149
|
+
if ((m & (m - 1n)) === 0n)
|
|
150
|
+
return e + bitLength(m) - 1;
|
|
151
|
+
}
|
|
152
|
+
if (kind === 'log10') {
|
|
153
|
+
const [m, e] = parts(x);
|
|
154
|
+
let integer = e >= 0 ? m << BigInt(e)
|
|
155
|
+
: m % (1n << BigInt(-e)) === 0n ? m >> BigInt(-e) : 0n;
|
|
156
|
+
let count = 0;
|
|
157
|
+
while (integer > 1n && integer % 10n === 0n) {
|
|
158
|
+
integer /= 10n;
|
|
159
|
+
count++;
|
|
160
|
+
}
|
|
161
|
+
if (integer === 1n)
|
|
162
|
+
return count;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
for (let precision = Math.max(64, initialPrecision);; precision += 80) {
|
|
166
|
+
let low, high, exponent;
|
|
167
|
+
if (kind === 'exp') {
|
|
168
|
+
const [start, end] = fixed(x, precision);
|
|
169
|
+
const range = exponentialRange(start, end, x >= 0, precision);
|
|
170
|
+
if (range === undefined)
|
|
171
|
+
continue;
|
|
172
|
+
[low, high, exponent] = range;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
const natural = logarithm(x, precision);
|
|
176
|
+
[low, high] = kind === 'log' ? natural
|
|
177
|
+
: quotient(natural, kind === 'log2' ? lnTwo(precision) : lnTen(precision), precision);
|
|
178
|
+
exponent = -precision;
|
|
179
|
+
}
|
|
180
|
+
const left = rounded(low, exponent), right = rounded(high, exponent);
|
|
181
|
+
if (Object.is(left, right))
|
|
182
|
+
return left;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=transcendental.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcendental.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/transcendental.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type TrigonometricKind = 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'atan2';
|
|
2
|
+
/** The ordinary argument order is preserved, including atan2(y,x). */
|
|
3
|
+
export declare function trigonometric(kind: TrigonometricKind, first: number, second?: number, start?: number): number | null;
|
|
4
|
+
//# sourceMappingURL=trigonometric.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigonometric.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/trigonometric.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAqI3F,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,GAAG,IAAI,CAqBjH"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/** Directed integer enclosures for the real-result recipe in section 20.10.4. */
|
|
2
|
+
import { bitLength, ceil, floor, parts, rounded } from './transcendental.js';
|
|
3
|
+
import { integerSqrt } from './hypot.js';
|
|
4
|
+
let cachedPi = { precision: 0, value: [0n, 0n] };
|
|
5
|
+
const negate = (a) => [-a[1], -a[0]];
|
|
6
|
+
const add = (a, b) => [a[0] + b[0], a[1] + b[1]];
|
|
7
|
+
const subtract = (a, b) => [a[0] - b[1], a[1] - b[0]];
|
|
8
|
+
const absolute = (n) => n < 0n ? -n : n;
|
|
9
|
+
function ratio(x) {
|
|
10
|
+
const [mantissa, exponent] = parts(x);
|
|
11
|
+
return exponent >= 0 ? [mantissa << BigInt(exponent), 1n] : [mantissa, 1n << BigInt(-exponent)];
|
|
12
|
+
}
|
|
13
|
+
function coarsen(a, shift) {
|
|
14
|
+
const divisor = 1n << BigInt(shift);
|
|
15
|
+
return [floor(a[0], divisor), ceil(a[1], divisor)];
|
|
16
|
+
}
|
|
17
|
+
function quotient(a, b, precision) {
|
|
18
|
+
if (b[0] <= 0n && b[1] >= 0n)
|
|
19
|
+
return null;
|
|
20
|
+
const scale = 1n << BigInt(precision);
|
|
21
|
+
let low, high;
|
|
22
|
+
for (const numerator of a)
|
|
23
|
+
for (const denominator of b) {
|
|
24
|
+
const n = denominator < 0n ? -numerator : numerator, d = absolute(denominator);
|
|
25
|
+
const lower = floor(n * scale, d), upper = ceil(n * scale, d);
|
|
26
|
+
if (low === undefined || lower < low)
|
|
27
|
+
low = lower;
|
|
28
|
+
if (high === undefined || upper > high)
|
|
29
|
+
high = upper;
|
|
30
|
+
}
|
|
31
|
+
return [low, high];
|
|
32
|
+
}
|
|
33
|
+
/** Alternating odd powers, with the first omitted term on its signed side. */
|
|
34
|
+
function smallAtan(n, d, precision) {
|
|
35
|
+
if (n === 0n)
|
|
36
|
+
return [0n, 0n];
|
|
37
|
+
if (n < 0n)
|
|
38
|
+
return negate(smallAtan(-n, d, precision));
|
|
39
|
+
const scale = 1n << BigInt(precision), zl = n * scale / d, zh = ceil(n * scale, d);
|
|
40
|
+
const squaredLow = zl * zl / scale, squaredHigh = ceil(zh * zh, scale);
|
|
41
|
+
let powerLow = zl, powerHigh = zh, low = 0n, high = 0n, odd = 1n, positive = true;
|
|
42
|
+
for (;;) {
|
|
43
|
+
const lower = powerLow / odd, upper = ceil(powerHigh, odd);
|
|
44
|
+
if (positive) {
|
|
45
|
+
low += lower;
|
|
46
|
+
high += upper;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
low -= upper;
|
|
50
|
+
high -= lower;
|
|
51
|
+
}
|
|
52
|
+
powerLow = powerLow * squaredLow / scale;
|
|
53
|
+
powerHigh = ceil(powerHigh * squaredHigh, scale);
|
|
54
|
+
odd += 2n;
|
|
55
|
+
positive = !positive;
|
|
56
|
+
if (powerHigh <= 1n) {
|
|
57
|
+
const tail = ceil(powerHigh, odd);
|
|
58
|
+
return positive ? [low, high + tail] : [low - tail, high];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function pi(precision) {
|
|
63
|
+
if (cachedPi.precision >= precision)
|
|
64
|
+
return coarsen(cachedPi.value, cachedPi.precision - precision);
|
|
65
|
+
const a = smallAtan(1n, 5n, precision), b = smallAtan(1n, 239n, precision);
|
|
66
|
+
const value = [16n * a[0] - 4n * b[1], 16n * a[1] - 4n * b[0]];
|
|
67
|
+
cachedPi = { precision, value };
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
function positiveAtan(n, d, precision) {
|
|
71
|
+
if (n === 0n)
|
|
72
|
+
return [0n, 0n];
|
|
73
|
+
if (d === 0n)
|
|
74
|
+
return coarsen(pi(precision), 1);
|
|
75
|
+
if (n > d)
|
|
76
|
+
return subtract(coarsen(pi(precision), 1), positiveAtan(d, n, precision));
|
|
77
|
+
if (2n * n > d)
|
|
78
|
+
return add(coarsen(pi(precision), 2), smallAtan(n - d, n + d, precision));
|
|
79
|
+
return smallAtan(n, d, precision);
|
|
80
|
+
}
|
|
81
|
+
function pointSeries(z, precision, cosine) {
|
|
82
|
+
if (z < 0n) {
|
|
83
|
+
const out = pointSeries(-z, precision, cosine);
|
|
84
|
+
return cosine ? out : negate(out);
|
|
85
|
+
}
|
|
86
|
+
const scale = 1n << BigInt(precision);
|
|
87
|
+
if (z === 0n)
|
|
88
|
+
return cosine ? [scale, scale] : [0n, 0n];
|
|
89
|
+
const squaredLow = z * z / scale, squaredHigh = ceil(z * z, scale);
|
|
90
|
+
let low = cosine ? scale : z, high = low, termLow = low, termHigh = low;
|
|
91
|
+
let degree = cosine ? 0n : 1n, positive = false;
|
|
92
|
+
for (;;) {
|
|
93
|
+
const divisor = scale * (degree + 1n) * (degree + 2n);
|
|
94
|
+
termLow = termLow * squaredLow / divisor;
|
|
95
|
+
termHigh = ceil(termHigh * squaredHigh, divisor);
|
|
96
|
+
degree += 2n;
|
|
97
|
+
if (termHigh <= 1n)
|
|
98
|
+
return positive ? [low, high + termHigh] : [low - termHigh, high];
|
|
99
|
+
if (positive) {
|
|
100
|
+
low += termLow;
|
|
101
|
+
high += termHigh;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
low -= termHigh;
|
|
105
|
+
high -= termLow;
|
|
106
|
+
}
|
|
107
|
+
positive = !positive;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function reducedSinCos(x, precision) {
|
|
111
|
+
const [n, d] = ratio(x);
|
|
112
|
+
const reductionPrecision = precision + Math.max(0, bitLength(n) - bitLength(d)) + 32;
|
|
113
|
+
const scale = 1n << BigInt(reductionPrecision), [pl, ph] = pi(reductionPrecision);
|
|
114
|
+
const ql = (4n * n * scale + d * ph) / (2n * d * ph);
|
|
115
|
+
const qh = (4n * n * scale + d * pl) / (2n * d * pl);
|
|
116
|
+
if (ql !== qh)
|
|
117
|
+
return null;
|
|
118
|
+
const residual = [n * scale / d - ceil(ql * ph, 2n), ceil(n * scale, d) - ql * pl / 2n];
|
|
119
|
+
const [lower, upper] = coarsen(residual, reductionPrecision - precision);
|
|
120
|
+
const unit = 1n << BigInt(precision);
|
|
121
|
+
if (lower < -unit || upper > unit)
|
|
122
|
+
return null;
|
|
123
|
+
let sine = [pointSeries(lower, precision, false)[0], pointSeries(upper, precision, false)[1]];
|
|
124
|
+
const a = absolute(lower), b = absolute(upper), far = a > b ? a : b;
|
|
125
|
+
const near = lower <= 0n && upper >= 0n ? 0n : a < b ? a : b;
|
|
126
|
+
let cosine = [pointSeries(far, precision, true)[0], pointSeries(near, precision, true)[1]];
|
|
127
|
+
switch (Number(ql % 4n)) {
|
|
128
|
+
case 1:
|
|
129
|
+
[sine, cosine] = [cosine, negate(sine)];
|
|
130
|
+
break;
|
|
131
|
+
case 2:
|
|
132
|
+
[sine, cosine] = [negate(sine), negate(cosine)];
|
|
133
|
+
break;
|
|
134
|
+
case 3:
|
|
135
|
+
[sine, cosine] = [negate(cosine), sine];
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
return [x < 0 ? negate(sine) : sine, cosine];
|
|
139
|
+
}
|
|
140
|
+
function inverse(kind, x, y, precision) {
|
|
141
|
+
if (kind === 'atan') {
|
|
142
|
+
const [n, d] = ratio(x), out = positiveAtan(n, d, precision);
|
|
143
|
+
return x < 0 ? negate(out) : out;
|
|
144
|
+
}
|
|
145
|
+
if (kind === 'atan2') {
|
|
146
|
+
if (x === 0)
|
|
147
|
+
return y > 0 ? coarsen(pi(precision), 1) : negate(coarsen(pi(precision), 1));
|
|
148
|
+
const [yn, yd] = ratio(y), [xn, xd] = ratio(x);
|
|
149
|
+
let out = positiveAtan(yn * xd, xn * yd, precision);
|
|
150
|
+
if (x < 0)
|
|
151
|
+
out = subtract(pi(precision), out);
|
|
152
|
+
return y < 0 ? negate(out) : out;
|
|
153
|
+
}
|
|
154
|
+
const [n, d] = ratio(x), scale = 1n << BigInt(precision);
|
|
155
|
+
const radicand = (d * d - n * n) * scale * scale, root = integerSqrt(radicand / (d * d));
|
|
156
|
+
const upper = root + (root * root * d * d === radicand ? 0n : 1n);
|
|
157
|
+
if (kind === 'asin') {
|
|
158
|
+
const out = [positiveAtan(n * scale, d * upper, precision)[0], positiveAtan(n * scale, d * root, precision)[1]];
|
|
159
|
+
return x < 0 ? negate(out) : out;
|
|
160
|
+
}
|
|
161
|
+
const out = [positiveAtan(root * d, n * scale, precision)[0], positiveAtan(upper * d, n * scale, precision)[1]];
|
|
162
|
+
return x < 0 ? subtract(pi(precision), out) : out;
|
|
163
|
+
}
|
|
164
|
+
/** The ordinary argument order is preserved, including atan2(y,x). */
|
|
165
|
+
export function trigonometric(kind, first, second, start = 160) {
|
|
166
|
+
if (!Number.isFinite(first) || kind === 'atan2' && !Number.isFinite(second))
|
|
167
|
+
return null;
|
|
168
|
+
const x = kind === 'atan2' ? second : first, y = kind === 'atan2' ? first : 0;
|
|
169
|
+
if ((kind === 'asin' || kind === 'acos') && Math.abs(x) > 1)
|
|
170
|
+
return null;
|
|
171
|
+
if (kind === 'atan2' && y === 0 && x >= 0)
|
|
172
|
+
return 0;
|
|
173
|
+
if (x === 0 && kind !== 'atan2') {
|
|
174
|
+
if (kind === 'cos')
|
|
175
|
+
return 1;
|
|
176
|
+
if (kind !== 'acos')
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
179
|
+
if (kind === 'acos' && x === 1)
|
|
180
|
+
return 0;
|
|
181
|
+
for (let precision = Math.max(64, start);; precision += 80) {
|
|
182
|
+
let interval;
|
|
183
|
+
if (kind === 'sin' || kind === 'cos' || kind === 'tan') {
|
|
184
|
+
const both = reducedSinCos(x, precision);
|
|
185
|
+
interval = both === null ? null : kind === 'sin' ? both[0] : kind === 'cos' ? both[1] : quotient(both[0], both[1], precision);
|
|
186
|
+
}
|
|
187
|
+
else
|
|
188
|
+
interval = inverse(kind, x, y, precision);
|
|
189
|
+
if (interval !== null) {
|
|
190
|
+
const left = rounded(interval[0], -precision), right = rounded(interval[1], -precision);
|
|
191
|
+
if (left === right)
|
|
192
|
+
return left;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=trigonometric.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigonometric.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/trigonometric.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,10 +21,8 @@ export interface Occasion {
|
|
|
21
21
|
* `valueWhen(cond, src, occurrence)`: `src` as it stood the last time the
|
|
22
22
|
* condition held, or the one before that.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* queue grew with the dataset would not be copyable in the sense
|
|
27
|
-
* `compiled-program.md` 2.11 requires.
|
|
24
|
+
* A later occurrence can name any earlier true event. Immutable history keeps
|
|
25
|
+
* those values, including absence, while checkpoints share the sealed prefix.
|
|
28
26
|
*/
|
|
29
27
|
export declare function valueWhenStep(state: StateRecord, key: string, input: Occasion, occurrence: number): Value;
|
|
30
28
|
/** `valueWhen(cond, src, occurrence)` as a tail. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/conditions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGxF,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,CAMhF;AAED,mCAAmC;AACnC,wBAAgB,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAEjD;AAED,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,CAE9C;AAED,iFAAiF;AACjF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/conditions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGxF,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,CAMhF;AAED,mCAAmC;AACnC,wBAAgB,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAEjD;AAED,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,CAE9C;AAED,iFAAiF;AACjF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,GACjB,KAAK,CAUP;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,UAAU,SAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAEnE;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,KAAK,EAAE,CAK3E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NONE, fold,
|
|
1
|
+
import { ContributionHistory, NONE, fold, slot, tailOf } from '../values/index.js';
|
|
2
2
|
/** `barsSince(cond)`: bars since the condition last held, 0 on the bar itself. */
|
|
3
3
|
export function barsSinceStep(state, key, cond) {
|
|
4
4
|
let since = slot(state, key, -1);
|
|
@@ -21,25 +21,21 @@ export function barsSince(cond) {
|
|
|
21
21
|
* `valueWhen(cond, src, occurrence)`: `src` as it stood the last time the
|
|
22
22
|
* condition held, or the one before that.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* queue grew with the dataset would not be copyable in the sense
|
|
27
|
-
* `compiled-program.md` 2.11 requires.
|
|
24
|
+
* A later occurrence can name any earlier true event. Immutable history keeps
|
|
25
|
+
* those values, including absence, while checkpoints share the sealed prefix.
|
|
28
26
|
*/
|
|
29
27
|
export function valueWhenStep(state, key, input, occurrence) {
|
|
30
28
|
if (!Number.isInteger(occurrence) || occurrence < 0)
|
|
31
29
|
return NONE;
|
|
32
|
-
const
|
|
33
|
-
|
|
30
|
+
const held = state[key];
|
|
31
|
+
let hits = held instanceof ContributionHistory ? held : new ContributionHistory();
|
|
34
32
|
if (input.cond === true) {
|
|
35
|
-
hits.
|
|
36
|
-
|
|
37
|
-
hits.shift();
|
|
33
|
+
hits = hits.append(input.src);
|
|
34
|
+
state[key] = hits;
|
|
38
35
|
}
|
|
39
|
-
if (hits.
|
|
36
|
+
if (hits.count <= occurrence)
|
|
40
37
|
return NONE;
|
|
41
|
-
|
|
42
|
-
return typeof first === 'number' ? first : NONE;
|
|
38
|
+
return hits.view(occurrence + 1).at(occurrence);
|
|
43
39
|
}
|
|
44
40
|
/** `valueWhen(cond, src, occurrence)` as a tail. */
|
|
45
41
|
export function valueWhenTail(occurrence = 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/conditions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/conditions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEnF,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,KAAkB,EAAE,GAAW,EAAE,IAAU;IACvE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI;QAAE,KAAK,GAAG,CAAC,CAAC;SACxB,IAAI,KAAK,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAChC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,IAAU,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,SAAS,CAAC,IAAW;IACnC,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAkB,EAClB,GAAW,EACX,KAAe,EACf,UAAkB;IAElB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,IAAI,GAAG,IAAI,YAAY,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;IAClF,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,aAAa,CAAC,UAAU,GAAG,CAAC;IAC1C,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,KAAe,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,SAAS,CAAC,IAAW,EAAE,GAAW,EAAE,UAAU,GAAG,CAAC;IAChE,OAAO,IAAI,CACT,aAAa,CAAC,UAAU,CAAC,EACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CACrE,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AASzC;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,CAAC,EAAE,MAAM,GAAG,IAAI,GACf,KAAK,CAaP;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE1D;AAED,8CAA8C;AAC9C,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAUP;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE/D;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE7D;
|
|
1
|
+
{"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AASzC;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,CAAC,EAAE,MAAM,GAAG,IAAI,GACf,KAAK,CAaP;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE1D;AAED,8CAA8C;AAC9C,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAUP;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE/D;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE7D;AAoDD,8EAA8E;AAC9E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAEP;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAEP;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAE7D;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAE9D;AAMD,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAErE;AAED,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEtE"}
|
|
@@ -113,6 +113,8 @@ function jointStep(state, key, pair, len, want) {
|
|
|
113
113
|
const m = moments(a, b, len);
|
|
114
114
|
if (want === 'covariance')
|
|
115
115
|
return result(m.covariance);
|
|
116
|
+
if (!Number.isFinite(m.varianceA) || !Number.isFinite(m.varianceB))
|
|
117
|
+
return NONE;
|
|
116
118
|
const scale = Math.sqrt(m.varianceA) * Math.sqrt(m.varianceB);
|
|
117
119
|
if (scale === 0)
|
|
118
120
|
return NONE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Immutable contribution chunks, shared by state checkpoints and independent forks. */
|
|
2
|
+
import type { Value } from './value.js';
|
|
3
|
+
interface Chunk {
|
|
4
|
+
readonly values: readonly Value[];
|
|
5
|
+
readonly prior: Chunk | null;
|
|
6
|
+
}
|
|
7
|
+
/** Appending copies at most one short tail, never the contributed prefix. */
|
|
8
|
+
export declare class ContributionHistory {
|
|
9
|
+
readonly head: Chunk | null;
|
|
10
|
+
readonly tail: readonly Value[];
|
|
11
|
+
readonly count: number;
|
|
12
|
+
constructor(head?: Chunk | null, tail?: readonly Value[], count?: number);
|
|
13
|
+
append(value: Value): ContributionHistory;
|
|
14
|
+
/** Index chunk references once; each subsequent newest-first read is constant work. */
|
|
15
|
+
view(length: number): ContributionView;
|
|
16
|
+
}
|
|
17
|
+
/** A transient index into the current window. It is not retained in state. */
|
|
18
|
+
export declare class ContributionView {
|
|
19
|
+
private readonly tail;
|
|
20
|
+
private readonly chunks;
|
|
21
|
+
readonly size: number;
|
|
22
|
+
constructor(tail: readonly Value[], chunks: readonly (readonly Value[])[], size: number);
|
|
23
|
+
at(back: number): Value;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/values/history.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,UAAU,KAAK;IACb,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAED,6EAA6E;AAC7E,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAGrB,IAAI,GAAE,KAAK,GAAG,IAAW,EACzB,IAAI,GAAE,SAAS,KAAK,EAAsB,EAC1C,KAAK,SAAI;IAQX,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB;IAOzC,uFAAuF;IACvF,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;CAYvC;AAED,8EAA8E;AAC9E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAGpB,IAAI,EAAE,SAAS,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM;IAO7E,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAMxB"}
|