runmat 0.5.2-dev.6 → 0.5.3-dev.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 (128) hide show
  1. package/artifacts/stdlib.snapshot +0 -0
  2. package/dist/fs/index.d.ts +1 -1
  3. package/dist/fs/index.d.ts.map +1 -1
  4. package/dist/fs/provider-types.d.ts +15 -0
  5. package/dist/fs/provider-types.d.ts.map +1 -1
  6. package/dist/generated/builtin-examples-catalog.d.ts.map +1 -1
  7. package/dist/generated/builtin-examples-catalog.js +1 -1
  8. package/dist/generated/builtin-examples-catalog.js.map +1 -1
  9. package/dist/generated/builtins/addpath.d.ts.map +1 -1
  10. package/dist/generated/builtins/addpath.js +6 -0
  11. package/dist/generated/builtins/addpath.js.map +1 -1
  12. package/dist/generated/builtins/axis.d.ts.map +1 -1
  13. package/dist/generated/builtins/axis.js +11 -1
  14. package/dist/generated/builtins/axis.js.map +1 -1
  15. package/dist/generated/builtins/cd.d.ts.map +1 -1
  16. package/dist/generated/builtins/cd.js +6 -0
  17. package/dist/generated/builtins/cd.js.map +1 -1
  18. package/dist/generated/builtins/copyfile.d.ts.map +1 -1
  19. package/dist/generated/builtins/copyfile.js +1 -0
  20. package/dist/generated/builtins/copyfile.js.map +1 -1
  21. package/dist/generated/builtins/csvread.d.ts.map +1 -1
  22. package/dist/generated/builtins/csvread.js +1 -0
  23. package/dist/generated/builtins/csvread.js.map +1 -1
  24. package/dist/generated/builtins/diff.d.ts.map +1 -1
  25. package/dist/generated/builtins/diff.js +13 -2
  26. package/dist/generated/builtins/diff.js.map +1 -1
  27. package/dist/generated/builtins/downsample.d.ts +4 -0
  28. package/dist/generated/builtins/downsample.d.ts.map +1 -0
  29. package/dist/generated/builtins/downsample.js +104 -0
  30. package/dist/generated/builtins/downsample.js.map +1 -0
  31. package/dist/generated/builtins/eq.d.ts.map +1 -1
  32. package/dist/generated/builtins/eq.js +12 -1
  33. package/dist/generated/builtins/eq.js.map +1 -1
  34. package/dist/generated/builtins/figure.d.ts.map +1 -1
  35. package/dist/generated/builtins/figure.js +19 -2
  36. package/dist/generated/builtins/figure.js.map +1 -1
  37. package/dist/generated/builtins/fzero.d.ts.map +1 -1
  38. package/dist/generated/builtins/fzero.js +10 -2
  39. package/dist/generated/builtins/fzero.js.map +1 -1
  40. package/dist/generated/builtins/gauspuls.d.ts +4 -0
  41. package/dist/generated/builtins/gauspuls.d.ts.map +1 -0
  42. package/dist/generated/builtins/gauspuls.js +94 -0
  43. package/dist/generated/builtins/gauspuls.js.map +1 -0
  44. package/dist/generated/builtins/gca.d.ts.map +1 -1
  45. package/dist/generated/builtins/gca.js +5 -0
  46. package/dist/generated/builtins/gca.js.map +1 -1
  47. package/dist/generated/builtins/get.js +3 -3
  48. package/dist/generated/builtins/get.js.map +1 -1
  49. package/dist/generated/builtins/grid.d.ts.map +1 -1
  50. package/dist/generated/builtins/grid.js +10 -4
  51. package/dist/generated/builtins/grid.js.map +1 -1
  52. package/dist/generated/builtins/heaviside.d.ts +4 -0
  53. package/dist/generated/builtins/heaviside.d.ts.map +1 -0
  54. package/dist/generated/builtins/heaviside.js +139 -0
  55. package/dist/generated/builtins/heaviside.js.map +1 -0
  56. package/dist/generated/builtins/hilbert.d.ts +4 -0
  57. package/dist/generated/builtins/hilbert.d.ts.map +1 -0
  58. package/dist/generated/builtins/hilbert.js +134 -0
  59. package/dist/generated/builtins/hilbert.js.map +1 -0
  60. package/dist/generated/builtins/limit.d.ts +4 -0
  61. package/dist/generated/builtins/limit.d.ts.map +1 -0
  62. package/dist/generated/builtins/limit.js +84 -0
  63. package/dist/generated/builtins/limit.js.map +1 -0
  64. package/dist/generated/builtins/null.d.ts +4 -0
  65. package/dist/generated/builtins/null.d.ts.map +1 -0
  66. package/dist/generated/builtins/null.js +116 -0
  67. package/dist/generated/builtins/null.js.map +1 -0
  68. package/dist/generated/builtins/power.d.ts.map +1 -1
  69. package/dist/generated/builtins/power.js +1 -0
  70. package/dist/generated/builtins/power.js.map +1 -1
  71. package/dist/generated/builtins/pulstran.d.ts +4 -0
  72. package/dist/generated/builtins/pulstran.d.ts.map +1 -0
  73. package/dist/generated/builtins/pulstran.js +106 -0
  74. package/dist/generated/builtins/pulstran.js.map +1 -0
  75. package/dist/generated/builtins/rectpuls.d.ts +4 -0
  76. package/dist/generated/builtins/rectpuls.d.ts.map +1 -0
  77. package/dist/generated/builtins/rectpuls.js +95 -0
  78. package/dist/generated/builtins/rectpuls.js.map +1 -0
  79. package/dist/generated/builtins/rlocus.d.ts +4 -0
  80. package/dist/generated/builtins/rlocus.d.ts.map +1 -0
  81. package/dist/generated/builtins/rlocus.js +126 -0
  82. package/dist/generated/builtins/rlocus.js.map +1 -0
  83. package/dist/generated/builtins/set.js +2 -2
  84. package/dist/generated/builtins/set.js.map +1 -1
  85. package/dist/generated/builtins/spreadsheetImportOptions.d.ts +4 -0
  86. package/dist/generated/builtins/spreadsheetImportOptions.d.ts.map +1 -0
  87. package/dist/generated/builtins/spreadsheetImportOptions.js +93 -0
  88. package/dist/generated/builtins/spreadsheetImportOptions.js.map +1 -0
  89. package/dist/generated/builtins/sym.d.ts +4 -0
  90. package/dist/generated/builtins/sym.d.ts.map +1 -0
  91. package/dist/generated/builtins/sym.js +78 -0
  92. package/dist/generated/builtins/sym.js.map +1 -0
  93. package/dist/generated/builtins/syms.d.ts +4 -0
  94. package/dist/generated/builtins/syms.d.ts.map +1 -0
  95. package/dist/generated/builtins/syms.js +84 -0
  96. package/dist/generated/builtins/syms.js.map +1 -0
  97. package/dist/generated/builtins/tripuls.d.ts +4 -0
  98. package/dist/generated/builtins/tripuls.d.ts.map +1 -0
  99. package/dist/generated/builtins/tripuls.js +91 -0
  100. package/dist/generated/builtins/tripuls.js.map +1 -0
  101. package/dist/generated/builtins/uigetfile.d.ts +4 -0
  102. package/dist/generated/builtins/uigetfile.d.ts.map +1 -0
  103. package/dist/generated/builtins/uigetfile.js +95 -0
  104. package/dist/generated/builtins/uigetfile.js.map +1 -0
  105. package/dist/generated/builtins/unwrap.d.ts +4 -0
  106. package/dist/generated/builtins/unwrap.d.ts.map +1 -0
  107. package/dist/generated/builtins/unwrap.js +123 -0
  108. package/dist/generated/builtins/unwrap.js.map +1 -0
  109. package/dist/generated/builtins/upsample.d.ts +4 -0
  110. package/dist/generated/builtins/upsample.d.ts.map +1 -0
  111. package/dist/generated/builtins/upsample.js +104 -0
  112. package/dist/generated/builtins/upsample.js.map +1 -0
  113. package/dist/generated/builtins-manifest.d.ts.map +1 -1
  114. package/dist/generated/builtins-manifest.js +351 -10
  115. package/dist/generated/builtins-manifest.js.map +1 -1
  116. package/dist/index.d.ts +1 -1
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/lsp/runmat_lsp.d.ts +2 -3
  120. package/dist/lsp/runmat_lsp.js +635 -439
  121. package/dist/lsp/runmat_lsp_bg.wasm +0 -0
  122. package/dist/lsp/runmat_lsp_bg.wasm.d.ts +2 -3
  123. package/dist/pkg-web/runmat_wasm_web.d.ts +18 -18
  124. package/dist/pkg-web/runmat_wasm_web.js +754 -313
  125. package/dist/pkg-web/runmat_wasm_web_bg.wasm +0 -0
  126. package/dist/pkg-web/runmat_wasm_web_bg.wasm.d.ts +11 -11
  127. package/dist/runtime/stdlib.snapshot +0 -0
  128. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauspuls.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/gauspuls.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAyFjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,94 @@
1
+ // @generated by scripts/generate-builtins.cjs
2
+ // Do not edit by hand.
3
+ const builtinDoc = {
4
+ "title": "gauspuls",
5
+ "category": "math/signal",
6
+ "keywords": [
7
+ "gauspuls",
8
+ "gaussian pulse",
9
+ "pulse train",
10
+ "signal processing",
11
+ "cutoff"
12
+ ],
13
+ "summary": "Generate Gaussian-modulated sinusoidal pulses.",
14
+ "references": [
15
+ "title: \"MATLAB gauspuls documentation\""
16
+ ],
17
+ "gpu_support": {
18
+ "elementwise": false,
19
+ "reduction": false,
20
+ "precisions": [
21
+ "f64"
22
+ ],
23
+ "broadcasting": "none",
24
+ "notes": "GPU inputs are gathered to the host and evaluated with the scalar reference implementation."
25
+ },
26
+ "fusion": {
27
+ "elementwise": false,
28
+ "reduction": false,
29
+ "max_inputs": 1,
30
+ "constants": "inline",
31
+ "notes": "Fusion is disabled because parameter validation and cutoff mode are handled by the host builtin."
32
+ },
33
+ "requires_feature": null,
34
+ "tested": {
35
+ "unit": "builtins::math::signal::gauspuls::tests",
36
+ "integration": null
37
+ },
38
+ "description": "`gauspuls(T)` evaluates a Gaussian-modulated cosine pulse. Optional `FC`, `BW`, and `BWR` arguments control carrier frequency, fractional bandwidth, and bandwidth reference level. `[YI, YQ, YE] = gauspuls(T, FC, BW, BWR)` also returns quadrature samples and the Gaussian envelope. `gauspuls('cutoff', FC, BW, BWR, TPE)` returns the cutoff time where the envelope reaches `TPE` dB.",
39
+ "behaviors": [
40
+ "Operates element-wise on real numeric scalars, vectors, matrices, and N-D tensors; preserves input shape.",
41
+ "One output returns the in-phase cosine component; three requested outputs return in-phase, quadrature, and envelope arrays.",
42
+ "Defaults are `FC = 1000`, `BW = 0.5`, and `BWR = -6`.",
43
+ "Carrier frequency and bandwidth must be positive finite scalars.",
44
+ "Bandwidth reference and cutoff envelope levels must be negative finite scalars.",
45
+ "Complex inputs are rejected with a builtin-scoped error."
46
+ ],
47
+ "examples": [
48
+ {
49
+ "description": "Evaluate a Gaussian pulse",
50
+ "input": "t = -0.001:0.001:0.001;\ny = gauspuls(t, 1000, 0.5, -6)"
51
+ },
52
+ {
53
+ "description": "Return in-phase, quadrature, and envelope samples",
54
+ "input": "t = 0:0.00025:0.001;\n[yi, yq, ye] = gauspuls(t, 1000, 0.5, -6)"
55
+ },
56
+ {
57
+ "description": "Compute cutoff time",
58
+ "input": "tc = gauspuls('cutoff', 1000, 0.5, -6, -60)"
59
+ }
60
+ ],
61
+ "faqs": [
62
+ {
63
+ "question": "Can `gauspuls` be used inside `pulstran`?",
64
+ "answer": "Yes. `pulstran(T, D, 'gauspuls', FC, BW, BWR)` evaluates Gaussian pulses centered at each delay."
65
+ }
66
+ ],
67
+ "links": [
68
+ {
69
+ "label": "pulstran",
70
+ "url": "./pulstran"
71
+ },
72
+ {
73
+ "label": "rectpuls",
74
+ "url": "./rectpuls"
75
+ },
76
+ {
77
+ "label": "tripuls",
78
+ "url": "./tripuls"
79
+ }
80
+ ],
81
+ "source": {
82
+ "label": "`crates/runmat-runtime/src/builtins/math/signal/gauspuls.rs`",
83
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/math/signal/gauspuls.rs"
84
+ },
85
+ "key": "gauspuls",
86
+ "slug": "gauspuls",
87
+ "aliases": [],
88
+ "categoryPath": [
89
+ "math",
90
+ "signal"
91
+ ]
92
+ };
93
+ export default builtinDoc;
94
+ //# sourceMappingURL=gauspuls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauspuls.js","sourceRoot":"","sources":["../../../src/generated/builtins/gauspuls.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE;QACV,UAAU;QACV,gBAAgB;QAChB,aAAa;QACb,mBAAmB;QACnB,QAAQ;KACT;IACD,SAAS,EAAE,gDAAgD;IAC3D,YAAY,EAAE;QACZ,0CAA0C;KAC3C;IACD,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,KAAK;SACN;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,6FAA6F;KACvG;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,kGAAkG;KAC5G;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,yCAAyC;QACjD,aAAa,EAAE,IAAI;KACpB;IACD,aAAa,EAAE,8XAA8X;IAC7Y,WAAW,EAAE;QACX,2GAA2G;QAC3G,6HAA6H;QAC7H,uDAAuD;QACvD,kEAAkE;QAClE,iFAAiF;QACjF,0DAA0D;KAC3D;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,2BAA2B;YAC1C,OAAO,EAAE,yDAAyD;SACnE;QACD;YACE,aAAa,EAAE,mDAAmD;YAClE,OAAO,EAAE,iEAAiE;SAC3E;QACD;YACE,aAAa,EAAE,qBAAqB;YACpC,OAAO,EAAE,6CAA6C;SACvD;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,2CAA2C;YACvD,QAAQ,EAAE,kGAAkG;SAC7G;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,8DAA8D;QACvE,KAAK,EAAE,2GAA2G;KACnH;IACD,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,MAAM;QACN,QAAQ;KACT;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gca.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/gca.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAiGjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"gca.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/gca.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAsGjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -33,6 +33,7 @@ const builtinDoc = {
33
33
  "`gca()` returns a scalar numeric axes handle.",
34
34
  "`gca('struct')` returns a struct with fields `handle`, `figure`, `rows`, `cols`, and `index`.",
35
35
  "The current axes reflect the active subplot when `subplot` has been used.",
36
+ "The numeric axes handle can be passed to `get` and `set`, including common axes styling such as `FontSize`.",
36
37
  "Unsupported arguments raise `gca` plotting errors."
37
38
  ],
38
39
  "examples": [
@@ -45,6 +46,10 @@ const builtinDoc = {
45
46
  "description": "Inspect the active subplot layout",
46
47
  "input": "subplot(2, 2, 3);\ninfo = gca(\"struct\")",
47
48
  "output": "info =\n struct with fields:\n handle\n figure\n rows\n cols\n index"
49
+ },
50
+ {
51
+ "description": "Style the current axes",
52
+ "input": "plot(1:3, [1 2 3]);\nset(gca, 'FontSize', 10);"
48
53
  }
49
54
  ],
50
55
  "faqs": [
@@ -1 +1 @@
1
- {"version":3,"file":"gca.js","sourceRoot":"","sources":["../../../src/generated/builtins/gca.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,KAAK;QACL,cAAc;QACd,aAAa;QACb,UAAU;KACX;IACD,SAAS,EAAE,sDAAsD;IACjE,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,2EAA2E;KACrF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,gCAAgC;KACzC;IACD,aAAa,EAAE,kKAAkK;IACjL,WAAW,EAAE;QACX,+CAA+C;QAC/C,+FAA+F;QAC/F,2EAA2E;QAC3E,oDAAoD;KACrD;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,8BAA8B;YAC7C,OAAO,EAAE,wBAAwB;YACjC,QAAQ,EAAE,+BAA+B;SAC1C;QACD;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,2CAA2C;YACpD,QAAQ,EAAE,sFAAsF;SACjG;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,wCAAwC;YACpD,QAAQ,EAAE,8HAA8H;SACzI;QACD;YACE,UAAU,EAAE,yCAAyC;YACrD,QAAQ,EAAE,uFAAuF;SAClG;QACD;YACE,UAAU,EAAE,4BAA4B;YACxC,QAAQ,EAAE,6CAA6C;SACxD;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,0DAA0D;QACnE,KAAK,EAAE,uGAAuG;KAC/G;IACD,eAAe,EAAE,sFAAsF;IACvG,cAAc,EAAE;QACd,sGAAsG;KACvG;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"gca.js","sourceRoot":"","sources":["../../../src/generated/builtins/gca.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,KAAK;QACL,cAAc;QACd,aAAa;QACb,UAAU;KACX;IACD,SAAS,EAAE,sDAAsD;IACjE,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,2EAA2E;KACrF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,gCAAgC;KACzC;IACD,aAAa,EAAE,kKAAkK;IACjL,WAAW,EAAE;QACX,+CAA+C;QAC/C,+FAA+F;QAC/F,2EAA2E;QAC3E,6GAA6G;QAC7G,oDAAoD;KACrD;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,8BAA8B;YAC7C,OAAO,EAAE,wBAAwB;YACjC,QAAQ,EAAE,+BAA+B;SAC1C;QACD;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,2CAA2C;YACpD,QAAQ,EAAE,sFAAsF;SACjG;QACD;YACE,aAAa,EAAE,wBAAwB;YACvC,OAAO,EAAE,gDAAgD;SAC1D;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,wCAAwC;YACpD,QAAQ,EAAE,8HAA8H;SACzI;QACD;YACE,UAAU,EAAE,yCAAyC;YACrD,QAAQ,EAAE,uFAAuF;SAClG;QACD;YACE,UAAU,EAAE,4BAA4B;YACxC,QAAQ,EAAE,6CAA6C;SACxD;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,0DAA0D;QACnE,KAAK,EAAE,uGAAuG;KAC/G;IACD,eAAe,EAAE,sFAAsF;IACvG,cAAc,EAAE;QACd,sGAAsG;KACvG;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -30,8 +30,8 @@ const builtinDoc = {
30
30
  },
31
31
  {
32
32
  "description": "Read an axes-local property",
33
- "input": "ax = subplot(1, 2, 2);\nsemilogx(logspace(0, 2, 50), logspace(0, 2, 50));\nget(ax, 'XScale')",
34
- "output": "ans =\n 'log'"
33
+ "input": "ax = subplot(1, 2, 2);\nsemilogx(logspace(0, 2, 50), logspace(0, 2, 50));\nset(ax, 'FontSize', 12);\nget(ax, 'FontSize')",
34
+ "output": "ans =\n 12"
35
35
  },
36
36
  {
37
37
  "description": "Inspect a legend handle after creation",
@@ -45,7 +45,7 @@ const builtinDoc = {
45
45
  },
46
46
  {
47
47
  "question": "Can I query properties on axes handles, not just plot objects?",
48
- "answer": "Yes. `get(gca, 'XScale')` reads the x-axis scale mode, `get(gca, 'View')` reads the camera angle, and so on. Axes handles, legend handles, text handles, and plot-child handles all go through the same `get` interface."
48
+ "answer": "Yes. `get(gca, 'XScale')` reads the x-axis scale mode, `get(gca, 'View')` reads the camera angle, `get(gca, 'FontSize')` reads the axes tick-label font size, and so on. Axes handles, legend handles, text handles, and plot-child handles all go through the same `get` interface."
49
49
  },
50
50
  {
51
51
  "question": "What happens if I query a property that doesn't exist?",
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/generated/builtins/get.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,KAAK;QACL,iBAAiB;QACjB,iBAAiB;QACjB,YAAY;QACZ,wBAAwB;KACzB;IACD,SAAS,EAAE,sDAAsD;IACjE,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,gCAAgC;KACzC;IACD,aAAa,EAAE,0MAA0M;IACzN,WAAW,EAAE;QACX,mEAAmE;QACnE,2DAA2D;QAC3D,2IAA2I;QAC3I,qHAAqH;QACrH,4IAA4I;KAC7I;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,oDAAoD;YACnE,OAAO,EAAE,8CAA8C;SACxD;QACD;YACE,aAAa,EAAE,6BAA6B;YAC5C,OAAO,EAAE,8FAA8F;YACvG,QAAQ,EAAE,kBAAkB;SAC7B;QACD;YACE,aAAa,EAAE,wCAAwC;YACvD,OAAO,EAAE,iEAAiE;SAC3E;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,oDAAoD;YAChE,QAAQ,EAAE,8MAA8M;SACzN;QACD;YACE,UAAU,EAAE,gEAAgE;YAC5E,QAAQ,EAAE,0NAA0N;SACrO;QACD;YACE,UAAU,EAAE,wDAAwD;YACpE,QAAQ,EAAE,yLAAyL;SACpM;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,0DAA0D;QACnE,KAAK,EAAE,uGAAuG;KAC/G;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/generated/builtins/get.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,KAAK;QACL,iBAAiB;QACjB,iBAAiB;QACjB,YAAY;QACZ,wBAAwB;KACzB;IACD,SAAS,EAAE,sDAAsD;IACjE,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,gCAAgC;KACzC;IACD,aAAa,EAAE,0MAA0M;IACzN,WAAW,EAAE;QACX,mEAAmE;QACnE,2DAA2D;QAC3D,2IAA2I;QAC3I,qHAAqH;QACrH,4IAA4I;KAC7I;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,oDAAoD;YACnE,OAAO,EAAE,8CAA8C;SACxD;QACD;YACE,aAAa,EAAE,6BAA6B;YAC5C,OAAO,EAAE,0HAA0H;YACnI,QAAQ,EAAE,eAAe;SAC1B;QACD;YACE,aAAa,EAAE,wCAAwC;YACvD,OAAO,EAAE,iEAAiE;SAC3E;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,oDAAoD;YAChE,QAAQ,EAAE,8MAA8M;SACzN;QACD;YACE,UAAU,EAAE,gEAAgE;YAC5E,QAAQ,EAAE,sRAAsR;SACjS;QACD;YACE,UAAU,EAAE,wDAAwD;YACpE,QAAQ,EAAE,yLAAyL;SACpM;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,0DAA0D;QACnE,KAAK,EAAE,uGAAuG;KAC/G;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAsFjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA4FjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -7,6 +7,7 @@ const builtinDoc = {
7
7
  "grid",
8
8
  "grid on",
9
9
  "grid off",
10
+ "grid minor",
10
11
  "chart grid lines",
11
12
  "matlab grid"
12
13
  ],
@@ -15,11 +16,12 @@ const builtinDoc = {
15
16
  "tested": {
16
17
  "unit": "builtins::plotting::cmds"
17
18
  },
18
- "description": "`grid` controls visibility of axes grid lines on the active axes or subplot. Command forms such as `grid on`, `grid off`, and toggle behavior follow MATLAB semantics.",
19
+ "description": "`grid` controls visibility of major and minor axes grid lines on the active axes or subplot. Command forms such as `grid on`, `grid off`, `grid minor`, and toggle behavior follow MATLAB semantics.",
19
20
  "behaviors": [
20
21
  "`grid on` enables grid lines on the current axes.",
21
- "`grid off` disables grid lines on the current axes.",
22
- "Calling `grid` with no argument toggles the current state.",
22
+ "`grid off` disables major and minor grid lines on the current axes.",
23
+ "`grid minor` toggles minor grid lines without changing the major grid state.",
24
+ "Calling `grid` with no argument toggles the major grid state.",
23
25
  "Grid visibility is subplot-local and does not spill into other axes automatically."
24
26
  ],
25
27
  "examples": [
@@ -27,6 +29,10 @@ const builtinDoc = {
27
29
  "description": "Enable grid lines on a simple line chart",
28
30
  "input": "plot(1:5, [1 4 2 5 3]);\ngrid on;"
29
31
  },
32
+ {
33
+ "description": "Toggle minor grid lines on the current axes",
34
+ "input": "plot(1:10, sin(1:10));\ngrid minor;"
35
+ },
30
36
  {
31
37
  "description": "Toggle grid lines in one subplot only",
32
38
  "input": "subplot(1, 2, 1);\nplot(1:5, 1:5);\ngrid off;\nsubplot(1, 2, 2);\nplot(1:5, [5 4 3 2 1]);\ngrid on;"
@@ -35,7 +41,7 @@ const builtinDoc = {
35
41
  "faqs": [
36
42
  {
37
43
  "question": "Does RunMat support minor grid lines?",
38
- "answer": "Not yet `grid on` enables major grid lines only. Minor grid support (the MATLAB `grid minor` form) is planned. For now, you get the primary tick grid, which covers most use cases."
44
+ "answer": "Yes. Use `grid minor` or `grid('minor')` to toggle minor grid lines on the active axes. `grid off` disables both major and minor grid lines."
39
45
  },
40
46
  {
41
47
  "question": "Can I style the grid line color or width?",
@@ -1 +1 @@
1
- {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,MAAM;QACN,SAAS;QACT,UAAU;QACV,kBAAkB;QAClB,aAAa;KACd;IACD,SAAS,EAAE,uDAAuD;IAClE,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,0BAA0B;KACnC;IACD,aAAa,EAAE,wKAAwK;IACvL,WAAW,EAAE;QACX,mDAAmD;QACnD,qDAAqD;QACrD,4DAA4D;QAC5D,oFAAoF;KACrF;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,0CAA0C;YACzD,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,aAAa,EAAE,uCAAuC;YACtD,OAAO,EAAE,qGAAqG;SAC/G;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,uCAAuC;YACnD,QAAQ,EAAE,uLAAuL;SAClM;QACD;YACE,UAAU,EAAE,2CAA2C;YACvD,QAAQ,EAAE,qQAAqQ;SAChR;QACD;YACE,UAAU,EAAE,wCAAwC;YACpD,QAAQ,EAAE,iLAAiL;SAC5L;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,wGAAwG;KAChH;IACD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,MAAM;QACN,SAAS;QACT,UAAU;QACV,YAAY;QACZ,kBAAkB;QAClB,aAAa;KACd;IACD,SAAS,EAAE,uDAAuD;IAClE,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,0BAA0B;KACnC;IACD,aAAa,EAAE,sMAAsM;IACrN,WAAW,EAAE;QACX,mDAAmD;QACnD,qEAAqE;QACrE,8EAA8E;QAC9E,+DAA+D;QAC/D,oFAAoF;KACrF;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,0CAA0C;YACzD,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,aAAa,EAAE,6CAA6C;YAC5D,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,aAAa,EAAE,uCAAuC;YACtD,OAAO,EAAE,qGAAqG;SAC/G;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,uCAAuC;YACnD,QAAQ,EAAE,8IAA8I;SACzJ;QACD;YACE,UAAU,EAAE,2CAA2C;YACvD,QAAQ,EAAE,qQAAqQ;SAChR;QACD;YACE,UAAU,EAAE,wCAAwC;YACpD,QAAQ,EAAE,iLAAiL;SAC5L;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,wGAAwG;KAChH;IACD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BuiltinDoc } from "../../builtins.js";
2
+ declare const builtinDoc: BuiltinDoc;
3
+ export default builtinDoc;
4
+ //# sourceMappingURL=heaviside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heaviside.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/heaviside.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAsIjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,139 @@
1
+ // @generated by scripts/generate-builtins.cjs
2
+ // Do not edit by hand.
3
+ const builtinDoc = {
4
+ "title": "heaviside",
5
+ "category": "math/elementwise",
6
+ "keywords": [
7
+ "heaviside",
8
+ "unit step",
9
+ "step function",
10
+ "elementwise",
11
+ "gpu"
12
+ ],
13
+ "summary": "Compute the element-wise Heaviside step function.",
14
+ "references": [],
15
+ "gpu_support": {
16
+ "elementwise": true,
17
+ "reduction": false,
18
+ "precisions": [
19
+ "f32",
20
+ "f64"
21
+ ],
22
+ "broadcasting": "matlab",
23
+ "notes": "Keeps real GPU tensors resident when the active provider implements unary_heaviside; otherwise RunMat gathers and evaluates the host implementation."
24
+ },
25
+ "fusion": {
26
+ "elementwise": true,
27
+ "reduction": false,
28
+ "max_inputs": 1,
29
+ "constants": "inline"
30
+ },
31
+ "requires_feature": null,
32
+ "tested": {
33
+ "unit": "builtins::math::elementwise::heaviside::tests",
34
+ "integration": "builtins::math::elementwise::heaviside::tests::heaviside_gpu_provider_roundtrip"
35
+ },
36
+ "description": "`Y = heaviside(X)` returns the Heaviside step function applied element by element. Negative real values map to `0`, zero maps to `0.5`, and positive values map to `1`.",
37
+ "behaviors": [
38
+ "Real scalars, vectors, matrices, and higher-dimensional tensors are evaluated elementwise.",
39
+ "Both `0.0` and `-0.0` map to `0.5`.",
40
+ "`Inf` maps to `1`, `-Inf` maps to `0`, and `NaN` remains `NaN`.",
41
+ "CPU, provider, WGPU, and fusion paths all use the same real scalar mapping.",
42
+ "Logical inputs are promoted to doubles, so `heaviside(false)` returns `0.5` and `heaviside(true)` returns `1`.",
43
+ "Character arrays are treated as their numeric code points and return doubles of the same shape.",
44
+ "Symbolic scalar inputs return symbolic `heaviside(...)` expressions.",
45
+ "Complex and string inputs are rejected with a stable invalid-input identifier."
46
+ ],
47
+ "examples": [
48
+ {
49
+ "description": "Evaluate the step at representative scalar values",
50
+ "input": "values = heaviside([-2 0 3])",
51
+ "output": "values = [0 0.5 1]"
52
+ },
53
+ {
54
+ "description": "Gate a sinusoid using a unit step",
55
+ "input": "t = -1:0.01:1;\nx = sin(2*pi*t).*heaviside(t)"
56
+ },
57
+ {
58
+ "description": "Preserve shape for matrix inputs",
59
+ "input": "A = [-1 0; 2 NaN];\nY = heaviside(A)",
60
+ "output": "Y = [0 0.5; 1 NaN]"
61
+ },
62
+ {
63
+ "description": "Use logical inputs",
64
+ "input": "mask = [false true];\ny = heaviside(mask)",
65
+ "output": "y = [0.5 1]"
66
+ },
67
+ {
68
+ "description": "Preserve symbolic expressions",
69
+ "input": "syms x;\ny = heaviside(x)",
70
+ "output": "y = heaviside(x)"
71
+ },
72
+ {
73
+ "description": "Execute on a GPU-resident tensor",
74
+ "input": "G = gpuArray([-1 0 1]);\nY = heaviside(G);\nhost = gather(Y)"
75
+ }
76
+ ],
77
+ "faqs": [
78
+ {
79
+ "question": "What value does RunMat use at zero?",
80
+ "answer": "RunMat returns `0.5` for both positive and negative zero, matching MATLAB's convention for numeric Heaviside step values."
81
+ },
82
+ {
83
+ "question": "Does `heaviside` support complex numbers?",
84
+ "answer": "No. RunMat implements the real-valued Heaviside step function. Complex inputs raise `RunMat:heaviside:InvalidInput` instead of silently choosing a branch."
85
+ },
86
+ {
87
+ "question": "Does `heaviside` support symbolic expressions?",
88
+ "answer": "Yes. Symbolic scalar inputs remain symbolic and format as `heaviside(expr)`."
89
+ },
90
+ {
91
+ "question": "Does `heaviside` preserve NaN values?",
92
+ "answer": "Yes. NaN inputs remain NaN on CPU, GPU provider, and fused elementwise paths."
93
+ },
94
+ {
95
+ "question": "Will `heaviside(gpuArray(...))` stay on the GPU?",
96
+ "answer": "Yes when the active provider implements `unary_heaviside`. Providers without that hook fall back to host evaluation for correctness."
97
+ },
98
+ {
99
+ "question": "Can `heaviside` participate in fusion?",
100
+ "answer": "Yes. The fusion planner emits an elementwise step expression with explicit zero and NaN handling."
101
+ }
102
+ ],
103
+ "links": [
104
+ {
105
+ "label": "sign",
106
+ "url": "./sign"
107
+ },
108
+ {
109
+ "label": "times",
110
+ "url": "./times"
111
+ },
112
+ {
113
+ "label": "sin",
114
+ "url": "./sin"
115
+ },
116
+ {
117
+ "label": "gpuArray",
118
+ "url": "./gpuarray"
119
+ },
120
+ {
121
+ "label": "gather",
122
+ "url": "./gather"
123
+ }
124
+ ],
125
+ "source": {
126
+ "label": "`crates/runmat-runtime/src/builtins/math/elementwise/heaviside.rs`",
127
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/math/elementwise/heaviside.rs"
128
+ },
129
+ "gpu_residency": "`heaviside` keeps real GPU tensors resident when the active provider exposes `unary_heaviside`. If that hook is unavailable, RunMat gathers the tensor and evaluates the same scalar mapping on the host.",
130
+ "key": "heaviside",
131
+ "slug": "heaviside",
132
+ "aliases": [],
133
+ "categoryPath": [
134
+ "math",
135
+ "elementwise"
136
+ ]
137
+ };
138
+ export default builtinDoc;
139
+ //# sourceMappingURL=heaviside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heaviside.js","sourceRoot":"","sources":["../../../src/generated/builtins/heaviside.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,WAAW;IACpB,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE;QACV,WAAW;QACX,WAAW;QACX,eAAe;QACf,aAAa;QACb,KAAK;KACN;IACD,SAAS,EAAE,mDAAmD;IAC9D,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE;QACb,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,KAAK;YACL,KAAK;SACN;QACD,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,sJAAsJ;KAChK;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,+CAA+C;QACvD,aAAa,EAAE,iFAAiF;KACjG;IACD,aAAa,EAAE,yKAAyK;IACxL,WAAW,EAAE;QACX,4FAA4F;QAC5F,qCAAqC;QACrC,iEAAiE;QACjE,6EAA6E;QAC7E,gHAAgH;QAChH,iGAAiG;QACjG,sEAAsE;QACtE,gFAAgF;KACjF;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,mDAAmD;YAClE,OAAO,EAAE,8BAA8B;YACvC,QAAQ,EAAE,oBAAoB;SAC/B;QACD;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,+CAA+C;SACzD;QACD;YACE,aAAa,EAAE,kCAAkC;YACjD,OAAO,EAAE,sCAAsC;YAC/C,QAAQ,EAAE,oBAAoB;SAC/B;QACD;YACE,aAAa,EAAE,oBAAoB;YACnC,OAAO,EAAE,2CAA2C;YACpD,QAAQ,EAAE,aAAa;SACxB;QACD;YACE,aAAa,EAAE,+BAA+B;YAC9C,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,kBAAkB;SAC7B;QACD;YACE,aAAa,EAAE,kCAAkC;YACjD,OAAO,EAAE,8DAA8D;SACxE;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,qCAAqC;YACjD,QAAQ,EAAE,2HAA2H;SACtI;QACD;YACE,UAAU,EAAE,2CAA2C;YACvD,QAAQ,EAAE,4JAA4J;SACvK;QACD;YACE,UAAU,EAAE,gDAAgD;YAC5D,QAAQ,EAAE,8EAA8E;SACzF;QACD;YACE,UAAU,EAAE,uCAAuC;YACnD,QAAQ,EAAE,+EAA+E;SAC1F;QACD;YACE,UAAU,EAAE,kDAAkD;YAC9D,QAAQ,EAAE,sIAAsI;SACjJ;QACD;YACE,UAAU,EAAE,wCAAwC;YACpD,QAAQ,EAAE,mGAAmG;SAC9G;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,oEAAoE;QAC7E,KAAK,EAAE,iHAAiH;KACzH;IACD,eAAe,EAAE,2MAA2M;IAC5N,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,WAAW;IACnB,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,MAAM;QACN,aAAa;KACd;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BuiltinDoc } from "../../builtins.js";
2
+ declare const builtinDoc: BuiltinDoc;
3
+ export default builtinDoc;
4
+ //# sourceMappingURL=hilbert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hilbert.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/hilbert.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAiIjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,134 @@
1
+ // @generated by scripts/generate-builtins.cjs
2
+ // Do not edit by hand.
3
+ const builtinDoc = {
4
+ "title": "hilbert",
5
+ "category": "math/signal",
6
+ "keywords": [
7
+ "hilbert",
8
+ "analytic signal",
9
+ "signal processing",
10
+ "fft",
11
+ "complex"
12
+ ],
13
+ "summary": "Construct analytic signals with the Hilbert transform.",
14
+ "references": [
15
+ "title: \"MATLAB hilbert documentation\""
16
+ ],
17
+ "gpu_support": {
18
+ "elementwise": false,
19
+ "reduction": false,
20
+ "precisions": [
21
+ "f32",
22
+ "f64"
23
+ ],
24
+ "broadcasting": "none",
25
+ "notes": "GPU inputs are accepted through the active provider gather path. The host implementation computes the FFT-domain analytic signal and returns a complex host tensor."
26
+ },
27
+ "fusion": {
28
+ "elementwise": false,
29
+ "reduction": false,
30
+ "max_inputs": 1,
31
+ "constants": "inline"
32
+ },
33
+ "requires_feature": null,
34
+ "tested": {
35
+ "unit": "builtins::math::signal::hilbert::tests",
36
+ "integration": "runmat-vm basics hilbert_builtin_executes_for_fm_demod_shape"
37
+ },
38
+ "description": "`z = hilbert(x)` returns the analytic signal associated with a real signal `x`. The real part of `z` is the original signal, and the imaginary part is the Hilbert transform of `x`.",
39
+ "behaviors": [
40
+ "Accepts real numeric, logical, integer, vector, matrix, and N-D tensor inputs.",
41
+ "Operates along the first non-singleton dimension, matching MATLAB's column-wise behavior for matrices and row-wise behavior for row vectors.",
42
+ "`hilbert(x, N)` pads with zeros or truncates along the transform dimension before constructing the analytic signal.",
43
+ "Returns complex scalar or complex tensor output; output shape follows the input shape except that the transform dimension becomes `N` when supplied.",
44
+ "The FFT-domain multiplier preserves DC and, for even lengths, Nyquist bins; positive-frequency bins are doubled and negative-frequency bins are zeroed.",
45
+ "Complex inputs are rejected because MATLAB's `hilbert` expects a real signal."
46
+ ],
47
+ "examples": [
48
+ {
49
+ "description": "Analytic signal of a sampled cosine",
50
+ "input": "x = [1 0 -1 0];\nz = hilbert(x)",
51
+ "output": "z = [1.0000 + 0.0000i, 0.0000 + 1.0000i, -1.0000 + 0.0000i, 0.0000 - 1.0000i]"
52
+ },
53
+ {
54
+ "description": "Use Hilbert output for phase demodulation",
55
+ "input": "fs = 8000;\nt = 0:1/fs:0.1;\ns = cos(2*pi*500*t + 2*sin(2*pi*20*t));\nz = hilbert(s);\nphase = unwrap(angle(z));"
56
+ },
57
+ {
58
+ "description": "Specify an FFT length",
59
+ "input": "x = [1 0 -1 0];\nz = hilbert(x, 8);\nsize(z)",
60
+ "output": "ans = [1 8]"
61
+ },
62
+ {
63
+ "description": "Operate down matrix columns",
64
+ "input": "X = [1 0; 0 1; -1 0; 0 -1];\nZ = hilbert(X);"
65
+ }
66
+ ],
67
+ "faqs": [
68
+ {
69
+ "question": "What does `hilbert` return?",
70
+ "answer": "`hilbert` returns an analytic signal. Its real part is the input signal and its imaginary part is the Hilbert transform."
71
+ },
72
+ {
73
+ "question": "Which dimension is transformed?",
74
+ "answer": "RunMat follows MATLAB's default: the first non-singleton dimension. For a column vector this is rows, for a row vector this is columns, and for a matrix this means each column is transformed independently."
75
+ },
76
+ {
77
+ "question": "How is the transform computed?",
78
+ "answer": "RunMat computes an FFT, applies the standard one-sided analytic-signal multiplier, and then computes an inverse FFT."
79
+ },
80
+ {
81
+ "question": "Can I pass complex input?",
82
+ "answer": "No. `hilbert` is defined for real input signals and returns a complex analytic signal."
83
+ },
84
+ {
85
+ "question": "Does `hilbert` run on GPU tensors?",
86
+ "answer": "GPU tensors are supported as inputs. The current implementation gathers through the active provider, computes the analytic signal with the host FFT path, and returns a complex host tensor."
87
+ }
88
+ ],
89
+ "links": [
90
+ {
91
+ "label": "fft",
92
+ "url": "./fft"
93
+ },
94
+ {
95
+ "label": "ifft",
96
+ "url": "./ifft"
97
+ },
98
+ {
99
+ "label": "angle",
100
+ "url": "./angle"
101
+ },
102
+ {
103
+ "label": "unwrap",
104
+ "url": "./unwrap"
105
+ },
106
+ {
107
+ "label": "butter",
108
+ "url": "./butter"
109
+ },
110
+ {
111
+ "label": "filter",
112
+ "url": "./filter"
113
+ }
114
+ ],
115
+ "source": {
116
+ "label": "`crates/runmat-runtime/src/builtins/math/signal/hilbert.rs`",
117
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/math/signal/hilbert.rs"
118
+ },
119
+ "gpu_residency": "`hilbert` accepts GPU tensors through the normal gather path. Because the result is complex and the runtime currently materializes complex analytic signals on the host, downstream GPU residency resumes only after an explicit `gpuArray` or another operation that uploads the result.",
120
+ "gpu_behavior": [
121
+ "GPU inputs are downloaded through the active provider with dtype normalization.",
122
+ "The host FFT implementation then applies MATLAB-compatible analytic-signal weighting.",
123
+ "The output is a complex host value, matching the runtime's current complex tensor representation."
124
+ ],
125
+ "key": "hilbert",
126
+ "slug": "hilbert",
127
+ "aliases": [],
128
+ "categoryPath": [
129
+ "math",
130
+ "signal"
131
+ ]
132
+ };
133
+ export default builtinDoc;
134
+ //# sourceMappingURL=hilbert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hilbert.js","sourceRoot":"","sources":["../../../src/generated/builtins/hilbert.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE;QACV,SAAS;QACT,iBAAiB;QACjB,mBAAmB;QACnB,KAAK;QACL,SAAS;KACV;IACD,SAAS,EAAE,wDAAwD;IACnE,YAAY,EAAE;QACZ,yCAAyC;KAC1C;IACD,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,KAAK;YACL,KAAK;SACN;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,qKAAqK;KAC/K;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,wCAAwC;QAChD,aAAa,EAAE,8DAA8D;KAC9E;IACD,aAAa,EAAE,sLAAsL;IACrM,WAAW,EAAE;QACX,gFAAgF;QAChF,8IAA8I;QAC9I,qHAAqH;QACrH,sJAAsJ;QACtJ,yJAAyJ;QACzJ,+EAA+E;KAChF;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,qCAAqC;YACpD,OAAO,EAAE,iCAAiC;YAC1C,QAAQ,EAAE,+EAA+E;SAC1F;QACD;YACE,aAAa,EAAE,2CAA2C;YAC1D,OAAO,EAAE,kHAAkH;SAC5H;QACD;YACE,aAAa,EAAE,uBAAuB;YACtC,OAAO,EAAE,8CAA8C;YACvD,QAAQ,EAAE,aAAa;SACxB;QACD;YACE,aAAa,EAAE,6BAA6B;YAC5C,OAAO,EAAE,8CAA8C;SACxD;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,6BAA6B;YACzC,QAAQ,EAAE,0HAA0H;SACrI;QACD;YACE,UAAU,EAAE,iCAAiC;YAC7C,QAAQ,EAAE,+MAA+M;SAC1N;QACD;YACE,UAAU,EAAE,gCAAgC;YAC5C,QAAQ,EAAE,sHAAsH;SACjI;QACD;YACE,UAAU,EAAE,2BAA2B;YACvC,QAAQ,EAAE,wFAAwF;SACnG;QACD;YACE,UAAU,EAAE,oCAAoC;YAChD,QAAQ,EAAE,8LAA8L;SACzM;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,6DAA6D;QACtE,KAAK,EAAE,0GAA0G;KAClH;IACD,eAAe,EAAE,2RAA2R;IAC5S,cAAc,EAAE;QACd,iFAAiF;QACjF,uFAAuF;QACvF,mGAAmG;KACpG;IACD,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,MAAM;QACN,QAAQ;KACT;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BuiltinDoc } from "../../builtins.js";
2
+ declare const builtinDoc: BuiltinDoc;
3
+ export default builtinDoc;
4
+ //# sourceMappingURL=limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limit.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/limit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA+EjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,84 @@
1
+ // @generated by scripts/generate-builtins.cjs
2
+ // Do not edit by hand.
3
+ const builtinDoc = {
4
+ "title": "limit",
5
+ "category": "math/symbolic",
6
+ "keywords": [
7
+ "limit",
8
+ "symbolic",
9
+ "calculus",
10
+ "lhopital"
11
+ ],
12
+ "summary": "Evaluate scalar symbolic limits by substitution and L'Hopital reduction.",
13
+ "references": [],
14
+ "gpu_support": {
15
+ "elementwise": false,
16
+ "reduction": false,
17
+ "precisions": [],
18
+ "broadcasting": "none",
19
+ "notes": "Symbolic limits execute on the host and do not participate in GPU fusion."
20
+ },
21
+ "fusion": {
22
+ "elementwise": false,
23
+ "reduction": false,
24
+ "max_inputs": 0,
25
+ "constants": "none"
26
+ },
27
+ "requires_feature": null,
28
+ "tested": {
29
+ "unit": "builtins::math::symbolic::limit::tests",
30
+ "integration": "runmat_vm::bytecode::compile::tests::compile_interprets_symbolic_limit_workflow",
31
+ "fractional_power": "runmat_vm::bytecode::compile::tests::compile_interprets_symbolic_fractional_power_limit"
32
+ },
33
+ "description": "`limit` evaluates scalar symbolic expressions at a finite numeric point. It first performs direct substitution and simplification, then applies repeated L'Hopital reduction for removable `0/0` quotients.",
34
+ "behaviors": [
35
+ "Supports `limit(expr)`, `limit(expr, point)`, `limit(expr, var)`, `limit(expr, var, point)`, and an optional direction string.",
36
+ "Infers the limit variable when the expression contains exactly one symbolic variable.",
37
+ "Simplifies symbolic arithmetic involving `+`, `-`, `*`, `/`, powers with numeric exponents, and the functions `sin`, `cos`, `tan`, `exp`, `log`, and `sqrt`.",
38
+ "Returns scalar symbolic values, including symbolic constants when the limit simplifies to a finite value.",
39
+ "One-sided directions are accepted as `left`, `right`, `-`, or `+` for simple pole detection."
40
+ ],
41
+ "examples": [
42
+ {
43
+ "description": "Classic sinc limit",
44
+ "input": "syms x\nf = limit(sin(x)/x, x, 0)"
45
+ },
46
+ {
47
+ "description": "Finite-difference derivative limit",
48
+ "input": "syms x h\nf = limit((cos(x+h) - cos(x))/h, h, 0)"
49
+ },
50
+ {
51
+ "description": "Fractional symbolic power limit",
52
+ "input": "syms x\nf = limit((cos(x)^(1/3) - 1) / x^2, x, 0)"
53
+ }
54
+ ],
55
+ "faqs": [
56
+ {
57
+ "question": "Does `limit` implement the full Symbolic Math Toolbox?",
58
+ "answer": "No. It implements RunMat's scalar symbolic expression core for common calculus expressions used in MATLAB scripts."
59
+ }
60
+ ],
61
+ "links": [
62
+ {
63
+ "label": "sym",
64
+ "url": "./sym"
65
+ },
66
+ {
67
+ "label": "syms",
68
+ "url": "./syms"
69
+ }
70
+ ],
71
+ "source": {
72
+ "label": "`crates/runmat-runtime/src/builtins/math/symbolic/limit.rs`",
73
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/math/symbolic/limit.rs"
74
+ },
75
+ "key": "limit",
76
+ "slug": "limit",
77
+ "aliases": [],
78
+ "categoryPath": [
79
+ "math",
80
+ "symbolic"
81
+ ]
82
+ };
83
+ export default builtinDoc;
84
+ //# sourceMappingURL=limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limit.js","sourceRoot":"","sources":["../../../src/generated/builtins/limit.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE;QACV,OAAO;QACP,UAAU;QACV,UAAU;QACV,UAAU;KACX;IACD,SAAS,EAAE,0EAA0E;IACrF,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,2EAA2E;KACrF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,MAAM;KACpB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,wCAAwC;QAChD,aAAa,EAAE,iFAAiF;QAChG,kBAAkB,EAAE,yFAAyF;KAC9G;IACD,aAAa,EAAE,6MAA6M;IAC5N,WAAW,EAAE;QACX,gIAAgI;QAChI,uFAAuF;QACvF,8JAA8J;QAC9J,2GAA2G;QAC3G,8FAA8F;KAC/F;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,oBAAoB;YACnC,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,aAAa,EAAE,oCAAoC;YACnD,OAAO,EAAE,kDAAkD;SAC5D;QACD;YACE,aAAa,EAAE,iCAAiC;YAChD,OAAO,EAAE,mDAAmD;SAC7D;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,wDAAwD;YACpE,QAAQ,EAAE,oHAAoH;SAC/H;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,6DAA6D;QACtE,KAAK,EAAE,0GAA0G;KAClH;IACD,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,EAAE;IACb,cAAc,EAAE;QACd,MAAM;QACN,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}