@elaraai/east 1.0.65 → 1.0.67

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.
@@ -698,6 +698,9 @@ export declare const East: {
698
698
  ones(length: Expr<typeof import("../types.js").IntegerType> | bigint): import("./vector.js").VectorExpr<typeof import("../types.js").FloatType>;
699
699
  fill<V extends unknown>(length: Expr<typeof import("../types.js").IntegerType> | bigint, value: V): import("./vector.js").VectorExpr<import("./types.js").TypeOf<V>>;
700
700
  fromArray<V extends readonly unknown[] | Expr<import("../types.js").ArrayType<import("../types.js").EastType>>>(arr: V): import("./vector.js").VectorExpr<import("./types.js").TypeOf<V> extends import("../types.js").ArrayType<infer U> ? U : import("../types.js").EastType>;
701
+ sparseAxpy<V extends import("./types.js").SubtypeExprOrValue<import("../types.js").VectorType<import("../types.js").EastType>>>(ixA: import("./types.js").SubtypeExprOrValue<import("../types.js").VectorType<import("../types.js").IntegerType>>, vA: V, ixB: import("./types.js").SubtypeExprOrValue<import("../types.js").VectorType<import("../types.js").IntegerType>>, vB: NoInfer<V>, alpha: import("./types.js").TypeOf<V> extends import("../types.js").VectorType<infer E> ? import("./types.js").SubtypeExprOrValue<E> : never): import("./types.js").ExprType<import("./types.js").TypeOf<V> extends import("../types.js").VectorType<infer E> ? import("./libs/vector.js").SparsePair<E> : never>;
702
+ sparseFromPairs<V extends import("./types.js").SubtypeExprOrValue<import("../types.js").VectorType<import("../types.js").EastType>>>(ix: import("./types.js").SubtypeExprOrValue<import("../types.js").VectorType<import("../types.js").IntegerType>>, v: V): import("./types.js").ExprType<import("./types.js").TypeOf<V> extends import("../types.js").VectorType<infer E> ? import("./libs/vector.js").SparsePair<E> : never>;
703
+ sparseFilterGt<V extends import("./types.js").SubtypeExprOrValue<import("../types.js").VectorType<import("../types.js").EastType>>>(ix: import("./types.js").SubtypeExprOrValue<import("../types.js").VectorType<import("../types.js").IntegerType>>, v: V, threshold: import("./types.js").TypeOf<V> extends import("../types.js").VectorType<infer E> ? import("./types.js").SubtypeExprOrValue<E> : never): import("./types.js").ExprType<import("./types.js").TypeOf<V> extends import("../types.js").VectorType<infer E> ? import("./libs/vector.js").SparsePair<E> : never>;
701
704
  };
702
705
  /**
703
706
  * Standard library functions for Matrix operations.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/expr/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/expr/index.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,66 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
- import { FloatType, IntegerType, type EastType, ArrayType } from "../../types.js";
5
+ import { VectorType, FloatType, IntegerType, StructType, type EastType, ArrayType } from "../../types.js";
6
6
  import { Expr } from "../expr.js";
7
- import type { SubtypeExprOrValue, TypeOf } from "../types.js";
7
+ import type { ExprType, SubtypeExprOrValue, TypeOf } from "../types.js";
8
8
  import type { VectorExpr } from "../vector.js";
9
+ /** A sparse numeric accumulator: strictly ascending indices paired with values. */
10
+ export type SparsePair<E> = StructType<{
11
+ ix: VectorType<IntegerType>;
12
+ v: VectorType<E>;
13
+ }>;
9
14
  declare const _default: {
10
15
  zeros(length: Expr<typeof IntegerType> | bigint): VectorExpr<typeof FloatType>;
11
16
  ones(length: Expr<typeof IntegerType> | bigint): VectorExpr<typeof FloatType>;
12
17
  fill<V extends unknown>(length: Expr<typeof IntegerType> | bigint, value: V): VectorExpr<TypeOf<V>>;
13
18
  fromArray<V extends readonly unknown[] | Expr<ArrayType<EastType>>>(arr: V): VectorExpr<TypeOf<V> extends ArrayType<infer U> ? U : EastType>;
19
+ /**
20
+ * Combines two sparse accumulators over the union of their strictly
21
+ * ascending index vectors: `vA + alpha * vB`, as a single two-pointer
22
+ * merge. Merge, scaled deposit and single-key accumulate all fall out of
23
+ * one call (`alpha` of one, a scale factor, or a one-element right-hand
24
+ * side). Entries absent from a side are structurally absent, not explicit
25
+ * zeros: an A-only entry passes through unscaled, a B-only entry
26
+ * contributes `alpha * vB` even when `alpha` is NaN or infinite.
27
+ *
28
+ * @param ixA - The left accumulator's strictly ascending indices
29
+ * @param vA - The left accumulator's values (same length as ixA)
30
+ * @param ixB - The right accumulator's strictly ascending indices
31
+ * @param vB - The right accumulator's values (same length as ixB)
32
+ * @param alpha - The scalar factor applied to vB
33
+ * @returns A struct of the merged `ix` and `v` vectors
34
+ *
35
+ * @throws East runtime error if an index vector is not strictly ascending, or index and value lengths differ
36
+ */
37
+ sparseAxpy<V extends SubtypeExprOrValue<VectorType<EastType>>>(ixA: SubtypeExprOrValue<VectorType<IntegerType>>, vA: V, ixB: SubtypeExprOrValue<VectorType<IntegerType>>, vB: NoInfer<V>, alpha: TypeOf<V> extends VectorType<infer E> ? SubtypeExprOrValue<E> : never): ExprType<TypeOf<V> extends VectorType<infer E> ? SparsePair<E> : never>;
38
+ /**
39
+ * Builds the canonical sparse accumulator from unsorted `(index, value)`
40
+ * pairs: indices sort ascending and duplicate indices sum, stably, in
41
+ * input order — so the float result is deterministic for a given input
42
+ * order.
43
+ *
44
+ * @param ix - The indices, in any order, possibly with duplicates
45
+ * @param v - The values (same length as ix)
46
+ * @returns A struct of the canonical strictly ascending `ix` and summed `v`
47
+ *
48
+ * @throws East runtime error if the index and value lengths differ
49
+ */
50
+ sparseFromPairs<V extends SubtypeExprOrValue<VectorType<EastType>>>(ix: SubtypeExprOrValue<VectorType<IntegerType>>, v: V): ExprType<TypeOf<V> extends VectorType<infer E> ? SparsePair<E> : never>;
51
+ /**
52
+ * Compacts a sparse accumulator by keeping only the entries whose value
53
+ * is strictly greater than the threshold under East's total order —
54
+ * shedding entries that have decayed below a noise floor, so later
55
+ * operations on the accumulator stay proportional to its live entries.
56
+ *
57
+ * @param ix - The accumulator's strictly ascending indices
58
+ * @param v - The accumulator's values (same length as ix)
59
+ * @param threshold - The exclusive lower bound a value must exceed to survive
60
+ * @returns A struct of the surviving `ix` and `v` entries, in order
61
+ *
62
+ * @throws East runtime error if the index vector is not strictly ascending, or index and value lengths differ
63
+ */
64
+ sparseFilterGt<V extends SubtypeExprOrValue<VectorType<EastType>>>(ix: SubtypeExprOrValue<VectorType<IntegerType>>, v: V, threshold: TypeOf<V> extends VectorType<infer E> ? SubtypeExprOrValue<E> : never): ExprType<TypeOf<V> extends VectorType<infer E> ? SparsePair<E> : never>;
14
65
  };
15
66
  export default _default;
16
67
  //# sourceMappingURL=vector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../../src/expr/libs/vector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAc,SAAS,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAa,IAAI,EAAc,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;;kBAG/B,IAAI,CAAC,OAAO,WAAW,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC;iBAQjE,IAAI,CAAC,OAAO,WAAW,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC;SAQxE,CAAC,0BAA+C,IAAI,CAAC,OAAO,WAAW,CAAC,GAAG,MAAM,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;cAU9G,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;;AA3B9I,wBAuCE"}
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../../src/expr/libs/vector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAC;AACrH,OAAO,EAAa,IAAI,EAAc,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,mFAAmF;AACnF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC;IAAE,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAAC;;kBAa1E,IAAI,CAAC,OAAO,WAAW,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC;iBAQjE,IAAI,CAAC,OAAO,WAAW,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC;SAQxE,CAAC,0BAA+C,IAAI,CAAC,OAAO,WAAW,CAAC,GAAG,MAAM,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;cAU9G,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAa5I;;;;;;;;;;;;;;;;;OAiBG;eACQ,CAAC,SAAS,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OACtD,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,MAC5C,CAAC,OACA,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,MAC5C,OAAO,CAAC,CAAC,CAAC,SACP,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,GAC3E,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAiB1E;;;;;;;;;;;OAWG;oBACa,CAAC,SAAS,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAC5D,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAC5C,CAAC,GACH,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAc1E;;;;;;;;;;;;OAYG;mBACY,CAAC,SAAS,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAC3D,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAC5C,CAAC,aACO,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,GAC/E,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;;AA/H5E,wBA6IE"}
@@ -2,8 +2,17 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
- import { VectorType, FloatType, IntegerType, ArrayType } from "../../types.js";
5
+ import { VectorType, FloatType, IntegerType, StructType, ArrayType, printType } from "../../types.js";
6
6
  import { AstSymbol, Expr, TypeSymbol } from "../expr.js";
7
+ /** The Float/Integer element type of a lifted values vector. */
8
+ function sparseElemType(fnName, ast) {
9
+ const t = ast.type;
10
+ const elem = t.element;
11
+ if (elem.type !== "Float" && elem.type !== "Integer") {
12
+ throw new Error(`Vector.${fnName} requires a Float or Integer element type, got ${printType(elem)}`);
13
+ }
14
+ return elem;
15
+ }
7
16
  export default {
8
17
  zeros(length) {
9
18
  const len = Expr.from(length, IntegerType);
@@ -40,5 +49,91 @@ export default {
40
49
  type_parameters: [elemType], arguments: [arrAst], loc_id: arrAst.loc_id,
41
50
  });
42
51
  },
52
+ /**
53
+ * Combines two sparse accumulators over the union of their strictly
54
+ * ascending index vectors: `vA + alpha * vB`, as a single two-pointer
55
+ * merge. Merge, scaled deposit and single-key accumulate all fall out of
56
+ * one call (`alpha` of one, a scale factor, or a one-element right-hand
57
+ * side). Entries absent from a side are structurally absent, not explicit
58
+ * zeros: an A-only entry passes through unscaled, a B-only entry
59
+ * contributes `alpha * vB` even when `alpha` is NaN or infinite.
60
+ *
61
+ * @param ixA - The left accumulator's strictly ascending indices
62
+ * @param vA - The left accumulator's values (same length as ixA)
63
+ * @param ixB - The right accumulator's strictly ascending indices
64
+ * @param vB - The right accumulator's values (same length as ixB)
65
+ * @param alpha - The scalar factor applied to vB
66
+ * @returns A struct of the merged `ix` and `v` vectors
67
+ *
68
+ * @throws East runtime error if an index vector is not strictly ascending, or index and value lengths differ
69
+ */
70
+ sparseAxpy(ixA, vA, ixB, vB, alpha) {
71
+ const vAAst = Expr.ast(Expr.from(vA));
72
+ const elem = sparseElemType("sparseAxpy", vAAst);
73
+ const ixAAst = Expr.ast(Expr.from(ixA, VectorType(IntegerType)));
74
+ const ixBAst = Expr.ast(Expr.from(ixB, VectorType(IntegerType)));
75
+ const vBAst = Expr.ast(Expr.from(vB, VectorType(elem)));
76
+ const alphaAst = Expr.ast(Expr.from(alpha, elem));
77
+ return Expr.fromAst({
78
+ ast_type: "Builtin",
79
+ type: StructType({ ix: VectorType(IntegerType), v: VectorType(elem) }),
80
+ builtin: "SparseAxpy",
81
+ type_parameters: [elem],
82
+ arguments: [ixAAst, vAAst, ixBAst, vBAst, alphaAst],
83
+ loc_id: vAAst.loc_id,
84
+ });
85
+ },
86
+ /**
87
+ * Builds the canonical sparse accumulator from unsorted `(index, value)`
88
+ * pairs: indices sort ascending and duplicate indices sum, stably, in
89
+ * input order — so the float result is deterministic for a given input
90
+ * order.
91
+ *
92
+ * @param ix - The indices, in any order, possibly with duplicates
93
+ * @param v - The values (same length as ix)
94
+ * @returns A struct of the canonical strictly ascending `ix` and summed `v`
95
+ *
96
+ * @throws East runtime error if the index and value lengths differ
97
+ */
98
+ sparseFromPairs(ix, v) {
99
+ const vAst = Expr.ast(Expr.from(v));
100
+ const elem = sparseElemType("sparseFromPairs", vAst);
101
+ const ixAst = Expr.ast(Expr.from(ix, VectorType(IntegerType)));
102
+ return Expr.fromAst({
103
+ ast_type: "Builtin",
104
+ type: StructType({ ix: VectorType(IntegerType), v: VectorType(elem) }),
105
+ builtin: "SparseFromPairs",
106
+ type_parameters: [elem],
107
+ arguments: [ixAst, vAst],
108
+ loc_id: vAst.loc_id,
109
+ });
110
+ },
111
+ /**
112
+ * Compacts a sparse accumulator by keeping only the entries whose value
113
+ * is strictly greater than the threshold under East's total order —
114
+ * shedding entries that have decayed below a noise floor, so later
115
+ * operations on the accumulator stay proportional to its live entries.
116
+ *
117
+ * @param ix - The accumulator's strictly ascending indices
118
+ * @param v - The accumulator's values (same length as ix)
119
+ * @param threshold - The exclusive lower bound a value must exceed to survive
120
+ * @returns A struct of the surviving `ix` and `v` entries, in order
121
+ *
122
+ * @throws East runtime error if the index vector is not strictly ascending, or index and value lengths differ
123
+ */
124
+ sparseFilterGt(ix, v, threshold) {
125
+ const vAst = Expr.ast(Expr.from(v));
126
+ const elem = sparseElemType("sparseFilterGt", vAst);
127
+ const ixAst = Expr.ast(Expr.from(ix, VectorType(IntegerType)));
128
+ const thresholdAst = Expr.ast(Expr.from(threshold, elem));
129
+ return Expr.fromAst({
130
+ ast_type: "Builtin",
131
+ type: StructType({ ix: VectorType(IntegerType), v: VectorType(elem) }),
132
+ builtin: "SparseFilterGt",
133
+ type_parameters: [elem],
134
+ arguments: [ixAst, vAst, thresholdAst],
135
+ loc_id: vAst.loc_id,
136
+ });
137
+ },
43
138
  };
44
139
  //# sourceMappingURL=vector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vector.js","sourceRoot":"","sources":["../../../../src/expr/libs/vector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAiB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIzD,eAAe;IACb,KAAK,CAAC,MAAyC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa;YACxE,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM;SACzF,CAAQ,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,MAAyC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,YAAY;YACvE,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM;SACzF,CAAQ,CAAC;IACZ,CAAC;IAED,IAAI,CAAyC,MAAyC,EAAE,KAAQ;QAC9F,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAY,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY;YACtE,eAAe,EAAE,CAAC,QAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM;SACpH,CAAQ,CAAC;IACZ,CAAC;IAED,SAAS,CAA2D,GAAM;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAU,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAc,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAI,MAAM,CAAC,IAAkB,CAAC,KAAK,CAAC;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,0EAA0E,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,iBAAiB;YAC3E,eAAe,EAAE,CAAC,QAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM;SACpF,CAAQ,CAAC;IACZ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"vector.js","sourceRoot":"","sources":["../../../../src/expr/libs/vector.ts"],"names":[],"mappings":"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"}
@@ -104,5 +104,58 @@ export declare class MatrixExpr<T extends any> extends Expr<MatrixType<T>> {
104
104
  */
105
105
  mapRows<T2>(fn: Expr<FunctionType<[VectorType<T>, IntegerType], VectorType<T2>>>): MatrixExpr<T2>;
106
106
  mapRows<F extends (($: BlockBuilder<NeverType>, row: VectorExpr<T>, idx: ExprType<IntegerType>) => VectorExpr<any>)>(fn: F): MatrixExpr<ReturnType<F> extends VectorExpr<infer U> ? U : never>;
107
+ /** Requires a Float or Integer element type for the arithmetic builtins. */
108
+ private numericElem;
109
+ /**
110
+ * Multiplies every element by a scalar, producing a new matrix.
111
+ *
112
+ * @param alpha - The scalar factor (same type as the elements)
113
+ * @returns A new MatrixExpr with every element scaled by alpha
114
+ */
115
+ scale(alpha: SubtypeExprOrValue<T>): MatrixExpr<T>;
116
+ /**
117
+ * Adds a scaled matrix elementwise: `this + alpha * other`.
118
+ *
119
+ * @param other - The matrix to scale and add (same dimensions and element type)
120
+ * @param alpha - The scalar factor applied to other
121
+ * @returns A new MatrixExpr holding the combined elements
122
+ *
123
+ * @throws East runtime error if the matrix dimensions differ
124
+ */
125
+ addScaled(other: SubtypeExprOrValue<MatrixType<T>>, alpha: SubtypeExprOrValue<T>): MatrixExpr<T>;
126
+ /**
127
+ * Multiplies two matrices elementwise (the Hadamard product).
128
+ *
129
+ * @param other - The matrix to multiply with (same dimensions and element type)
130
+ * @returns A new MatrixExpr holding the elementwise products
131
+ *
132
+ * @throws East runtime error if the matrix dimensions differ
133
+ */
134
+ mulElementwise(other: SubtypeExprOrValue<MatrixType<T>>): MatrixExpr<T>;
135
+ /**
136
+ * Sums each row into a vector of length rows. Each row accumulates in
137
+ * ascending column order, left to right — the same cross-runtime contract
138
+ * as the Vector reductions.
139
+ *
140
+ * @returns A VectorExpr holding one sum per row
141
+ */
142
+ rowSums(): VectorExpr<T>;
143
+ /**
144
+ * Sums each column into a vector of length cols. Each column accumulates
145
+ * in ascending row order.
146
+ *
147
+ * @returns A VectorExpr holding one sum per column
148
+ */
149
+ colSums(): VectorExpr<T>;
150
+ /**
151
+ * Multiplies this matrix by a vector: element r of the result is the dot
152
+ * product of row r with the vector, accumulated in ascending column order.
153
+ *
154
+ * @param vector - The vector to multiply by (length must equal cols)
155
+ * @returns A VectorExpr of length rows
156
+ *
157
+ * @throws East runtime error if the vector length does not equal the column count
158
+ */
159
+ vecMul(vector: SubtypeExprOrValue<VectorType<T>>): VectorExpr<T>;
107
160
  }
108
161
  //# sourceMappingURL=matrix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../src/expr/matrix.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAiB,KAAK,SAAS,EAAqC,MAAM,aAAa,CAAC;AAE7J,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAa,IAAI,EAA6B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;GAOG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,YAAY;gBAAZ,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM;IAIjE;;;;OAIG;IACH,IAAI,IAAI,WAAW;IAWnB;;;;OAIG;IACH,IAAI,IAAI,WAAW;IAWnB;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAa5F;;;;;;;;;OASG;IACH,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAc5H;;;;;;;OAOG;IACH,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAY3D;;;;;;;OAOG;IACH,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAY3D;;;;OAIG;IACH,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC;IAW1B;;;;OAIG;IACH,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;IAWzB;;;;OAIG;IACH,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAWlC;;;;OAIG;IACH,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAWlC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;IACjG,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAgC/L"}
1
+ {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../src/expr/matrix.ts"],"names":[],"mappings":"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"}
@@ -220,5 +220,124 @@ export class MatrixExpr extends Expr {
220
220
  return this.mapRows(functionExpr);
221
221
  }
222
222
  }
223
+ /** Requires a Float or Integer element type for the arithmetic builtins. */
224
+ numericElem(method) {
225
+ const t = this.element_type;
226
+ if (t.type !== "Float" && t.type !== "Integer") {
227
+ throw new Error(`Matrix.${method} requires a Float or Integer element type, got ${printType(t)}`);
228
+ }
229
+ return t;
230
+ }
231
+ /**
232
+ * Multiplies every element by a scalar, producing a new matrix.
233
+ *
234
+ * @param alpha - The scalar factor (same type as the elements)
235
+ * @returns A new MatrixExpr with every element scaled by alpha
236
+ */
237
+ scale(alpha) {
238
+ const elem = this.numericElem("scale");
239
+ return this[FactorySymbol]({
240
+ ast_type: "Builtin",
241
+ type: MatrixType(elem),
242
+ loc_id: get_location_id(),
243
+ builtin: "MatrixScale",
244
+ type_parameters: [elem],
245
+ arguments: [this[AstSymbol], valueOrExprToAstTyped(alpha, elem)],
246
+ });
247
+ }
248
+ /**
249
+ * Adds a scaled matrix elementwise: `this + alpha * other`.
250
+ *
251
+ * @param other - The matrix to scale and add (same dimensions and element type)
252
+ * @param alpha - The scalar factor applied to other
253
+ * @returns A new MatrixExpr holding the combined elements
254
+ *
255
+ * @throws East runtime error if the matrix dimensions differ
256
+ */
257
+ addScaled(other, alpha) {
258
+ const elem = this.numericElem("addScaled");
259
+ return this[FactorySymbol]({
260
+ ast_type: "Builtin",
261
+ type: MatrixType(elem),
262
+ loc_id: get_location_id(),
263
+ builtin: "MatrixAddScaled",
264
+ type_parameters: [elem],
265
+ arguments: [this[AstSymbol], valueOrExprToAstTyped(other, MatrixType(elem)), valueOrExprToAstTyped(alpha, elem)],
266
+ });
267
+ }
268
+ /**
269
+ * Multiplies two matrices elementwise (the Hadamard product).
270
+ *
271
+ * @param other - The matrix to multiply with (same dimensions and element type)
272
+ * @returns A new MatrixExpr holding the elementwise products
273
+ *
274
+ * @throws East runtime error if the matrix dimensions differ
275
+ */
276
+ mulElementwise(other) {
277
+ const elem = this.numericElem("mulElementwise");
278
+ return this[FactorySymbol]({
279
+ ast_type: "Builtin",
280
+ type: MatrixType(elem),
281
+ loc_id: get_location_id(),
282
+ builtin: "MatrixMulElementwise",
283
+ type_parameters: [elem],
284
+ arguments: [this[AstSymbol], valueOrExprToAstTyped(other, MatrixType(elem))],
285
+ });
286
+ }
287
+ /**
288
+ * Sums each row into a vector of length rows. Each row accumulates in
289
+ * ascending column order, left to right — the same cross-runtime contract
290
+ * as the Vector reductions.
291
+ *
292
+ * @returns A VectorExpr holding one sum per row
293
+ */
294
+ rowSums() {
295
+ const elem = this.numericElem("rowSums");
296
+ return this[FactorySymbol]({
297
+ ast_type: "Builtin",
298
+ type: VectorType(elem),
299
+ loc_id: get_location_id(),
300
+ builtin: "MatrixRowSums",
301
+ type_parameters: [elem],
302
+ arguments: [this[AstSymbol]],
303
+ });
304
+ }
305
+ /**
306
+ * Sums each column into a vector of length cols. Each column accumulates
307
+ * in ascending row order.
308
+ *
309
+ * @returns A VectorExpr holding one sum per column
310
+ */
311
+ colSums() {
312
+ const elem = this.numericElem("colSums");
313
+ return this[FactorySymbol]({
314
+ ast_type: "Builtin",
315
+ type: VectorType(elem),
316
+ loc_id: get_location_id(),
317
+ builtin: "MatrixColSums",
318
+ type_parameters: [elem],
319
+ arguments: [this[AstSymbol]],
320
+ });
321
+ }
322
+ /**
323
+ * Multiplies this matrix by a vector: element r of the result is the dot
324
+ * product of row r with the vector, accumulated in ascending column order.
325
+ *
326
+ * @param vector - The vector to multiply by (length must equal cols)
327
+ * @returns A VectorExpr of length rows
328
+ *
329
+ * @throws East runtime error if the vector length does not equal the column count
330
+ */
331
+ vecMul(vector) {
332
+ const elem = this.numericElem("vecMul");
333
+ return this[FactorySymbol]({
334
+ ast_type: "Builtin",
335
+ type: VectorType(elem),
336
+ loc_id: get_location_id(),
337
+ builtin: "MatrixVecMul",
338
+ type_parameters: [elem],
339
+ arguments: [this[AstSymbol], valueOrExprToAstTyped(vector, VectorType(elem))],
340
+ });
341
+ }
223
342
  }
224
343
  //# sourceMappingURL=matrix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../src/expr/matrix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../src/expr/matrix.ts"],"names":[],"mappings":"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"}