numbl 0.4.21 → 0.4.22

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 (281) hide show
  1. package/binding.gyp +12 -6
  2. package/dist-browser/browser/index.d.ts +1 -1
  3. package/dist-browser/browser/mip.d.ts +7 -0
  4. package/dist-browser/browser/protocol.d.ts +1 -1
  5. package/dist-browser/browser.js +1 -1
  6. package/dist-browser/db/operations.d.ts +0 -1
  7. package/dist-browser/gpuHelper.d.ts +29 -0
  8. package/dist-browser/hooks/projectFilesState.d.ts +37 -0
  9. package/dist-browser/numbl-core/execSession.d.ts +39 -0
  10. package/dist-browser/numbl-core/executeCode.d.ts +10 -1
  11. package/dist-browser/numbl-core/executors/classification.d.ts +2 -10
  12. package/dist-browser/numbl-core/executors/jit/backend.d.ts +65 -0
  13. package/dist-browser/numbl-core/executors/jit/cBackend.d.ts +22 -0
  14. package/dist-browser/numbl-core/executors/jit/callExecutor.d.ts +13 -44
  15. package/dist-browser/numbl-core/executors/jit/hostHelpers.d.ts +24 -0
  16. package/dist-browser/numbl-core/executors/jit/jsBackend.d.ts +15 -0
  17. package/dist-browser/numbl-core/executors/jit/loopExecutor.d.ts +13 -40
  18. package/dist-browser/numbl-core/executors/jit/session.d.ts +1 -1
  19. package/dist-browser/numbl-core/executors/jit/topLevelExecutor.d.ts +13 -33
  20. package/dist-browser/numbl-core/executors/jit/valueAdapterC.d.ts +32 -48
  21. package/dist-browser/numbl-core/executors/lowering.d.ts +38 -96
  22. package/dist-browser/numbl-core/executors/plugins.d.ts +14 -28
  23. package/dist-browser/numbl-core/executors/registry.d.ts +32 -133
  24. package/dist-browser/numbl-core/executors/types.d.ts +30 -92
  25. package/dist-browser/numbl-core/functionResolve.d.ts +3 -13
  26. package/dist-browser/numbl-core/helpers/check-helpers.d.ts +0 -5
  27. package/dist-browser/numbl-core/helpers/glob.d.ts +14 -0
  28. package/dist-browser/numbl-core/helpers/linsolve.d.ts +3 -13
  29. package/dist-browser/numbl-core/helpers/reduction-helpers.d.ts +2 -4
  30. package/dist-browser/numbl-core/helpers/shape-utils.d.ts +10 -0
  31. package/dist-browser/numbl-core/interpreter/builtins/index.d.ts +3 -1
  32. package/dist-browser/numbl-core/interpreter/builtins/time-system.d.ts +0 -1
  33. package/dist-browser/numbl-core/interpreter/builtins/types.d.ts +7 -7
  34. package/dist-browser/numbl-core/interpreter/interpreter.d.ts +6 -6
  35. package/dist-browser/numbl-core/interpreter/interpreterFunctions.d.ts +9 -1
  36. package/dist-browser/numbl-core/interpreter/interpreterSpecialBuiltins.d.ts +6 -3
  37. package/dist-browser/numbl-core/jit/builtins/defs/_shared.d.ts +1 -5
  38. package/dist-browser/numbl-core/jit/builtins/defs/arithmetic/_elemwise.d.ts +1 -2
  39. package/dist-browser/numbl-core/jit/builtins/defs/logical/_unary_pred.d.ts +3 -3
  40. package/dist-browser/numbl-core/jit/builtins/defs/logical/fieldnames.d.ts +1 -1
  41. package/dist-browser/numbl-core/jit/builtins/defs/logical/strcmp.d.ts +1 -1
  42. package/dist-browser/numbl-core/jit/builtins/defs/math/_unary_real.d.ts +5 -2
  43. package/dist-browser/numbl-core/jit/builtins/defs/math/realsqrt.d.ts +6 -0
  44. package/dist-browser/numbl-core/jit/builtins/defs/reduction/_shape.d.ts +0 -5
  45. package/dist-browser/numbl-core/jit/builtins/defs/shape/_construct.d.ts +0 -4
  46. package/dist-browser/numbl-core/jit/builtins/defs/shape/_triangular.d.ts +2 -8
  47. package/dist-browser/numbl-core/jit/builtins/defs/system/deal.d.ts +4 -5
  48. package/dist-browser/numbl-core/jit/builtins/defs/system/feval.d.ts +7 -29
  49. package/dist-browser/numbl-core/jit/builtins/registry.d.ts +15 -30
  50. package/dist-browser/numbl-core/jit/builtins/runtime/system/cdiv.d.ts +4 -0
  51. package/dist-browser/numbl-core/jit/builtins/runtime/system/cscalar.d.ts +4 -0
  52. package/dist-browser/numbl-core/jit/builtins/runtime/tensor_ops/tensor_elemwise_real_fn.d.ts +45 -15
  53. package/dist-browser/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reduce_real.d.ts +5 -5
  54. package/dist-browser/numbl-core/jit/builtins/runtime/tensor_ops/tensor_unary_real_math.d.ts +6 -0
  55. package/dist-browser/numbl-core/jit/codegen/emit.d.ts +9 -30
  56. package/dist-browser/numbl-core/jit/codegen/emitJs.d.ts +9 -27
  57. package/dist-browser/numbl-core/jit/codegen/emitStmt.d.ts +8 -31
  58. package/dist-browser/numbl-core/jit/codegen/emitTensorFused.d.ts +10 -9
  59. package/dist-browser/numbl-core/jit/codegen/inlinePass.d.ts +39 -48
  60. package/dist-browser/numbl-core/jit/codegen/prettyIR.d.ts +1 -6
  61. package/dist-browser/numbl-core/jit/codegen/runtime.d.ts +7 -28
  62. package/dist-browser/numbl-core/jit/compileSpec.d.ts +3 -6
  63. package/dist-browser/numbl-core/jit/compileSpecC.d.ts +5 -0
  64. package/dist-browser/numbl-core/jit/lowering/assignedFlags.d.ts +24 -0
  65. package/dist-browser/numbl-core/jit/lowering/definiteAssign.d.ts +3 -1
  66. package/dist-browser/numbl-core/jit/lowering/errors.d.ts +3 -15
  67. package/dist-browser/numbl-core/jit/lowering/ir.d.ts +0 -2
  68. package/dist-browser/numbl-core/jit/lowering/lower.d.ts +4 -12
  69. package/dist-browser/numbl-core/jit/lowering/types.d.ts +2 -7
  70. package/dist-browser/numbl-core/jit/numbl/index.d.ts +5 -14
  71. package/dist-browser/numbl-core/jit/parser/index.d.ts +4 -9
  72. package/dist-browser/numbl-core/jit/workspace/workspace.d.ts +32 -136
  73. package/dist-browser/numbl-core/jitDeclineDiagnostics.d.ts +1 -1
  74. package/dist-browser/numbl-core/jsUserFunctions.d.ts +10 -12
  75. package/dist-browser/numbl-core/lowering/classInfo.d.ts +4 -1
  76. package/dist-browser/numbl-core/lowering/loweringContext.d.ts +15 -23
  77. package/dist-browser/numbl-core/native/lapack-bridge.d.ts +111 -130
  78. package/dist-browser/numbl-core/native/ts-lapack-bridge.d.ts +4 -5
  79. package/dist-browser/numbl-core/native/ts-lapack-complex.d.ts +23 -0
  80. package/dist-browser/numbl-core/native/ts-lapack-qr-lu.d.ts +37 -0
  81. package/dist-browser/numbl-core/native/wasm-lapack-bridge.d.ts +4 -5
  82. package/dist-browser/numbl-core/ops/dispatch.d.ts +4 -5
  83. package/dist-browser/numbl-core/parser/types.d.ts +1 -21
  84. package/{dist-lib/numbl-core/runtime → dist-browser/numbl-core/plotting}/axisCommand.d.ts +2 -2
  85. package/dist-browser/{graphics → numbl-core/plotting}/axisLimits.d.ts +14 -2
  86. package/dist-browser/numbl-core/plotting/builtins.d.ts +8 -0
  87. package/dist-browser/numbl-core/plotting/colormaps.d.ts +10 -0
  88. package/dist-browser/numbl-core/{runtime/plotBuiltinDispatch.d.ts → plotting/dispatch.d.ts} +14 -25
  89. package/dist-browser/numbl-core/plotting/imagescExtent.d.ts +19 -0
  90. package/dist-browser/numbl-core/{runtime/runtimePlot.d.ts → plotting/instructions.d.ts} +5 -17
  91. package/dist-browser/numbl-core/plotting/parseArgsChart.d.ts +94 -0
  92. package/dist-browser/numbl-core/plotting/parseArgsCommon.d.ts +64 -0
  93. package/dist-browser/numbl-core/plotting/parseArgsLine.d.ts +103 -0
  94. package/dist-browser/numbl-core/plotting/parseArgsPatch.d.ts +38 -0
  95. package/dist-browser/numbl-core/plotting/parseArgsQuiver.d.ts +32 -0
  96. package/dist-browser/numbl-core/plotting/parseArgsSurface.d.ts +75 -0
  97. package/dist-browser/numbl-core/plotting/streamline.d.ts +16 -0
  98. package/{dist-graphics/graphics → dist-browser/numbl-core/plotting}/types.d.ts +9 -7
  99. package/dist-browser/numbl-core/runtime/cow.d.ts +0 -8
  100. package/dist-browser/numbl-core/runtime/refcount.d.ts +0 -3
  101. package/dist-browser/numbl-core/runtime/registerSpecial.d.ts +15 -0
  102. package/dist-browser/numbl-core/runtime/runtime.d.ts +11 -35
  103. package/dist-browser/numbl-core/runtime/runtimeDispatch.d.ts +6 -0
  104. package/dist-browser/numbl-core/runtime/specialBuiltins.d.ts +3 -9
  105. package/dist-browser/numbl-core/runtime/uihtmlSession.d.ts +5 -13
  106. package/dist-browser/numbl-core/runtime/utils.d.ts +4 -1
  107. package/dist-browser/numbl-core/version.d.ts +1 -1
  108. package/dist-browser/numbl-core/workspace/workspace.d.ts +64 -0
  109. package/dist-browser/vfs/syncVfsChanges.d.ts +2 -2
  110. package/dist-cli/cli.js +74244 -80566
  111. package/dist-graphics/graphics/FigureView.d.ts +1 -1
  112. package/dist-graphics/graphics/SurfView.d.ts +3 -2
  113. package/dist-graphics/graphics/drawPlot.d.ts +1 -1
  114. package/dist-graphics/graphics/exportFigureHdf5.d.ts +1 -1
  115. package/dist-graphics/graphics/figureHashTransport.d.ts +1 -1
  116. package/dist-graphics/graphics/figureUpload.d.ts +1 -1
  117. package/dist-graphics/graphics/importFigureHdf5.d.ts +1 -1
  118. package/dist-graphics/graphics/openInFigureViewer.d.ts +1 -1
  119. package/dist-graphics/graphics/plotHelpers.d.ts +1 -1
  120. package/dist-graphics/graphics/plotLegend.d.ts +1 -1
  121. package/dist-graphics/graphics/plotMarkers.d.ts +1 -1
  122. package/dist-graphics/graphics/restoreNaNs.d.ts +1 -1
  123. package/dist-graphics/graphics/uihtmlRelay.d.ts +16 -0
  124. package/dist-graphics/graphics-lib.d.ts +3 -3
  125. package/dist-graphics/index.js +294 -328
  126. package/{dist-lib/graphics → dist-graphics/numbl-core/plotting}/axisLimits.d.ts +14 -2
  127. package/dist-graphics/numbl-core/plotting/colormaps.d.ts +10 -0
  128. package/dist-graphics/numbl-core/plotting/imagescExtent.d.ts +19 -0
  129. package/{dist-browser/graphics → dist-graphics/numbl-core/plotting}/types.d.ts +9 -7
  130. package/dist-lib/browser/mip.d.ts +17 -0
  131. package/dist-lib/cli-scan.d.ts +8 -1
  132. package/dist-lib/lib.d.ts +1 -1
  133. package/dist-lib/lib.js +29201 -35301
  134. package/dist-lib/node.js +22 -14
  135. package/dist-lib/numbl-core/execSession.d.ts +39 -0
  136. package/dist-lib/numbl-core/executeCode.d.ts +10 -1
  137. package/dist-lib/numbl-core/executors/classification.d.ts +2 -10
  138. package/dist-lib/numbl-core/executors/jit/backend.d.ts +65 -0
  139. package/dist-lib/numbl-core/executors/jit/cBackend.d.ts +22 -0
  140. package/dist-lib/numbl-core/executors/jit/callExecutor.d.ts +13 -44
  141. package/dist-lib/numbl-core/executors/jit/hostHelpers.d.ts +24 -0
  142. package/dist-lib/numbl-core/executors/jit/jsBackend.d.ts +15 -0
  143. package/dist-lib/numbl-core/executors/jit/loopExecutor.d.ts +13 -40
  144. package/dist-lib/numbl-core/executors/jit/session.d.ts +1 -1
  145. package/dist-lib/numbl-core/executors/jit/topLevelExecutor.d.ts +13 -33
  146. package/dist-lib/numbl-core/executors/jit/valueAdapterC.d.ts +32 -48
  147. package/dist-lib/numbl-core/executors/lowering.d.ts +38 -96
  148. package/dist-lib/numbl-core/executors/plugins.d.ts +14 -28
  149. package/dist-lib/numbl-core/executors/registry.d.ts +32 -133
  150. package/dist-lib/numbl-core/executors/types.d.ts +30 -92
  151. package/dist-lib/numbl-core/functionResolve.d.ts +3 -13
  152. package/dist-lib/numbl-core/helpers/check-helpers.d.ts +0 -5
  153. package/dist-lib/numbl-core/helpers/glob.d.ts +14 -0
  154. package/dist-lib/numbl-core/helpers/linsolve.d.ts +3 -13
  155. package/dist-lib/numbl-core/helpers/reduction-helpers.d.ts +2 -4
  156. package/dist-lib/numbl-core/helpers/shape-utils.d.ts +10 -0
  157. package/dist-lib/numbl-core/interpreter/builtins/index.d.ts +3 -1
  158. package/dist-lib/numbl-core/interpreter/builtins/time-system.d.ts +0 -1
  159. package/dist-lib/numbl-core/interpreter/builtins/types.d.ts +7 -7
  160. package/dist-lib/numbl-core/interpreter/interpreter.d.ts +6 -6
  161. package/dist-lib/numbl-core/interpreter/interpreterFunctions.d.ts +9 -1
  162. package/dist-lib/numbl-core/interpreter/interpreterSpecialBuiltins.d.ts +6 -3
  163. package/dist-lib/numbl-core/jit/builtins/defs/_shared.d.ts +1 -5
  164. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/_elemwise.d.ts +1 -2
  165. package/dist-lib/numbl-core/jit/builtins/defs/logical/_unary_pred.d.ts +3 -3
  166. package/dist-lib/numbl-core/jit/builtins/defs/logical/fieldnames.d.ts +1 -1
  167. package/dist-lib/numbl-core/jit/builtins/defs/logical/strcmp.d.ts +1 -1
  168. package/dist-lib/numbl-core/jit/builtins/defs/math/_unary_real.d.ts +5 -2
  169. package/dist-lib/numbl-core/jit/builtins/defs/math/realsqrt.d.ts +6 -0
  170. package/dist-lib/numbl-core/jit/builtins/defs/reduction/_shape.d.ts +0 -5
  171. package/dist-lib/numbl-core/jit/builtins/defs/shape/_construct.d.ts +0 -4
  172. package/dist-lib/numbl-core/jit/builtins/defs/shape/_triangular.d.ts +2 -8
  173. package/dist-lib/numbl-core/jit/builtins/defs/system/deal.d.ts +4 -5
  174. package/dist-lib/numbl-core/jit/builtins/defs/system/feval.d.ts +7 -29
  175. package/dist-lib/numbl-core/jit/builtins/registry.d.ts +15 -30
  176. package/dist-lib/numbl-core/jit/builtins/runtime/system/cdiv.d.ts +4 -0
  177. package/dist-lib/numbl-core/jit/builtins/runtime/system/cscalar.d.ts +4 -0
  178. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_elemwise_real_fn.d.ts +45 -15
  179. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reduce_real.d.ts +5 -5
  180. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_unary_real_math.d.ts +6 -0
  181. package/dist-lib/numbl-core/jit/codegen/emit.d.ts +9 -30
  182. package/dist-lib/numbl-core/jit/codegen/emitJs.d.ts +9 -27
  183. package/dist-lib/numbl-core/jit/codegen/emitStmt.d.ts +8 -31
  184. package/dist-lib/numbl-core/jit/codegen/emitTensorFused.d.ts +10 -9
  185. package/dist-lib/numbl-core/jit/codegen/inlinePass.d.ts +39 -48
  186. package/dist-lib/numbl-core/jit/codegen/prettyIR.d.ts +1 -6
  187. package/dist-lib/numbl-core/jit/codegen/runtime.d.ts +7 -28
  188. package/dist-lib/numbl-core/jit/compileSpec.d.ts +3 -6
  189. package/dist-lib/numbl-core/jit/compileSpecC.d.ts +5 -0
  190. package/dist-lib/numbl-core/jit/lowering/assignedFlags.d.ts +24 -0
  191. package/dist-lib/numbl-core/jit/lowering/definiteAssign.d.ts +3 -1
  192. package/dist-lib/numbl-core/jit/lowering/errors.d.ts +3 -15
  193. package/dist-lib/numbl-core/jit/lowering/ir.d.ts +0 -2
  194. package/dist-lib/numbl-core/jit/lowering/lower.d.ts +4 -12
  195. package/dist-lib/numbl-core/jit/lowering/types.d.ts +2 -7
  196. package/dist-lib/numbl-core/jit/numbl/index.d.ts +5 -14
  197. package/dist-lib/numbl-core/jit/parser/index.d.ts +4 -9
  198. package/dist-lib/numbl-core/jit/workspace/workspace.d.ts +32 -136
  199. package/dist-lib/numbl-core/jitDeclineDiagnostics.d.ts +1 -1
  200. package/dist-lib/numbl-core/jsUserFunctions.d.ts +10 -12
  201. package/dist-lib/numbl-core/lowering/classInfo.d.ts +4 -1
  202. package/dist-lib/numbl-core/lowering/loweringContext.d.ts +15 -23
  203. package/dist-lib/numbl-core/native/lapack-bridge.d.ts +111 -130
  204. package/dist-lib/numbl-core/native/ts-lapack-bridge.d.ts +4 -5
  205. package/dist-lib/numbl-core/native/ts-lapack-complex.d.ts +23 -0
  206. package/dist-lib/numbl-core/native/ts-lapack-qr-lu.d.ts +37 -0
  207. package/dist-lib/numbl-core/native/wasm-lapack-bridge.d.ts +4 -5
  208. package/dist-lib/numbl-core/ops/dispatch.d.ts +4 -5
  209. package/dist-lib/numbl-core/parser/types.d.ts +1 -21
  210. package/{dist-browser/numbl-core/runtime → dist-lib/numbl-core/plotting}/axisCommand.d.ts +2 -2
  211. package/{dist-graphics/graphics → dist-lib/numbl-core/plotting}/axisLimits.d.ts +14 -2
  212. package/dist-lib/numbl-core/plotting/builtins.d.ts +8 -0
  213. package/dist-lib/numbl-core/plotting/colormaps.d.ts +10 -0
  214. package/dist-lib/numbl-core/{runtime/plotBuiltinDispatch.d.ts → plotting/dispatch.d.ts} +14 -25
  215. package/dist-lib/numbl-core/plotting/imagescExtent.d.ts +19 -0
  216. package/dist-lib/numbl-core/{runtime/runtimePlot.d.ts → plotting/instructions.d.ts} +5 -17
  217. package/dist-lib/numbl-core/plotting/parseArgsChart.d.ts +94 -0
  218. package/dist-lib/numbl-core/plotting/parseArgsCommon.d.ts +64 -0
  219. package/dist-lib/numbl-core/plotting/parseArgsLine.d.ts +103 -0
  220. package/dist-lib/numbl-core/plotting/parseArgsPatch.d.ts +38 -0
  221. package/dist-lib/numbl-core/plotting/parseArgsQuiver.d.ts +32 -0
  222. package/dist-lib/numbl-core/plotting/parseArgsSurface.d.ts +75 -0
  223. package/dist-lib/numbl-core/plotting/streamline.d.ts +16 -0
  224. package/dist-lib/{graphics → numbl-core/plotting}/types.d.ts +9 -7
  225. package/dist-lib/numbl-core/runtime/cow.d.ts +0 -8
  226. package/dist-lib/numbl-core/runtime/refcount.d.ts +0 -3
  227. package/dist-lib/numbl-core/runtime/registerSpecial.d.ts +15 -0
  228. package/dist-lib/numbl-core/runtime/runtime.d.ts +11 -35
  229. package/dist-lib/numbl-core/runtime/runtimeDispatch.d.ts +6 -0
  230. package/dist-lib/numbl-core/runtime/specialBuiltins.d.ts +3 -9
  231. package/dist-lib/numbl-core/runtime/uihtmlSession.d.ts +5 -13
  232. package/dist-lib/numbl-core/runtime/utils.d.ts +4 -1
  233. package/dist-lib/numbl-core/version.d.ts +1 -1
  234. package/dist-lib/numbl-core/workspace/workspace.d.ts +64 -0
  235. package/dist-lib/vfs/unzipToFiles.d.ts +7 -0
  236. package/dist-plot-viewer/assets/index-C0fIevlp.js +4504 -0
  237. package/dist-plot-viewer/index.html +1 -1
  238. package/dist-site-viewer/assets/index-BDaviCH6.js +4832 -0
  239. package/dist-site-viewer/assets/numbl-worker-D6m4K2PP.js +5691 -0
  240. package/dist-site-viewer/index.html +2 -2
  241. package/native/numbl_addon.cpp +2 -12
  242. package/native/numbl_addon_common.h +0 -5
  243. package/package.json +6 -5
  244. package/dist-browser/hooks/useProjectFiles.d.ts +0 -45
  245. package/dist-browser/numbl-core/executors/context.d.ts +0 -76
  246. package/dist-browser/numbl-core/executors/index.d.ts +0 -14
  247. package/dist-browser/numbl-core/executors/jit/cJitCallExecutor.d.ts +0 -35
  248. package/dist-browser/numbl-core/executors/jit/cJitLoopExecutor.d.ts +0 -31
  249. package/dist-browser/numbl-core/executors/jit/cJitTopLevelExecutor.d.ts +0 -29
  250. package/dist-browser/numbl-core/helpers/dummy.d.ts +0 -5
  251. package/dist-browser/numbl-core/jit/runtime/context.d.ts +0 -23
  252. package/dist-browser/numbl-core/jit/runtime/inferType.d.ts +0 -10
  253. package/dist-browser/numbl-core/jit/runtime/value.d.ts +0 -101
  254. package/dist-browser/numbl-core/jit/workspace/driverPrologue.d.ts +0 -59
  255. package/dist-browser/numbl-core/jit/workspace/mtoc2UserFunctionLoader.d.ts +0 -62
  256. package/dist-browser/numbl-core/native/bridge-resolve.d.ts +0 -14
  257. package/dist-browser/numbl-core/runtime/plotUtils.d.ts +0 -336
  258. package/dist-browser/numbl-core/runtime/specialBuiltinNames.d.ts +0 -2
  259. package/dist-graphics/graphics/surfColormap.d.ts +0 -2
  260. package/dist-lib/numbl-core/executors/context.d.ts +0 -76
  261. package/dist-lib/numbl-core/executors/index.d.ts +0 -14
  262. package/dist-lib/numbl-core/executors/jit/cJitCallExecutor.d.ts +0 -35
  263. package/dist-lib/numbl-core/executors/jit/cJitLoopExecutor.d.ts +0 -31
  264. package/dist-lib/numbl-core/executors/jit/cJitTopLevelExecutor.d.ts +0 -29
  265. package/dist-lib/numbl-core/helpers/dummy.d.ts +0 -5
  266. package/dist-lib/numbl-core/jit/runtime/context.d.ts +0 -23
  267. package/dist-lib/numbl-core/jit/runtime/inferType.d.ts +0 -10
  268. package/dist-lib/numbl-core/jit/runtime/value.d.ts +0 -101
  269. package/dist-lib/numbl-core/jit/workspace/driverPrologue.d.ts +0 -59
  270. package/dist-lib/numbl-core/jit/workspace/mtoc2UserFunctionLoader.d.ts +0 -62
  271. package/dist-lib/numbl-core/native/bridge-resolve.d.ts +0 -14
  272. package/dist-lib/numbl-core/runtime/plotUtils.d.ts +0 -336
  273. package/dist-lib/numbl-core/runtime/specialBuiltinNames.d.ts +0 -2
  274. package/dist-plot-viewer/assets/index-YeXWXIxH.js +0 -4504
  275. package/dist-site-viewer/assets/index-DrtkDG_M.js +0 -4832
  276. package/dist-site-viewer/assets/numbl-worker-Dz_Z8B9u.js +0 -5327
  277. package/native/elemwise.cpp +0 -360
  278. package/native/unary_elemwise.cpp +0 -67
  279. /package/dist-browser/{graphics → numbl-core/plotting}/figuresReducer.d.ts +0 -0
  280. /package/dist-graphics/{graphics → numbl-core/plotting}/figuresReducer.d.ts +0 -0
  281. /package/dist-lib/{graphics → numbl-core/plotting}/figuresReducer.d.ts +0 -0
@@ -1,27 +1,22 @@
1
1
  /**
2
- * LAPACK bridge — a module-level singleton that holds a reference to the
3
- * native addon when running under Node.js.
2
+ * LAPACK bridge: one interface for the dense linear algebra and tensor-op
3
+ * kernels, satisfied both by the native addon and by the pure-TypeScript
4
+ * implementation (ts-lapack-bridge.ts).
4
5
  *
5
- * In the browser the bridge is never set (stays null) and callers fall back
6
- * to pure-JavaScript implementations.
7
- *
8
- * Usage (CLI startup):
9
- * import { setLapackBridge } from './numbl-core/native/lapack-bridge.js';
10
- * setLapackBridge(require('<path-to-addon>'));
11
- *
12
- * Usage (builtin):
13
- * import { getLapackBridge } from '../native/lapack-bridge.js';
14
- * const bridge = getLapackBridge();
15
- * if (bridge) { ... use bridge.inv(...) ... }
6
+ * `getLapackBridge()` always returns a complete bridge: each entry comes from
7
+ * the bridge installed with `setLapackBridge` (the native addon under Node,
8
+ * optionally a wasm accelerator in the browser) when it provides it, and from
9
+ * the TypeScript implementation otherwise. Call sites therefore use
10
+ * `getLapackBridge().X(...)` with no availability checks. Operations the
11
+ * TypeScript side cannot do are listed in `TS_UNSUPPORTED` in
12
+ * ts-lapack-bridge.ts and throw a clear error there.
16
13
  */
17
14
  /**
18
15
  * Expected native addon version. Bump this whenever the C++ addon API changes
19
16
  * (must match ADDON_VERSION in numbl_addon.cpp).
20
17
  */
21
- export declare const NATIVE_ADDON_EXPECTED_VERSION = 9;
18
+ export declare const NATIVE_ADDON_EXPECTED_VERSION = 10;
22
19
  export interface LapackBridge {
23
- /** Returns the native addon's version number. */
24
- addonVersion?(): number;
25
20
  /**
26
21
  * Invert an n×n real matrix stored in column-major order (MATLAB/LAPACK convention).
27
22
  * @param data Column-major Float64Array of length n*n (not modified).
@@ -29,7 +24,7 @@ export interface LapackBridge {
29
24
  * @returns Inverted matrix as a allocFloat64Array in column-major order.
30
25
  * @throws Error if the matrix is singular.
31
26
  */
32
- inv?(data: Float64Array, n: number): Float64Array;
27
+ inv(data: Float64Array, n: number): Float64Array;
33
28
  /**
34
29
  * Invert an n×n complex matrix stored in column-major order (MATLAB/LAPACK convention).
35
30
  * Complex matrices are stored with separate real and imaginary parts.
@@ -39,7 +34,7 @@ export interface LapackBridge {
39
34
  * @returns Object with {re, im} - inverted matrix parts as Float64Arrays in column-major order.
40
35
  * @throws Error if the matrix is singular.
41
36
  */
42
- invComplex?(dataRe: Float64Array, dataIm: Float64Array, n: number): {
37
+ invComplex(dataRe: Float64Array, dataIm: Float64Array, n: number): {
43
38
  re: Float64Array;
44
39
  im: Float64Array;
45
40
  };
@@ -53,7 +48,7 @@ export interface LapackBridge {
53
48
  * @param wantQ false → skip dorgqr; Q will be absent from the returned object.
54
49
  * @returns Object with R (always present) and Q (present only when wantQ=true).
55
50
  */
56
- qr?(data: Float64Array, m: number, n: number, econ: boolean, wantQ: boolean): {
51
+ qr(data: Float64Array, m: number, n: number, econ: boolean, wantQ: boolean): {
57
52
  Q: Float64Array;
58
53
  R: Float64Array;
59
54
  };
@@ -65,7 +60,7 @@ export interface LapackBridge {
65
60
  * @param econ true → economy/thin QR; false → full QR.
66
61
  * @returns Object with Q, R, and jpvt (1-based permutation vector as Int32Array).
67
62
  */
68
- qrPivot?(data: Float64Array, m: number, n: number, econ: boolean): {
63
+ qrPivot(data: Float64Array, m: number, n: number, econ: boolean): {
69
64
  Q: Float64Array;
70
65
  R: Float64Array;
71
66
  jpvt: Int32Array;
@@ -73,7 +68,7 @@ export interface LapackBridge {
73
68
  /**
74
69
  * Column-pivoted QR decomposition of an m×n complex matrix: A*P = Q*R via zgeqp3 + zungqr.
75
70
  */
76
- qrPivotComplex?(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean): {
71
+ qrPivotComplex(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean): {
77
72
  QRe: Float64Array;
78
73
  QIm: Float64Array;
79
74
  RRe: Float64Array;
@@ -91,7 +86,7 @@ export interface LapackBridge {
91
86
  * @param wantQ false → skip zungqr; Q properties will be absent from the returned object.
92
87
  * @returns Object with RRe, RIm (always present) and QRe, QIm (present only when wantQ=true).
93
88
  */
94
- qrComplex?(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean, wantQ: boolean): {
89
+ qrComplex(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean, wantQ: boolean): {
95
90
  QRe?: Float64Array;
96
91
  QIm?: Float64Array;
97
92
  RRe: Float64Array;
@@ -107,7 +102,7 @@ export interface LapackBridge {
107
102
  * @param computeUV true → compute U and V; false → compute S only.
108
103
  * @returns Object with S (always present as vector of singular values) and optionally U and V.
109
104
  */
110
- svd?(data: Float64Array, m: number, n: number, econ: boolean, computeUV: boolean): {
105
+ svd(data: Float64Array, m: number, n: number, econ: boolean, computeUV: boolean): {
111
106
  U?: Float64Array;
112
107
  S: Float64Array;
113
108
  V?: Float64Array;
@@ -123,7 +118,7 @@ export interface LapackBridge {
123
118
  * @param computeUV true → compute U and V; false → compute S only.
124
119
  * @returns Object with S (real singular values) and optionally URe, UIm, VRe, VIm.
125
120
  */
126
- svdComplex?(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean, computeUV: boolean): {
121
+ svdComplex(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean, computeUV: boolean): {
127
122
  S: Float64Array;
128
123
  URe?: Float64Array;
129
124
  UIm?: Float64Array;
@@ -140,7 +135,7 @@ export interface LapackBridge {
140
135
  * @param n Number of columns in B and C.
141
136
  * @returns C = A*B as a allocFloat64Array of length m*n in column-major order.
142
137
  */
143
- matmul?(A: Float64Array, m: number, k: number, B: Float64Array, n: number): Float64Array;
138
+ matmul(A: Float64Array, m: number, k: number, B: Float64Array, n: number): Float64Array;
144
139
  /**
145
140
  * Complex matrix-matrix multiplication using BLAS zgemm.
146
141
  * Computes C = A * B in column-major order.
@@ -153,7 +148,7 @@ export interface LapackBridge {
153
148
  * @param n Number of columns in B and C.
154
149
  * @returns Object with {re, im?} — complex result as Float64Arrays.
155
150
  */
156
- matmulComplex?(ARe: Float64Array, AIm: Float64Array, m: number, k: number, BRe: Float64Array, BIm: Float64Array, n: number): {
151
+ matmulComplex(ARe: Float64Array, AIm: Float64Array, m: number, k: number, BRe: Float64Array, BIm: Float64Array, n: number): {
157
152
  re: Float64Array;
158
153
  im?: Float64Array;
159
154
  };
@@ -170,7 +165,7 @@ export interface LapackBridge {
170
165
  * @param nrhs Number of right-hand sides (columns of B and X).
171
166
  * @returns X as a allocFloat64Array of length n*nrhs in column-major order.
172
167
  */
173
- linsolve?(A: Float64Array, m: number, n: number, B: Float64Array, nrhs: number): Float64Array;
168
+ linsolve(A: Float64Array, m: number, n: number, B: Float64Array, nrhs: number): Float64Array;
174
169
  /**
175
170
  * Solve a complex linear system A * X = B.
176
171
  * Input/output are column-major Float64Arrays for real and imaginary parts.
@@ -187,7 +182,7 @@ export interface LapackBridge {
187
182
  * @param nrhs Number of right-hand sides (columns of B and X).
188
183
  * @returns Object with {re, im} — X as Float64Arrays of length n*nrhs in column-major order.
189
184
  */
190
- linsolveComplex?(ARe: Float64Array, AIm: Float64Array, m: number, n: number, BRe: Float64Array, BIm: Float64Array, nrhs: number): {
185
+ linsolveComplex(ARe: Float64Array, AIm: Float64Array, m: number, n: number, BRe: Float64Array, BIm: Float64Array, nrhs: number): {
191
186
  re: Float64Array;
192
187
  im: Float64Array;
193
188
  };
@@ -201,7 +196,7 @@ export interface LapackBridge {
201
196
  * @param balance true → balance matrix before computing (default); false → no balancing.
202
197
  * @returns Object with wr/wi (real/imag parts of eigenvalues) and optionally VL/VR.
203
198
  */
204
- eig?(data: Float64Array, n: number, computeVL: boolean, computeVR: boolean, balance: boolean): {
199
+ eig(data: Float64Array, n: number, computeVL: boolean, computeVR: boolean, balance: boolean): {
205
200
  wr: Float64Array;
206
201
  wi: Float64Array;
207
202
  VL?: Float64Array;
@@ -217,7 +212,7 @@ export interface LapackBridge {
217
212
  * @param computeV true → also compute the orthonormal eigenvectors.
218
213
  * @returns Object with w (ascending eigenvalues) and optionally V.
219
214
  */
220
- eigSym?(data: Float64Array, n: number, computeV: boolean): {
215
+ eigSym(data: Float64Array, n: number, computeV: boolean): {
221
216
  w: Float64Array;
222
217
  V?: Float64Array;
223
218
  };
@@ -230,7 +225,7 @@ export interface LapackBridge {
230
225
  * @param computeV true → also compute the unitary eigenvector basis.
231
226
  * @returns Object with w (real, ascending) and optionally VRe/VIm.
232
227
  */
233
- eigHerm?(dataRe: Float64Array, dataIm: Float64Array, n: number, computeV: boolean): {
228
+ eigHerm(dataRe: Float64Array, dataIm: Float64Array, n: number, computeV: boolean): {
234
229
  w: Float64Array;
235
230
  VRe?: Float64Array;
236
231
  VIm?: Float64Array;
@@ -245,7 +240,7 @@ export interface LapackBridge {
245
240
  * @param computeVR true → compute right eigenvectors.
246
241
  * @returns Object with wRe/wIm (real/imag parts of eigenvalues) and optionally VLRe/VLIm/VRRe/VRIm.
247
242
  */
248
- eigComplex?(dataRe: Float64Array, dataIm: Float64Array, n: number, computeVL: boolean, computeVR: boolean): {
243
+ eigComplex(dataRe: Float64Array, dataIm: Float64Array, n: number, computeVL: boolean, computeVR: boolean): {
249
244
  wRe: Float64Array;
250
245
  wIm: Float64Array;
251
246
  VLRe?: Float64Array;
@@ -262,7 +257,7 @@ export interface LapackBridge {
262
257
  * - LU: m×n Float64Array with L (unit lower) and U (upper) packed together.
263
258
  * - ipiv: Int32Array of length min(m,n), 1-based pivot indices from dgetrf.
264
259
  */
265
- lu?(data: Float64Array, m: number, n: number): {
260
+ lu(data: Float64Array, m: number, n: number): {
266
261
  LU: Float64Array;
267
262
  ipiv: Int32Array;
268
263
  };
@@ -276,7 +271,7 @@ export interface LapackBridge {
276
271
  * - LURe, LUIm: m×n Float64Arrays with L (unit lower) and U (upper) packed together.
277
272
  * - ipiv: Int32Array of length min(m,n), 1-based pivot indices from zgetrf.
278
273
  */
279
- luComplex?(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number): {
274
+ luComplex(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number): {
280
275
  LURe: Float64Array;
281
276
  LUIm: Float64Array;
282
277
  ipiv: Int32Array;
@@ -292,7 +287,7 @@ export interface LapackBridge {
292
287
  * - R: n×n Float64Array with the triangular factor (opposite triangle zeroed).
293
288
  * - info: 0 if successful, >0 if not positive definite (index of failing pivot).
294
289
  */
295
- chol?(data: Float64Array, n: number, upper: boolean): {
290
+ chol(data: Float64Array, n: number, upper: boolean): {
296
291
  R: Float64Array;
297
292
  info: number;
298
293
  };
@@ -308,7 +303,7 @@ export interface LapackBridge {
308
303
  * - RRe, RIm: n×n Float64Arrays with the triangular factor.
309
304
  * - info: 0 if successful, >0 if not positive definite.
310
305
  */
311
- cholComplex?(dataRe: Float64Array, dataIm: Float64Array, n: number, upper: boolean): {
306
+ cholComplex(dataRe: Float64Array, dataIm: Float64Array, n: number, upper: boolean): {
312
307
  RRe: Float64Array;
313
308
  RIm: Float64Array;
314
309
  info: number;
@@ -329,7 +324,7 @@ export interface LapackBridge {
329
324
  * - V?: n×n Float64Array, right generalized eigenvectors (packed, like dgeev format).
330
325
  * - W?: n×n Float64Array, left generalized eigenvectors (packed, like dgeev format).
331
326
  */
332
- qz?(dataA: Float64Array, dataB: Float64Array, n: number, computeEigvecs: boolean): {
327
+ qz(dataA: Float64Array, dataB: Float64Array, n: number, computeEigvecs: boolean): {
333
328
  AA: Float64Array;
334
329
  BB: Float64Array;
335
330
  Q: Float64Array;
@@ -344,48 +339,7 @@ export interface LapackBridge {
344
339
  * Complex QZ factorization (generalized Schur decomposition) of an n×n complex matrix pair.
345
340
  * Uses LAPACK zgges (and ztgevc for eigenvectors).
346
341
  */
347
- /**
348
- * Forward/inverse 1D FFT on real input via FFTW.
349
- * Does NOT normalize for inverse — caller handles 1/n scaling.
350
- * @param re Real input data as Float64Array of length n.
351
- * @param n Transform length.
352
- * @param inverse true for inverse FFT, false for forward.
353
- * @returns { re, im } Float64Arrays of length n.
354
- */
355
- fft1d?(re: Float64Array, n: number, inverse: boolean): {
356
- re: Float64Array;
357
- im: Float64Array;
358
- };
359
- /**
360
- * Forward/inverse 1D FFT on complex input via FFTW.
361
- * Does NOT normalize for inverse — caller handles 1/n scaling.
362
- * @param re Real part of input as Float64Array of length n.
363
- * @param im Imaginary part of input as Float64Array of length n.
364
- * @param n Transform length.
365
- * @param inverse true for inverse FFT, false for forward.
366
- * @returns { re, im } Float64Arrays of length n.
367
- */
368
- fft1dComplex?(re: Float64Array, im: Float64Array, n: number, inverse: boolean): {
369
- re: Float64Array;
370
- im: Float64Array;
371
- };
372
- /**
373
- * Batch FFT along a single dimension of a column-major tensor via FFTW.
374
- * Transforms ALL fibers in one FFTW call using the guru split interface.
375
- * Does NOT normalize for inverse — caller handles 1/n scaling.
376
- * @param re Real part of input tensor (column-major flat array).
377
- * @param im Imaginary part, or null for real input.
378
- * @param shape Tensor dimensions as a JS array of numbers.
379
- * @param dim 0-based dimension to transform along.
380
- * @param n FFT length (may differ from shape[dim] for pad/truncate).
381
- * @param inverse true for inverse FFT, false for forward.
382
- * @returns { re, im } Float64Arrays for the output tensor.
383
- */
384
- fftAlongDim?(re: Float64Array, im: Float64Array | null, shape: number[], dim: number, n: number, inverse: boolean): {
385
- re: Float64Array;
386
- im: Float64Array;
387
- };
388
- qzComplex?(dataARe: Float64Array, dataAIm: Float64Array, dataBRe: Float64Array, dataBIm: Float64Array, n: number, computeEigvecs: boolean): {
342
+ qzComplex(dataARe: Float64Array, dataAIm: Float64Array, dataBRe: Float64Array, dataBIm: Float64Array, n: number, computeEigvecs: boolean): {
389
343
  AARe: Float64Array;
390
344
  AAIm: Float64Array;
391
345
  BBRe: Float64Array;
@@ -403,26 +357,6 @@ export interface LapackBridge {
403
357
  WRe?: Float64Array;
404
358
  WIm?: Float64Array;
405
359
  };
406
- /**
407
- * Bulk fill normal random values using Marsaglia polar + xoshiro128**.
408
- * State is mutated in-place. Spare is passed in/out to preserve pair caching.
409
- */
410
- fillRandn?(state: Uint32Array, n: number, spare: number, hasSpare: boolean): {
411
- data: Float64Array;
412
- spare: number;
413
- hasSpare: boolean;
414
- };
415
- /**
416
- * Unary element-wise math on a real Float64Array.
417
- * op: 0=exp, 1=log, 2=log2, 3=log10, 4=sqrt, 5=abs, 6=floor, 7=ceil,
418
- * 8=round, 9=trunc, 10=sin, 11=cos, 12=tan, 13=asin, 14=acos, 15=atan,
419
- * 16=sinh, 17=cosh, 18=tanh, 19=sign
420
- */
421
- unaryElemwise?(arr: Float64Array, op: number): Float64Array;
422
- /** Element-wise binary op on real Float64Arrays. op: 0=add, 1=sub, 2=mul, 3=div */
423
- elemwise?(a: Float64Array, b: Float64Array, op: number): Float64Array;
424
- /** Scalar-tensor element-wise op. scalarOnLeft: true → scalar op arr[i], false → arr[i] op scalar */
425
- elemwiseScalar?(scalar: number, arr: Float64Array, op: number, scalarOnLeft: boolean): Float64Array;
426
360
  /**
427
361
  * Restarted GMRES solver for A*x = b (real, dense matrices only).
428
362
  * Uses BLAS dgemv for matvec and LAPACK dgetrf+dgetrs for preconditioner.
@@ -437,7 +371,7 @@ export interface LapackBridge {
437
371
  * @param x0 Initial guess (length n), or null for zeros.
438
372
  * @returns Object with x, flag, relres, iter (Int32Array[2]), resvec.
439
373
  */
440
- gmres?(A: Float64Array, n: number, b: Float64Array, restart: number, tol: number, maxit: number, M1: Float64Array | null, M2: Float64Array | null, x0: Float64Array | null): {
374
+ gmres(A: Float64Array, n: number, b: Float64Array, restart: number, tol: number, maxit: number, M1: Float64Array | null, M2: Float64Array | null, x0: Float64Array | null): {
441
375
  x: Float64Array;
442
376
  flag: number;
443
377
  relres: number;
@@ -447,7 +381,7 @@ export interface LapackBridge {
447
381
  /**
448
382
  * Complex restarted GMRES solver for A*x = b (split real/imag dense matrices).
449
383
  */
450
- gmresComplex?(ARe: Float64Array, AIm: Float64Array, n: number, bRe: Float64Array, bIm: Float64Array, restart: number, tol: number, maxit: number, M1Re: Float64Array | null, M1Im: Float64Array | null, M2Re: Float64Array | null, M2Im: Float64Array | null, x0Re: Float64Array | null, x0Im: Float64Array | null): {
384
+ gmresComplex(ARe: Float64Array, AIm: Float64Array, n: number, bRe: Float64Array, bIm: Float64Array, restart: number, tol: number, maxit: number, M1Re: Float64Array | null, M1Im: Float64Array | null, M2Re: Float64Array | null, M2Im: Float64Array | null, x0Re: Float64Array | null, x0Im: Float64Array | null): {
451
385
  xRe: Float64Array;
452
386
  xIm: Float64Array;
453
387
  flag: number;
@@ -455,56 +389,103 @@ export interface LapackBridge {
455
389
  iter: Int32Array;
456
390
  resvec: Float64Array;
457
391
  };
458
- /** Element-wise binary op on complex Float64Arrays. op: 0=add, 1=sub, 2=mul, 3=div */
459
- elemwiseComplex?(aRe: Float64Array, aIm: Float64Array | null, bRe: Float64Array, bIm: Float64Array | null, op: number): {
460
- re: Float64Array;
461
- im?: Float64Array;
462
- };
463
- /** Complex-scalar * (real or complex) tensor element-wise op.
464
- * op: 0=add, 1=sub, 2=mul, 3=div.
465
- * Pass null for arrIm to treat the tensor as purely real. */
466
- elemwiseComplexScalar?(scalarRe: number, scalarIm: number, arrRe: Float64Array, arrIm: Float64Array | null, op: number, scalarOnLeft: boolean): {
467
- re: Float64Array;
468
- im?: Float64Array;
469
- };
470
392
  /** Real binary elemwise: out[i] = a[i] OP b[i]. op codes per OpRealBin. */
471
- tensorOpRealBinary?(op: number, n: number, a: Float64Array, b: Float64Array, out: Float64Array): void;
393
+ tensorOpRealBinary(op: number, n: number, a: Float64Array, b: Float64Array, out: Float64Array): void;
472
394
  /** Real scalar-tensor binary elemwise. */
473
- tensorOpRealScalarBinary?(op: number, n: number, scalar: number, arr: Float64Array, scalarOnLeft: boolean, out: Float64Array): void;
395
+ tensorOpRealScalarBinary(op: number, n: number, scalar: number, arr: Float64Array, scalarOnLeft: boolean, out: Float64Array): void;
474
396
  /** Complex binary elemwise (split storage). aIm/bIm may be null. */
475
- tensorOpComplexBinary?(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, bRe: Float64Array, bIm: Float64Array | null, outRe: Float64Array, outIm: Float64Array): void;
397
+ tensorOpComplexBinary(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, bRe: Float64Array, bIm: Float64Array | null, outRe: Float64Array, outIm: Float64Array): void;
476
398
  /** Complex scalar-tensor binary elemwise. arrIm may be null. */
477
- tensorOpComplexScalarBinary?(op: number, n: number, sRe: number, sIm: number, arrRe: Float64Array, arrIm: Float64Array | null, scalarOnLeft: boolean, outRe: Float64Array, outIm: Float64Array): void;
399
+ tensorOpComplexScalarBinary(op: number, n: number, sRe: number, sIm: number, arrRe: Float64Array, arrIm: Float64Array | null, scalarOnLeft: boolean, outRe: Float64Array, outIm: Float64Array): void;
478
400
  /** Real unary elemwise: out[i] = OP(a[i]). op codes per OpUnary. */
479
- tensorOpRealUnary?(op: number, n: number, a: Float64Array, out: Float64Array): void;
401
+ tensorOpRealUnary(op: number, n: number, a: Float64Array, out: Float64Array): void;
480
402
  /** Complex unary elemwise (split storage). aIm may be null. ABS unsupported. */
481
- tensorOpComplexUnary?(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, outRe: Float64Array, outIm: Float64Array): void;
403
+ tensorOpComplexUnary(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, outRe: Float64Array, outIm: Float64Array): void;
482
404
  /** Complex absolute value (real-valued output). aIm may be null. */
483
- tensorOpComplexAbs?(n: number, aRe: Float64Array, aIm: Float64Array | null, out: Float64Array): void;
405
+ tensorOpComplexAbs(n: number, aRe: Float64Array, aIm: Float64Array | null, out: Float64Array): void;
484
406
  /** Real comparison: out[i] = (a[i] OP b[i]) ? 1 : 0. */
485
- tensorOpRealComparison?(op: number, n: number, a: Float64Array, b: Float64Array, out: Float64Array): void;
407
+ tensorOpRealComparison(op: number, n: number, a: Float64Array, b: Float64Array, out: Float64Array): void;
486
408
  /** Real scalar-tensor comparison. */
487
- tensorOpRealScalarComparison?(op: number, n: number, scalar: number, arr: Float64Array, scalarOnLeft: boolean, out: Float64Array): void;
409
+ tensorOpRealScalarComparison(op: number, n: number, scalar: number, arr: Float64Array, scalarOnLeft: boolean, out: Float64Array): void;
488
410
  /** Complex comparison. EQ/NE use both parts; LT/LE/GT/GE use real parts. */
489
- tensorOpComplexComparison?(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, bRe: Float64Array, bIm: Float64Array | null, out: Float64Array): void;
411
+ tensorOpComplexComparison(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, bRe: Float64Array, bIm: Float64Array | null, out: Float64Array): void;
490
412
  /** Complex scalar-tensor comparison. */
491
- tensorOpComplexScalarComparison?(op: number, n: number, sRe: number, sIm: number, arrRe: Float64Array, arrIm: Float64Array | null, scalarOnLeft: boolean, out: Float64Array): void;
413
+ tensorOpComplexScalarComparison(op: number, n: number, sRe: number, sIm: number, arrRe: Float64Array, arrIm: Float64Array | null, scalarOnLeft: boolean, out: Float64Array): void;
492
414
  /** Flat real reduction (output is a 1-element Float64Array). */
493
- tensorOpRealFlatReduce?(op: number, n: number, a: Float64Array, out: Float64Array): void;
415
+ tensorOpRealFlatReduce(op: number, n: number, a: Float64Array, out: Float64Array): void;
494
416
  /** Flat complex reduction. outIm may be null for ANY/ALL. */
495
- tensorOpComplexFlatReduce?(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, outRe: Float64Array, outIm: Float64Array | null): void;
417
+ tensorOpComplexFlatReduce(op: number, n: number, aRe: Float64Array, aIm: Float64Array | null, outRe: Float64Array, outIm: Float64Array | null): void;
496
418
  /**
497
419
  * Real Bessel tensor op: out[i] = besselX(nu, z[i]).
498
420
  * op codes per OpBessel. scale: 0 unscaled, 1 scaled.
499
421
  */
500
- tensorOpBesselReal?(op: number, nu: number, n: number, z: Float64Array, scale: number, out: Float64Array): void;
422
+ tensorOpBesselReal(op: number, nu: number, n: number, z: Float64Array, scale: number, out: Float64Array): void;
501
423
  /**
502
424
  * Hankel function tensor op (complex output, real input).
503
425
  * kKind: 1 → J + i*Y; 2 → J - i*Y.
504
426
  */
505
- tensorOpBesselH?(kKind: number, nu: number, n: number, z: Float64Array, scale: number, outRe: Float64Array, outIm: Float64Array): void;
427
+ tensorOpBesselH(kKind: number, nu: number, n: number, z: Float64Array, scale: number, outRe: Float64Array, outIm: Float64Array): void;
428
+ /** Returns the native addon's version number. */
429
+ addonVersion?(): number;
506
430
  /** Dump op-code enum values as a stable string (drift detection). */
507
431
  tensorOpDumpCodes?(): string;
432
+ /**
433
+ * Forward/inverse 1D FFT on real input via FFTW.
434
+ * Does NOT normalize for inverse — caller handles 1/n scaling.
435
+ * @param re Real input data as Float64Array of length n.
436
+ * @param n Transform length.
437
+ * @param inverse true for inverse FFT, false for forward.
438
+ * @returns { re, im } Float64Arrays of length n.
439
+ */
440
+ fft1d?(re: Float64Array, n: number, inverse: boolean): {
441
+ re: Float64Array;
442
+ im: Float64Array;
443
+ };
444
+ /**
445
+ * Forward/inverse 1D FFT on complex input via FFTW.
446
+ * Does NOT normalize for inverse — caller handles 1/n scaling.
447
+ * @param re Real part of input as Float64Array of length n.
448
+ * @param im Imaginary part of input as Float64Array of length n.
449
+ * @param n Transform length.
450
+ * @param inverse true for inverse FFT, false for forward.
451
+ * @returns { re, im } Float64Arrays of length n.
452
+ */
453
+ fft1dComplex?(re: Float64Array, im: Float64Array, n: number, inverse: boolean): {
454
+ re: Float64Array;
455
+ im: Float64Array;
456
+ };
457
+ /**
458
+ * Batch FFT along a single dimension of a column-major tensor via FFTW.
459
+ * Transforms ALL fibers in one FFTW call using the guru split interface.
460
+ * Does NOT normalize for inverse — caller handles 1/n scaling.
461
+ * @param re Real part of input tensor (column-major flat array).
462
+ * @param im Imaginary part, or null for real input.
463
+ * @param shape Tensor dimensions as a JS array of numbers.
464
+ * @param dim 0-based dimension to transform along.
465
+ * @param n FFT length (may differ from shape[dim] for pad/truncate).
466
+ * @param inverse true for inverse FFT, false for forward.
467
+ * @returns { re, im } Float64Arrays for the output tensor.
468
+ */
469
+ fftAlongDim?(re: Float64Array, im: Float64Array | null, shape: number[], dim: number, n: number, inverse: boolean): {
470
+ re: Float64Array;
471
+ im: Float64Array;
472
+ };
473
+ /**
474
+ * Bulk fill normal random values using Marsaglia polar + xoshiro128**.
475
+ * State is mutated in-place. Spare is passed in/out to preserve pair caching.
476
+ */
477
+ fillRandn?(state: Uint32Array, n: number, spare: number, hasSpare: boolean): {
478
+ data: Float64Array;
479
+ spare: number;
480
+ hasSpare: boolean;
481
+ };
508
482
  }
509
- export declare function setLapackBridge(bridge: LapackBridge): void;
510
- export declare function getLapackBridge(): LapackBridge | null;
483
+ /** Set (or clear) the sink for the one-time "bridge in use" diagnostic. */
484
+ export declare function setBridgeLog(log: ((message: string) => void) | null): void;
485
+ /**
486
+ * Install an accelerated bridge (native addon, wasm module, test stub), or
487
+ * clear it with null. Entries it omits fall back to TypeScript.
488
+ */
489
+ export declare function setLapackBridge(bridge: Partial<LapackBridge> | null): void;
490
+ /** The complete bridge: installed entries over the TypeScript ones. */
491
+ export declare function getLapackBridge(): LapackBridge;
@@ -1,9 +1,8 @@
1
1
  /**
2
- * Pure-TypeScript LAPACK bridge — implements the LapackBridge interface using
3
- * the ts-lapack translations of LAPACK Fortran routines.
4
- *
5
- * This is always available (no native addon required) and is used as the
6
- * fallback when the native C++ addon is not loaded (e.g. in the browser).
2
+ * Pure-TypeScript LAPACK bridge: implements the LapackBridge interface with
3
+ * the ts-lapack translations of LAPACK Fortran routines and the ops-layer
4
+ * tensor kernels. getLapackBridge() uses it for every entry the installed
5
+ * (native) bridge does not provide, e.g. everything in the browser.
7
6
  */
8
7
  import type { LapackBridge } from "./lapack-bridge.js";
9
8
  export declare function getTsLapackBridge(): LapackBridge;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Complex scalar helpers and ZLARFG shared by the ts-lapack complex
3
+ * routines (eig, Hermitian eig, QR). Split real/imag storage throughout.
4
+ */
5
+ export declare const EPS = 2.220446049250313e-16;
6
+ export declare const SAFMIN = 2.2250738585072014e-308;
7
+ /** |Re| + |Im| (LAPACK CABS1). */
8
+ export declare function cabs1(re: number, im: number): number;
9
+ /** Fortran SIGN(mag, s): |mag| with the sign of s. */
10
+ export declare function fsign(mag: number, s: number): number;
11
+ /** Robust complex divide (a/b) via Smith's algorithm (ZLADIV). */
12
+ export declare function cdiv(ar: number, ai: number, br: number, bi: number): [number, number];
13
+ /** sqrt(x^2 + y^2 + z^2) without spurious over/underflow (DLAPY3). */
14
+ export declare function dlapy3(x: number, y: number, z: number): number;
15
+ /** DZNRM2 over x(off), x(off+incx), ... (n elements). */
16
+ export declare function dznrm2(n: number, re: Float64Array, im: Float64Array, off: number, incx: number): number;
17
+ /**
18
+ * ZLARFG: generate a complex elementary reflector H = I - tau*v*v^H with
19
+ * H^H * [alpha; x] = [beta; 0] and beta real. On entry re/im[off] = alpha and
20
+ * X is re/im[off + i*incx], i = 1..n-1; on exit re/im[off] = beta and the X
21
+ * part holds v(2:). Returns tau.
22
+ */
23
+ export declare function zlarfg(n: number, re: Float64Array, im: Float64Array, off: number, incx: number): [number, number];
@@ -0,0 +1,37 @@
1
+ /**
2
+ * QR and LU entry points of the ts-lapack bridge that are not plain calls
3
+ * into src/ts-lapack: real column-pivoted QR, and complex QR (zgeqr2/zung2r),
4
+ * column-pivoted QR (zlaqp2) and LU (zgetf2).
5
+ *
6
+ * The complex routines are unblocked translations that follow the LAPACK
7
+ * conventions (zlarfg: real diagonal of R with beta = -sign(Re(alpha))*norm;
8
+ * izamax pivoting by |re|+|im|) so results agree with MATLAB up to rounding.
9
+ */
10
+ /**
11
+ * Real column-pivoted QR, A*P = Q*R (dgeqp3 + dorgqr equivalent): Householder
12
+ * with greedy pivoting on downdated squared column norms. jpvt is 1-based.
13
+ */
14
+ export declare function qrPivotTs(data: Float64Array, m: number, n: number, econ: boolean): {
15
+ Q: Float64Array;
16
+ R: Float64Array;
17
+ jpvt: Int32Array;
18
+ };
19
+ export declare function qrComplexTs(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean, wantQ: boolean): {
20
+ QRe?: Float64Array;
21
+ QIm?: Float64Array;
22
+ RRe: Float64Array;
23
+ RIm: Float64Array;
24
+ };
25
+ export declare function qrPivotComplexTs(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number, econ: boolean): {
26
+ QRe: Float64Array;
27
+ QIm: Float64Array;
28
+ RRe: Float64Array;
29
+ RIm: Float64Array;
30
+ jpvt: Int32Array;
31
+ };
32
+ /** zgetf2: LU with partial pivoting, L unit lower and U packed in place. */
33
+ export declare function luComplexTs(dataRe: Float64Array, dataIm: Float64Array, m: number, n: number): {
34
+ LURe: Float64Array;
35
+ LUIm: Float64Array;
36
+ ipiv: Int32Array;
37
+ };
@@ -12,9 +12,8 @@
12
12
  *
13
13
  * Two seams are installed from one instantiated module (see
14
14
  * `installWasmLapackBridge`):
15
- * 1. `setLapackBridge()` — covers the *interpreter* path (opt 0), which
16
- * already resolves per-op via `getEffectiveBridge` and falls back to
17
- * ts-lapack for any op the bridge omits.
15
+ * 1. `setLapackBridge()` — covers the *interpreter* path (opt 0);
16
+ * `getLapackBridge()` takes ts-lapack for any op the module omits.
18
17
  * 2. `globalThis.$matmulAccel` — the hook the JS-JIT matmul runtime
19
18
  * snippet consults (opt 1, the browser IDE default), which otherwise
20
19
  * runs a naive JS triple-loop that never touches the bridge.
@@ -85,9 +84,9 @@ export declare function makeWasmMatmul(exports: WasmLapackExports): MatmulFn;
85
84
  /**
86
85
  * Assemble a (partial) `LapackBridge` from an instantiated module, exposing
87
86
  * only the ops the manifest advertises. Ops the bridge omits resolve to
88
- * ts-lapack via `getEffectiveBridge`.
87
+ * ts-lapack in `getLapackBridge`.
89
88
  */
90
- export declare function buildLapackBridgeFromWasm(exports: WasmLapackExports, manifest: AcceleratorManifest): LapackBridge;
89
+ export declare function buildLapackBridgeFromWasm(exports: WasmLapackExports, manifest: AcceleratorManifest): Partial<LapackBridge>;
91
90
  /**
92
91
  * Install/remove the JS-JIT matmul accelerator hook (`globalThis.$matmulAccel`)
93
92
  * that `mtoc2_tensor_mtimes_real` consults. Pass `null` to uninstall.
@@ -1,11 +1,10 @@
1
1
  /**
2
- * Tensor-ops dispatcher: chooses native bridge or pure-TS fallback.
2
+ * Tensor-ops entry points: thin wrappers over the LAPACK bridge's tensorOp*
3
+ * kernels (native addon when installed, the TS kernels in this directory
4
+ * otherwise; see native/lapack-bridge.ts).
3
5
  *
4
- * All entry points have identical signatures across native and TS impls.
5
6
  * Caller owns input AND output memory; functions never allocate output.
6
- *
7
- * Selection happens once on first use per category and is cached
8
- * (the bridge identity is captured at module load via getLapackBridge()).
7
+ * Element-wise ops skip the bridge entirely for empty inputs.
9
8
  */
10
9
  export declare const tensorOps: {
11
10
  realBinaryElemwise(op: number, n: number, a: Float64Array, b: Float64Array, out: Float64Array): void;
@@ -313,7 +313,7 @@ export type Stmt = {
313
313
  type: "ClassDef";
314
314
  name: string;
315
315
  classAttributes: Attr[];
316
- superClass: string | null;
316
+ superClasses: string[];
317
317
  members: ClassMember[];
318
318
  span: Span;
319
319
  } | {
@@ -322,26 +322,6 @@ export type Stmt = {
322
322
  directive: string;
323
323
  args: string[];
324
324
  span: Span;
325
- } | {
326
- /** Synthetic stmt produced by an executor-registered AST
327
- * transformer (e.g. the C-JIT chain pass). Wraps a contiguous
328
- * run of original stmts so a specialized executor can claim
329
- * them as a unit; the interpreter falls back to executing
330
- * `subStmts` in order when the executor isn't registered or
331
- * declines.
332
- *
333
- * Never produced by the parser. */
334
- type: "Synth";
335
- /** Identifies the executor that this synth node was built for
336
- * (e.g. `"c-jit-chain"`). The matching executor reads `data`. */
337
- tag: string;
338
- /** Original adjacent stmts, in source order. Used by the
339
- * interpreter fallback. */
340
- subStmts: Stmt[];
341
- /** Executor-specific pre-computed analysis. Opaque to the
342
- * interpreter. */
343
- data: unknown;
344
- span: Span;
345
325
  };
346
326
  export interface AbstractSyntaxTree {
347
327
  body: Stmt[];
@@ -19,8 +19,8 @@
19
19
  * `lim = axis(ax)` carry no setting argument; the runtime detects them via
20
20
  * the `false` return value and computes the limits separately.
21
21
  */
22
- import type { RuntimeValue } from "./types.js";
23
- import type { PlotInstruction } from "../../graphics/types.js";
22
+ import type { RuntimeValue } from "../runtime/types.js";
23
+ import type { PlotInstruction } from "./types.js";
24
24
  /**
25
25
  * Process an `axis(...)` call, pushing instructions onto `instructions`.
26
26
  *
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * This is the source of truth for the query form `lim = axis`: the numbl
5
5
  * runtime reduces its accumulated plot instructions into an `AxesState` and
6
- * asks this module for the limit vector. It is deliberately rendering-free
7
- * (no canvas, no DOM) so numbl-core can import it.
6
+ * asks this module for the limit vector. It is rendering-free (no canvas, no
7
+ * DOM); the renderer in src/graphics/ uses it too.
8
8
  *
9
9
  * For an axis with an explicit limit, that limit is returned verbatim (a
10
10
  * `null` bound falls back to the data-derived bound). For a fully automatic
@@ -13,11 +13,23 @@
13
13
  * what is drawn.
14
14
  */
15
15
  import type { AxesState } from "./figuresReducer.js";
16
+ type Extent = {
17
+ min: number;
18
+ max: number;
19
+ };
16
20
  /** Does this axes hold any 3-D content (so limits are a 6-vector)? */
17
21
  export declare function axesIs3D(axes: AxesState): boolean;
22
+ /** Raw data extents (no padding) across every renderable trace type.
23
+ * Non-finite values are ignored; an empty axis has min > max. */
24
+ export declare function dataExtents(axes: Partial<AxesState>): {
25
+ x: Extent;
26
+ y: Extent;
27
+ z: Extent;
28
+ };
18
29
  /**
19
30
  * Compute the limit vector for `lim = axis`.
20
31
  * Returns 4 elements `[xmin xmax ymin ymax]` for a 2-D view, or 6 elements
21
32
  * `[xmin xmax ymin ymax zmin zmax]` when the axes holds 3-D content.
22
33
  */
23
34
  export declare function computeAxisLimits(axes: AxesState): number[];
35
+ export {};