numbl 0.3.0 → 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.
Files changed (403) hide show
  1. package/binding.gyp +17 -33
  2. package/dist-cli/cli.js +61511 -46223
  3. package/dist-lib/graphics/types.d.ts +22 -0
  4. package/dist-lib/lib.js +37582 -22275
  5. package/dist-lib/numbl-core/executeCode.d.ts +11 -16
  6. package/dist-lib/numbl-core/executors/cache.d.ts +26 -0
  7. package/dist-lib/numbl-core/executors/classification.d.ts +134 -0
  8. package/dist-lib/numbl-core/executors/context.d.ts +76 -0
  9. package/dist-lib/numbl-core/executors/handleInline.d.ts +42 -0
  10. package/dist-lib/numbl-core/executors/index.d.ts +14 -0
  11. package/dist-lib/numbl-core/executors/jit/cJitCallExecutor.d.ts +35 -0
  12. package/dist-lib/numbl-core/executors/jit/cJitLoopExecutor.d.ts +31 -0
  13. package/dist-lib/numbl-core/executors/jit/cJitTopLevelExecutor.d.ts +29 -0
  14. package/dist-lib/numbl-core/executors/jit/callExecutor.d.ts +45 -0
  15. package/dist-lib/numbl-core/executors/jit/compileC.d.ts +51 -0
  16. package/dist-lib/numbl-core/executors/jit/compileC.node.d.ts +25 -0
  17. package/dist-lib/numbl-core/executors/jit/hostHelpers.d.ts +27 -0
  18. package/dist-lib/numbl-core/executors/jit/loopExecutor.d.ts +41 -0
  19. package/dist-lib/numbl-core/executors/jit/session.d.ts +17 -0
  20. package/dist-lib/numbl-core/executors/jit/topLevelExecutor.d.ts +36 -0
  21. package/dist-lib/numbl-core/executors/jit/typeAdapter.d.ts +28 -0
  22. package/dist-lib/numbl-core/executors/jit/typeAdapterC.d.ts +73 -0
  23. package/dist-lib/numbl-core/executors/jit/valueAdapter.d.ts +48 -0
  24. package/dist-lib/numbl-core/executors/jit/valueAdapterC.d.ts +108 -0
  25. package/dist-lib/numbl-core/executors/lowering.d.ts +120 -0
  26. package/dist-lib/numbl-core/executors/plugins.d.ts +32 -0
  27. package/dist-lib/numbl-core/executors/registry.d.ts +148 -0
  28. package/dist-lib/numbl-core/executors/types.d.ts +103 -0
  29. package/dist-lib/numbl-core/functionResolve.d.ts +7 -0
  30. package/dist-lib/numbl-core/helpers/check-helpers.d.ts +4 -5
  31. package/dist-lib/numbl-core/helpers/linsolve.d.ts +2 -3
  32. package/dist-lib/numbl-core/helpers/prng.d.ts +1 -2
  33. package/dist-lib/numbl-core/helpers/reduction-helpers.d.ts +4 -1
  34. package/dist-lib/numbl-core/interpreter/builtins/datetime.d.ts +2 -1
  35. package/dist-lib/numbl-core/interpreter/builtins/index.d.ts +1 -1
  36. package/dist-lib/numbl-core/interpreter/builtins/misc.d.ts +4 -1
  37. package/dist-lib/numbl-core/interpreter/builtins/types.d.ts +4 -109
  38. package/dist-lib/numbl-core/interpreter/interpreter.d.ts +51 -49
  39. package/dist-lib/numbl-core/interpreter/interpreterExec.d.ts +6 -0
  40. package/dist-lib/numbl-core/interpreter/interpreterSpecialBuiltins.d.ts +6 -3
  41. package/dist-lib/numbl-core/interpreter/types.d.ts +27 -12
  42. package/dist-lib/numbl-core/jit/builtins/defs/_shared.d.ts +43 -0
  43. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/_elemwise.d.ts +123 -0
  44. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/minus.d.ts +2 -0
  45. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/mpower.d.ts +12 -0
  46. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/mrdivide.d.ts +5 -0
  47. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/mtimes.d.ts +2 -0
  48. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/plus.d.ts +2 -0
  49. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/power.d.ts +30 -0
  50. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/rdivide.d.ts +2 -0
  51. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/times.d.ts +2 -0
  52. package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/uminus.d.ts +2 -0
  53. package/dist-lib/numbl-core/jit/builtins/defs/compare/_compare.d.ts +12 -0
  54. package/dist-lib/numbl-core/jit/builtins/defs/compare/eq.d.ts +2 -0
  55. package/dist-lib/numbl-core/jit/builtins/defs/compare/ge.d.ts +2 -0
  56. package/dist-lib/numbl-core/jit/builtins/defs/compare/gt.d.ts +2 -0
  57. package/dist-lib/numbl-core/jit/builtins/defs/compare/le.d.ts +2 -0
  58. package/dist-lib/numbl-core/jit/builtins/defs/compare/lt.d.ts +2 -0
  59. package/dist-lib/numbl-core/jit/builtins/defs/compare/ne.d.ts +2 -0
  60. package/dist-lib/numbl-core/jit/builtins/defs/diag/assert.d.ts +6 -0
  61. package/dist-lib/numbl-core/jit/builtins/defs/io/_format_args.d.ts +17 -0
  62. package/dist-lib/numbl-core/jit/builtins/defs/io/disp.d.ts +2 -0
  63. package/dist-lib/numbl-core/jit/builtins/defs/io/error.d.ts +2 -0
  64. package/dist-lib/numbl-core/jit/builtins/defs/io/fprintf.d.ts +2 -0
  65. package/dist-lib/numbl-core/jit/builtins/defs/io/sprintf.d.ts +2 -0
  66. package/dist-lib/numbl-core/jit/builtins/defs/io/warning.d.ts +15 -0
  67. package/dist-lib/numbl-core/jit/builtins/defs/logical/_shortcircuit.d.ts +30 -0
  68. package/dist-lib/numbl-core/jit/builtins/defs/logical/_unary_pred.d.ts +30 -0
  69. package/dist-lib/numbl-core/jit/builtins/defs/logical/and.d.ts +5 -0
  70. package/dist-lib/numbl-core/jit/builtins/defs/logical/andand.d.ts +1 -0
  71. package/dist-lib/numbl-core/jit/builtins/defs/logical/boolconst.d.ts +3 -0
  72. package/dist-lib/numbl-core/jit/builtins/defs/logical/classBuiltin.d.ts +21 -0
  73. package/dist-lib/numbl-core/jit/builtins/defs/logical/fieldnames.d.ts +15 -0
  74. package/dist-lib/numbl-core/jit/builtins/defs/logical/isa.d.ts +13 -0
  75. package/dist-lib/numbl-core/jit/builtins/defs/logical/iscell.d.ts +8 -0
  76. package/dist-lib/numbl-core/jit/builtins/defs/logical/isempty.d.ts +2 -0
  77. package/dist-lib/numbl-core/jit/builtins/defs/logical/isequal.d.ts +2 -0
  78. package/dist-lib/numbl-core/jit/builtins/defs/logical/isfield.d.ts +20 -0
  79. package/dist-lib/numbl-core/jit/builtins/defs/logical/isinf.d.ts +2 -0
  80. package/dist-lib/numbl-core/jit/builtins/defs/logical/isnan.d.ts +1 -0
  81. package/dist-lib/numbl-core/jit/builtins/defs/logical/isnumeric.d.ts +7 -0
  82. package/dist-lib/numbl-core/jit/builtins/defs/logical/isreal.d.ts +2 -0
  83. package/dist-lib/numbl-core/jit/builtins/defs/logical/isscalar.d.ts +20 -0
  84. package/dist-lib/numbl-core/jit/builtins/defs/logical/isstruct.d.ts +7 -0
  85. package/dist-lib/numbl-core/jit/builtins/defs/logical/logical.d.ts +1 -0
  86. package/dist-lib/numbl-core/jit/builtins/defs/logical/not.d.ts +15 -0
  87. package/dist-lib/numbl-core/jit/builtins/defs/logical/or.d.ts +11 -0
  88. package/dist-lib/numbl-core/jit/builtins/defs/logical/oror.d.ts +1 -0
  89. package/dist-lib/numbl-core/jit/builtins/defs/logical/strcmp.d.ts +21 -0
  90. package/dist-lib/numbl-core/jit/builtins/defs/logical/typequery.d.ts +10 -0
  91. package/dist-lib/numbl-core/jit/builtins/defs/logical/xor.d.ts +12 -0
  92. package/dist-lib/numbl-core/jit/builtins/defs/math/_complex_fold.d.ts +34 -0
  93. package/dist-lib/numbl-core/jit/builtins/defs/math/_unary_real.d.ts +51 -0
  94. package/dist-lib/numbl-core/jit/builtins/defs/math/abs.d.ts +7 -0
  95. package/dist-lib/numbl-core/jit/builtins/defs/math/angle.d.ts +7 -0
  96. package/dist-lib/numbl-core/jit/builtins/defs/math/asinh.d.ts +1 -0
  97. package/dist-lib/numbl-core/jit/builtins/defs/math/atan.d.ts +1 -0
  98. package/dist-lib/numbl-core/jit/builtins/defs/math/atan2.d.ts +3 -0
  99. package/dist-lib/numbl-core/jit/builtins/defs/math/besselh.d.ts +2 -0
  100. package/dist-lib/numbl-core/jit/builtins/defs/math/ceil.d.ts +4 -0
  101. package/dist-lib/numbl-core/jit/builtins/defs/math/conj.d.ts +7 -0
  102. package/dist-lib/numbl-core/jit/builtins/defs/math/constants.d.ts +7 -0
  103. package/dist-lib/numbl-core/jit/builtins/defs/math/cos.d.ts +1 -0
  104. package/dist-lib/numbl-core/jit/builtins/defs/math/cosh.d.ts +1 -0
  105. package/dist-lib/numbl-core/jit/builtins/defs/math/dot.d.ts +20 -0
  106. package/dist-lib/numbl-core/jit/builtins/defs/math/double.d.ts +28 -0
  107. package/dist-lib/numbl-core/jit/builtins/defs/math/exp.d.ts +1 -0
  108. package/dist-lib/numbl-core/jit/builtins/defs/math/fix.d.ts +4 -0
  109. package/dist-lib/numbl-core/jit/builtins/defs/math/floor.d.ts +4 -0
  110. package/dist-lib/numbl-core/jit/builtins/defs/math/hypot.d.ts +3 -0
  111. package/dist-lib/numbl-core/jit/builtins/defs/math/imag.d.ts +7 -0
  112. package/dist-lib/numbl-core/jit/builtins/defs/math/linspace.d.ts +6 -0
  113. package/dist-lib/numbl-core/jit/builtins/defs/math/log.d.ts +4 -0
  114. package/dist-lib/numbl-core/jit/builtins/defs/math/log10.d.ts +3 -0
  115. package/dist-lib/numbl-core/jit/builtins/defs/math/log2.d.ts +5 -0
  116. package/dist-lib/numbl-core/jit/builtins/defs/math/logspace.d.ts +8 -0
  117. package/dist-lib/numbl-core/jit/builtins/defs/math/mod.d.ts +1 -0
  118. package/dist-lib/numbl-core/jit/builtins/defs/math/norm.d.ts +2 -0
  119. package/dist-lib/numbl-core/jit/builtins/defs/math/real.d.ts +7 -0
  120. package/dist-lib/numbl-core/jit/builtins/defs/math/rem.d.ts +3 -0
  121. package/dist-lib/numbl-core/jit/builtins/defs/math/round.d.ts +1 -0
  122. package/dist-lib/numbl-core/jit/builtins/defs/math/sign.d.ts +5 -0
  123. package/dist-lib/numbl-core/jit/builtins/defs/math/sin.d.ts +1 -0
  124. package/dist-lib/numbl-core/jit/builtins/defs/math/sinh.d.ts +1 -0
  125. package/dist-lib/numbl-core/jit/builtins/defs/math/sqrt.d.ts +11 -0
  126. package/dist-lib/numbl-core/jit/builtins/defs/math/tan.d.ts +1 -0
  127. package/dist-lib/numbl-core/jit/builtins/defs/math/tanh.d.ts +1 -0
  128. package/dist-lib/numbl-core/jit/builtins/defs/math/uniquetol.d.ts +22 -0
  129. package/dist-lib/numbl-core/jit/builtins/defs/plot/dispatch.d.ts +6 -0
  130. package/dist-lib/numbl-core/jit/builtins/defs/reduction/_cumulative.d.ts +49 -0
  131. package/dist-lib/numbl-core/jit/builtins/defs/reduction/_shape.d.ts +126 -0
  132. package/dist-lib/numbl-core/jit/builtins/defs/reduction/_variance.d.ts +17 -0
  133. package/dist-lib/numbl-core/jit/builtins/defs/reduction/all.d.ts +1 -0
  134. package/dist-lib/numbl-core/jit/builtins/defs/reduction/any.d.ts +1 -0
  135. package/dist-lib/numbl-core/jit/builtins/defs/reduction/cummax.d.ts +1 -0
  136. package/dist-lib/numbl-core/jit/builtins/defs/reduction/cummin.d.ts +1 -0
  137. package/dist-lib/numbl-core/jit/builtins/defs/reduction/cumprod.d.ts +1 -0
  138. package/dist-lib/numbl-core/jit/builtins/defs/reduction/cumsum.d.ts +1 -0
  139. package/dist-lib/numbl-core/jit/builtins/defs/reduction/diff.d.ts +16 -0
  140. package/dist-lib/numbl-core/jit/builtins/defs/reduction/length.d.ts +2 -0
  141. package/dist-lib/numbl-core/jit/builtins/defs/reduction/max.d.ts +1 -0
  142. package/dist-lib/numbl-core/jit/builtins/defs/reduction/mean.d.ts +1 -0
  143. package/dist-lib/numbl-core/jit/builtins/defs/reduction/min.d.ts +1 -0
  144. package/dist-lib/numbl-core/jit/builtins/defs/reduction/numel.d.ts +2 -0
  145. package/dist-lib/numbl-core/jit/builtins/defs/reduction/prod.d.ts +1 -0
  146. package/dist-lib/numbl-core/jit/builtins/defs/reduction/std.d.ts +1 -0
  147. package/dist-lib/numbl-core/jit/builtins/defs/reduction/sum.d.ts +1 -0
  148. package/dist-lib/numbl-core/jit/builtins/defs/reduction/var.d.ts +1 -0
  149. package/dist-lib/numbl-core/jit/builtins/defs/shape/_construct.d.ts +67 -0
  150. package/dist-lib/numbl-core/jit/builtins/defs/shape/_triangular.d.ts +34 -0
  151. package/dist-lib/numbl-core/jit/builtins/defs/shape/cat.d.ts +33 -0
  152. package/dist-lib/numbl-core/jit/builtins/defs/shape/diag.d.ts +29 -0
  153. package/dist-lib/numbl-core/jit/builtins/defs/shape/eye.d.ts +5 -0
  154. package/dist-lib/numbl-core/jit/builtins/defs/shape/flip.d.ts +7 -0
  155. package/dist-lib/numbl-core/jit/builtins/defs/shape/meshgrid.d.ts +12 -0
  156. package/dist-lib/numbl-core/jit/builtins/defs/shape/ones.d.ts +1 -0
  157. package/dist-lib/numbl-core/jit/builtins/defs/shape/repmat.d.ts +37 -0
  158. package/dist-lib/numbl-core/jit/builtins/defs/shape/reshape.d.ts +39 -0
  159. package/dist-lib/numbl-core/jit/builtins/defs/shape/size.d.ts +20 -0
  160. package/dist-lib/numbl-core/jit/builtins/defs/shape/sort.d.ts +19 -0
  161. package/dist-lib/numbl-core/jit/builtins/defs/shape/transpose.d.ts +6 -0
  162. package/dist-lib/numbl-core/jit/builtins/defs/shape/tril.d.ts +16 -0
  163. package/dist-lib/numbl-core/jit/builtins/defs/shape/triu.d.ts +16 -0
  164. package/dist-lib/numbl-core/jit/builtins/defs/shape/zeros.d.ts +1 -0
  165. package/dist-lib/numbl-core/jit/builtins/defs/system/deal.d.ts +20 -0
  166. package/dist-lib/numbl-core/jit/builtins/defs/system/feval.d.ts +36 -0
  167. package/dist-lib/numbl-core/jit/builtins/defs/system/pathBuiltins.d.ts +4 -0
  168. package/dist-lib/numbl-core/jit/builtins/defs/system/tic.d.ts +8 -0
  169. package/dist-lib/numbl-core/jit/builtins/defs/system/toc.d.ts +5 -0
  170. package/dist-lib/numbl-core/jit/builtins/index.d.ts +16 -0
  171. package/dist-lib/numbl-core/jit/builtins/registry.d.ts +138 -0
  172. package/dist-lib/numbl-core/jit/builtins/runtime/cell/cell.d.ts +24 -0
  173. package/dist-lib/numbl-core/jit/builtins/runtime/indexing/loop_count.d.ts +1 -0
  174. package/dist-lib/numbl-core/jit/builtins/runtime/indexing/range_value.d.ts +1 -0
  175. package/dist-lib/numbl-core/jit/builtins/runtime/indexing/scalar_index.d.ts +11 -0
  176. package/dist-lib/numbl-core/jit/builtins/runtime/indexing/tensor_make_range.d.ts +5 -0
  177. package/dist-lib/numbl-core/jit/builtins/runtime/io/assert_fmt.d.ts +1 -0
  178. package/dist-lib/numbl-core/jit/builtins/runtime/io/disp_complex.d.ts +1 -0
  179. package/dist-lib/numbl-core/jit/builtins/runtime/io/disp_double.d.ts +1 -0
  180. package/dist-lib/numbl-core/jit/builtins/runtime/io/disp_struct.d.ts +1 -0
  181. package/dist-lib/numbl-core/jit/builtins/runtime/io/disp_tensor.d.ts +1 -0
  182. package/dist-lib/numbl-core/jit/builtins/runtime/io/disp_tensor_complex.d.ts +1 -0
  183. package/dist-lib/numbl-core/jit/builtins/runtime/io/error_fmt.d.ts +2 -0
  184. package/dist-lib/numbl-core/jit/builtins/runtime/io/format_complex.d.ts +1 -0
  185. package/dist-lib/numbl-core/jit/builtins/runtime/io/format_double.d.ts +1 -0
  186. package/dist-lib/numbl-core/jit/builtins/runtime/io/format_engine.d.ts +1 -0
  187. package/dist-lib/numbl-core/jit/builtins/runtime/io/fprintf.d.ts +1 -0
  188. package/dist-lib/numbl-core/jit/builtins/runtime/io/sprintf.d.ts +5 -0
  189. package/dist-lib/numbl-core/jit/builtins/runtime/io/warning_fmt.d.ts +2 -0
  190. package/dist-lib/numbl-core/jit/builtins/runtime/plot/plot_dispatch.d.ts +1 -0
  191. package/dist-lib/numbl-core/jit/builtins/runtime/snippets.gen.d.ts +86 -0
  192. package/dist-lib/numbl-core/jit/builtins/runtime/system/cdiv.d.ts +4 -0
  193. package/dist-lib/numbl-core/jit/builtins/runtime/system/cscalar.d.ts +103 -0
  194. package/dist-lib/numbl-core/jit/builtins/runtime/system/deep_clone.d.ts +1 -0
  195. package/dist-lib/numbl-core/jit/builtins/runtime/system/isequal.d.ts +2 -0
  196. package/dist-lib/numbl-core/jit/builtins/runtime/system/tictoc.d.ts +5 -0
  197. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor.d.ts +6 -0
  198. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_alloc.d.ts +5 -0
  199. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_alloc_complex.d.ts +6 -0
  200. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_alloc_nd.d.ts +5 -0
  201. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_alloc_nd_complex.d.ts +6 -0
  202. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_copy_complex.d.ts +6 -0
  203. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_from_matrix.d.ts +5 -0
  204. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_from_matrix_complex.d.ts +6 -0
  205. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_from_row.d.ts +5 -0
  206. package/dist-lib/numbl-core/jit/builtins/runtime/tensor/tensor_from_row_complex.d.ts +6 -0
  207. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_cat.d.ts +11 -0
  208. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_cumulative.d.ts +32 -0
  209. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_diag.d.ts +33 -0
  210. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_diff.d.ts +5 -0
  211. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_dot.d.ts +16 -0
  212. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_elemwise_complex.d.ts +90 -0
  213. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_elemwise_real.d.ts +75 -0
  214. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_elemwise_real_fn.d.ts +95 -0
  215. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_eye.d.ts +10 -0
  216. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_fill_nd.d.ts +11 -0
  217. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_fill_square.d.ts +5 -0
  218. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_flip.d.ts +11 -0
  219. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_linspace.d.ts +5 -0
  220. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_logical_real.d.ts +10 -0
  221. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_logspace.d.ts +5 -0
  222. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_meshgrid.d.ts +29 -0
  223. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_mtimes_complex.d.ts +10 -0
  224. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_mtimes_real.d.ts +6 -0
  225. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_norm.d.ts +4 -0
  226. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_ones_nd.d.ts +5 -0
  227. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_ones_square.d.ts +5 -0
  228. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_predicate.d.ts +42 -0
  229. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reduce_complex.d.ts +53 -0
  230. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reduce_real.d.ts +42 -0
  231. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_repmat.d.ts +11 -0
  232. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reshape_nd.d.ts +5 -0
  233. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reshape_nd_complex.d.ts +6 -0
  234. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_size.d.ts +5 -0
  235. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_sort_real.d.ts +36 -0
  236. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_transpose.d.ts +5 -0
  237. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_transpose_complex.d.ts +6 -0
  238. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_triangular.d.ts +22 -0
  239. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_unary_complex_math.d.ts +128 -0
  240. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_unary_real_math.d.ts +95 -0
  241. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_uniquetol.d.ts +5 -0
  242. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_var.d.ts +12 -0
  243. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_zeros_nd.d.ts +5 -0
  244. package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_zeros_square.d.ts +5 -0
  245. package/dist-lib/numbl-core/jit/builtins/runtime/text/strcmp.d.ts +2 -0
  246. package/dist-lib/numbl-core/jit/codegen/cFormat.d.ts +36 -0
  247. package/dist-lib/numbl-core/jit/codegen/cHelpers.d.ts +48 -0
  248. package/dist-lib/numbl-core/jit/codegen/emit.d.ts +55 -0
  249. package/dist-lib/numbl-core/jit/codegen/emitCellTypedef.d.ts +23 -0
  250. package/dist-lib/numbl-core/jit/codegen/emitExpr.d.ts +33 -0
  251. package/dist-lib/numbl-core/jit/codegen/emitIndex.d.ts +56 -0
  252. package/dist-lib/numbl-core/jit/codegen/emitJs.d.ts +64 -0
  253. package/dist-lib/numbl-core/jit/codegen/emitNamedTypedef.d.ts +58 -0
  254. package/dist-lib/numbl-core/jit/codegen/emitStmt.d.ts +76 -0
  255. package/dist-lib/numbl-core/jit/codegen/emitTensorConcat.d.ts +23 -0
  256. package/dist-lib/numbl-core/jit/codegen/emitTensorConcatJs.d.ts +16 -0
  257. package/dist-lib/numbl-core/jit/codegen/emitTensorFused.d.ts +77 -0
  258. package/dist-lib/numbl-core/jit/codegen/inlinePass.d.ts +66 -0
  259. package/dist-lib/numbl-core/jit/codegen/liveness.d.ts +58 -0
  260. package/dist-lib/numbl-core/jit/codegen/prettyIR.d.ts +24 -0
  261. package/dist-lib/numbl-core/jit/codegen/runtime.d.ts +150 -0
  262. package/dist-lib/numbl-core/jit/compileSpec.d.ts +84 -0
  263. package/dist-lib/numbl-core/jit/compileSpecC.d.ts +93 -0
  264. package/dist-lib/numbl-core/jit/index.d.ts +13 -5
  265. package/dist-lib/numbl-core/jit/lowering/classDefs.d.ts +109 -0
  266. package/dist-lib/numbl-core/jit/lowering/errors.d.ts +35 -0
  267. package/dist-lib/numbl-core/jit/lowering/indexFold.d.ts +31 -0
  268. package/dist-lib/numbl-core/jit/lowering/indexResolve.d.ts +100 -0
  269. package/dist-lib/numbl-core/jit/lowering/ir.d.ts +584 -0
  270. package/dist-lib/numbl-core/jit/lowering/lower.d.ts +271 -0
  271. package/dist-lib/numbl-core/jit/lowering/lowerCellIndex.d.ts +41 -0
  272. package/dist-lib/numbl-core/jit/lowering/lowerCellLit.d.ts +19 -0
  273. package/dist-lib/numbl-core/jit/lowering/lowerClassConstructor.d.ts +55 -0
  274. package/dist-lib/numbl-core/jit/lowering/lowerFuncCall.d.ts +34 -0
  275. package/dist-lib/numbl-core/jit/lowering/lowerHandle.d.ts +57 -0
  276. package/dist-lib/numbl-core/jit/lowering/lowerIndexLoad.d.ts +16 -0
  277. package/dist-lib/numbl-core/jit/lowering/lowerIndexSlice.d.ts +29 -0
  278. package/dist-lib/numbl-core/jit/lowering/lowerIndexSliceStore.d.ts +19 -0
  279. package/dist-lib/numbl-core/jit/lowering/lowerIndexStore.d.ts +14 -0
  280. package/dist-lib/numbl-core/jit/lowering/lowerMethodCall.d.ts +45 -0
  281. package/dist-lib/numbl-core/jit/lowering/lowerMultiAssign.d.ts +36 -0
  282. package/dist-lib/numbl-core/jit/lowering/lowerTensorLit.d.ts +25 -0
  283. package/dist-lib/numbl-core/jit/lowering/rangeCount.d.ts +19 -0
  284. package/dist-lib/numbl-core/jit/lowering/specialize.d.ts +93 -0
  285. package/dist-lib/numbl-core/jit/lowering/types.d.ts +503 -0
  286. package/dist-lib/numbl-core/jit/lowering/walk.d.ts +17 -0
  287. package/dist-lib/numbl-core/jit/numbl/index.d.ts +30 -0
  288. package/dist-lib/numbl-core/jit/parser/astUtils.d.ts +43 -0
  289. package/dist-lib/numbl-core/jit/parser/index.d.ts +12 -0
  290. package/dist-lib/numbl-core/jit/parser/sourceLoc.d.ts +12 -0
  291. package/dist-lib/numbl-core/jit/runtime/context.d.ts +23 -0
  292. package/dist-lib/numbl-core/jit/runtime/inferType.d.ts +10 -0
  293. package/dist-lib/numbl-core/jit/runtime/value.d.ts +101 -0
  294. package/dist-lib/numbl-core/jit/workspace/driverPrologue.d.ts +59 -0
  295. package/dist-lib/numbl-core/jit/workspace/mtoc2UserFunctionLoader.d.ts +62 -0
  296. package/dist-lib/numbl-core/jit/workspace/workspace.d.ts +243 -0
  297. package/dist-lib/numbl-core/jitTypes.d.ts +94 -0
  298. package/dist-lib/numbl-core/jsUserFunctions.d.ts +10 -2
  299. package/dist-lib/numbl-core/lowering/loweringContext.d.ts +24 -0
  300. package/dist-lib/numbl-core/native/lapack-bridge.d.ts +3 -3
  301. package/dist-lib/numbl-core/parser/ClassParser.d.ts +3 -0
  302. package/dist-lib/numbl-core/parser/types.d.ts +20 -0
  303. package/dist-lib/numbl-core/runtime/alloc.d.ts +12 -23
  304. package/dist-lib/numbl-core/runtime/constructors.d.ts +6 -6
  305. package/dist-lib/numbl-core/runtime/cow.d.ts +33 -0
  306. package/dist-lib/numbl-core/runtime/index.d.ts +4 -3
  307. package/dist-lib/numbl-core/runtime/indexing.d.ts +17 -2
  308. package/dist-lib/numbl-core/runtime/plotBuiltinDispatch.d.ts +86 -0
  309. package/dist-lib/numbl-core/runtime/plotUtils.d.ts +17 -2
  310. package/dist-lib/numbl-core/runtime/refcount.d.ts +85 -0
  311. package/dist-lib/numbl-core/runtime/runtime.d.ts +43 -67
  312. package/dist-lib/numbl-core/runtime/runtimeDispatch.d.ts +2 -2
  313. package/dist-lib/numbl-core/runtime/runtimeIndexing.d.ts +2 -2
  314. package/dist-lib/numbl-core/runtime/runtimeMemberAccess.d.ts +1 -1
  315. package/dist-lib/numbl-core/runtime/runtimePlot.d.ts +1 -0
  316. package/dist-lib/numbl-core/runtime/struct-access.d.ts +2 -1
  317. package/dist-lib/numbl-core/runtime/types.d.ts +117 -62
  318. package/dist-lib/numbl-core/runtime/utils.d.ts +2 -8
  319. package/dist-lib/numbl-core/version.d.ts +1 -1
  320. package/dist-lib/numbl-core/workspace/types.d.ts +8 -0
  321. package/dist-plot-viewer/assets/index-COAM8o1E.js +4426 -0
  322. package/dist-plot-viewer/index.html +1 -1
  323. package/dist-site-viewer/404.html +33 -0
  324. package/dist-site-viewer/assets/index-CgBUy7v7.js +4748 -0
  325. package/dist-site-viewer/assets/index-D5YY8PKx.css +1 -0
  326. package/dist-site-viewer/assets/numbl-worker-VkVtodCX.js +11836 -0
  327. package/dist-site-viewer/coi-serviceworker.js +70 -0
  328. package/dist-site-viewer/favicon.svg +23 -0
  329. package/dist-site-viewer/index.html +16 -0
  330. package/dist-site-viewer/logo.svg +26 -0
  331. package/dist-site-viewer/numbl-embed.js +111 -0
  332. package/dist-site-viewer/vite.svg +1 -0
  333. package/native/lapack_linsolve.cpp +1 -1
  334. package/native/numbl_addon_common.h +2 -2
  335. package/native/ops/comparison.c +1 -1
  336. package/native/ops/real_unary_elemwise.c +3 -1
  337. package/package.json +16 -13
  338. package/dist-lib/numbl-core/jit/c/abi.d.ts +0 -90
  339. package/dist-lib/numbl-core/jit/c/assemble.d.ts +0 -56
  340. package/dist-lib/numbl-core/jit/c/classify.d.ts +0 -70
  341. package/dist-lib/numbl-core/jit/c/compile.d.ts +0 -37
  342. package/dist-lib/numbl-core/jit/c/context.d.ts +0 -152
  343. package/dist-lib/numbl-core/jit/c/emit/assign.d.ts +0 -20
  344. package/dist-lib/numbl-core/jit/c/emit/complexScalar.d.ts +0 -18
  345. package/dist-lib/numbl-core/jit/c/emit/fused.d.ts +0 -42
  346. package/dist-lib/numbl-core/jit/c/emit/helpers.d.ts +0 -40
  347. package/dist-lib/numbl-core/jit/c/emit/index.d.ts +0 -14
  348. package/dist-lib/numbl-core/jit/c/emit/scalar.d.ts +0 -23
  349. package/dist-lib/numbl-core/jit/c/emit/stmt.d.ts +0 -25
  350. package/dist-lib/numbl-core/jit/c/emit/tensor.d.ts +0 -127
  351. package/dist-lib/numbl-core/jit/c/emit/userCall.d.ts +0 -58
  352. package/dist-lib/numbl-core/jit/c/epilogue.d.ts +0 -26
  353. package/dist-lib/numbl-core/jit/c/feasibility.d.ts +0 -44
  354. package/dist-lib/numbl-core/jit/c/prelude.d.ts +0 -37
  355. package/dist-lib/numbl-core/jit/c/visit.d.ts +0 -63
  356. package/dist-lib/numbl-core/jit/e1/complexKernelEmit.d.ts +0 -46
  357. package/dist-lib/numbl-core/jit/e1/hash.d.ts +0 -10
  358. package/dist-lib/numbl-core/jit/e1/install.d.ts +0 -13
  359. package/dist-lib/numbl-core/jit/e1/kernelEmit.d.ts +0 -54
  360. package/dist-lib/numbl-core/jit/e1/multiReductionKernel.d.ts +0 -66
  361. package/dist-lib/numbl-core/jit/e1/openmpFlag.d.ts +0 -13
  362. package/dist-lib/numbl-core/jit/e1/scalarFnKernel.d.ts +0 -44
  363. package/dist-lib/numbl-core/jit/e2/assignKernel.d.ts +0 -34
  364. package/dist-lib/numbl-core/jit/e2/astToJitExpr.d.ts +0 -25
  365. package/dist-lib/numbl-core/jit/e2/cache.d.ts +0 -80
  366. package/dist-lib/numbl-core/jit/e2/chainKernelEmit.d.ts +0 -55
  367. package/dist-lib/numbl-core/jit/e2/classify.d.ts +0 -119
  368. package/dist-lib/numbl-core/jit/e2/compileFn.d.ts +0 -16
  369. package/dist-lib/numbl-core/jit/e2/complexChainKernelEmit.d.ts +0 -79
  370. package/dist-lib/numbl-core/jit/e2/emitShared.d.ts +0 -71
  371. package/dist-lib/numbl-core/jit/e2/install.d.ts +0 -11
  372. package/dist-lib/numbl-core/jit/e2/liveness.d.ts +0 -29
  373. package/dist-lib/numbl-core/jit/e2/loopKernel.d.ts +0 -49
  374. package/dist-lib/numbl-core/jit/e2/loopKernelEmit.d.ts +0 -75
  375. package/dist-lib/numbl-core/jit/e2/multiReductionDriver.d.ts +0 -24
  376. package/dist-lib/numbl-core/jit/e2/reductionKernelEmit.d.ts +0 -72
  377. package/dist-lib/numbl-core/jit/e2/scalarFnDriver.d.ts +0 -29
  378. package/dist-lib/numbl-core/jit/fusedChainHelpers.d.ts +0 -65
  379. package/dist-lib/numbl-core/jit/fusedScalarEmit.d.ts +0 -69
  380. package/dist-lib/numbl-core/jit/fusion.d.ts +0 -71
  381. package/dist-lib/numbl-core/jit/fusionOps.d.ts +0 -25
  382. package/dist-lib/numbl-core/jit/heavyOps.d.ts +0 -15
  383. package/dist-lib/numbl-core/jit/jitBailSafety.d.ts +0 -41
  384. package/dist-lib/numbl-core/jit/jitLoop.d.ts +0 -25
  385. package/dist-lib/numbl-core/jit/jitLoopAnalysis.d.ts +0 -37
  386. package/dist-lib/numbl-core/jit/jitLower.d.ts +0 -122
  387. package/dist-lib/numbl-core/jit/jitLowerExpr.d.ts +0 -27
  388. package/dist-lib/numbl-core/jit/jitLowerStmt.d.ts +0 -9
  389. package/dist-lib/numbl-core/jit/jitLowerTypes.d.ts +0 -29
  390. package/dist-lib/numbl-core/jit/jitTopLevel.d.ts +0 -22
  391. package/dist-lib/numbl-core/jit/jitTypes.d.ts +0 -394
  392. package/dist-lib/numbl-core/jit/js/jitCodegen.d.ts +0 -7
  393. package/dist-lib/numbl-core/jit/js/jitCodegenHoist.d.ts +0 -70
  394. package/dist-lib/numbl-core/jit/js/jitHelpers.d.ts +0 -34
  395. package/dist-lib/numbl-core/jit/js/jitHelpersComplex.d.ts +0 -21
  396. package/dist-lib/numbl-core/jit/js/jitHelpersIndex.d.ts +0 -33
  397. package/dist-lib/numbl-core/jit/js/jitHelpersTensor.d.ts +0 -34
  398. package/dist-lib/numbl-core/jit/js/jsFusedCodegen.d.ts +0 -17
  399. package/dist-lib/numbl-core/jit/js/jsMultiReduction.d.ts +0 -70
  400. package/dist-lib/numbl-core/jit/scalarEmit.d.ts +0 -58
  401. package/dist-plot-viewer/assets/index-GiUNnMQg.js +0 -4426
  402. package/native/jit_runtime/jit_runtime.c +0 -261
  403. package/native/jit_runtime/jit_runtime.h +0 -204
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Helpers shared across multiple builtin files.
3
+ */
4
+ import type { Span } from "../../parser/index.js";
5
+ import { type Type, type NumericType } from "../../lowering/types.js";
6
+ export declare function requireScalarRealDouble(t: Type, what: string, span?: Span): void;
7
+ /** Like `requireScalarRealDouble` but accepts non-scalar real doubles
8
+ * (the elemwise path). Logical also accepted (stored as double in C). */
9
+ export declare function requireRealDouble(t: Type, what: string, span?: Span): void;
10
+ /** Accepts a real or complex numeric (double / logical). Used by the
11
+ * unary math builtins and the scalar/tensor arithmetic paths that
12
+ * contaminate to complex when either operand is complex. */
13
+ export declare function requireRealOrComplex(t: Type, what: string, span?: Span): void;
14
+ /** Require a scalar numeric (real or complex). */
15
+ export declare function requireScalarRealOrComplex(t: Type, what: string, span?: Span): void;
16
+ export declare function exactDouble(t: Type): number | undefined;
17
+ export declare function exactRealArray(t: Type): Float64Array | undefined;
18
+ /** Read a scalar-complex exact value if present. Returns `{re, im}`
19
+ * when the type's `exact` is the scalar-complex carrier, or `undefined`
20
+ * otherwise. */
21
+ export declare function exactComplex(t: Type): {
22
+ re: number;
23
+ im: number;
24
+ } | undefined;
25
+ /** Read a complex-tensor split-buffer exact carrier if present.
26
+ * Returns the `{re, im}` Float64Array pair when the type's `exact` is
27
+ * the complex-tensor carrier (parallel to `exactRealArray` but for
28
+ * complex tensors); returns `undefined` for any other shape (no exact,
29
+ * scalar number, real-array, scalar-complex `{re: number}`). */
30
+ export declare function exactComplexArray(t: Type): {
31
+ re: Float64Array;
32
+ im: Float64Array;
33
+ } | undefined;
34
+ /** Convenience: project a scalar exact value (real or complex) into a
35
+ * `{re, im}` pair, returning `undefined` if neither carrier matches. */
36
+ export declare function exactScalarAsComplex(t: Type): {
37
+ re: number;
38
+ im: number;
39
+ } | undefined;
40
+ /** True when this numeric is statically known to be complex (the static
41
+ * flag, not the runtime value). Centralizes the predicate so callers
42
+ * don't sprinkle `(t as NumericType).isComplex` checks. */
43
+ export declare function isStaticComplex(t: Type): t is NumericType;
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Shared infrastructure for elementwise real binary builtins
3
+ * (`plus`, `minus`, `times`, `rdivide`).
4
+ */
5
+ import { type DimInfo, type NumericType, type Sign } from "../../../lowering/types.js";
6
+ import type { Builtin } from "../../registry.js";
7
+ /** Result of broadcast shape resolution for the elementwise binary path.
8
+ * `outDims` is the output's per-axis dim info (MATLAB-style implicit
9
+ * expansion: align on axis 1, pad with 1s on the right, axis-wise
10
+ * `da == db || da == 1 || db == 1`). `bcast` is true when the C runtime
11
+ * needs the broadcasting helper rather than the fast `_tt` path —
12
+ * either the ndims differ or at least one statically-singleton axis
13
+ * needs to be replicated against a non-singleton sibling. */
14
+ type ResolvedShape = {
15
+ outDims: DimInfo[];
16
+ /** True when broadcast (any axis where one side is statically 1 but
17
+ * the other is not, OR ndims differ). False when the two arg shapes
18
+ * match dim-for-dim (modulo unknowns the runtime trusts). */
19
+ bcast: boolean;
20
+ };
21
+ /** Shape resolution for elementwise binary. Returns `null` for scalar+
22
+ * scalar; otherwise computes the broadcast output shape and whether
23
+ * broadcasting is required. Throws on statically incompatible axes
24
+ * (no span — the framework's `withSpan` wrapper attaches the call-site
25
+ * span). Exported for `power.ts`, which shares the same broadcast rules. */
26
+ export declare function elemwiseResultShape(a: NumericType, b: NumericType, name: string): ResolvedShape | null;
27
+ /** True iff an elementwise binary op on tensor operands `a` and `b`
28
+ * needs the broadcasting `_bcast_tt` helper rather than the same-shape
29
+ * `_tt` fast path. Mirrors the per-axis compatibility logic inside
30
+ * `elemwiseResultShape` but returns just the bool — codegen call
31
+ * sites don't need to thread the resolved output shape from transfer.
32
+ * Exported for `power.ts`, which shares the same codegen discipline. */
33
+ export declare function needsBroadcast(a: NumericType, b: NumericType): boolean;
34
+ /** Compute the broadcast-aware elementwise fold over `a` and `b` for
35
+ * the given (fully-exact) output shape, applying `step` per slot.
36
+ * Both sides must already carry exact data (a `Float64Array` or a
37
+ * scalar `number`); the caller is responsible for the
38
+ * `EXACT_ARRAY_MAX_ELEMENTS` cap. Singleton axes on either side get
39
+ * stride 0 so they broadcast against non-singleton output axes;
40
+ * output is filled in column-major order to match the runtime layout.
41
+ * Exported for `power.ts`, which shares the same broadcast rules. */
42
+ export declare function broadcastFoldExact(a: NumericType, b: NumericType, outShape: number[], step: (av: number, bv: number) => number): Float64Array;
43
+ /** Build a real elementwise binary builtin: scalar, scalar+tensor,
44
+ * tensor+scalar, tensor+tensor. Folds when every input is exact.
45
+ * `helperBase` names the matching set of C runtime helpers
46
+ * (mtoc2_tensor_<helperBase>_tt / _ts / _st). Commutative ops set
47
+ * `commutative=true` so the scalar-first path reuses `_ts` with
48
+ * swapped operands.
49
+ *
50
+ * The four shape combos and what they emit:
51
+ *
52
+ * | a | b | C output |
53
+ * |---------|---------|--------------------------------------------|
54
+ * | scalar | scalar | `(argsC[0] cOp argsC[1])` |
55
+ * | tensor | scalar | `mtoc2_tensor_<helperBase>_ts(a, b)` |
56
+ * | scalar | tensor | commutative → `_ts(b, a)`; else `_st(a,b)` |
57
+ * | tensor | tensor | `mtoc2_tensor_<helperBase>_tt(a, b)` |
58
+ *
59
+ * `complexFold` / `complexScalarExpr` / `complexRuntimeDeps` are
60
+ * optional; when set, a scalar+scalar op with at least one complex
61
+ * operand routes through them (and `transfer` returns a complex
62
+ * result). Phase 1 wires complex scalars; tensor+complex paths are
63
+ * rejected until Phase 3 lands the runtime helpers.
64
+ */
65
+ export declare function defineElemwiseRealBinary(opts: {
66
+ name: string;
67
+ cOp: string;
68
+ helperBase: string;
69
+ commutative: boolean;
70
+ fold: (a: number, b: number) => number;
71
+ signRule: (a: NumericType, b: NumericType) => Sign;
72
+ /** Scalar-complex fold. Receives two `{re, im}` operands. */
73
+ complexFold?: (a: {
74
+ re: number;
75
+ im: number;
76
+ }, b: {
77
+ re: number;
78
+ im: number;
79
+ }) => {
80
+ re: number;
81
+ im: number;
82
+ };
83
+ /** Scalar-complex C expression. Defaults to the same `(a cOp b)`
84
+ * infix as the real path — works for `+ - *` because C99 promotes
85
+ * real↔complex automatically. Divide overrides to route through
86
+ * `mtoc2_cdiv(a, b)`. */
87
+ complexScalarExpr?: (aC: string, bC: string) => string;
88
+ /** Extra runtime snippet activations needed by the complex scalar
89
+ * path (e.g. `mtoc2_cdiv` for division). The real-only `_real`
90
+ * helper still activates unconditionally for the tensor path. */
91
+ complexRuntimeDeps?: string[];
92
+ }): Builtin;
93
+ /** Same as `defineElemwiseRealBinary`, but the scalar path emits a C
94
+ * function call (`fmod(a,b)`, `atan2(a,b)`, …) instead of an infix
95
+ * operator. The tensor helpers still follow the `_tt`/`_ts`/`_st`
96
+ * naming convention; supply the appropriate `runtimeDep` for the
97
+ * snippet that defines them (`mtoc2_tensor_elemwise_real_fn`
98
+ * covers `mod`/`rem`/`atan2`/`hypot`). */
99
+ export declare function defineElemwiseRealBinaryFn(opts: {
100
+ name: string;
101
+ cFn: string;
102
+ helperBase: string;
103
+ commutative: boolean;
104
+ fold: (a: number, b: number) => number;
105
+ signRule: (a: NumericType, b: NumericType) => Sign;
106
+ runtimeDep: string;
107
+ /** Optional JS scalar form. Defaults to `${cFn}(${a}, ${b})` (works
108
+ * when `cFn` happens to be a JS function on the surrounding scope
109
+ * — almost never the case). Pass `(a, b) => "Math.atan2(...)"`
110
+ * for `atan2`/`hypot`, an explicit JS-modulo expression for
111
+ * `mod`/`rem`, etc. */
112
+ jsScalarExpr?: (aJs: string, bJs: string) => string;
113
+ }): Builtin;
114
+ export declare function signSum(a: NumericType, b: NumericType): Sign;
115
+ export declare function signDiff(a: NumericType, b: NumericType): Sign;
116
+ export declare function signProd(a: NumericType, b: NumericType): Sign;
117
+ /** Sign of `a / b`. Almost the same shape as `signProd`, but the
118
+ * divisor's sign tells a different story: `x / 0` is ±Inf (or NaN
119
+ * when `x` is also 0), NOT zero, so a zero divisor degrades the
120
+ * result to `unknown`. A zero numerator with a non-zero divisor is
121
+ * zero. */
122
+ export declare function signQuot(a: NumericType, b: NumericType): Sign;
123
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const minus: Builtin;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `mpower` builtin — backs the `^` binary operator.
3
+ *
4
+ * v1 supports only the scalar-on-both-sides case (which delegates to
5
+ * `power`, the `.^` builtin). Matrix power on a square base would
6
+ * require eigendecomposition for non-integer exponents and repeated
7
+ * `mtimes` for integer exponents — a real slope of its own. Numbl's
8
+ * `mPow` (helpers/arithmetic.ts:1006) is the reference; we punt on it
9
+ * entirely for now.
10
+ */
11
+ import { type Builtin } from "../../registry.js";
12
+ export declare const mpower: Builtin;
@@ -0,0 +1,5 @@
1
+ import { type Builtin } from "../../registry.js";
2
+ /** `mrdivide` (matrix /): mirrors `rdivide` when at least one arg is
3
+ * scalar; rejects the both-tensor case until matrix right-division
4
+ * is implemented. */
5
+ export declare const mrdivide: Builtin;
@@ -0,0 +1,2 @@
1
+ import { type Builtin } from "../../registry.js";
2
+ export declare const mtimes: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const plus: Builtin;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `power` builtin — backs the `.^` (elementwise power) binary
3
+ * operator.
4
+ *
5
+ * Mirrors `mElemPow` in `../numbl/src/numbl-core/helpers/arithmetic.ts`
6
+ * (line 1075) modulo the complex-result paths. Numbl produces a
7
+ * complex result for `(neg)^(non-integer)`; mtoc2 has no complex
8
+ * type and rejects that combination at lowering time (same precedent
9
+ * as `sqrt` / `log` rejecting out-of-domain real inputs).
10
+ *
11
+ * Shape rules follow the rest of the elementwise binary family:
12
+ * - scalar OP scalar → scalar; tensor OP scalar / scalar OP tensor /
13
+ * same-shape tensor OP tensor.
14
+ * - exact-fold within EXACT_ARRAY_MAX_ELEMENTS when every input
15
+ * element is exact AND every output element is finite.
16
+ *
17
+ * Sign refinement:
18
+ * - exponent exact zero → `positive` (x^0 == 1 for every x, even 0
19
+ * and Inf per IEEE-754 / MATLAB).
20
+ * - base statically `positive` → `positive`.
21
+ * - base statically `nonneg` AND exponent statically `nonneg` → `nonneg`.
22
+ * - otherwise → `unknown`.
23
+ *
24
+ * Domain rejection: when the base could be negative (i.e. its sign
25
+ * isn't statically nonneg) AND the exponent isn't an exact integer
26
+ * (or any exact value at all), reject with a clear span — that's the
27
+ * "complex-result" case numbl handles but mtoc2 v1 doesn't.
28
+ */
29
+ import type { Builtin } from "../../registry.js";
30
+ export declare const power: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const rdivide: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const times: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const uminus: Builtin;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared infrastructure for scalar comparison builtins
3
+ * (`eq`, `ne`, `lt`, `le`, `gt`, `ge`).
4
+ *
5
+ * Complex scalar handling (MATLAB rule):
6
+ * - `eq` / `ne` compare both real and imaginary parts.
7
+ * - `<` / `<=` / `>` / `>=` compare on the real part only; the
8
+ * imaginary part is dropped. (numbl matches.)
9
+ */
10
+ import type { Builtin } from "../../registry.js";
11
+ export type CompareKind = "eq" | "ne" | "rel";
12
+ export declare function defineCompare(name: string, cOp: string, fold: (a: number, b: number) => boolean, kind?: CompareKind): Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const eq: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const ge: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const gt: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const le: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const lt: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const ne: Builtin;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `assert(cond)` / `assert(cond, msg)` / `assert(cond, fmt, args...)` —
3
+ * runtime + compile-time assertion.
4
+ */
5
+ import type { Builtin } from "../../registry.js";
6
+ export declare const assert: Builtin;
@@ -0,0 +1,17 @@
1
+ import { type Type } from "../../../lowering/types.js";
2
+ /** Validate that args at positions [from..) are legal `mtoc2_fprintf_arg_t`
3
+ * slots — scalar real numeric, text, or real multi-element tensor.
4
+ * Throws TypeError / UnsupportedConstruct (no span — framework attaches
5
+ * via `withSpan`). Shared by `fprintf`, `error`, future `sprintf`. */
6
+ export declare function validateFormatArgs(builtinName: string, argTypes: ReadonlyArray<Type>, from: number): void;
7
+ /** Emit one `mtoc2_fprintf_arg_t` slot for `argsC[i]` typed `argTypes[i]`.
8
+ * Used to build the compound-literal slot array for fprintf / error /
9
+ * sprintf call sites. ANF in the lowerer guarantees multi-element
10
+ * tensor args are bare Var lvalues (so `&c` is well-defined). */
11
+ export declare function emitFormatSlot(builtinName: string, c: string, t: Type, argIndex: number): string;
12
+ /** Build the `(const mtoc2_fprintf_arg_t[]){ ... }` compound literal
13
+ * from a slice of slots (or the `{ {0} }` empty form C99 needs to
14
+ * avoid the zero-length-array GNU extension). */
15
+ export declare function emitFormatSlotArray(slots: ReadonlyArray<string>): string;
16
+ /** Adapter expression for a text-typed format arg → `mtoc2_text_view_t`. */
17
+ export declare function emitTextView(c: string, t: Type): string;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const disp: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const errorBuiltin: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const fprintf: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const sprintfBuiltin: Builtin;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `warning(fmt, args...)` and `warning('id:topic', fmt, args...)` —
3
+ * print `Warning: <message>\n` to stdout. Matches numbl
4
+ * (`numbl-core/runtime/specialBuiltins.ts:190`).
5
+ *
6
+ * Unlike `error`, `warning` doesn't throw and has no `try/catch`
7
+ * interaction; the identifier-bearing form is accepted for
8
+ * source-level compatibility but the id is dropped (numbl wires it
9
+ * into a `lastwarn` state mtoc2 doesn't expose).
10
+ *
11
+ * The state-query form `warning('on'/'off', id)` and the no-arg
12
+ * call `warning()` are deferred — chunkie doesn't use them.
13
+ */
14
+ import type { Builtin } from "../../registry.js";
15
+ export declare const warningBuiltin: Builtin;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Shared scaffold for the two short-circuit logical builtins
3
+ * (`||` → `oror`, `&&` → `andand`).
4
+ *
5
+ * **Scope decision: scalar operands only.**
6
+ *
7
+ * MATLAB requires scalar operands for `||` and `&&`; numbl is more
8
+ * permissive (routes both operands through `toBool` to accept
9
+ * tensors — see `interpreter/interpreterExec.ts` lines 650–661,
10
+ * `runtime/convert.ts:44`). mtoc2 v1 takes the MATLAB-strict path so
11
+ * the result type stays a scalar logical and the codegen stays
12
+ * trivial (`(a) || (b)` / `(a) && (b)` in C, which short-circuits
13
+ * natively).
14
+ *
15
+ * Compile-time fold:
16
+ * - both operands exact → fold to scalar logical with concrete value.
17
+ * - LHS exact + truthy (for `||`) or falsy (for `&&`) → result is
18
+ * the LHS's logical value regardless of RHS. This honors
19
+ * short-circuit semantics at the type level so a runtime-only RHS
20
+ * doesn't pollute the result type. (mtoc2 always evaluates the
21
+ * RHS at the type-system layer, but the fold value still skips
22
+ * it.)
23
+ * - otherwise → scalar logical, no exact.
24
+ *
25
+ * **The runtime side already short-circuits** via C's `||` / `&&`
26
+ * operators, independent of the fold rule.
27
+ */
28
+ import type { Builtin } from "../../registry.js";
29
+ export type ShortCircuitKind = "or" | "and";
30
+ export declare function defineShortCircuit(name: string, surface: string, kind: ShortCircuitKind): Builtin;
@@ -0,0 +1,30 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ interface ComplexPredSpec {
3
+ /** C scalar expression: given `(re, im)` text, return the per-element
4
+ * boolean expression. The factory wraps it in a ternary that maps
5
+ * to `1.0` / `0.0`. */
6
+ cScalarComplex: (re: string, im: string) => string;
7
+ /** JS scalar expression: same shape as `cScalarComplex` but for
8
+ * the js-aot path; operates on real-and-imag JS expressions. */
9
+ jsScalarComplex: (re: string, im: string) => string;
10
+ /** JS fold / interpreter rule on a `{re, im}` value. */
11
+ jsFnComplex: (re: number, im: number) => boolean;
12
+ /** Runtime tensor helper name (in `tensor_predicate_complex.h`). */
13
+ tensorHelperComplex: string;
14
+ }
15
+ export interface UnaryPredOpts {
16
+ name: string;
17
+ /** C scalar expression given the arg's C text. */
18
+ cScalar: (arg: string) => string;
19
+ /** JS scalar expression given the arg's JS text. */
20
+ jsScalar: (arg: string) => string;
21
+ /** JS fold / interpreter rule. */
22
+ jsFn: (x: number) => boolean;
23
+ /** Runtime tensor helper name (in `tensor_predicate.h`). */
24
+ tensorHelper: string;
25
+ /** Optional complex-input support. Predicates that MATLAB accepts
26
+ * on complex (`isnan`, `isinf`, `isfinite`, …) declare this. */
27
+ complex?: ComplexPredSpec;
28
+ }
29
+ export declare function defineUnaryPred(opts: UnaryPredOpts): Builtin;
30
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `and(a, b)` — the function form of `&`. See `or.ts` for why this
3
+ * routes through the short-circuit scaffold.
4
+ */
5
+ export declare const andBuiltin: import("../../registry.js").Builtin;
@@ -0,0 +1 @@
1
+ export declare const andand: import("../../registry.js").Builtin;
@@ -0,0 +1,3 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const trueBuiltin: Builtin;
3
+ export declare const falseBuiltin: Builtin;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `class(x)` — return the static type name as a char (single-quoted)
3
+ * value.
4
+ *
5
+ * Always static in mtoc2: the type lattice knows every value's kind
6
+ * (numeric/double, numeric/logical, char, string, struct, class
7
+ * instance, cell, function-handle). The transfer attaches the
8
+ * resolved name to the `CharType`'s `exact` slot so subsequent
9
+ * `strcmp` / `if class(x) == 'double'` patterns see a folded value.
10
+ *
11
+ * Matches numbl `introspection.ts`:
12
+ * - number / complex-number / sparse / real-numeric tensor → "double"
13
+ * - boolean / logical-flagged tensor → "logical"
14
+ * - char → "char", string → "string"
15
+ * - struct / struct-array → "struct"
16
+ * - cell → "cell"
17
+ * - class instance → its `className`
18
+ * - function handle → "function_handle"
19
+ */
20
+ import type { Builtin } from "../../registry.js";
21
+ export declare const classBuiltin: Builtin;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `fieldnames(s)` — returns an N×1 cell of char-array field names
3
+ * for a struct or class instance. Matches numbl's
4
+ * `introspection.ts:fieldnamesApply` semantics, with the result's
5
+ * cell-element type being `char` (matches MATLAB; numbl wraps as
6
+ * string but mtoc2 follows MATLAB by emitting chars).
7
+ *
8
+ * Interpreter-only for now; the AOT path would need to materialize
9
+ * a heterogeneous-len cell of chars which is a different feature
10
+ * class. The `emitC` / `emitJs` hooks exist so the registry-shape
11
+ * invariant holds but they raise `UnsupportedConstruct` rather than
12
+ * letting the framework's generic "no emitC hook" surface.
13
+ */
14
+ import type { Builtin } from "../../registry.js";
15
+ export declare const fieldnames: Builtin;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `isa(value, 'ClassName')` — checks whether `value` is an instance
3
+ * of the named class (or matches one of MATLAB's primitive class
4
+ * names: `double`, `logical`, `char`, `string`, `struct`,
5
+ * `function_handle`, `cell`, `numeric`).
6
+ *
7
+ * Always static: mtoc2 knows every value's type at lowering time and
8
+ * folds to a scalar logical literal. Matches numbl's
9
+ * `runtimeDispatch.ts:isa` minus the inheritance-chain walk (mtoc2
10
+ * has no inheritance in v1).
11
+ */
12
+ import type { Builtin } from "../../registry.js";
13
+ export declare const isa: Builtin;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `iscell(x)` — folds true if the argument's static type is a Cell,
3
+ * false otherwise. Always static because the kind is part of the type.
4
+ *
5
+ * Matches numbl `introspection.ts:173-180` (returns `1` / `0`).
6
+ */
7
+ import type { Builtin } from "../../registry.js";
8
+ export declare const iscell: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const isempty: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const isequal: Builtin;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `isfield(s, name)` — does the struct/class `s` have a field/property
3
+ * named `name`?
4
+ *
5
+ * Numbl semantics
6
+ * (`numbl-core/interpreter/builtins/type-constructors.ts`):
7
+ * - Struct or class instance → `true` iff `name` is in the field list.
8
+ * - Anything else (numeric tensor, `[]`, char, string, handle, …) →
9
+ * `false`. There is no "empty matrix as struct" coercion; the
10
+ * non-struct branch just returns `false` so `isfield([], 'foo')`
11
+ * naturally yields `false`.
12
+ *
13
+ * mtoc2 restricts the second argument to a Char or String literal
14
+ * (`.exact` set) — sufficient for the common `isfield(s, 'name')` /
15
+ * `isfield(s, "name")` shape. Runtime-only names would need a string
16
+ * comparison against the (compile-time-known) struct field set, which
17
+ * isn't worth wiring until something needs it.
18
+ */
19
+ import type { Builtin } from "../../registry.js";
20
+ export declare const isfield: Builtin;
@@ -0,0 +1,2 @@
1
+ export declare const isinf: import("../../registry.js").Builtin;
2
+ export declare const isfinite: import("../../registry.js").Builtin;
@@ -0,0 +1 @@
1
+ export declare const isnan: import("../../registry.js").Builtin;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `isnumeric(x)` — folds true if the argument's static type is a
3
+ * Numeric (real or complex, scalar or tensor, double or logical?
4
+ * MATLAB excludes logical). Matches numbl's introspection.
5
+ */
6
+ import type { Builtin } from "../../registry.js";
7
+ export declare const isnumeric: Builtin;
@@ -0,0 +1,2 @@
1
+ import type { Builtin } from "../../registry.js";
2
+ export declare const isreal: Builtin;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `isscalar(x)` — does `x` hold a single element?
3
+ *
4
+ * Numbl semantics
5
+ * (`numbl-core/interpreter/builtins/introspection.ts`, plus the
6
+ * `jitEmit` shortcut for `string`):
7
+ * - Real or logical scalar number → `true`.
8
+ * - Complex scalar → `true`.
9
+ * - Tensor → `true` iff `numel == 1`.
10
+ * - String handle (`"..."`) → `true` (single handle = scalar).
11
+ * - Char array (`'...'`) → `false`, even for `'a'` — char arrays
12
+ * are 1×N and treated as non-scalar.
13
+ * - Struct / class instance / function handle → `false`.
14
+ *
15
+ * The result folds at type-check time whenever the shape is known
16
+ * (which is the common case). When a tensor's shape is opaque the
17
+ * emit paths fall back to a `numel == 1` runtime check.
18
+ */
19
+ import type { Builtin } from "../../registry.js";
20
+ export declare const isscalar: Builtin;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `isstruct(x)` — folds true if the argument's static type is a
3
+ * struct, false otherwise. Class instances are NOT structs (matches
4
+ * MATLAB / numbl `introspection.ts:182`).
5
+ */
6
+ import type { Builtin } from "../../registry.js";
7
+ export declare const isstruct: Builtin;
@@ -0,0 +1 @@
1
+ export declare const logical: import("../../registry.js").Builtin;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `not` builtin — backs the `~` unary operator.
3
+ *
4
+ * Elementwise logical NOT. Numbl's `not(v)` in
5
+ * `runtime/runtimeOperators.ts` line 100:
6
+ * - scalar 0 → logical true
7
+ * - scalar nonzero → logical false
8
+ * - tensor → logical tensor of same shape; element-wise
9
+ * `(x == 0) ? 1 : 0`
10
+ *
11
+ * Type result is always logical (mtoc2's `NumericType.elem = "logical"`).
12
+ * Sign is `nonneg` since outputs are in {0, 1}.
13
+ */
14
+ import type { Builtin } from "../../registry.js";
15
+ export declare const notBuiltin: Builtin;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `or(a, b)` — the function form of `|`. For scalar arguments,
3
+ * mtoc2 routes this through the same scaffold as `||` (`oror`): the
4
+ * result type is scalar logical, the codegen uses C's `||` operator,
5
+ * and the only semantic difference (short-circuit on `||` vs.
6
+ * eager-evaluate on `|` / `or`) is moot — by the time the function
7
+ * is called, both arguments have already been computed by the
8
+ * call-site machinery, so the C-level short-circuit is harmless.
9
+ * Tensor / elementwise behavior is deferred.
10
+ */
11
+ export declare const orBuiltin: import("../../registry.js").Builtin;
@@ -0,0 +1 @@
1
+ export declare const oror: import("../../registry.js").Builtin;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `strcmp(a, b)` / `strcmpi(a, b)` — text equality.
3
+ *
4
+ * Numbl semantics (`numbl-core/interpreter/builtins/strings.ts`):
5
+ * - Both args text (Char / String) → byte-equality (or ASCII
6
+ * case-folded equality for `strcmpi`). Length mismatch is not an
7
+ * error; the inputs simply compare unequal.
8
+ * - Either arg non-text → `false`. Numbl gates the comparison
9
+ * behind `isText(a) && isText(b)`; non-text just yields `0`
10
+ * silently. We mirror that to keep cross-runner output identical.
11
+ * - Cell-of-text vectorization (`strcmp({'a','b'}, 'a')`) is in
12
+ * numbl but cells aren't yet a feature class in mtoc2 — that
13
+ * overload will fall out naturally when cells land.
14
+ *
15
+ * Folds to a literal when both args are exact text. Otherwise emits
16
+ * the runtime `mtoc2_strcmp` / `mtoc2_strcmpi` helper which compares
17
+ * byte-for-byte on text views.
18
+ */
19
+ import type { Builtin } from "../../registry.js";
20
+ export declare const strcmp: Builtin;
21
+ export declare const strcmpi: Builtin;