@justinelliottcobb/amari-wasm 0.8.0 → 0.8.2

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/amari_wasm.d.ts CHANGED
@@ -4,22 +4,6 @@
4
4
  * Initialize the WASM module
5
5
  */
6
6
  export function init(): void;
7
- /**
8
- * Automatic differentiation utilities
9
- */
10
- export class AutoDiff {
11
- private constructor();
12
- free(): void;
13
- [Symbol.dispose](): void;
14
- /**
15
- * Compute numerical derivative using finite differences (fallback implementation)
16
- */
17
- static numericalDerivative(x: number, f: Function, h: number): number;
18
- /**
19
- * Create a dual number and evaluate a polynomial
20
- */
21
- static evaluatePolynomial(x: number, coefficients: Float64Array): WasmDualNumber;
22
- }
23
7
  /**
24
8
  * Batch operations for performance
25
9
  */
@@ -37,59 +21,6 @@ export class BatchOperations {
37
21
  */
38
22
  static batchAdd(a_batch: Float64Array, b_batch: Float64Array): Float64Array;
39
23
  }
40
- /**
41
- * Fusion utilities for batch operations
42
- */
43
- export class FusionBatch {
44
- private constructor();
45
- free(): void;
46
- [Symbol.dispose](): void;
47
- /**
48
- * Batch tropical attention across multiple queries
49
- */
50
- static batchTropicalAttention(queries: Float64Array, keys: Float64Array, values: Float64Array, query_dim: number): Float64Array;
51
- /**
52
- * Compute fusion similarity between two TDC objects
53
- */
54
- static fusionSimilarity(tdc1: WasmTropicalDualClifford, tdc2: WasmTropicalDualClifford): number;
55
- /**
56
- * Optimize TDC parameters using gradient information
57
- */
58
- static gradientStep(tdc: WasmTropicalDualClifford, learning_rate: number): WasmTropicalDualClifford;
59
- }
60
- /**
61
- * Information geometry utilities
62
- */
63
- export class InfoGeomUtils {
64
- private constructor();
65
- free(): void;
66
- [Symbol.dispose](): void;
67
- /**
68
- * Normalize array to probability distribution
69
- */
70
- static normalize(values: Float64Array): Float64Array;
71
- /**
72
- * Convert log probabilities to probabilities
73
- */
74
- static softmax(logits: Float64Array): Float64Array;
75
- /**
76
- * Compute entropy of a probability distribution
77
- */
78
- static entropy(p: Float64Array): number;
79
- /**
80
- * Compute cross-entropy between two distributions
81
- */
82
- static crossEntropy(p: Float64Array, q: Float64Array): number;
83
- /**
84
- * Compute mutual information between two discrete distributions
85
- */
86
- static mutualInformation(joint: Float64Array, marginal_x: Float64Array, marginal_y: Float64Array, dim_x: number): number;
87
- /**
88
- * Generate points on the probability simplex for testing
89
- * Note: Uses a simple deterministic sequence for reproducibility in WASM
90
- */
91
- static randomSimplex(dimension: number): Float64Array;
92
- }
93
24
  /**
94
25
  * High-performance WASM operations with memory pooling
95
26
  */
@@ -114,226 +45,6 @@ export class PerformanceOperations {
114
45
  */
115
46
  static batchNormalize(vectors: Float64Array, vector_size: number): Float64Array;
116
47
  }
117
- /**
118
- * Batch operations for tropical numbers
119
- */
120
- export class TropicalBatch {
121
- private constructor();
122
- free(): void;
123
- [Symbol.dispose](): void;
124
- /**
125
- * Batch tropical addition (max operation)
126
- */
127
- static batchTropicalAdd(values: Float64Array): number;
128
- /**
129
- * Batch tropical multiplication (addition)
130
- */
131
- static batchTropicalMul(values: Float64Array): number;
132
- /**
133
- * Convert array of log probabilities to tropical numbers and find maximum
134
- */
135
- static maxLogProb(log_probs: Float64Array): number;
136
- /**
137
- * Viterbi algorithm helper: find best path through trellis
138
- */
139
- static viterbiStep(prev_scores: Float64Array, transition_scores: Float64Array, emission_scores: Float64Array, num_states: number): Float64Array;
140
- }
141
- /**
142
- * WASM wrapper for AlphaConnection
143
- */
144
- export class WasmAlphaConnection {
145
- free(): void;
146
- [Symbol.dispose](): void;
147
- /**
148
- * Create a new α-connection
149
- */
150
- constructor(alpha: number);
151
- /**
152
- * Get the α parameter
153
- */
154
- getAlpha(): number;
155
- /**
156
- * Check if this is the exponential connection (α = 1)
157
- */
158
- isExponential(): boolean;
159
- /**
160
- * Check if this is the mixture connection (α = -1)
161
- */
162
- isMixture(): boolean;
163
- /**
164
- * Check if this is the Levi-Civita connection (α = 0)
165
- */
166
- isLeviCivita(): boolean;
167
- }
168
- /**
169
- * WASM wrapper for single-variable dual numbers
170
- */
171
- export class WasmDualNumber {
172
- free(): void;
173
- [Symbol.dispose](): void;
174
- /**
175
- * Create a new dual number with given real and dual parts
176
- */
177
- constructor(real: number, dual: number);
178
- /**
179
- * Create a variable (derivative = 1)
180
- */
181
- static variable(value: number): WasmDualNumber;
182
- /**
183
- * Create a constant (derivative = 0)
184
- */
185
- static constant(value: number): WasmDualNumber;
186
- /**
187
- * Get the real part (function value)
188
- */
189
- getReal(): number;
190
- /**
191
- * Get the dual part (derivative)
192
- */
193
- getDual(): number;
194
- /**
195
- * Addition
196
- */
197
- add(other: WasmDualNumber): WasmDualNumber;
198
- /**
199
- * Subtraction
200
- */
201
- sub(other: WasmDualNumber): WasmDualNumber;
202
- /**
203
- * Multiplication
204
- */
205
- mul(other: WasmDualNumber): WasmDualNumber;
206
- /**
207
- * Division
208
- */
209
- div(other: WasmDualNumber): WasmDualNumber;
210
- /**
211
- * Negation
212
- */
213
- neg(): WasmDualNumber;
214
- /**
215
- * Power function
216
- */
217
- pow(exponent: number): WasmDualNumber;
218
- /**
219
- * Exponential function
220
- */
221
- exp(): WasmDualNumber;
222
- /**
223
- * Natural logarithm
224
- */
225
- ln(): WasmDualNumber;
226
- /**
227
- * Sine function
228
- */
229
- sin(): WasmDualNumber;
230
- /**
231
- * Cosine function
232
- */
233
- cos(): WasmDualNumber;
234
- /**
235
- * Square root
236
- */
237
- sqrt(): WasmDualNumber;
238
- }
239
- /**
240
- * WASM wrapper for DuallyFlatManifold
241
- */
242
- export class WasmDuallyFlatManifold {
243
- free(): void;
244
- [Symbol.dispose](): void;
245
- /**
246
- * Create a new dually flat manifold
247
- */
248
- constructor(dimension: number, alpha: number);
249
- /**
250
- * Compute Fisher information metric at a point
251
- */
252
- fisherMetricAt(point: Float64Array): WasmFisherInformationMatrix;
253
- /**
254
- * Compute Bregman divergence (KL divergence for probability distributions)
255
- */
256
- bregmanDivergence(p: Float64Array, q: Float64Array): number;
257
- /**
258
- * Compute KL divergence between two probability distributions
259
- */
260
- klDivergence(p: Float64Array, q: Float64Array): number;
261
- /**
262
- * Compute JS divergence (symmetric version of KL divergence)
263
- */
264
- jsDivergence(p: Float64Array, q: Float64Array): number;
265
- /**
266
- * Compute Wasserstein-1 distance (Earth Mover's Distance)
267
- */
268
- wassersteinDistance(p: Float64Array, q: Float64Array): number;
269
- }
270
- /**
271
- * WASM wrapper for FisherInformationMatrix
272
- */
273
- export class WasmFisherInformationMatrix {
274
- private constructor();
275
- free(): void;
276
- [Symbol.dispose](): void;
277
- /**
278
- * Get eigenvalues of the Fisher matrix
279
- */
280
- getEigenvalues(): Float64Array;
281
- /**
282
- * Check if the matrix is positive definite
283
- */
284
- isPositiveDefinite(): boolean;
285
- /**
286
- * Compute condition number (ratio of largest to smallest eigenvalue)
287
- */
288
- conditionNumber(): number;
289
- }
290
- /**
291
- * WASM wrapper for multi-variable dual numbers
292
- */
293
- export class WasmMultiDualNumber {
294
- free(): void;
295
- [Symbol.dispose](): void;
296
- /**
297
- * Create a new multi-dual number
298
- */
299
- constructor(real: number, duals: Float64Array);
300
- /**
301
- * Create a variable with derivative 1 at the specified index
302
- */
303
- static variable(value: number, num_vars: number, var_index: number): WasmMultiDualNumber;
304
- /**
305
- * Create a constant (all derivatives are zero)
306
- */
307
- static constant(value: number, num_vars: number): WasmMultiDualNumber;
308
- /**
309
- * Get the real part (function value)
310
- */
311
- getReal(): number;
312
- /**
313
- * Get the gradient (all partial derivatives)
314
- */
315
- getGradient(): Float64Array;
316
- /**
317
- * Get a specific partial derivative
318
- */
319
- getPartial(index: number): number;
320
- /**
321
- * Get number of variables
322
- */
323
- getNumVars(): number;
324
- /**
325
- * Addition
326
- */
327
- add(other: WasmMultiDualNumber): WasmMultiDualNumber;
328
- /**
329
- * Multiplication
330
- */
331
- mul(other: WasmMultiDualNumber): WasmMultiDualNumber;
332
- /**
333
- * Square root
334
- */
335
- sqrt(): WasmMultiDualNumber;
336
- }
337
48
  /**
338
49
  * WASM wrapper for Multivector with TypedArray support
339
50
  */
@@ -449,225 +160,11 @@ export class WasmRotor {
449
160
  */
450
161
  inverse(): WasmRotor;
451
162
  }
452
- /**
453
- * WASM wrapper for TropicalDualClifford fusion system
454
- */
455
- export class WasmTropicalDualClifford {
456
- free(): void;
457
- [Symbol.dispose](): void;
458
- /**
459
- * Create a zero TDC object
460
- */
461
- constructor();
462
- /**
463
- * Create from logits (array of log-probabilities)
464
- */
465
- static fromLogits(logits: Float64Array): WasmTropicalDualClifford;
466
- /**
467
- * Create random TDC for testing
468
- */
469
- static random(): WasmTropicalDualClifford;
470
- /**
471
- * Create random TDC with specific scale
472
- */
473
- static randomWithScale(scale: number): WasmTropicalDualClifford;
474
- /**
475
- * Check if TDC is zero
476
- */
477
- isZero(): boolean;
478
- /**
479
- * Extract tropical features as array
480
- */
481
- getTropicalFeatures(): Float64Array;
482
- /**
483
- * Extract dual features as array of real parts
484
- */
485
- getDualReals(): Float64Array;
486
- /**
487
- * Extract dual features as array of dual parts (derivatives)
488
- */
489
- getDualDerivatives(): Float64Array;
490
- /**
491
- * Get Clifford coefficients
492
- */
493
- getCliffordCoefficients(): Float64Array;
494
- /**
495
- * Add two TDC objects
496
- */
497
- add(other: WasmTropicalDualClifford): WasmTropicalDualClifford;
498
- /**
499
- * Scale TDC object
500
- */
501
- scale(factor: number): WasmTropicalDualClifford;
502
- /**
503
- * Compute fusion norm (combined measure across all systems)
504
- */
505
- fusionNorm(): number;
506
- /**
507
- * Perform tropical attention operation
508
- */
509
- tropicalAttention(keys: Float64Array, values: Float64Array): Float64Array;
510
- /**
511
- * Extract geometric features using Clifford operations
512
- */
513
- extractGeometricFeatures(): Float64Array;
514
- }
515
- /**
516
- * WASM wrapper for TropicalNumber
517
- */
518
- export class WasmTropicalNumber {
519
- free(): void;
520
- [Symbol.dispose](): void;
521
- /**
522
- * Create a new tropical number from a regular number
523
- */
524
- constructor(value: number);
525
- /**
526
- * Create tropical zero (negative infinity)
527
- */
528
- static zero(): WasmTropicalNumber;
529
- /**
530
- * Create tropical one (regular zero)
531
- */
532
- static one(): WasmTropicalNumber;
533
- /**
534
- * Create from log probability
535
- */
536
- static fromLogProb(log_p: number): WasmTropicalNumber;
537
- /**
538
- * Get the underlying value
539
- */
540
- getValue(): number;
541
- /**
542
- * Convert to probability (via exp)
543
- */
544
- toProb(): number;
545
- /**
546
- * Check if this is tropical zero (negative infinity)
547
- */
548
- isZero(): boolean;
549
- /**
550
- * Check if this is tropical one (zero)
551
- */
552
- isOne(): boolean;
553
- /**
554
- * Check if this is infinite
555
- */
556
- isInfinity(): boolean;
557
- /**
558
- * Tropical addition (max operation)
559
- */
560
- tropicalAdd(other: WasmTropicalNumber): WasmTropicalNumber;
561
- /**
562
- * Tropical multiplication (addition)
563
- */
564
- tropicalMul(other: WasmTropicalNumber): WasmTropicalNumber;
565
- /**
566
- * Tropical power (scalar multiplication)
567
- */
568
- tropicalPow(n: number): WasmTropicalNumber;
569
- /**
570
- * Standard addition (for convenience)
571
- */
572
- add(other: WasmTropicalNumber): WasmTropicalNumber;
573
- /**
574
- * Standard multiplication (for convenience)
575
- */
576
- mul(other: WasmTropicalNumber): WasmTropicalNumber;
577
- /**
578
- * Negation
579
- */
580
- neg(): WasmTropicalNumber;
581
- }
582
163
 
583
164
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
584
165
 
585
166
  export interface InitOutput {
586
167
  readonly memory: WebAssembly.Memory;
587
- readonly wasmdualnumber_new: (a: number, b: number) => number;
588
- readonly wasmdualnumber_variable: (a: number) => number;
589
- readonly wasmdualnumber_constant: (a: number) => number;
590
- readonly wasmdualnumber_getDual: (a: number) => number;
591
- readonly wasmdualnumber_add: (a: number, b: number) => number;
592
- readonly wasmdualnumber_sub: (a: number, b: number) => number;
593
- readonly wasmdualnumber_mul: (a: number, b: number) => number;
594
- readonly wasmdualnumber_div: (a: number, b: number) => [number, number, number];
595
- readonly wasmdualnumber_neg: (a: number) => number;
596
- readonly wasmdualnumber_pow: (a: number, b: number) => number;
597
- readonly wasmdualnumber_exp: (a: number) => number;
598
- readonly wasmdualnumber_ln: (a: number) => [number, number, number];
599
- readonly wasmdualnumber_sin: (a: number) => number;
600
- readonly wasmdualnumber_cos: (a: number) => number;
601
- readonly wasmdualnumber_sqrt: (a: number) => [number, number, number];
602
- readonly __wbg_wasmmultidualnumber_free: (a: number, b: number) => void;
603
- readonly wasmmultidualnumber_new: (a: number, b: number, c: number) => number;
604
- readonly wasmmultidualnumber_variable: (a: number, b: number, c: number) => number;
605
- readonly wasmmultidualnumber_constant: (a: number, b: number) => number;
606
- readonly wasmmultidualnumber_getGradient: (a: number) => [number, number];
607
- readonly wasmmultidualnumber_getPartial: (a: number, b: number) => [number, number, number];
608
- readonly wasmmultidualnumber_getNumVars: (a: number) => number;
609
- readonly wasmmultidualnumber_add: (a: number, b: number) => [number, number, number];
610
- readonly wasmmultidualnumber_mul: (a: number, b: number) => [number, number, number];
611
- readonly wasmmultidualnumber_sqrt: (a: number) => [number, number, number];
612
- readonly __wbg_autodiff_free: (a: number, b: number) => void;
613
- readonly autodiff_numericalDerivative: (a: number, b: any, c: number) => [number, number, number];
614
- readonly autodiff_evaluatePolynomial: (a: number, b: number, c: number) => number;
615
- readonly __wbg_wasmtropicaldualclifford_free: (a: number, b: number) => void;
616
- readonly wasmtropicaldualclifford_new: () => number;
617
- readonly wasmtropicaldualclifford_fromLogits: (a: number, b: number) => number;
618
- readonly wasmtropicaldualclifford_random: () => number;
619
- readonly wasmtropicaldualclifford_randomWithScale: (a: number) => number;
620
- readonly wasmtropicaldualclifford_isZero: (a: number) => number;
621
- readonly wasmtropicaldualclifford_getTropicalFeatures: (a: number) => [number, number];
622
- readonly wasmtropicaldualclifford_getDualReals: (a: number) => [number, number];
623
- readonly wasmtropicaldualclifford_getDualDerivatives: (a: number) => [number, number];
624
- readonly wasmtropicaldualclifford_getCliffordCoefficients: (a: number) => [number, number];
625
- readonly wasmtropicaldualclifford_add: (a: number, b: number) => number;
626
- readonly wasmtropicaldualclifford_scale: (a: number, b: number) => number;
627
- readonly wasmtropicaldualclifford_fusionNorm: (a: number) => number;
628
- readonly wasmtropicaldualclifford_tropicalAttention: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
629
- readonly wasmtropicaldualclifford_extractGeometricFeatures: (a: number) => [number, number];
630
- readonly fusionbatch_batchTropicalAttention: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
631
- readonly fusionbatch_fusionSimilarity: (a: number, b: number) => number;
632
- readonly fusionbatch_gradientStep: (a: number, b: number) => number;
633
- readonly __wbg_wasmduallyflatmanifold_free: (a: number, b: number) => void;
634
- readonly wasmduallyflatmanifold_new: (a: number, b: number) => number;
635
- readonly wasmduallyflatmanifold_fisherMetricAt: (a: number, b: number, c: number) => number;
636
- readonly wasmduallyflatmanifold_bregmanDivergence: (a: number, b: number, c: number, d: number, e: number) => number;
637
- readonly wasmduallyflatmanifold_klDivergence: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
638
- readonly wasmduallyflatmanifold_jsDivergence: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
639
- readonly wasmduallyflatmanifold_wassersteinDistance: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
640
- readonly __wbg_wasmfisherinformationmatrix_free: (a: number, b: number) => void;
641
- readonly wasmfisherinformationmatrix_getEigenvalues: (a: number) => [number, number];
642
- readonly wasmfisherinformationmatrix_isPositiveDefinite: (a: number) => number;
643
- readonly wasmfisherinformationmatrix_conditionNumber: (a: number) => number;
644
- readonly __wbg_wasmalphaconnection_free: (a: number, b: number) => void;
645
- readonly wasmalphaconnection_new: (a: number) => [number, number, number];
646
- readonly wasmalphaconnection_getAlpha: (a: number) => number;
647
- readonly wasmalphaconnection_isExponential: (a: number) => number;
648
- readonly wasmalphaconnection_isMixture: (a: number) => number;
649
- readonly wasmalphaconnection_isLeviCivita: (a: number) => number;
650
- readonly infogeomutils_normalize: (a: number, b: number) => [number, number, number, number];
651
- readonly infogeomutils_softmax: (a: number, b: number) => [number, number];
652
- readonly infogeomutils_entropy: (a: number, b: number) => [number, number, number];
653
- readonly infogeomutils_crossEntropy: (a: number, b: number, c: number, d: number) => [number, number, number];
654
- readonly infogeomutils_mutualInformation: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number];
655
- readonly infogeomutils_randomSimplex: (a: number) => [number, number];
656
- readonly wasmtropicalnumber_zero: () => number;
657
- readonly wasmtropicalnumber_one: () => number;
658
- readonly wasmtropicalnumber_fromLogProb: (a: number) => number;
659
- readonly wasmtropicalnumber_toProb: (a: number) => number;
660
- readonly wasmtropicalnumber_isZero: (a: number) => number;
661
- readonly wasmtropicalnumber_isOne: (a: number) => number;
662
- readonly wasmtropicalnumber_isInfinity: (a: number) => number;
663
- readonly wasmtropicalnumber_tropicalPow: (a: number, b: number) => number;
664
- readonly wasmtropicalnumber_add: (a: number, b: number) => number;
665
- readonly wasmtropicalnumber_mul: (a: number, b: number) => number;
666
- readonly wasmtropicalnumber_neg: (a: number) => number;
667
- readonly tropicalbatch_batchTropicalAdd: (a: number, b: number) => number;
668
- readonly tropicalbatch_batchTropicalMul: (a: number, b: number) => number;
669
- readonly tropicalbatch_maxLogProb: (a: number, b: number) => number;
670
- readonly tropicalbatch_viterbiStep: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
671
168
  readonly __wbg_wasmmultivector_free: (a: number, b: number) => void;
672
169
  readonly wasmmultivector_new: () => number;
673
170
  readonly wasmmultivector_fromCoefficients: (a: number, b: number) => [number, number, number];
@@ -689,6 +186,7 @@ export interface InitOutput {
689
186
  readonly wasmmultivector_add: (a: number, b: number) => number;
690
187
  readonly wasmmultivector_sub: (a: number, b: number) => number;
691
188
  readonly wasmmultivector_scale: (a: number, b: number) => number;
189
+ readonly __wbg_batchoperations_free: (a: number, b: number) => void;
692
190
  readonly batchoperations_batchGeometricProduct: (a: number, b: number, c: number, d: number) => [number, number, number, number];
693
191
  readonly batchoperations_batchAdd: (a: number, b: number, c: number, d: number) => [number, number, number, number];
694
192
  readonly wasmrotor_fromBivector: (a: number, b: number) => number;
@@ -699,27 +197,13 @@ export interface InitOutput {
699
197
  readonly performanceoperations_vectorDotProduct: (a: number, b: number, c: number, d: number) => number;
700
198
  readonly performanceoperations_batchNormalize: (a: number, b: number, c: number) => [number, number];
701
199
  readonly init: () => void;
702
- readonly wasmtropicalnumber_new: (a: number) => number;
703
200
  readonly wasmmultivector_norm: (a: number) => number;
704
- readonly wasmtropicalnumber_tropicalMul: (a: number, b: number) => number;
705
- readonly wasmtropicalnumber_tropicalAdd: (a: number, b: number) => number;
706
- readonly wasmmultidualnumber_getReal: (a: number) => number;
707
- readonly wasmdualnumber_getReal: (a: number) => number;
708
- readonly wasmtropicalnumber_getValue: (a: number) => number;
709
- readonly __wbg_fusionbatch_free: (a: number, b: number) => void;
710
- readonly __wbg_wasmdualnumber_free: (a: number, b: number) => void;
711
- readonly __wbg_infogeomutils_free: (a: number, b: number) => void;
712
- readonly __wbg_wasmtropicalnumber_free: (a: number, b: number) => void;
713
- readonly __wbg_tropicalbatch_free: (a: number, b: number) => void;
714
- readonly __wbg_batchoperations_free: (a: number, b: number) => void;
715
201
  readonly __wbg_performanceoperations_free: (a: number, b: number) => void;
716
202
  readonly wasmrotor_inverse: (a: number) => number;
717
203
  readonly __wbg_wasmrotor_free: (a: number, b: number) => void;
718
- readonly __wbindgen_exn_store: (a: number) => void;
719
- readonly __externref_table_alloc: () => number;
720
- readonly __wbindgen_export_2: WebAssembly.Table;
721
- readonly __externref_table_dealloc: (a: number) => void;
204
+ readonly __wbindgen_export_0: WebAssembly.Table;
722
205
  readonly __wbindgen_malloc: (a: number, b: number) => number;
206
+ readonly __externref_table_dealloc: (a: number) => void;
723
207
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
724
208
  readonly __wbindgen_start: () => void;
725
209
  }