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