openalgo-script 0.6.0 → 0.7.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +17 -12
  3. package/dist/core/engine/channels.js +2 -2
  4. package/dist/core/engine/channels.js.map +1 -1
  5. package/dist/core/engine/engine.js +2 -3
  6. package/dist/core/engine/engine.js.map +1 -1
  7. package/dist/core/engine/library/maths.js +2 -2
  8. package/dist/core/engine/library/maths.js.map +1 -1
  9. package/dist/core/engine/machine.js +5 -5
  10. package/dist/core/engine/machine.js.map +1 -1
  11. package/dist/core/engine/memory.js +2 -2
  12. package/dist/core/engine/memory.js.map +1 -1
  13. package/dist/core/engine/registers.js +2 -2
  14. package/dist/core/engine/registers.js.map +1 -1
  15. package/dist/core/engine/values/index.d.ts +1 -1
  16. package/dist/core/engine/values/index.d.ts.map +1 -1
  17. package/dist/core/engine/values/index.js +1 -1
  18. package/dist/core/engine/values/index.js.map +1 -1
  19. package/dist/core/engine/values/value.d.ts +2 -0
  20. package/dist/core/engine/values/value.d.ts.map +1 -1
  21. package/dist/core/engine/values/value.js +4 -0
  22. package/dist/core/engine/values/value.js.map +1 -1
  23. package/dist/core/stdlib/averages/exponential.d.ts.map +1 -1
  24. package/dist/core/stdlib/averages/exponential.js +3 -6
  25. package/dist/core/stdlib/averages/exponential.js.map +1 -1
  26. package/dist/core/stdlib/averages/gaussian.d.ts +15 -0
  27. package/dist/core/stdlib/averages/gaussian.d.ts.map +1 -0
  28. package/dist/core/stdlib/averages/gaussian.js +55 -0
  29. package/dist/core/stdlib/averages/gaussian.js.map +1 -0
  30. package/dist/core/stdlib/averages/shaped.d.ts +2 -6
  31. package/dist/core/stdlib/averages/shaped.d.ts.map +1 -1
  32. package/dist/core/stdlib/averages/shaped.js +8 -22
  33. package/dist/core/stdlib/averages/shaped.js.map +1 -1
  34. package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -1
  35. package/dist/core/stdlib/maths/arithmetic.js +2 -1
  36. package/dist/core/stdlib/maths/arithmetic.js.map +1 -1
  37. package/dist/core/stdlib/maths/elementary.d.ts +3 -20
  38. package/dist/core/stdlib/maths/elementary.d.ts.map +1 -1
  39. package/dist/core/stdlib/maths/elementary.js +17 -13
  40. package/dist/core/stdlib/maths/elementary.js.map +1 -1
  41. package/dist/core/stdlib/maths/hypot.d.ts +8 -0
  42. package/dist/core/stdlib/maths/hypot.d.ts.map +1 -0
  43. package/dist/core/stdlib/maths/hypot.js +68 -0
  44. package/dist/core/stdlib/maths/hypot.js.map +1 -0
  45. package/dist/core/stdlib/maths/power.d.ts +3 -0
  46. package/dist/core/stdlib/maths/power.d.ts.map +1 -0
  47. package/dist/core/stdlib/maths/power.js +83 -0
  48. package/dist/core/stdlib/maths/power.js.map +1 -0
  49. package/dist/core/stdlib/maths/transcendental.d.ts +15 -0
  50. package/dist/core/stdlib/maths/transcendental.d.ts.map +1 -0
  51. package/dist/core/stdlib/maths/transcendental.js +185 -0
  52. package/dist/core/stdlib/maths/transcendental.js.map +1 -0
  53. package/dist/core/stdlib/maths/trigonometric.d.ts +4 -0
  54. package/dist/core/stdlib/maths/trigonometric.d.ts.map +1 -0
  55. package/dist/core/stdlib/maths/trigonometric.js +196 -0
  56. package/dist/core/stdlib/maths/trigonometric.js.map +1 -0
  57. package/dist/core/stdlib/series/conditions.d.ts +2 -4
  58. package/dist/core/stdlib/series/conditions.d.ts.map +1 -1
  59. package/dist/core/stdlib/series/conditions.js +9 -13
  60. package/dist/core/stdlib/series/conditions.js.map +1 -1
  61. package/dist/core/stdlib/series/statistics.d.ts.map +1 -1
  62. package/dist/core/stdlib/series/statistics.js +2 -0
  63. package/dist/core/stdlib/series/statistics.js.map +1 -1
  64. package/dist/core/stdlib/values/history.d.ts +26 -0
  65. package/dist/core/stdlib/values/history.d.ts.map +1 -0
  66. package/dist/core/stdlib/values/history.js +52 -0
  67. package/dist/core/stdlib/values/history.js.map +1 -0
  68. package/dist/core/stdlib/values/index.d.ts +1 -0
  69. package/dist/core/stdlib/values/index.d.ts.map +1 -1
  70. package/dist/core/stdlib/values/index.js +1 -0
  71. package/dist/core/stdlib/values/index.js.map +1 -1
  72. package/dist/core/stdlib/values/lookback.d.ts +4 -1
  73. package/dist/core/stdlib/values/lookback.d.ts.map +1 -1
  74. package/dist/core/stdlib/values/lookback.js +48 -45
  75. package/dist/core/stdlib/values/lookback.js.map +1 -1
  76. package/dist/core/stdlib/values/region.d.ts +6 -5
  77. package/dist/core/stdlib/values/region.d.ts.map +1 -1
  78. package/dist/core/stdlib/values/region.js +3 -3
  79. package/dist/core/stdlib/values/region.js.map +1 -1
  80. package/dist/core/stdlib/volatility/measures.d.ts.map +1 -1
  81. package/dist/core/stdlib/volatility/measures.js +6 -4
  82. package/dist/core/stdlib/volatility/measures.js.map +1 -1
  83. package/dist/core/version/version.generated.d.ts +1 -1
  84. package/dist/core/version/version.generated.js +1 -1
  85. package/package.json +9 -1
  86. package/src/core/engine/channels.ts +2 -2
  87. package/src/core/engine/engine.ts +3 -3
  88. package/src/core/engine/library/maths.ts +2 -2
  89. package/src/core/engine/machine.ts +5 -5
  90. package/src/core/engine/memory.ts +2 -2
  91. package/src/core/engine/registers.ts +2 -2
  92. package/src/core/engine/values/index.ts +1 -0
  93. package/src/core/engine/values/value.ts +5 -0
  94. package/src/core/stdlib/averages/exponential.ts +3 -4
  95. package/src/core/stdlib/averages/gaussian.ts +52 -0
  96. package/src/core/stdlib/averages/shaped.ts +8 -21
  97. package/src/core/stdlib/maths/arithmetic.ts +2 -1
  98. package/src/core/stdlib/maths/elementary.ts +20 -33
  99. package/src/core/stdlib/maths/hypot.ts +63 -0
  100. package/src/core/stdlib/maths/power.ts +57 -0
  101. package/src/core/stdlib/maths/transcendental.ts +160 -0
  102. package/src/core/stdlib/maths/trigonometric.ts +160 -0
  103. package/src/core/stdlib/series/conditions.ts +9 -12
  104. package/src/core/stdlib/series/statistics.ts +1 -0
  105. package/src/core/stdlib/values/history.ts +70 -0
  106. package/src/core/stdlib/values/index.ts +1 -0
  107. package/src/core/stdlib/values/lookback.ts +51 -47
  108. package/src/core/stdlib/values/region.ts +7 -5
  109. package/src/core/stdlib/volatility/measures.ts +6 -4
  110. package/src/core/version/version.generated.ts +1 -1
@@ -1,9 +1,7 @@
1
1
  import { NONE, fold, isPresent, result, smoothed, tailOf } from '../values/index.js';
2
2
  /** `ema(src, len)`: exponential mean, weight `2 / (len + 1)`, from bar `len - 1`. */
3
3
  export function emaStep(state, key, value, len) {
4
- if (len === null)
5
- return NONE;
6
- const weight = 2 / (len + 1);
4
+ const weight = len === null ? 0 : 2 / (len + 1);
7
5
  const rest = 1 - weight;
8
6
  return smoothed(state, key, len, value, (previous, next) => next * weight + previous * rest);
9
7
  }
@@ -17,9 +15,8 @@ export function ema(src, len) {
17
15
  }
18
16
  /** `rma(src, len)`: the smoothing the classic oscillators use, from bar `len - 1`. */
19
17
  export function rmaStep(state, key, value, len) {
20
- if (len === null)
21
- return NONE;
22
- return smoothed(state, key, len, value, (previous, next) => (previous * (len - 1) + next) / len);
18
+ const span = len ?? 1;
19
+ return smoothed(state, key, len, value, (previous, next) => (previous * (span - 1) + next) / span);
23
20
  }
24
21
  /** `rma(src, len)` as a tail. */
25
22
  export function rmaTail(len) {
@@ -1 +1 @@
1
- {"version":3,"file":"exponential.js","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/exponential.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exponential.js","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/exponential.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ interface Kernel {
2
+ readonly weights: readonly number[];
3
+ readonly norm: number;
4
+ }
5
+ /** Internal cache with independently bounded entry and coefficient counts. */
6
+ export declare class GaussianCache {
7
+ private readonly entries;
8
+ private count;
9
+ get size(): number;
10
+ get coefficients(): number;
11
+ get(length: number, offset: number, sigma: number): Kernel | null;
12
+ }
13
+ export declare function gaussianWeights(length: number, offset: number, sigma: number): Kernel | null;
14
+ export {};
15
+ //# sourceMappingURL=gaussian.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaussian.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/gaussian.ts"],"names":[],"mappings":"AAGA,UAAU,MAAM;IAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAO/E,8EAA8E;AAC9E,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,KAAK,CAAK;IAClB,IAAI,IAAI,IAAI,MAAM,CAA8B;IAChD,IAAI,YAAY,IAAI,MAAM,CAAuB;IAEjD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CA6BlE;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5F"}
@@ -0,0 +1,55 @@
1
+ /** Pure immutable Gaussian coefficients, outside all checkpoint state. */
2
+ import { exp } from '../maths/index.js';
3
+ const view = new DataView(new ArrayBuffer(8));
4
+ function keyOf(value) {
5
+ view.setFloat64(0, value);
6
+ return view.getBigUint64(0).toString(16);
7
+ }
8
+ /** Internal cache with independently bounded entry and coefficient counts. */
9
+ export class GaussianCache {
10
+ entries = new Map();
11
+ count = 0;
12
+ get size() { return this.entries.size; }
13
+ get coefficients() { return this.count; }
14
+ get(length, offset, sigma) {
15
+ if (!Number.isFinite(offset) || !Number.isFinite(sigma) || !(sigma > 0))
16
+ return null;
17
+ const key = `${keyOf(length)}/${keyOf(offset)}/${keyOf(sigma)}`;
18
+ const held = this.entries.get(key);
19
+ if (held !== undefined)
20
+ return held;
21
+ const peak = offset * (length - 1), spread = length / sigma;
22
+ const denominator = (2 * spread) * spread;
23
+ if (denominator === 0)
24
+ return null;
25
+ const weights = [];
26
+ let norm = 0;
27
+ for (let position = 0; position < length; position++) {
28
+ const gap = position - peak, exponent = -(gap * gap) / denominator;
29
+ // Internal limiting weight; the public exp still rejects infinities.
30
+ const weight = exponent === -Infinity ? 0 : exp(exponent);
31
+ if (typeof weight !== 'number')
32
+ return null;
33
+ weights.push(weight);
34
+ norm += weight;
35
+ }
36
+ if (norm === 0)
37
+ return null;
38
+ const computed = Object.freeze({ weights: Object.freeze(weights), norm });
39
+ if (length <= 4096) {
40
+ while (this.entries.size >= 8 || this.count + length > 4096) {
41
+ const oldest = this.entries.keys().next().value;
42
+ this.count -= this.entries.get(oldest).weights.length;
43
+ this.entries.delete(oldest);
44
+ }
45
+ this.entries.set(key, computed);
46
+ this.count += length;
47
+ }
48
+ return computed;
49
+ }
50
+ }
51
+ const cache = new GaussianCache();
52
+ export function gaussianWeights(length, offset, sigma) {
53
+ return cache.get(length, offset, sigma);
54
+ }
55
+ //# sourceMappingURL=gaussian.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaussian.js","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/gaussian.ts"],"names":[],"mappings":"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"}
@@ -29,12 +29,8 @@ export declare function hma(src: Series, len: number): Value[];
29
29
  * `offset` slides the kernel's peak between lag and smoothness and `sigma` sets
30
30
  * how sharply it falls away.
31
31
  *
32
- * The kernel depends only on the position in the lookback, so it could be built
33
- * once; it is rebuilt each bar instead, because the region 2.11 requires holds
34
- * numbers and queues and not a cached array of weights, and a step that reads
35
- * its own arguments every bar is the only form an engine can drive. The
36
- * accumulation is over the lookback in index order either way, so the number is
37
- * the same one.
32
+ * A bounded pure cache holds immutable coefficients keyed by the current
33
+ * parameters. Source observations remain exclusively in the copyable region.
38
34
  */
39
35
  export declare function almaStep(state: StateRecord, key: string, value: Value, len: number | null, offset: number | null, sigma: number | null): Value;
40
36
  /** `alma(src, len, offset, sigma)` as a tail. */
@@ -1 +1 @@
1
- {"version":3,"file":"shaped.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/shaped.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAc3E;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAQP;AAED,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEvD;AAED,2CAA2C;AAC3C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAErD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,KAAK,CAuBP;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAO,EAAE,KAAK,SAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAElF;AAED,2DAA2D;AAC3D,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAO,EAAE,KAAK,SAAI,GAAG,KAAK,EAAE,CAEhF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,KAAK,CAmBP;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEtE;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,KAAK,EAAE,CAEpE"}
1
+ {"version":3,"file":"shaped.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/shaped.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAe3E;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAOP;AAED,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEvD;AAED,2CAA2C;AAC3C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAErD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,KAAK,CAcP;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAO,EAAE,KAAK,SAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAElF;AAED,2DAA2D;AAC3D,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAO,EAAE,KAAK,SAAI,GAAG,KAAK,EAAE,CAEhF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,KAAK,CAmBP;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEtE;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,KAAK,EAAE,CAEpE"}
@@ -1,6 +1,7 @@
1
1
  import { NONE, fold, isLength, isPresent, result, ring, tailOf, } from '../values/index.js';
2
2
  import { roundHalfAway } from '../maths/index.js';
3
3
  import { wmaStep } from './simple.js';
4
+ import { gaussianWeights } from './gaussian.js';
4
5
  /**
5
6
  * `hma(src, len)`: from bar `len + round(sqrt(len)) - 2`.
6
7
  *
@@ -15,10 +16,8 @@ import { wmaStep } from './simple.js';
15
16
  * settles it. This is recorded as a gap rather than presented as a reading.
16
17
  */
17
18
  export function hmaStep(state, key, value, len) {
18
- if (len === null)
19
- return NONE;
20
- const half = Math.max(1, Math.floor(len / 2));
21
- const outer = Math.max(1, roundHalfAway(Math.sqrt(len)));
19
+ const half = len === null ? null : Math.max(1, Math.floor(len / 2));
20
+ const outer = len === null ? null : Math.max(1, roundHalfAway(Math.sqrt(len)));
22
21
  const near = wmaStep(state, `${key}f`, value, half);
23
22
  const far = wmaStep(state, `${key}s`, value, len);
24
23
  const raw = isPresent(near) && isPresent(far) ? result(2 * near - far) : NONE;
@@ -38,12 +37,8 @@ export function hma(src, len) {
38
37
  * `offset` slides the kernel's peak between lag and smoothness and `sigma` sets
39
38
  * how sharply it falls away.
40
39
  *
41
- * The kernel depends only on the position in the lookback, so it could be built
42
- * once; it is rebuilt each bar instead, because the region 2.11 requires holds
43
- * numbers and queues and not a cached array of weights, and a step that reads
44
- * its own arguments every bar is the only form an engine can drive. The
45
- * accumulation is over the lookback in index order either way, so the number is
46
- * the same one.
40
+ * A bounded pure cache holds immutable coefficients keyed by the current
41
+ * parameters. Source observations remain exclusively in the copyable region.
47
42
  */
48
43
  export function almaStep(state, key, value, len, offset, sigma) {
49
44
  const lookback = ring(state, key, len);
@@ -54,19 +49,10 @@ export function almaStep(state, key, value, len, offset, sigma) {
54
49
  return NONE;
55
50
  if (!(sigma > 0) || !isLength(len))
56
51
  return NONE;
57
- const peak = offset * (len - 1);
58
- const spread = len / sigma;
59
- const weights = [];
60
- let norm = 0;
61
- // Index order: position 0 is the oldest bar in the lookback.
62
- for (let position = 0; position < len; position += 1) {
63
- const gap = position - peak;
64
- const weight = Math.exp(-(gap * gap) / (2 * spread * spread));
65
- weights.push(weight);
66
- norm += weight;
67
- }
68
- if (norm === 0)
52
+ const kernel = gaussianWeights(len, offset, sigma);
53
+ if (kernel === null)
69
54
  return NONE;
55
+ const { weights, norm } = kernel;
70
56
  let total = 0;
71
57
  for (let position = 0; position < len; position += 1) {
72
58
  total += lookback.at(len - 1 - position) * weights[position];
@@ -1 +1 @@
1
- {"version":3,"file":"shaped.js","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/shaped.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shaped.js","sourceRoot":"","sources":["../../../../src/core/stdlib/averages/shaped.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/arithmetic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,wCAAwC;AACxC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,6BAA6B;AAC7B,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAKpC;AAED,uCAAuC;AACvC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,sCAAsC;AACtC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,mDAAmD;AACnD,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK,CAK3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,qCAAqC;AACrC,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAExC;AAED,gDAAgD;AAChD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,CAEvD;AAED,iFAAiF;AACjF,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAEjD"}
1
+ {"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/arithmetic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,wCAAwC;AACxC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,6BAA6B;AAC7B,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAKpC;AAED,uCAAuC;AACvC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,sCAAsC;AACtC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,mDAAmD;AACnD,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK,CAK3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,qCAAqC;AACrC,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAExC;AAED,gDAAgD;AAChD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,CAGvD;AAED,iFAAiF;AACjF,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAEjD"}
@@ -57,7 +57,8 @@ export function isNone(x) {
57
57
  }
58
58
  /** `x` when present, `fallback` when absent. */
59
59
  export function orElse(x, fallback) {
60
- return isPresent(x) ? x : fallback;
60
+ const value = isPresent(x) ? x : fallback;
61
+ return value === 0 ? 0 : value;
61
62
  }
62
63
  /** `toBool(x)`: absence to false, a bool to itself. Numbers are a type error. */
63
64
  export function boolOf(x) {
@@ -1 +1 @@
1
- {"version":3,"file":"arithmetic.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/arithmetic.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE7D,wCAAwC;AACxC,MAAM,UAAU,GAAG,CAAC,CAAQ;IAC1B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,IAAI,CAAC,CAAQ;IAC3B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,KAAK,CAAC,CAAQ,EAAE,EAAS,EAAE,EAAS;IAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,MAAM,CAAC,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,MAAM,CAAC,CAAQ,EAAE,QAAe;IAC9C,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,MAAM,CAAC,CAAiB;IACtC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"arithmetic.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/arithmetic.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE7D,wCAAwC;AACxC,MAAM,UAAU,GAAG,CAAC,CAAQ;IAC1B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,IAAI,CAAC,CAAQ;IAC3B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,KAAK,CAAC,CAAQ,EAAE,EAAS,EAAE,EAAS;IAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,MAAM,CAAC,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,MAAM,CAAC,CAAQ,EAAE,QAAe;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,MAAM,CAAC,CAAiB;IACtC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC"}
@@ -1,24 +1,7 @@
1
1
  /**
2
- * Square root, the logarithms, the powers and the trigonometry.
3
- *
4
- * **A gap, stated here rather than discovered later.**
5
- * `compiled-program.md` section 8.3 requires that the transcendental functions
6
- * not use the platform's own maths library, because a platform implementation
7
- * is correct to within an ulp or so and differs between platforms in the last
8
- * bit, which this project has declared a release blocker. It names the portable
9
- * reference algorithm as living in the library manifest. **That manifest does
10
- * not exist yet**, so there is nothing to implement against, and the functions
11
- * below call the host until it does. Everything in this file except `sqrt` is
12
- * therefore portable in value but not yet guaranteed in the last bit.
13
- *
14
- * `sqrt` is the exception and is not affected: IEEE-754 requires it to be
15
- * correctly rounded, so every conforming platform returns the same bits.
16
- *
17
- * The consequence is worth stating plainly, because it decides what is safe to
18
- * gate on today. Of the five gate studies, EMA, RSI, MACD, Bollinger Bands and
19
- * Supertrend, four use only addition, subtraction, multiplication and division,
20
- * and Bollinger Bands adds `sqrt`. None of them reaches this file's uncertain
21
- * half. The functions that do are `alma` (exp), `hv` (log) and `chop` (log10).
2
+ * Elementary functions. Hypotenuse and exp/log use sections 20.10.1 and
3
+ * 20.10.2; power and trigonometry use sections 20.10.3 and 20.10.4.
4
+ * Square root uses its correctly rounded host operation.
22
5
  */
23
6
  import type { Value } from '../values/index.js';
24
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"elementary.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/elementary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,iEAAiE;AACjE,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,kCAAkC;AAClC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,4DAA4D;AAC5D,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGnC;AAED,+DAA+D;AAC/D,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGrC;AAED,mEAAmE;AACnE,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,2BAA2B;AAC3B,eAAO,MAAM,EAAE,EAAE,MAAgB,CAAC;AAElC,yCAAyC;AACzC,eAAO,MAAM,CAAC,EAAE,MAAe,CAAC;AAEhC,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG/C;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEzC;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEzC;AAED,kDAAkD;AAClD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,6BAA6B;AAC7B,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,8BAA8B;AAC9B,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,4DAA4D;AAC5D,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,8DAA8D;AAC9D,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,uCAAuC;AACvC,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEpC;AAED,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG/C"}
1
+ {"version":3,"file":"elementary.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/elementary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAOhD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,iEAAiE;AACjE,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG7C;AAED,kCAAkC;AAClC,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,4DAA4D;AAC5D,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGnC;AAED,+DAA+D;AAC/D,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGrC;AAED,mEAAmE;AACnE,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,2BAA2B;AAC3B,eAAO,MAAM,EAAE,EAAE,MAAgB,CAAC;AAElC,yCAAyC;AACzC,eAAO,MAAM,CAAC,EAAE,MAAe,CAAC;AAEhC,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG/C;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEzC;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEzC;AAED,kDAAkD;AAClD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,6BAA6B;AAC7B,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,8BAA8B;AAC9B,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEnC;AAED,4DAA4D;AAC5D,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,8DAA8D;AAC9D,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAGpC;AAED,uCAAuC;AACvC,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEpC;AAED,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAG/C"}
@@ -1,4 +1,8 @@
1
1
  import { NONE, isPresent, result } from '../values/index.js';
2
+ import { hypotenuse } from './hypot.js';
3
+ import { transcendental } from './transcendental.js';
4
+ import { power } from './power.js';
5
+ import { trigonometric } from './trigonometric.js';
2
6
  /**
3
7
  * `sqrt(x)`: square root, absent below zero.
4
8
  *
@@ -14,29 +18,29 @@ export function sqrt(x) {
14
18
  export function pow(x, y) {
15
19
  if (!isPresent(x) || !isPresent(y))
16
20
  return NONE;
17
- return result(Math.pow(x, y));
21
+ return power(x, y);
18
22
  }
19
23
  /** `exp(x)`: e to the power x. */
20
24
  export function exp(x) {
21
- return isPresent(x) ? result(Math.exp(x)) : NONE;
25
+ return isPresent(x) ? transcendental('exp', x) : NONE;
22
26
  }
23
27
  /** `log(x)`: natural logarithm, absent at or below zero. */
24
28
  export function log(x) {
25
29
  if (!isPresent(x) || x <= 0)
26
30
  return NONE;
27
- return result(Math.log(x));
31
+ return transcendental('log', x);
28
32
  }
29
33
  /** `log10(x)`: base ten logarithm, absent at or below zero. */
30
34
  export function log10(x) {
31
35
  if (!isPresent(x) || x <= 0)
32
36
  return NONE;
33
- return result(Math.log10(x));
37
+ return transcendental('log10', x);
34
38
  }
35
39
  /** `math.log2(x)`: base two logarithm, absent at or below zero. */
36
40
  export function log2(x) {
37
41
  if (!isPresent(x) || x <= 0)
38
42
  return NONE;
39
- return result(Math.log2(x));
43
+ return transcendental('log2', x);
40
44
  }
41
45
  /** The circle constant. */
42
46
  export const PI = Math.PI;
@@ -46,7 +50,7 @@ export const E = Math.E;
46
50
  export function hypot(x, y) {
47
51
  if (!isPresent(x) || !isPresent(y))
48
52
  return NONE;
49
- return result(Math.hypot(x, y));
53
+ return hypotenuse(x, y);
50
54
  }
51
55
  /** `math.toDegrees(x)`: radians to degrees. */
52
56
  export function toDegrees(x) {
@@ -58,36 +62,36 @@ export function toRadians(x) {
58
62
  }
59
63
  /** `math.sin(x)`: sine of an angle in radians. */
60
64
  export function sin(x) {
61
- return isPresent(x) ? result(Math.sin(x)) : NONE;
65
+ return isPresent(x) ? trigonometric('sin', x) : NONE;
62
66
  }
63
67
  /** `math.cos(x)`: cosine. */
64
68
  export function cos(x) {
65
- return isPresent(x) ? result(Math.cos(x)) : NONE;
69
+ return isPresent(x) ? trigonometric('cos', x) : NONE;
66
70
  }
67
71
  /** `math.tan(x)`: tangent. */
68
72
  export function tan(x) {
69
- return isPresent(x) ? result(Math.tan(x)) : NONE;
73
+ return isPresent(x) ? trigonometric('tan', x) : NONE;
70
74
  }
71
75
  /** `math.asin(x)`: inverse sine, absent outside -1 to 1. */
72
76
  export function asin(x) {
73
77
  if (!isPresent(x) || x < -1 || x > 1)
74
78
  return NONE;
75
- return result(Math.asin(x));
79
+ return trigonometric('asin', x);
76
80
  }
77
81
  /** `math.acos(x)`: inverse cosine, absent outside -1 to 1. */
78
82
  export function acos(x) {
79
83
  if (!isPresent(x) || x < -1 || x > 1)
80
84
  return NONE;
81
- return result(Math.acos(x));
85
+ return trigonometric('acos', x);
82
86
  }
83
87
  /** `math.atan(x)`: inverse tangent. */
84
88
  export function atan(x) {
85
- return isPresent(x) ? result(Math.atan(x)) : NONE;
89
+ return isPresent(x) ? trigonometric('atan', x) : NONE;
86
90
  }
87
91
  /** `math.atan2(y, x)`: angle of a vector, correct in all four quadrants. */
88
92
  export function atan2(y, x) {
89
93
  if (!isPresent(y) || !isPresent(x))
90
94
  return NONE;
91
- return result(Math.atan2(y, x));
95
+ return trigonometric('atan2', y, x);
92
96
  }
93
97
  //# sourceMappingURL=elementary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"elementary.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/elementary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elementary.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/elementary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** A power-of-two upper bound makes integer Newton steps decrease to the floor. */
2
+ export declare function integerSqrt(value: bigint): bigint;
3
+ /**
4
+ * Keep the squared sum exact, then compare against a squared rounding midpoint.
5
+ * Binary64 input widths bound every temporary integer to fewer than 4,200 bits.
6
+ */
7
+ export declare function hypotenuse(x: number, y: number): number | null;
8
+ //# sourceMappingURL=hypot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypot.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/hypot.ts"],"names":[],"mappings":"AAoBA,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B9D"}
@@ -0,0 +1,68 @@
1
+ /** Exact two-argument hypotenuse, `stdlib.md` section 20.10.1. */
2
+ const view = new DataView(new ArrayBuffer(8));
3
+ const LEADING = 1n << 52n;
4
+ const FRACTION = LEADING - 1n;
5
+ function parts(value) {
6
+ view.setFloat64(0, Math.abs(value), false);
7
+ const encoded = view.getBigUint64(0, false);
8
+ const exponent = Number(encoded >> 52n);
9
+ return {
10
+ significand: (encoded & FRACTION) | (exponent === 0 ? 0n : LEADING),
11
+ exponent: exponent === 0 ? -1074 : exponent - 1075,
12
+ };
13
+ }
14
+ function decode(encoded) {
15
+ view.setBigUint64(0, encoded, false);
16
+ return view.getFloat64(0, false);
17
+ }
18
+ /** A power-of-two upper bound makes integer Newton steps decrease to the floor. */
19
+ export function integerSqrt(value) {
20
+ if (value < 2n)
21
+ return value;
22
+ let before = 1n << BigInt(Math.ceil(value.toString(2).length / 2));
23
+ for (;;) {
24
+ const next = (before + value / before) >> 1n;
25
+ if (next >= before)
26
+ return before;
27
+ before = next;
28
+ }
29
+ }
30
+ /**
31
+ * Keep the squared sum exact, then compare against a squared rounding midpoint.
32
+ * Binary64 input widths bound every temporary integer to fewer than 4,200 bits.
33
+ */
34
+ export function hypotenuse(x, y) {
35
+ if (!Number.isFinite(x) || !Number.isFinite(y))
36
+ return null;
37
+ if (x === 0)
38
+ return Math.abs(y);
39
+ if (y === 0)
40
+ return Math.abs(x);
41
+ const a = parts(x);
42
+ const b = parts(y);
43
+ const exponent = Math.min(a.exponent, b.exponent);
44
+ const square = (a.significand * a.significand << BigInt(2 * (a.exponent - exponent))) +
45
+ (b.significand * b.significand << BigInt(2 * (b.exponent - exponent)));
46
+ const top = square.toString(2).length - 1;
47
+ let spacing = Math.max(-1074, exponent + Math.floor(top / 2) - 52);
48
+ const shift = exponent - spacing;
49
+ const numerator = shift < 0 ? square : square << BigInt(2 * shift);
50
+ const denominator = shift < 0 ? 1n << BigInt(-2 * shift) : 1n;
51
+ let significand = integerSqrt(numerator / denominator);
52
+ const midpoint = 2n * significand + 1n;
53
+ const comparison = 4n * numerator - denominator * midpoint * midpoint;
54
+ if (comparison > 0n || comparison === 0n && (significand & 1n) !== 0n)
55
+ significand += 1n;
56
+ if (significand >= 2n * LEADING) {
57
+ significand >>= 1n;
58
+ spacing += 1;
59
+ }
60
+ // Encoding after rounding avoids a second rounding through a floating scale.
61
+ if (significand < LEADING)
62
+ return decode(significand);
63
+ const encodedExponent = spacing + 1075;
64
+ if (encodedExponent >= 2047)
65
+ return null;
66
+ return decode(BigInt(encodedExponent) << 52n | (significand - LEADING));
67
+ }
68
+ //# sourceMappingURL=hypot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypot.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/hypot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Internal kernel; a lower starting precision exposes refinement to tests. */
2
+ export declare function power(base: number, exponent: number, initialPrecision?: number): number | null;
3
+ //# sourceMappingURL=power.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/power.ts"],"names":[],"mappings":"AAgCA,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,SAAM,GAAG,MAAM,GAAG,IAAI,CAuB3F"}
@@ -0,0 +1,83 @@
1
+ /** Exact real power rounded once, following section 20.10.3. */
2
+ import { integerSqrt } from './hypot.js';
3
+ import { ceil, exponentialEndpoint, floor, logarithm, parts, rounded } from './transcendental.js';
4
+ function oddParts(value) {
5
+ let [integer, exponent] = parts(value);
6
+ while ((integer & 1n) === 0n) {
7
+ integer >>= 1n;
8
+ exponent++;
9
+ }
10
+ return [integer, exponent];
11
+ }
12
+ /** Undefined requests intervals; null is an exactly determined overflow. */
13
+ function rationalResult(base, exponent) {
14
+ let [odd, scale] = oddParts(base);
15
+ let [numerator, shift] = oddParts(exponent);
16
+ if (shift >= 0)
17
+ numerator <<= BigInt(shift);
18
+ else
19
+ for (; shift < 0; shift++) {
20
+ if (scale % 2 !== 0)
21
+ return undefined;
22
+ const root = integerSqrt(odd);
23
+ if (root * root !== odd)
24
+ return undefined;
25
+ odd = root;
26
+ scale /= 2;
27
+ }
28
+ if (odd === 1n) {
29
+ const power = BigInt(scale) * numerator * (exponent < 0 ? -1n : 1n);
30
+ if (power > 1023n)
31
+ return null;
32
+ if (power < -1075n)
33
+ return 0;
34
+ return rounded(1n, Number(power));
35
+ }
36
+ // These exact odd powers include every possible dyadic rounding midpoint.
37
+ if (exponent > 0 && numerator <= 53n)
38
+ return rounded(odd ** numerator, scale * Number(numerator));
39
+ return undefined;
40
+ }
41
+ /** Internal kernel; a lower starting precision exposes refinement to tests. */
42
+ export function power(base, exponent, initialPrecision = 160) {
43
+ if (!Number.isFinite(base) || !Number.isFinite(exponent))
44
+ return null;
45
+ if (exponent === 0)
46
+ return 1;
47
+ if (base === 0)
48
+ return exponent > 0 ? 0 : null;
49
+ if (base < 0 && !Number.isInteger(exponent))
50
+ return null;
51
+ const sign = base < 0 && exponent % 2 !== 0 ? -1 : 1;
52
+ const magnitude = Math.abs(base);
53
+ if (magnitude === 1)
54
+ return sign;
55
+ const signed = (value) => value === null ? null : value === 0 ? 0 : sign * value;
56
+ const exact = rationalResult(magnitude, exponent);
57
+ if (exact !== undefined)
58
+ return signed(exact);
59
+ const [multiplier, shift] = parts(exponent);
60
+ for (let precision = Math.max(64, initialPrecision);; precision += 80) {
61
+ let [low, high] = logarithm(magnitude, precision);
62
+ low *= multiplier;
63
+ high *= multiplier;
64
+ if (shift >= 0) {
65
+ low <<= BigInt(shift);
66
+ high <<= BigInt(shift);
67
+ }
68
+ else {
69
+ const divisor = 1n << BigInt(-shift);
70
+ low = floor(low, divisor);
71
+ high = ceil(high, divisor);
72
+ }
73
+ if (exponent < 0)
74
+ [low, high] = [-high, -low];
75
+ const below = exponentialEndpoint(low, precision), above = exponentialEndpoint(high, precision);
76
+ if (below === undefined || above === undefined)
77
+ continue;
78
+ const left = below[0], right = above[1];
79
+ if (Object.is(left, right))
80
+ return signed(left);
81
+ }
82
+ }
83
+ //# sourceMappingURL=power.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"power.js","sourceRoot":"","sources":["../../../../src/core/stdlib/maths/power.ts"],"names":[],"mappings":"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"}