Marshall Lochbaum
3b49294145
Specialize ApdMut to reshape if there's only one append
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
76a40491e9
Remove some rank restrictions from for_cells_SA
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
4450d36187
Better handling for «˘ and »˘ trivial cases
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
d89a6da2da
Evaluate monadic «» on a length-1 argument by reshaping the fill
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
6eca24ce0a
Special code for ∾˝˘ and fold-cells of empty
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
9d5caad9a9
Compute Insert identity natively
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
5d4391a3fd
Combine monadic ˘ with outer ˘ or ⎉
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
a19b5401f7
Fast cases for monadic rank with cell length ≤1
2024-07-05 17:44:42 -04:00
Marshall Lochbaum
8766810db8
Rank-agnostic select_cells
2024-07-04 12:04:00 -04:00
Marshall Lochbaum
ab15eaeeeb
Length-1 reverse is a no-op
2024-07-04 12:04:00 -04:00
dzaima
2ce983041c
fix shared •HashMap value list
2024-06-30 14:06:05 +03:00
dzaima
0319be27ea
fix bad error message on /⁼3‿3⥊0
2024-06-29 02:59:15 +03:00
dzaima
452065adaf
add magic incantation to make optimizer happy
2024-06-26 05:30:09 +03:00
Marshall Lochbaum
e365ecf7dc
Fix F`˘ on rank 0
2024-06-25 22:31:47 -04:00
dzaima
b6bf3f2da6
suppress clang ubsan warning
...
it's a true warning of actual UB and could conceivably be taken advantage of by a compiler, but is not currently so keep things pretty for now
2024-06-26 03:36:02 +03:00
dzaima
024ab669d5
fix ∧˝˘0‿8⥊0 running comparison functions on length-0 inputs
2024-06-26 03:09:43 +03:00
dzaima
6c110a29ee
use loadu_* & storeu_* for unaligned loads/stores
2024-06-26 03:09:43 +03:00
Marshall Lochbaum
e952e4ca3e
Disable F´˘ special code when cell rank isn't 1
2024-06-23 17:06:37 -04:00
Marshall Lochbaum
5758853ccb
Can't call fold-rows special code with reduction length 0
2024-06-23 10:00:44 -04:00
Marshall Lochbaum
5f1c677d48
Support ∧∨ synonyms in fold_rows_bit
2024-06-20 11:05:59 -04:00
Marshall Lochbaum
355efd1eb4
Insert-cells and scan implementation comments, and minor tweaks
2024-06-19 18:36:53 -04:00
Marshall Lochbaum
4b0f105a7f
Implement short-row num⊏˘bool (including ⊣˝˘ ⊢˝˘) with fold code
2024-06-18 14:05:16 -04:00
Marshall Lochbaum
cb1b72fbb2
Extend boolean F˝˘ special code to any ranks
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
1e6c7057e8
Extend boolean F`˘ special code to any frame and cell rank
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
a8b036ad08
Implement ≠˝˘ and =˝˘ like ∧∨ on width<64 boolean
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
f0f130c42e
Use a lookup table for evenly-spaced masks, getting division results from those
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
e6f1e04de2
Fast generic and pext-based ∧˝˘ and ∨˝˘ on width<64
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
6d27dd391b
Clean up scan_rows_bit logic and implement -˘ as (2×⊣˘)-+`˘
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
efde979fe9
Fast boolean ⊣`˘
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
3b61568fda
Implement boolean list scans ->≤≥ using more common scans
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
fde29684d7
Tweak for faster +`˘ on very short boolean rows
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
8e47221c9f
Implement monadic boolean = with ≠
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
8331a05547
Boolean ≠`˘ implementation
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
bd64e8bcd2
Faster boolean +`˘ for short rows based on flattened prefix sum
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
5591d0f4f0
Boolean row-wise scans ∧˘ and ∨˘
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
7b4468c394
Move logical fold-rows functions to Singeli
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
2590222988
Generic-architecture implementations of fold.singeli
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
d29b4df50c
Boolean and, or, eq folds for row length >64
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
c76e175719
Faster boolean +˝˘, and ≠˝˘ on row length >64
2024-06-18 07:46:31 -04:00
Marshall Lochbaum
ab4e5543a0
Implement matrix ⊣˝˘ and ⊢˝˘ with select_cells
2024-06-18 07:46:31 -04:00
dzaima
73123f5bde
even faster »⎉1 & «⎉1 for narrow bitarr 𝕩
2024-06-06 23:36:45 +03:00
dzaima
cc3c6985ad
faster unit»⎉1𝕩 / unit«⎉1𝕩
2024-06-05 13:53:09 +03:00
dzaima
ae3128c180
relax CHECK_IA in takedrop_highrank
...
future overflow in ria*elWidth when allocating shouldn't be a worry as all such calculations should be done in u64, and CHECK_IA(x, 1) guarantees that x is (much) less than 2^60 in both usz configurations
2024-06-05 02:30:00 +03:00
dzaima
8044c560a4
faster atom∾atom
2024-06-01 16:22:34 +03:00
dzaima
05690c001a
suppress false-positive gcc warnings
2024-05-24 04:01:05 +03:00
dzaima
f14583f995
faster ⍉ on large‿small⥊x
2024-05-22 20:07:48 +03:00
dzaima
44c8da7dc7
add checks for l>0 on equal() impls
...
some Singeli `fn equal` paths already assumed such, this just makes the requirement properly checked for, benefited from, and documented
2024-05-20 01:03:57 +03:00
dzaima
52fb05fcd4
unify ⌾(a⊸⊏) typed array paths, fix csz==0
2024-05-20 01:03:57 +03:00
Andrea Piseri
60a28a40ca
Clean up collision checking, use vector copy functions
2024-05-19 16:59:55 +02:00
dzaima
9f6151d92d
expand ⌾(a⊸⊏) tests, stylistic changes/cleanup
2024-05-19 02:14:08 +03:00
Andrea Piseri
99a23a97d8
Fix typo in the error message
2024-05-19 00:10:28 +02:00
Andrea Piseri
3738d0d65d
Formatting
2024-05-18 23:58:11 +02:00
Andrea Piseri
93188a9f90
Use COPY_TO and EQFN in the typed array code path
2024-05-18 23:56:13 +02:00
Andrea Piseri
06808414da
Separate code path for cxsz=1, fix out of bounds read for RNK(x)==0
2024-05-18 21:45:18 +02:00
Andrea Piseri
7f28308e44
native path in select_ucw for high rank 𝕩
...
`𝔽⌾(a⊸⊏)𝕩` now does not need to go through the self-hosted runtime if
`1<=𝕩`. Instead the `select_replace` helper function is parametrized
over the length of `𝕩` (`xl`) and item amount of the cell of `𝕩` (`xcia`).
- The `EQ` macro is modified to not immediately mark the cell as
populated, so that multiple replacements can be done on the cell
on the first assignment to it.
- The `DONE_CW` macro is invoked to mark the current cell as populated
when every element in it has been assigned.
- A loop over the cell contents is introduced to copy the elements in
`𝕩`. This should be fine as it is an easily predictable jump,
but a performance regression is possible and a separate code path
could be introduced in the future.
The change introduces more extensive checking on the shape of `𝔽`'s
result, as for high rank `𝕩` the requirement should be `(≢𝔽a⊏𝕩)≡(≢a)∾1↓≢𝕩`.
The old behaviour of `select_replace` is recovered by passing `xl=xia`
and `xcia=1` in the implementation of `pick_ucw`.
2024-05-18 12:12:17 +02:00
dzaima
4a40739398
use printf & fprintf instead of putchar & co
2024-05-05 01:07:47 +03:00
dzaima
5600bb189a
fix ⟨1,2⋆62⟩/2⥊<⋈0
2024-04-20 21:24:51 +03:00
dzaima
de529e483b
make non-Singeli getRange_f64 check first element for integerness
2024-04-20 21:21:47 +03:00
dzaima
a6a088868c
fix ⟨⟩⍷⟨⟩
2024-04-04 03:54:55 +03:00
dzaima
3870189f85
fix 3‿3⍒"a" & "aa"⍒3‿3
2024-04-04 03:54:55 +03:00
dzaima
a75522c738
fix list⌽𝕩
2024-04-04 02:52:08 +03:00
dzaima
54cec2fdf5
split up CATCH_ERRORS into functional and semantic options
...
allows running a non-heapverify build that functions exactly as a heapverify one, while allowing ⎊ to function
2024-04-04 02:52:08 +03:00
dzaima
74f3b5a012
fix (17⥊'⍉') ∊ 4⥊<"a"
2024-04-03 22:14:04 +03:00
dzaima
61e068086e
fix (2⋆25)/(2⋆10)⥊10
2024-04-03 22:14:04 +03:00
dzaima
74d937a4fd
fix +⌜´↕0 leaking a reference
2024-04-03 17:13:06 +03:00
dzaima
d4f290a897
error on nonInteger⌽⟨⟩
2024-04-03 17:09:27 +03:00
dzaima
c1157f89a6
fix GroupLen properly
2024-04-03 05:59:35 +03:00
dzaima
b8730798c1
explicitly handle empty cells in compress
2024-04-03 05:59:35 +03:00
dzaima
5ab49ab146
slash.c cleanup
2024-04-03 05:59:35 +03:00
dzaima
d77018f269
fix ⟨⟩⍷1‿0⥊0
2024-04-03 05:59:35 +03:00
dzaima
af0a40c732
fix ⍟ with empty typed repeat counts
2024-04-03 05:59:35 +03:00
dzaima
d21a77119f
more verification of •bit._cast types, remove 'n'
2024-03-30 17:55:43 +02:00
dzaima
ac069134c3
fix ⟨1.5⟩ ⊏ "ab"‿"cd"
2024-03-25 16:18:01 +02:00
dzaima
a94903cb12
fix 𝕨⊏unit
2024-03-25 16:18:01 +02:00
dzaima
10a58878d7
fix GroupLen on array elements outside i64 range
2024-03-25 16:18:01 +02:00
dzaima
0c3d83c50b
fix ⊑˘ with bitarr 𝕩
2024-02-27 14:27:42 +02:00
dzaima
694920c273
minor code cleanup
2024-02-27 00:40:16 +02:00
dzaima
875f9185bf
use ux a tiny bit more, add a PLAINLOOP
2024-02-27 00:37:47 +02:00
dzaima
1318026c4e
a bunch of vfor
2024-02-13 22:34:16 +02:00
dzaima
3fc3338256
extract independent load from loop
2024-02-13 22:33:54 +02:00
dzaima
f981f6963b
use ux for loop index in reverse
...
makes gcc autovectorizer happier
2024-02-13 22:31:22 +02:00
dzaima
5abb09ca74
remove barely-useful elType==el_i32 path of reshape
...
perhaps could be replaced with an <=el_i32 path that still uses GetU but just skips numberness/integerness checks and ∘/⌊/⌽/↑ logic
2024-02-13 22:30:11 +02:00
dzaima
73a2b06703
more PLAINLOOP
2024-02-08 19:26:35 +02:00
dzaima
9cb0ab2fbb
Use getRange_fns for repeat_bounds
2024-02-08 19:25:30 +02:00
dzaima
291d3ef5d7
deduplicate sh_c2 setup & output prep
2024-02-04 15:31:38 +02:00
dzaima
4f39729013
Merge pull request #106 from vylsaz/win-sh2
...
Implement •SH for Windows
2024-02-04 14:48:36 +02:00
dzaima
a3392fd6c1
fix casrt_c2 more
2024-02-04 14:47:43 +02:00
vylsaz
42e4956fb9
Replaced globals with argument to thread procedure
2024-02-04 02:35:47 +00:00
dzaima
2dfc8933bd
fix refcount leak in casrt_c2
2024-02-03 18:20:07 +02:00
vylsaz
74d3620839
Implement •SH
2024-02-03 01:45:56 +00:00
dzaima
1e8c390e6a
include file name in failed complication error messages
2024-02-01 22:52:55 +02:00
dzaima
592a8312ac
a bunch of PLAINLOOP
2024-02-01 21:26:08 +02:00
dzaima
1b26e85325
don't need to mark static globals as hidden
...
gcc complains about this
2024-02-01 21:26:08 +02:00
dzaima
c078f62b1f
add GLOBAL, INIT_GLOBAL, or const to globals
2024-02-01 21:13:39 +02:00
dzaima
041be9a612
rearrange elses to get rid of clangd warning
2024-01-28 02:29:03 +02:00
dzaima
ffffdb5895
relax take/drop overflow checking
2024-01-19 18:03:54 +02:00
Marshall Lochbaum
2af2fb8e0c
Use ⍷⊸⊐ for Classify (⊐) on long 1-byte arguments if SIMD bit-table is available
2024-01-07 19:54:13 -05:00
Marshall Lochbaum
dbb6fbade1
Fast interleaving (≍˘) for pointer arrays
2023-12-31 16:28:59 -05:00
Marshall Lochbaum
5f3a4769be
Rename constrep.singeli to replicate.singeli; not just constant now
2023-12-31 15:30:20 -05:00
Marshall Lochbaum
e50ae40f8b
Port replicate-by-scan code from C to Singeli
2023-12-31 15:26:58 -05:00