dzaima
40383906ec
no, neither w nor h are 1, clang
2023-01-17 05:17:37 +02:00
dzaima
472e542ebd
O(1) ⍉𝕩 when it doesn't reorder elements
2023-01-17 04:52:08 +02:00
dzaima
f9eb7f083c
unshare shape
2023-01-17 04:38:55 +02:00
dzaima
21372a743a
allow unsharing slices
2023-01-17 04:32:30 +02:00
dzaima
ec11e34dba
clear old flags from in-place ¨
2023-01-17 04:31:55 +02:00
dzaima
540b37ae6a
shape replacement utility
2023-01-17 03:47:14 +02:00
dzaima
ec92b1d5ba
better eachm_fn
2023-01-17 01:35:04 +02:00
dzaima
5de565f1b0
use 'debug/printf' for Singeli printf
2023-01-17 01:01:13 +02:00
dzaima
79c7aa30df
reformat --help
2023-01-16 23:32:52 +02:00
dzaima
a483ac61d9
--version & version specifying in build/build
2023-01-16 19:31:14 +02:00
dzaima
dd82073c60
slightly faster ⍟list handling
2023-01-16 18:58:48 +02:00
dzaima
e0df77519e
set replxx history max size higher
...
before it was 1000
2023-01-15 22:55:40 +02:00
dzaima
6c89982bbc
unrolled Singeli loop option
2023-01-15 22:51:31 +02:00
dzaima
39605c1a98
add intrinsic file include for _mm_crc32_u32
2023-01-14 00:38:32 +02:00
dzaima
6c88499920
consistently check only for whether __BMI2__ is defined
2023-01-14 00:33:34 +02:00
dzaima
5b35c0a664
keep pext usage for bitarr/bitarr
2023-01-13 23:46:48 +02:00
dzaima
41212ab852
SLOW_PDEP option
2023-01-13 23:23:06 +02:00
dzaima
e987a5e4c0
some file path handling changes around windows
2023-01-13 19:16:13 +02:00
dzaima
376e343639
don't use manual copy loops in eachd_fn
2023-01-12 21:25:36 +02:00
dzaima
dbcd967e12
attempt at replxx-based printf
2023-01-12 17:13:42 +02:00
dzaima
46f657713c
don't rely on bqn_fmt when !FORMATTER or CBQN isn't yet initialized
2023-01-09 02:30:29 +02:00
dzaima
86ae984af0
more print function renaming
2023-01-09 02:17:12 +02:00
dzaima
6f394c41ff
windows: wide char printing
2023-01-09 02:00:22 +02:00
dzaima
a9c70d9d72
printing method overhaul
2023-01-09 01:42:44 +02:00
dzaima
381460e92e
windows: getline fixes & discard trailing CRLF
2023-01-08 20:35:20 +02:00
dzaima
7b7c31e8b9
fix warning of unused pageSizeV for windows builds
2023-01-07 02:27:30 +02:00
dzaima
26c12e6724
add )exit & )off
2023-01-07 02:23:12 +02:00
dzaima
38ec07c34b
use getline on Windows for the REPL
2023-01-06 18:02:02 +02:00
dzaima
6889121a28
getPageSize does need to return something
2023-01-06 06:10:12 +02:00
dzaima
b03bf80198
move Windows cases around
...
also don't make dir_create pretend it succeeds
2023-01-06 06:04:12 +02:00
actalley
815de4fd97
Address build errors on llvm-mingw to build bqn.exe with no SH, FFI, or repl support
2023-01-05 21:38:30 -06:00
dzaima
32f0a2f8fc
check file size for whether we can allocate it
...
also "takes care" of the case when the file is a directory
2022-12-31 21:04:19 +02:00
dzaima
7d4677a8ff
use COPY_TO instead of a loop in fbytes_c1
...
& ryu comment changes
2022-12-31 20:49:50 +02:00
dzaima
8da9c4e3a5
don't fail on •SH under VERIFY_TAIL
2022-12-31 20:31:13 +02:00
dzaima
7b3beec621
•ParseFloat
2022-12-31 20:22:22 +02:00
dzaima
fd38a5b241
use Ryu for number formatting
2022-12-31 03:19:06 +02:00
dzaima
99a82afec4
actually check character arrays in VERIFY_TAIL
2022-12-31 02:50:38 +02:00
dzaima
854acd580d
respect !PROPER_FILLS in high-rank ↑
2022-12-30 16:16:36 +02:00
dzaima
6e748ed800
remove unused rt_* globals
2022-12-30 01:50:00 +02:00
dzaima
7ff74d38e8
squeeze el_bit transpose result
2022-12-30 01:12:24 +02:00
dzaima
faf89abef0
fix ⊏˘ generic case
2022-12-30 00:21:07 +02:00
dzaima
5a9e5e8e50
native baseline high-rank 𝕨⊒𝕩
2022-12-30 00:10:03 +02:00
dzaima
ec169b1006
remove no longer necessary runtime loads
2022-12-29 23:59:44 +02:00
dzaima
83863a64fd
fix gcc build
2022-12-29 23:46:24 +02:00
dzaima
b903a5d9ce
fast num⊑˘simpleArr
2022-12-29 23:37:00 +02:00
dzaima
168db4cf01
fix rtWrap_unwrap refcounting
2022-12-29 23:36:50 +02:00
dzaima
0589d63cc5
fast v˙˘arr, fix arr˘arr
2022-12-29 23:36:37 +02:00
dzaima
1e3117d65f
fast ⥊˘𝕩
2022-12-29 22:25:22 +02:00
dzaima
3408db320c
fast num↑˘𝕩 & num↓˘𝕩 for 2≤=𝕩
2022-12-29 22:20:29 +02:00
dzaima
f6f0c12935
fast ⊑˘simpleArr
2022-12-29 22:07:38 +02:00
dzaima
a0feda9d8b
fast arr˘ x
2022-12-29 22:04:06 +02:00
dzaima
47e95171f0
faster »˘ & «˘ on matrices, fix 0⊏˘↕3
2022-12-29 21:47:52 +02:00
dzaima
897ad8f649
clang really wants to special-case csz==1, but that's checked for before
2022-12-29 21:47:52 +02:00
dzaima
3f0c34e895
fast ≍˘𝕩
2022-12-29 21:47:52 +02:00
dzaima
4e88dc1004
faster ⊏˘
2022-12-29 20:32:17 +02:00
dzaima
41efcfb632
fast ∾˝ & 𝕨ScalarFn˝𝕩
2022-12-29 18:46:14 +02:00
dzaima
8a132467d2
improve EACH_FILLS cases in ¨ & ⌜
2022-12-28 22:38:14 +02:00
dzaima
6a9e03bdb1
use arr_shSetU/arr_shSetI inline
...
and use incG more in rank_c2
2022-12-28 17:31:02 +02:00
dzaima
a34bb0a433
don't unroll libc math loops
2022-12-28 16:51:17 +02:00
dzaima
4884580037
rearrange arr_shCopyUnchecked to not read SH(o) twice
...
and, while making a change that requires rebuilding all of CBQN, also make more of the arr_* fns return their Arr* argument to prepare for using them inline
2022-12-28 16:23:27 +02:00
dzaima
3b1b171828
don't need copying from bitarr to character arr
2022-12-28 16:17:16 +02:00
dzaima
c5a3c57f50
check for path being present for •path/•name/•state
2022-12-28 01:13:58 +02:00
dzaima
d8724e6658
update clangdCommands.bqn to new singeli defines, and enable by default
2022-12-27 23:59:48 +02:00
dzaima
33580b91ca
don't error on unknown fill when not overtaking
2022-12-27 23:44:34 +02:00
dzaima
84bae20f79
don't inline load functions
2022-12-27 03:54:00 +02:00
dzaima
f424c720a7
full native 𝕨⌽𝕩 & 𝕨⌽⁼𝕩
2022-12-27 03:39:48 +02:00
dzaima
75fe558f1c
detect writes past the end of a TALLOC allocation
2022-12-27 02:29:24 +02:00
dzaima
1afdd89075
allow defining custom dyadic inverses of builtins
2022-12-26 23:57:55 +02:00
dzaima
013897cc16
add runtime calls to WARN_SLOW
2022-12-26 23:15:56 +02:00
dzaima
78793ca700
-h → --help
2022-12-26 20:33:33 +02:00
dzaima
c818bf54b1
remove need of libffi from make forbuild
2022-12-26 19:38:24 +02:00
dzaima
48c2425e8b
check result size being too large in ↑
2022-12-26 18:16:11 +02:00
dzaima
7bcee07489
initialize shape properly in one case of high-rank take/drop
...
fixes 0‿4↑↕4 in debug builds, which just magically approximately worked before
2022-12-26 16:09:30 +02:00
dzaima
326d54e130
native list↑𝕩 & list↓𝕩
2022-12-25 13:38:43 +02:00
dzaima
8fad76762a
reorder take_c2
2022-12-24 17:53:16 +02:00
dzaima
e2b45e33e1
simplify splitCells
2022-12-24 17:29:48 +02:00
dzaima
424448aa40
remove rt_memberOf & rt_indexOf
2022-12-24 17:12:35 +02:00
dzaima
95b1beb9db
native high-rank ∊ & ⊐
2022-12-24 17:08:27 +02:00
dzaima
3f40955d83
reorder indexOf_c2
2022-12-24 17:05:50 +02:00
dzaima
e3b5af8a44
fix 𝕨∊p & p⊐𝕩 with an empty high-rank p
2022-12-24 17:03:58 +02:00
dzaima
24dba9ba40
fix a bunch of small memory leaks around REPLXX
...
not that they'd cause any problems in practice - they're very small, and are in the one context where GC can actually run
2022-12-24 16:42:42 +02:00
dzaima
bb7fe02a45
separate checks for x86-64 & NEON Singeli importing
...
& restrict the processed Singeli files on NEON to the ones supported
2022-12-24 15:27:53 +02:00
dzaima
6d79ce9fb1
use arch-independent names for things suppported on both x86-64 & NEON
2022-12-24 15:26:05 +02:00
dzaima
d38316e670
BQN-based build system
2022-12-23 23:09:55 +02:00
dzaima
efcc6a28be
add •file.path to autocomplete options
2022-12-23 18:08:33 +02:00
dzaima
bbc66cbf3f
fix display of running multiline code while cursor isn't in last line
2022-12-23 18:06:58 +02:00
dzaima
381ce70212
backslash+enter → literal newline
2022-12-23 18:02:18 +02:00
dzaima
a6b22c75fd
fast list⊐unit for more list types
2022-12-20 18:32:51 +02:00
dzaima
e69d8dc6e9
native ⌾(v⊸⌽)
2022-12-20 18:31:42 +02:00
dzaima
d05621f8f4
generic vector width calculation for NEON-supported files
2022-12-20 00:02:46 +02:00
dzaima
b91e72567d
update Singeli submodule, conditional NEON includes
2022-12-19 23:31:44 +02:00
dzaima
43be832a37
fix highrank∊list deshaping the result in some scenarios
2022-12-18 23:58:10 +02:00
dzaima
8188886538
fast 𝔽´⟨x⟩ & 𝔽´⟨x,y⟩
2022-12-18 23:49:09 +02:00
dzaima
aa4b92cb01
don't define •SH if not available
2022-12-18 23:40:55 +02:00
dzaima
29cecb0b6e
remove •PrimInd
2022-12-18 23:16:36 +02:00
dzaima
6380364e62
native highrank∊vector
2022-12-18 23:05:58 +02:00
dzaima
30a6de0a31
add unrolling to aarch64 cmp.singeli
2022-12-18 22:45:42 +02:00
dzaima
f9c919d5ce
getmask → homMask/topMask
2022-12-18 22:27:42 +02:00
dzaima
a07b94b889
more general equal.singeli, remove trailing semicolons
2022-12-18 21:55:20 +02:00
dzaima
2a32f52f8d
blend renaming
2022-12-18 02:49:42 +02:00
dzaima
09b3279958
unified Singeli including mechanism
2022-12-18 01:54:07 +02:00
dzaima
9768526ddc
move last bit of equal.singeli to loadBatch
2022-12-18 01:53:56 +02:00
dzaima
40f36fa366
Singeli-generated table for bits.singeli
2022-12-17 17:51:56 +02:00
dzaima
2c73199ed4
use Singeli-generated function tables for comparison
2022-12-16 19:04:58 +02:00
dzaima
f49dd5e8cf
move cmp.singeli NaN check outside for non-x86_64
2022-12-16 17:39:51 +02:00
dzaima
6e3cb9a425
andIsZero→andAllZero; NEON andnz, blendF, sel, bitops.singeli
2022-12-16 00:44:32 +02:00
dzaima
cbd891b768
NEON widen, narrow, undefPromote; make undefPromote more restrictive
2022-12-15 23:19:00 +02:00
dzaima
6fac426f90
add v_dbl & v_half, NEON half{x,n}
2022-12-15 21:57:34 +02:00
dzaima
791e7d122f
ucvt→narrow
2022-12-15 21:44:48 +02:00
dzaima
2b7291dbfb
cvt{E,T,v} → widen{T,to_el{E,v}}
2022-12-15 20:31:00 +02:00
dzaima
9a9fade18a
NEON loadLow, storeLow, andIsZero, maskstore, pack
2022-12-15 16:14:00 +02:00
dzaima
6f2d6bfb0b
remove offset argument from maskstore; don't use w256 in mask.singeli
2022-12-15 16:13:45 +02:00
dzaima
77edc734e8
move storeLow & loadLow to sse3 & avx; fix NEON __not
2022-12-15 00:39:44 +02:00
dzaima
9fea5f1e13
neg(Any|All) → top(Any|All), msk(Any|All) → hom(Any|All)
2022-12-13 21:46:50 +02:00
dzaima
336da996b3
any/all vector check renaming
2022-12-13 02:03:17 +02:00
dzaima
7e13bf7f45
more neon.singeli
2022-12-12 02:59:11 +02:00
dzaima
444268f051
width{eltype{T}} → elwidth{T}
2022-12-12 00:07:50 +02:00
dzaima
2a1611ac81
start of neon.singeli
2022-12-11 23:59:07 +02:00
dzaima
0ef8800530
native F⌾⊢𝕩 & F⌾⊣𝕩
2022-12-08 13:26:04 +02:00
dzaima
3a3f213a92
assign broadcast{T,v} to T**v
2022-12-07 23:53:19 +02:00
dzaima
ce45d487a3
use mutating assignment
2022-12-07 23:24:26 +02:00
dzaima
07d4567a52
use spread arguments
2022-12-07 23:10:17 +02:00
dzaima
bf71fdb4f8
singeli now formats generators itself
...
or, well, has for a long time
2022-12-07 22:41:17 +02:00
dzaima
1b88c4cc62
don't allocate twice the memory requested
2022-12-07 22:22:34 +02:00
dzaima
af978bbc91
cave in and initialize variables in gcc
2022-12-03 23:58:33 +02:00
dzaima
6ca5050f4d
reduce gcc warnings
2022-12-03 23:56:03 +02:00
dzaima
e4f4864ed2
define CBQN_EXPORT by default, add macro test for exactly gcc
2022-12-03 23:19:24 +02:00
dzaima
63e5e843ba
fix f64arr/𝕩
...
`slow:` uses `s`, but the goto went to it before `s` was initialized
2022-12-03 23:18:43 +02:00
dzaima
5d61785912
some more x86_64.h reordering
2022-12-03 22:54:49 +02:00
dzaima
21984e1700
more x86_64.h cleanup
2022-12-03 15:21:05 +02:00
dzaima
95f9e781fa
fix )profiler output merging all REPL entries
2022-12-03 14:14:32 +02:00
dzaima
732d1fdb34
remove ASMI/macro indirection
2022-12-02 17:26:10 +02:00
dzaima
bca0efb46c
clean up x86_64.h
2022-12-02 17:10:04 +02:00
dzaima
0023e46ab8
config file & light theme
2022-12-02 16:49:49 +02:00
dzaima
7c6676a492
copy over custom _mm_loadu_si32 for old gcc
2022-12-01 13:37:01 +02:00
Marshall Lochbaum
4077596b89
Sparse initialization for ⌾(i⊸⊏) byte table
2022-11-30 16:32:06 -05:00
Marshall Lochbaum
d7a06befb5
Select implementation comments
2022-11-30 16:32:06 -05:00
Marshall Lochbaum
534c92f38a
Select from <=128 booleans with shuffles
2022-11-29 22:14:57 -05:00
Marshall Lochbaum
fdfeb67e8f
2-register permutevar8x32
2022-11-29 20:27:45 -05:00
Marshall Lochbaum
41f464795f
Selection with permutevar8x32
2022-11-29 18:45:22 -05:00
Marshall Lochbaum
c17448ed71
Faster bit selection
2022-11-29 11:29:25 -05:00
Marshall Lochbaum
dc6e49b289
Shuffle selection using >1 data register
2022-11-28 21:51:36 -05:00
Marshall Lochbaum
b651ca73d3
Move base{} utility to base.singeli
2022-11-28 13:55:19 -05:00
Marshall Lochbaum
43fba7cd78
Extend shuffle selection to >1 byte data
2022-11-28 13:55:19 -05:00
Marshall Lochbaum
6639c17b81
1-byte select with <=16 elements using shuffle
2022-11-27 21:03:58 -05:00
Marshall Lochbaum
e09d555eba
Refactoring and renaming in select.singeli
2022-11-27 09:18:21 -05:00
Marshall Lochbaum
7cb8cf5772
Enable selection with AVX2 gather for i8 to i32 indices and 1- to 8-byte values
2022-11-27 09:18:21 -05:00
dzaima
dbc7c83f70
move usum to fold.c
...
but don't do anything useful with that because usum needs to also check for negative numbers
2022-11-27 15:45:33 +02:00
dzaima
afe6c0eba9
use 1•internal.Info for rtverify fails
2022-11-27 15:45:33 +02:00
dzaima
c0e06833c0
move B squeeze non-integer case out of twice-generated generator
2022-11-27 15:45:33 +02:00
dzaima
b0fcc017ce
clean up squeeze.singeli
2022-11-27 15:45:33 +02:00
dzaima
0f3f91105e
use anynePositive for squeeze.singeli
2022-11-27 15:45:33 +02:00
dzaima
15f6dd5d48
simplify 16-bit anynePositive
2022-11-27 15:45:33 +02:00
dzaima
5f85305f43
GPR mask testing
2022-11-27 15:45:33 +02:00
dzaima
efd79881cb
use single mask array for all type widths
2022-11-27 15:45:33 +02:00
Marshall Lochbaum
d911eafd31
Inverses for •math.Fact and •math.LogFact
2022-11-26 14:20:52 -05:00
Marshall Lochbaum
a3df482acd
Use non-inlined recursion for •math functions
2022-11-26 14:14:37 -05:00
dzaima
c4d0f8bdc4
highlight "." in numbers
2022-11-24 13:08:20 +02:00
dzaima
d383fe57a7
clean up whitespace
2022-11-24 01:26:35 +02:00
dzaima
34e37d1b1a
increase gc root buffer size
2022-11-24 01:09:50 +02:00
dzaima
cf5ce07f51
simplify singeli xor/and/or definitions
2022-11-24 00:21:19 +02:00
Marshall Lochbaum
e60b942710
Formatting
2022-11-23 16:51:30 -05:00
Marshall Lochbaum
7715cbc158
Add •math.Sum with Singeli f64 implementation
2022-11-23 16:51:30 -05:00
Marshall Lochbaum
35aef1e5cd
•math.Erf, •math.ErfC, and •math.LogFact
2022-11-23 16:46:39 -05:00
Marshall Lochbaum
9a1268ea3a
Simplify •math.Comb implementation
2022-11-23 16:46:39 -05:00
Marshall Lochbaum
6eb21bd68c
Factorial and combinations functions
2022-11-23 16:46:39 -05:00
Marshall Lochbaum
f6109b3985
Handle no-op and boolean cases of monadic arithmetic quickly
2022-11-23 16:46:39 -05:00
Marshall Lochbaum
58cd6f0f4e
Other useful math: log2 log10 log1p expm1 hypot
2022-11-23 16:46:39 -05:00
Marshall Lochbaum
a0f6986832
Hyperbolic trig
2022-11-23 16:46:39 -05:00
Marshall Lochbaum
51840bc853
•math.GCD and •math.LCM for u64 arguments
2022-11-23 16:46:39 -05:00
dzaima
49636bae79
replace --dynamic-list with visibility
2022-11-22 15:36:32 +02:00
dzaima
6f5c329e22
noinline float product
2022-11-22 14:24:43 +02:00
dzaima
e7cc8ec444
use o2fG instead of union field
2022-11-21 23:26:25 +02:00
Marshall Lochbaum
31106c730c
Fold implementation comments
2022-11-21 15:56:15 -05:00
Marshall Lochbaum
bda653e865
Shortcutting for boolean-valued integer ∨´
2022-11-21 15:51:03 -05:00
Marshall Lochbaum
f1ca8793e3
Boolean comparison folds, monadic only
2022-11-21 15:36:06 -05:00
Marshall Lochbaum
47392acc33
Implement ×´ for all numeric cases, using f64 product when i32 fails
2022-11-21 15:19:27 -05:00
Marshall Lochbaum
52608ba6ce
Singeli min/max-fold
2022-11-21 11:47:50 -05:00
Marshall Lochbaum
4b9a21c75f
Do tack-fold with selection
2022-11-21 08:07:38 -05:00
Marshall Lochbaum
38683119c0
Handle some f64 cases in dyadic fold
2022-11-20 22:03:36 -05:00
Marshall Lochbaum
c977065c20
Move +⌈⌊ folds to function tables, unifying monadic and dyadic cases
2022-11-20 21:51:30 -05:00
Marshall Lochbaum
ebfd002793
Blocked +´ and f64 ⌈´ ⌊´
2022-11-20 21:06:05 -05:00
Marshall Lochbaum
5bfdc26d00
Move fold to its own file
2022-11-20 20:06:35 -05:00
Marshall Lochbaum
b9a3a7886d
Ordering function implementation comments
2022-11-20 19:57:00 -05:00
dzaima
24195780df
reorder headers to allow OpenBSD hack to function
2022-11-20 18:22:51 +02:00
dzaima
6ff521b200
don't use IA/SH macros for assigning
2022-11-18 15:07:31 +02:00
dzaima
966b78693b
fix test/precompiled.bqn
2022-11-18 00:16:34 +02:00
dzaima
5c65a1a7eb
move precompiled bytecode to submodule
2022-11-17 23:20:07 +02:00
dzaima
1b64b4b548
better temporary replxx state handling
2022-11-17 19:18:33 +02:00
dzaima
35abd7f7e8
try $XDG_DATA_HOME before $HOME for REPL history directory
2022-11-17 19:18:33 +02:00
dzaima
ff36205a34
bind ctrl+n & ctrl+p
2022-11-17 19:18:33 +02:00
dzaima
1f5be9e69e
backslash input
2022-11-17 19:18:33 +02:00
dzaima
9018051ce3
add •math.Atan2 autocomplete
2022-11-17 19:18:33 +02:00
dzaima
c60bdaba4d
highlight 𝔽𝔾𝕎𝕏𝕊 as functions, reduce mut.h to calls.h
2022-11-17 19:18:33 +02:00
dzaima
bd6035cdef
more system namespace field completion, actually add •ToUTF8
2022-11-17 19:18:33 +02:00
dzaima
a48488a132
enable bracketed paste, add sanity check in syntax highlighter
2022-11-17 19:18:33 +02:00
dzaima
07fa4a066b
save replxx history more
2022-11-17 19:18:33 +02:00
dzaima
983452b409
system value completion
2022-11-17 19:18:33 +02:00
dzaima
feb7b8b9a0
replxx REPL
2022-11-17 19:18:33 +02:00
dzaima
94f8b189f7
REINIT_TAIL → FINISH_OVERALLOC
2022-11-17 18:56:46 +02:00
dzaima
a48f1f5eb0
fix -DMM=0
2022-11-17 18:56:46 +02:00
dzaima
55e8a43297
fix test/mut.bqn leaking references
2022-11-17 18:56:46 +02:00
dzaima
1ac5f0a49d
arr_shCopy that doesn't compare IA
2022-11-17 18:56:46 +02:00
dzaima
179e0a37dc
more tail verify work
2022-11-17 18:56:46 +02:00
dzaima
e5a9c7536d
array tail overwriting checker
2022-11-17 18:56:46 +02:00
dzaima
360aabb7cc
option to noinline mm_alloc & mm_free
2022-11-17 18:56:46 +02:00
dzaima
da1062c81c
remove unused #undef
2022-11-17 18:55:59 +02:00
dzaima
aee745a7d6
fix argument names of C2
2022-11-17 18:13:29 +02:00
dzaima
db89e7a4bb
fix function signatures & M1C2; use C1 & bit_negate more
2022-11-17 17:52:19 +02:00
Marshall Lochbaum
be9037cb62
Squeeze for ∨` instead of scalar checking for bool
2022-11-17 08:32:29 -05:00
Marshall Lochbaum
5985e92834
Initialized min/max-scan
2022-11-17 07:59:00 -05:00
Marshall Lochbaum
98d066c343
Use scan_max_num for sorted ⊒
2022-11-16 21:20:54 -05:00
Marshall Lochbaum
1924aee61c
f64 min/max scan
2022-11-16 21:14:32 -05:00
Marshall Lochbaum
136c1afacc
Macro-ize integer min/max scan and add sorted flag
2022-11-16 20:49:57 -05:00
Marshall Lochbaum
ac7ff155d4
Pull out scan_add_bool() utility function from scan_c1()
2022-11-16 20:16:33 -05:00
Marshall Lochbaum
d6029985e8
Move scan to its own file
2022-11-16 19:48:37 -05:00
Marshall Lochbaum
93ef4bb2a9
Direct ⍷bool implementation
2022-11-15 22:03:50 -05:00
Marshall Lochbaum
f1142b4184
Branchless ⊒bool, moderately faster
2022-11-15 18:27:54 -05:00
Marshall Lochbaum
d6b09adb57
Add primitive and primitive-1modifier call macros to calls.h
2022-11-15 16:08:34 -05:00
Marshall Lochbaum
4506caf3ac
Faster self-search on sorted 𝕩 using »⊸≠𝕩
2022-11-15 16:08:17 -05:00
Marshall Lochbaum
856eabd493
Self-search implementation comments
2022-11-14 21:08:44 -05:00
dzaima
8e631d7177
always take size in mm_alloc as u64
2022-11-14 22:42:32 +02:00
dzaima
3be97e6f61
update commented-out debug print
2022-11-14 20:44:19 +02:00
dzaima
a9737c22ea
extract bit array negation to function
2022-11-14 19:47:53 +02:00
dzaima
7e934b04db
better negation buffer handling
2022-11-14 19:02:44 +02:00
dzaima
63a2791361
add some NOUNROLLs
2022-11-14 18:00:00 +02:00
Marshall Lochbaum
85f54b2b25
Check for a small return type in large-range /⁼ with a sparse table
2022-11-13 18:00:10 -05:00
Marshall Lochbaum
cd16c8a1c7
Blocked 4-byte ⍋bool and ⍒bool with Singeli
2022-11-13 18:00:10 -05:00
Marshall Lochbaum
1647e98fd2
Use Singeli code for ⍋bool and ⍒bool with 1- and 2-byte result
2022-11-13 18:00:10 -05:00
Marshall Lochbaum
6bea10de21
Implementation comments and minor refactoring for /⁼
2022-11-13 18:00:10 -05:00
Marshall Lochbaum
7acd9d5688
Indices/Replicate implementation comments
2022-11-13 18:00:10 -05:00
dzaima
c81e95730a
fix -DMM=0 builds
2022-11-13 13:47:29 +02:00
dzaima
b244d7ecf5
disallow bitwise hashing for ¯0; prepare for mm_alloc taking u64 size
2022-11-12 23:45:39 +02:00
Marshall Lochbaum
7d56d61235
Hash table for Occurrence Count (⊒)
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
1be4f4c2e7
Fix value movement when resizing Classify (⊐) hash
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
62867f4533
Make brute-force Mark Firsts store result in a register (always <64 elements)
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
8560ce0f4d
Move hash table initializers to functions to save some binary space
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
9adfb13355
Extend Mark Firsts hash table to handle Classify
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
37d7694c52
64-bit Mark Firsts (∊) hash table
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
dc7389a660
Mark Firsts hash table resizing policy tweaks
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
2e1b64e0ca
Resizable hash table for Mark Firsts (∊)
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
8a551ab5ce
Add 32-bit hash table for Classify (⊒)
2022-11-12 15:47:59 -05:00
Marshall Lochbaum
d8e4e7d96f
Unify small-type and small-range tables for Classify (⊐)
2022-11-12 15:47:59 -05:00
dzaima
a64f0ada5f
update src/README.md
2022-11-12 20:30:47 +02:00
dzaima
a7daeea6d9
fix (500⥊¯1‿5) ⊔ 500‿1‿3⥊3
2022-11-12 19:20:34 +02:00
Marshall Lochbaum
beb997ccb9
Avoid data movement for empty cells in Group 𝕩
2022-11-12 07:25:41 -05:00
dzaima
a1e12106ce
use FILL_TO for more compact edge-case handling
2022-11-12 13:45:52 +02:00
dzaima
1241da4d74
fix group of array with empty cells
2022-11-12 13:41:45 +02:00
dzaima
eb880d7135
set result fill fill immediately instead of delaying to before return
2022-11-12 13:30:35 +02:00
Marshall Lochbaum
d2cdae4962
Fast case for bool⊔𝕩 using compress
2022-11-10 21:22:29 -05:00
Marshall Lochbaum
a3da018055
Group code for 1-bit cells
2022-11-10 14:52:45 -05:00
Marshall Lochbaum
6eb504118e
Split out optimized Group cases and add comments
2022-11-10 14:52:45 -05:00
Marshall Lochbaum
801472d6d4
Implement bit_cpy versions of the Group methods that use memcpy
2022-11-10 14:52:45 -05:00
Marshall Lochbaum
e7c1918ba0
Native <` implementation using addition
2022-11-09 12:19:02 -05:00
dzaima
87d0fa5dc7
fix gcc 9 build
2022-11-08 16:59:17 +02:00
dzaima
6467530823
use ty_u
2022-11-08 16:56:43 +02:00
Marshall Lochbaum
812b97dc51
Mark boolean +` result sorted and squoze
2022-11-07 20:23:15 -05:00
Marshall Lochbaum
666a41ab12
1- and 2-byte Singeli boolean +`
2022-11-07 17:54:11 -05:00
Marshall Lochbaum
f1ff499244
Implement multiple result types for non-Singeli +`bool
2022-11-07 17:09:41 -05:00
Marshall Lochbaum
7b3c69f9da
Take sum first in boolean plus-scan; special code for sparse or boolean sum
2022-11-07 15:35:53 -05:00
dzaima
4f9af9965c
clangd compilation command generating utility
2022-11-06 18:34:47 +02:00
dzaima
fdbd36250b
noinline writeNum, use loop instead of generated code
2022-11-06 03:17:31 +02:00
dzaima
fc059a77d0
noinline various things in main.c
2022-11-06 02:36:57 +02:00
dzaima
28d434a201
catch double-frees in debug mode
2022-11-06 02:11:12 +02:00
dzaima
f87a1155f5
store references instead of GC root functions to handle mutable roots
...
-0.21% binary size; mm_visit & mm_visitP got inlined in the gcFn-s, even though that's very pointless
2022-11-06 02:01:14 +02:00
dzaima
36111276c6
•math.Atan2
2022-11-05 20:36:54 +02:00
dzaima
25694db7ca
better non-Singeli comparison
2022-11-05 20:09:30 +02:00
dzaima
c9be8516c3
deduplicate generic sort work
2022-11-05 19:41:04 +02:00
dzaima
6e552fedf5
base case implementation for ⍋c8arr & ⍋c16arr
2022-11-05 19:00:59 +02:00
dzaima
ff0bfd34bb
squeeze Grade result
2022-11-05 18:48:54 +02:00
dzaima
471afb2a3f
handle 256|i8arr & similar
2022-11-03 17:28:21 +02:00
dzaima
3b56223618
allow 32768|intarr to squeeze to i16arr
2022-11-03 17:21:12 +02:00
dzaima
c1a77a24fb
fast (2⋆n)|ints
2022-11-03 15:35:41 +02:00
dzaima
96394c6f73
fix ⊔ making an invalid array on ("Af64"•internal.Variation⋈¯1)⊔⟨⟩
2022-11-03 01:26:38 +02:00
dzaima
cc406595c0
use direct comparison in ⊔
2022-11-03 00:32:44 +02:00
dzaima
70e7dcf38a
Merge remote-tracking branch 'mlochbaum/subset'
2022-11-02 23:19:03 +02:00
dzaima
4daabd708a
introduce calls.h, move vec_addN and vec_join to core header
...
and remove a bunch of apparently unnecessary mut.h imports
2022-11-02 23:17:52 +02:00
Marshall Lochbaum
600ee411f8
Use slash and comparison functions to filter •rand.Subset output faster
2022-11-01 20:25:13 -04:00
dzaima
bed2708537
move non-Singeli comparisons to function lookup
2022-10-27 19:27:15 +03:00
dzaima
8d6172126c
use void* instead of u8* for singeli function arguments
2022-10-25 17:27:08 +03:00
dzaima
5a7d702bc6
use incG more
2022-10-25 16:59:08 +03:00
Marshall Lochbaum
9862331696
Fix single-file build by defining GRADE_UD in selfsearch.c
2022-10-24 22:08:28 -04:00
Marshall Lochbaum
2844520109
Need to define GRADE_UD for radix.h from selfsearch.c without Singeli
2022-10-24 07:49:36 -04:00
Marshall Lochbaum
fa03cabc53
Index-of with small 𝕨 using (⊣×1+⊢)´ pattern
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
d1e40a01df
Use saved counts and possibly dense table initialization for 1-byte radix lookup
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
7cbd23c832
Skip radix moves if the top bytes are all the same
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
b9d5f10d4a
Unify radix sort and radix lookup prefix sums
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
2207d9f1bb
Combine monadic ∊ and ⊐ radix lookups with a macro
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
552e4f6751
Fix refcount handling for bool⊐𝕩
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
979c31fc3e
Table-based dyadic ⊒ for integers up to 2 bytes
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
5df198602c
Adjust search table sparse initialization threshold for type it stores
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
e318830365
Dyadic ⊒ implementation with a generic hash table
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
f5555021f2
Index-of with boolean 𝕨, using two comparisons
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
0f7bfa2575
Implement bit_find and fast self-search for booleans
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
96740566e9
Extend lookup code to boolean searched-for array
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
d9519eb6e1
Extend table-based membership to Index-of
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
0cb5e4ee10
Table-based 1- and 2-byte integer membership
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
447ce6163f
Introduce bit_has and use for ∧´, ∨´, and 𝕨∊bool
2022-10-23 22:08:08 -04:00
Marshall Lochbaum
236d8dedd6
Move search functions to search.c
2022-10-23 22:08:08 -04:00
dzaima
cc467ce8ca
cleanup
2022-10-23 13:14:36 +03:00
dzaima
66584ce149
fix 0‿¯1⊏129⥊100
2022-10-21 18:17:12 +03:00
dzaima
f2b6b5d446
system value redefining with •ReBQN
2022-10-19 23:12:28 +03:00
dzaima
4d9a63f68b
fix •ReBQN
2022-10-19 20:56:30 +03:00
dzaima
336049560b
don't include •FFI if FFI is disabled
2022-10-19 19:31:21 +03:00
dzaima
ec62856b67
•listsys
2022-10-19 19:19:11 +03:00
dzaima
accd7384bd
delay •file initialization
2022-10-19 19:16:13 +03:00
dzaima
a72778ed6f
extract system value info to object
2022-10-19 19:15:21 +03:00
dzaima
64ce7ec6fe
fix non-squeezed string •FFI arguments
2022-10-18 19:26:53 +03:00
Marshall Lochbaum
130653dbda
Allow character arguments to •bit operations
2022-10-17 09:39:38 -04:00
Marshall Lochbaum
89c1b39c6d
Don't allow 0 as a width for •bit
2022-10-17 09:39:38 -04:00
Marshall Lochbaum
698c902564
Implement scalar extension for •_bit
2022-10-17 09:39:38 -04:00
Marshall Lochbaum
022ef64f6b
Add NOUNROLLs to bitwise functions
2022-10-17 09:39:38 -04:00
Marshall Lochbaum
80f8ac9643
2-argument •bit operations
2022-10-17 09:39:38 -04:00
Marshall Lochbaum
8f5259e77d
Implement 1-argument •bit operations
2022-10-17 09:39:38 -04:00
dzaima
2a17d87572
calculate •FFI allocation layout ahead-of-time
2022-10-16 14:16:34 +03:00
dzaima
83af05d274
fix building on gcc≤10
2022-10-10 13:53:56 +03:00
dzaima
2eecc0feda
squeeze *u8/*u16/*u32 result
...
it has to sometimes be one size up to accommodate for the upper unsigned range, but often (?) it should fit fine in the signed range of its type
2022-10-08 19:59:03 +03:00
dzaima
ac041d37f4
fix WARN_SLOW build
2022-10-08 19:30:08 +03:00
dzaima
7e1c9b50cd
initial struct support
2022-10-08 19:08:20 +03:00
dzaima
702d4e979d
various utility changes
2022-10-08 19:03:41 +03:00
dzaima
529d2abae4
add warning about miscompilation for x86 on gcc
2022-10-08 14:41:44 +03:00
dzaima
7bda795365
fix gcc warnings about pointer casts in 32-bit builds
2022-10-07 12:57:59 +03:00
dzaima
abcb575a53
simplify bit boolean constant replicate start
2022-10-04 22:11:20 +03:00
Marshall Lochbaum
ce74e36a19
Fix lots of missing casts for function calls
2022-09-30 20:20:38 -04:00
dzaima
82ac059b75
disable clmul ≠` when pclmul not available
2022-09-30 20:06:52 +03:00
Marshall Lochbaum
cca64bba70
Move nescan.c into md1.c and constrep.c into slash.c
2022-09-30 11:40:37 -04:00
Marshall Lochbaum
47cdf02877
Build Singeli files with a filename prefix
2022-09-30 11:35:25 -04:00
Marshall Lochbaum
cad566d547
Not-equals scan with carry-less multiply
2022-09-29 20:39:46 -04:00
Marshall Lochbaum
acc200222d
Move constant Replicate Singeli code to its own file
2022-09-29 20:33:09 -04:00
Marshall Lochbaum
582afe33c9
Merge 3 to 7 replicate float with other types: shuffle instead of permute
2022-09-29 20:12:45 -04:00
Marshall Lochbaum
29886f355a
Combine small-replication shuffle vector tables across types
2022-09-29 19:58:14 -04:00
Marshall Lochbaum
e407286185
BMI2-based constant boolean Replicate for 𝕨<=52
2022-09-28 21:56:57 -04:00
Marshall Lochbaum
0c0d967dc3
Adjust Table thresholds for fast constant Replicate
2022-09-28 17:18:55 -04:00
Marshall Lochbaum
09aba9bc37
slash.singeli is only used with __BMI2__ for now
2022-09-28 17:18:42 -04:00
Marshall Lochbaum
4836f70e0d
Simplify rep_const_broadcast, removing unused kv==0 case
2022-09-28 14:14:39 -04:00
Marshall Lochbaum
d28a74b572
Move 4-shuffle data to a table
2022-09-28 13:35:08 -04:00
Marshall Lochbaum
9947de0146
Performance improvements when compiling slash.singeli
2022-09-27 22:00:59 -04:00
Marshall Lochbaum
db3e0a6324
Move all the algorithm decision logic into main rep_const and simplify
2022-09-27 22:00:59 -04:00
Marshall Lochbaum
c430922a7e
Use shared functions and shuffle array for sizes 3 to 7 in constant Replicate
2022-09-27 22:00:59 -04:00
Marshall Lochbaum
68aeb0f7cb
Add large-constant replicate method always using 4 shuffles
2022-09-27 22:00:59 -04:00
Marshall Lochbaum
7069a60453
Handle all constant Replicate in Singeli
2022-09-27 22:00:59 -04:00
Marshall Lochbaum
15c405e7bf
Factorize constant replicate lengths under 32
2022-09-27 22:00:59 -04:00
Marshall Lochbaum
7535d768dd
Singeli shuffle-based code for constant replicates <=7
2022-09-27 22:00:59 -04:00
Marshall Lochbaum
851f50635e
Some simplifications in base.singeli
2022-09-27 22:00:59 -04:00
dzaima
46501ac819
update build & packaging information
...
closes #45
2022-09-27 17:53:06 +03:00
dzaima
d3ed718a6d
branchless sparse Where block size bound was too big
2022-09-26 23:12:17 +03:00
dzaima
bd823839fe
fixes for /
2022-09-25 18:45:46 +03:00
dzaima
1fcd5295eb
slight attempt at improving ↕list
2022-09-25 14:55:49 +03:00
dzaima
5c87c291f9
refactor unroll/vectorization disabling macros
2022-09-25 14:49:57 +03:00
dzaima
2bb6750d7d
better bitarr fill
2022-09-24 19:31:46 +03:00
dzaima
608489aed1
fix gcc singeli build
2022-09-24 19:30:10 +03:00
dzaima
37a3979c86
clean up generic unit reshape case
2022-09-24 19:20:32 +03:00
Marshall Lochbaum
e8e10790f8
Fast array reshape
2022-09-23 17:40:30 -04:00
Marshall Lochbaum
218a8b069e
Rework reshape of singleton
2022-09-23 15:32:27 -04:00
Marshall Lochbaum
8e24da8e8e
Adjust Replicate thresholds
2022-09-23 08:22:41 -04:00
Marshall Lochbaum
8a13bf9476
Constant boolean replicate
2022-09-22 22:32:52 -04:00
Marshall Lochbaum
7f6cf06eea
Merge scan-based sparse Indices/Replicate code with macros
2022-09-22 22:09:56 -04:00
Marshall Lochbaum
d647978c8f
Type-independent Replicate by constant
2022-09-22 21:42:18 -04:00
Marshall Lochbaum
ec12dd4502
Switch to forward inclusive sums for all radix sorting, and use Singeli
...
Removes SWAR for 8-bit counts, since reverse sorting uses negatives
2022-09-22 16:44:05 -04:00
Marshall Lochbaum
8e1d8bb42c
Use Singeli max/min scan for Indices and Sort
2022-09-22 15:17:54 -04:00
Marshall Lochbaum
bc4f5167fb
Constant replicate using plus-scan
2022-09-21 19:40:04 -04:00
Marshall Lochbaum
6ed3c18389
Implement SIMD wrapping plus-scan for Replicate
2022-09-21 19:40:04 -04:00
dzaima
c42f0fd699
revert de4fca85
2022-09-22 01:18:41 +03:00
dzaima
de4fca859f
extract arr_shCopy
2022-09-22 00:51:04 +03:00
dzaima
06fe437520
bitarr reversing
2022-09-22 00:38:09 +03:00
dzaima
1e3089ceaa
fast ⍉𝕩 when 2=≠𝕩
2022-09-20 22:29:32 +03:00
dzaima
7c4673f972
more num_squeezeChk
2022-09-20 19:27:23 +03:00
dzaima
42ae82eb1f
simpler slash_ucw !elInt(w) case
2022-09-20 19:14:02 +03:00
dzaima
42e36851b9
more cleanup
2022-09-20 18:57:22 +03:00
dzaima
f231a30057
fix 𝕨⊔0
2022-09-20 17:36:55 +03:00
dzaima
cec5b7dc6c
slash.c cleanup
2022-09-20 17:32:12 +03:00
Marshall Lochbaum
01f73dc83b
Move usum and bit_sum from numarr.h to stuff.c
2022-09-19 19:38:26 -04:00
Marshall Lochbaum
ac4729bb29
Use grouped compress for all byte sizes if the number of groups is small enough
2022-09-19 19:31:44 -04:00
Marshall Lochbaum
11e3db1787
Can't call harr withFill before adding data to array
2022-09-19 11:15:47 -04:00
Marshall Lochbaum
05401547c1
Grouped compress for odd cell widths
2022-09-19 10:52:26 -04:00
Marshall Lochbaum
9af77e63ee
Split up partitioning loop in Group for rank 1 and rank>1 cases
2022-09-18 16:43:19 -04:00
Marshall Lochbaum
12c4fd0b07
Vectorizable usum code for i8, i16, i32
2022-09-18 16:15:20 -04:00
Marshall Lochbaum
d525acb51e
Merge branch 'master' into cellwidth
2022-09-18 15:26:34 -04:00
dzaima
9453a9b665
remove old loops for non-bitarr 𝕨 consisting of 0 and 1 from 𝕨/𝕩
2022-09-18 22:12:07 +03:00
dzaima
43ddb9759c
inline part of depth
2022-09-18 21:58:53 +03:00
dzaima
dd56cfab20
allow using picked element of ⌾(n⊸⊑) in-place
2022-09-18 21:00:51 +03:00
dzaima
770f7b2f0c
check type directly in pick_ucw
2022-09-18 20:17:48 +03:00
dzaima
c0cf58ffc2
use existing function for 8-bit utf8Decode
2022-09-18 20:17:20 +03:00
Marshall Lochbaum
cae65947cd
Apply fast Replicate code whenever the cell size is right
2022-09-17 21:01:17 -04:00
Marshall Lochbaum
ea1367e639
Handle cell size 0 correctly in cellWidthLog()
2022-09-17 21:01:13 -04:00
Marshall Lochbaum
c72b9b5abd
Redo replicate with sparse and dense cases
2022-09-17 16:17:47 -04:00
Marshall Lochbaum
5f196c49d9
Extend sparse and dense where to all cases fitting in i32s
2022-09-16 22:01:56 -04:00
Marshall Lochbaum
fb1230bcc2
Sparse Indices prototype
2022-09-16 22:01:56 -04:00
Marshall Lochbaum
26c3dbfeea
Start using type-independent utilities in compress()
2022-09-16 22:01:56 -04:00
Marshall Lochbaum
3505e1515e
Extend Group where 𝕨 is an integer list to handle higher-rank 𝕩
2022-09-16 22:01:56 -04:00
Marshall Lochbaum
21033fa355
Move Group to its own file
2022-09-16 22:01:56 -04:00
Marshall Lochbaum
0b1ded14e0
Type-independent Reverse
2022-09-16 22:01:56 -04:00
Marshall Lochbaum
b84a2d4e1f
Special-casing for length 1 in self-search functions
2022-09-16 22:01:56 -04:00
Marshall Lochbaum
57d33990e3
Make self-search special code only depend on cell size
2022-09-16 22:01:56 -04:00
dzaima
9c5396e711
consistently output WARN_SLOW information on stderr
2022-09-12 20:12:32 +03:00
dzaima
89503ba1c1
don't not check top bits in LIKELY & RARE
2022-09-12 19:51:07 +03:00
dzaima
889c520251
move slash_im setting
2022-09-12 18:32:56 +03:00
dzaima
a46ec7343e
not slow ⍉bitarr, fix ⊢⌾⍉ 2‿3‿4⥊↕24
2022-09-12 18:27:18 +03:00
dzaima
32d533b6e2
don't print left argument of ⊑ if it's large
2022-09-12 18:21:04 +03:00
dzaima
47c4a53da4
fix WARN_SLOW build
2022-09-12 18:19:05 +03:00
Marshall Lochbaum
6d372959e8
Just return 𝕩 for an all-ones compress
2022-09-11 21:48:31 -04:00
Marshall Lochbaum
9b17701c66
Sparse 1- and 2-byte compress, with blocking, if total sum is low enough
2022-09-11 20:19:20 -04:00
Marshall Lochbaum
c796670549
Faster trailing zero trim, and apply it to all cases in compress()
2022-09-11 20:19:20 -04:00
Marshall Lochbaum
2baa88ad31
Compress for 4-byte and 8-byte data using index blocks
2022-09-11 18:00:29 -04:00
Marshall Lochbaum
ab25b08f84
Move compress (bool/list) to its own function
2022-09-11 16:32:41 -04:00
Marshall Lochbaum
819899c745
Implement f64 Where with u16 blocks
2022-09-11 16:32:41 -04:00
Marshall Lochbaum
fda3efe217
More macros for Where
2022-09-11 15:31:23 -04:00
Marshall Lochbaum
0d6894ddbc
Fix broken non-Singeli dense i32 Where
2022-09-11 15:15:56 -04:00
Marshall Lochbaum
4bc5350747
Branchless sparse i16 Where
2022-09-11 11:00:17 -04:00
Marshall Lochbaum
1f40d36712
Separate where into its own function and split different types completely
2022-09-11 08:31:20 -04:00
Marshall Lochbaum
638121c054
Use blocked method for i32 Where with or without Singeli
2022-09-11 07:57:14 -04:00
Marshall Lochbaum
4999758497
Branchless i32 sparse Where
2022-09-11 07:57:01 -04:00
Marshall Lochbaum
017fcaea2a
Move slash functions to a separate file
2022-09-10 09:58:42 -04:00
Marshall Lochbaum
bb3ecdca6a
Sparse Where
2022-09-10 09:12:16 -04:00
Marshall Lochbaum
ae9817fd0d
Fast path for / with empty result, and faster non-Singeli Where
2022-09-10 09:02:17 -04:00
Marshall Lochbaum
d8abc4ef7e
Separate handling for ⊔ when 𝕨 changes value rarely
2022-09-09 18:11:12 -04:00
Marshall Lochbaum
ef2dee9a4d
Special case data movement for ⊔ on sorted 𝕨
2022-09-09 13:21:08 -04:00
Marshall Lochbaum
569dcacac1
Do Group's range check and ¯1 counting on 1- or 2-byte ints
...
Doesn't vectorize, but at least it speeds up filtering later
2022-09-09 08:58:23 -04:00
Marshall Lochbaum
1e143644b6
Filter out ¯1s in Group with / if there are enough of them
2022-09-08 21:00:15 -04:00
dzaima
e266fbd09e
basic float monadic arith loops, incl. -fno-math-errno
2022-09-08 23:18:47 +03:00
dzaima
2358436b89
more efficient spreadBits{[8]u32, u8}
2022-09-08 21:51:25 +03:00
dzaima
d3a1fee437
singeli bit_sel
2022-09-08 21:39:51 +03:00
dzaima
d60713225b
just use u64 in bitsel
2022-09-08 20:25:09 +03:00
dzaima
1619b6087b
mild optimization of v_set argument consumption
2022-09-08 20:05:13 +03:00
dzaima
3ccef1fe86
⊔𝕩 → ⊔⟜(↕≠)𝕩
2022-09-08 14:52:19 +03:00
dzaima
59cadb06fe
fix ⟨⟨⟩⟩⊏⟨⟩ incorrectly erroring
...
incl. ⟨⟨⟩,⟨⟩⟩⊏0‿0⥊⟨⟩, ⟨⟨⟩⟩⊏0‿0⥊⟨⟩, etc
2022-09-08 00:56:31 +03:00
dzaima
66d32e0acb
fast exit for depth-2 𝕨 in 𝕨⊏𝕩
2022-09-08 00:47:25 +03:00
dzaima
96ca9092ba
attempt at better bit_sel dispatch
2022-09-08 00:37:44 +03:00
dzaima
234443a17c
src/README.md updates
2022-09-08 00:03:42 +03:00
dzaima
59e947cc20
more consistent type checking & conversion functions
2022-09-07 23:56:03 +03:00
dzaima
734e9fc116
better type checking helpers
2022-09-07 23:38:51 +03:00
dzaima
2299c8094e
make gcc scream less
2022-09-07 20:28:45 +03:00
dzaima
0e306ca149
use WRAP instead of manual index management
2022-09-07 20:22:26 +03:00
dzaima
10004b82f7
make 1.2‿3.4⊏≍˘"abcd" error
2022-09-07 19:53:31 +03:00
dzaima
94e6168319
don't read past the end of array even if the value isn't used
...
bit_sel still uses it
2022-09-07 19:41:22 +03:00
dzaima
5d660cbf19
deduplicate hashmap size doubling function
2022-09-07 19:32:02 +03:00
dzaima
1a583725be
use TALLOCP in other places
2022-09-07 17:59:17 +03:00
dzaima
b784dac9e1
make clang not go crazy
2022-09-07 00:27:23 +03:00
Marshall Lochbaum
a43a42e4d1
Select from small boolean list by copying to bytes
2022-09-06 16:34:08 -04:00
Marshall Lochbaum
f877a45a63
Vectorize range checks for 1- and 2-byte indices
2022-09-06 16:34:08 -04:00
Marshall Lochbaum
4a8244f2c1
Faster selection from boolean list
2022-09-06 16:08:16 -04:00
Marshall Lochbaum
55263bcbc4
Handle bit selection from arrays with under 2 elements
2022-09-06 16:08:16 -04:00
dzaima
1c279a0a20
fast bitarr×intarr
2022-09-06 22:47:16 +03:00
dzaima
a90e7de997
simpler atom-array arith on length 0 inputs
2022-09-06 18:24:49 +03:00
dzaima
311aa74303
simpler bitsel for ∨
2022-09-06 17:31:42 +03:00
dzaima
ce1c81219e
manual wideness check
2022-09-06 17:23:57 +03:00
dzaima
0b4259559c
include errno.h in file.c unconditionally
2022-09-06 00:08:55 +03:00
dzaima
bffe16d6e9
fix overflowed & float functions
2022-09-05 23:23:51 +03:00
dzaima
c0b2164dc8
new array-atom arith
2022-09-05 22:52:53 +03:00
dzaima
629076d001
new ⟨⟩↕0 behavior & fix /⁼large_i8arr
2022-09-05 22:40:40 +03:00
dzaima
7f00d54372
rearrange arithd.c a bit more
2022-09-04 00:35:58 +03:00
Marshall Lochbaum
7792c60180
Fix unnecessary errors with computed shape 0, such as 1e8‿⌊‿1e8⥊↕5
2022-09-03 14:41:28 -04:00
Marshall Lochbaum
97bfacec44
Fix hang in •rand.Subset caused by moving wi==0 case into wi==xi
2022-09-03 14:41:28 -04:00
Marshall Lochbaum
44c0baee05
No need to initialize the negative half of the counts table
2022-09-03 14:41:28 -04:00
Marshall Lochbaum
37af32d95c
Faster /⁼ for boolean and long 1-byte and 2-byte 𝕩
2022-09-02 14:31:07 -04:00
dzaima
0139c5f58d
separate dyadic arith cases
2022-09-02 14:01:35 +03:00
dzaima
a637adadd9
rearrange arithd.c in preparation for separating its cases
2022-09-02 13:10:04 +03:00
dzaima
76141f6fe6
reduce lifetime of e in dyArith_AA
2022-09-01 22:45:30 +03:00
dzaima
1b8bd0707e
make dyarith array-array dispatch its own function
2022-09-01 22:22:13 +03:00
dzaima
bd04e38a5e
use existing copy functions for arr_join_inline
2022-09-01 19:52:51 +03:00
dzaima
90dd740bfc
use cpyHArr instead of a getter loop
2022-09-01 19:25:20 +03:00
dzaima
dad47cf391
move arith_recd to a noinline function
2022-09-01 18:51:02 +03:00
dzaima
f758a3f1f6
proper argument name
2022-09-01 18:40:48 +03:00
dzaima
1c43ad6431
squeeze •rand.Subset result
2022-09-01 18:25:10 +03:00
dzaima
e72c7dc937
faster ÷ ⋆ √ | ⋆⁼ on i8 & i16 arrays
2022-09-01 16:06:52 +03:00
dzaima
5cfa89ad5a
separate functions for comparison scalar & array cases
2022-09-01 15:06:34 +03:00
dzaima
72f25dad54
bitarr ↕1 and ↕2
2022-09-01 13:29:03 +03:00
dzaima
7d716d5ce0
elInt
2022-09-01 11:17:49 +03:00
dzaima
203916b44f
error on non-numbers in +𝕩
2022-09-01 11:16:42 +03:00
Marshall Lochbaum
76c93d85e1
Dyadic 32-bit / based on 8-bit monadic /
2022-08-31 16:11:52 -04:00
Marshall Lochbaum
1e0cf78fd0
Implement 4-byte where with blocks of 2-byte where
2022-08-31 16:11:52 -04:00
Marshall Lochbaum
6f02705d9f
Make small-range Grade code style more like radix code
2022-08-31 16:11:52 -04:00
Marshall Lochbaum
758c174cae
Optimistic special case to quickly invert permutations with ⍋
2022-08-31 16:11:52 -04:00
Marshall Lochbaum
a42335af4f
Use or-equals for dyadic ∊ when 𝕩 is small and arguments are flat
2022-08-31 16:11:52 -04:00
Marshall Lochbaum
15b444540e
Extend self-search typed code to characters by treating as numbers
2022-08-31 16:11:52 -04:00
Marshall Lochbaum
9028ebfe8b
Native Windows (↕)
2022-08-31 16:11:52 -04:00
dzaima
88f73d2585
fix comment & add note
2022-08-31 22:22:03 +03:00
dzaima
9775339e2c
squeeze result of ⌊ and ⌈
2022-08-30 00:18:25 +03:00
dzaima
ce1032f80d
second instruction shouldn't have a swap requirement anymore
2022-08-29 23:09:47 +03:00
dzaima
8ea2352a7b
clear out swap table after first instruction generation
2022-08-29 23:08:38 +03:00
dzaima
70ee775a33
fix i16arr+i8arr overflow
2022-08-29 22:59:12 +03:00
dzaima
39a0a894e2
correct char-char→signed int overflow checking
2022-08-29 22:48:46 +03:00
dzaima
b37f620889
disable manual array F character loops when not running singeli
2022-08-29 19:46:41 +03:00
dzaima
78e5799147
merge dyarith.singeli and dyarith2.singeli
2022-08-29 19:18:20 +03:00
dzaima
777c5cc1a5
rename things
2022-08-29 19:05:34 +03:00
dzaima
ce5ece34e1
new arith
2022-08-28 23:28:06 +03:00
dzaima
3c1ef1c9a2
use elNum
2022-08-28 16:44:21 +03:00
Marshall Lochbaum
f80d3ce263
Branchless integer binary search
2022-08-28 09:16:25 -04:00
Marshall Lochbaum
139faee0a1
Unify integer and character Bins
2022-08-28 09:16:09 -04:00
Marshall Lochbaum
9376e02ecb
Boolean sorting
2022-08-27 15:44:25 -04:00
Marshall Lochbaum
e027aca0cf
Radix grades
2022-08-27 15:16:20 -04:00
Marshall Lochbaum
36e54d1a39
1-byte radix with length ==256 doesn't work because of SWAR overflow when descending
2022-08-27 11:10:17 -04:00
Marshall Lochbaum
4ec83e51a6
Merge sort.h into grade.h
2022-08-27 10:59:00 -04:00
Marshall Lochbaum
9d59dff522
4-byte sorting: insertion and radix
2022-08-26 22:04:32 -04:00
Marshall Lochbaum
f946a3de41
2-byte sorting: insertion, radix, counting
2022-08-26 22:04:32 -04:00
Marshall Lochbaum
5034e55c79
Move Sort to template file sort.h (for up/down) like Grade
2022-08-26 22:04:32 -04:00
Marshall Lochbaum
a0a4ecadc7
1-byte sorting: insertion, bucket, counting
2022-08-26 22:04:32 -04:00
dzaima
5a162c7929
macos-specific sub-second file times
2022-08-26 22:46:00 +03:00
dzaima
2939395906
fallback file time getting method
2022-08-26 22:31:10 +03:00
dzaima
81e09956d3
•file.Size, make •file.List decode UTF-8
...
invalid UTF-8 is a problem for the future
2022-08-26 13:37:51 +03:00
dzaima
484158318a
explicit JIT_ENABLED macro independent from JIT_START
2022-08-26 10:16:45 +03:00
dzaima
b16378bef6
add thing that was previously non-existent
2022-08-26 10:16:16 +03:00
dzaima
1927cb5756
implement ⍷𝕩 with (∊𝕩)/𝕩
2022-08-25 23:17:00 +03:00
dzaima
398a66ed94
fix c0 offset
2022-08-25 22:44:31 +03:00
dzaima
20a15097b4
remove non-existent thing
2022-08-25 22:33:38 +03:00
dzaima
d12a53fd08
•file.Created, •file.Accessed, •file.Modified
2022-08-25 22:29:03 +03:00
dzaima
905a9f78d4
{raw⇐1} •SH 𝕩
2022-08-25 22:27:35 +03:00
Marshall Lochbaum
e8e12e2d8f
Another allocation improvement
2022-08-25 14:09:10 -04:00
Marshall Lochbaum
34950339c2
Improve radix+table allocation layout
2022-08-25 14:00:28 -04:00
dzaima
600bb59c77
more diagram
2022-08-25 20:27:30 +03:00
Marshall Lochbaum
c590d73030
Missed TFREE
2022-08-25 11:25:59 -04:00
Marshall Lochbaum
b2992a11b8
1- and 2-byte methods for monadic ⊐
2022-08-25 11:10:11 -04:00
Marshall Lochbaum
98cd80c13d
Port all the integer monadic ∊ methods to ⊒
2022-08-25 10:39:38 -04:00
Marshall Lochbaum
f54942f175
Make first initialization in radix 4-byte lookup sparse too
2022-08-24 21:05:39 -04:00
Marshall Lochbaum
ad8570be11
Wait, sparse initialization with a pass through the argument is faster than radix stuff
2022-08-24 20:26:02 -04:00
Marshall Lochbaum
5cd2cab26e
Small-number integer ∊ with all-pairs comparison and 2-byte radix+table
2022-08-24 18:44:00 -04:00
Marshall Lochbaum
7ffa0dac4a
Switch from using IA to *SH for length
2022-08-24 11:08:27 -04:00
Marshall Lochbaum
efe2e86271
Unify search function preambles, so all have empty and rank>1 cases
2022-08-24 11:03:05 -04:00
Marshall Lochbaum
9d402c1bdd
Move self-search functions to selfsearch.c
2022-08-24 10:47:04 -04:00
Marshall Lochbaum
eff9df5a26
Table lookups for self-search functions
2022-08-24 10:28:19 -04:00
Marshall Lochbaum
633e790099
Radix-assisted lookup implementation for ∊
2022-08-24 10:27:55 -04:00
dzaima
5be18bb180
fix ∾⟨"ab",1⟩
2022-08-23 17:16:07 +03:00
dzaima
355d7978ed
include •file.Parent in system value docs
2022-08-23 17:11:15 +03:00
dzaima
eb9550aa29
•file.Parent
2022-08-22 15:30:37 +03:00
dzaima
aa95b6add4
actually use TY(x) / PTY(x) more
2022-08-21 16:11:40 +03:00
dzaima
5112796cfd
move m_unit out of header file
2022-08-21 15:48:04 +03:00
dzaima
c69a3373b9
better m_atomUnit
2022-08-21 08:50:33 +03:00
dzaima
7393c4b663
fully native ⊑
2022-08-21 07:58:41 +03:00
dzaima
505f6869fc
rt_join not needed anymore
2022-08-21 07:53:41 +03:00
dzaima
582ff8909b
@ •FFI 𝕩
2022-08-21 07:49:09 +03:00
dzaima
4ed814e395
cleanup of new field reading macros
2022-08-20 09:04:22 +03:00
dzaima
1694bfb7d2
s?p?rnk(x) → S?P?RNK(x)
2022-08-20 08:36:59 +03:00
dzaima
e10f13d6ea
x->type → TY(x) / PTY(x)
2022-08-20 08:30:12 +03:00
dzaima
d2a4efe4b5
x->sh → SH(x) / PSH(x)
2022-08-20 08:30:07 +03:00
dzaima
e6b4f85662
x->ia → IA(x) / PIA(x)
2022-08-20 08:30:03 +03:00
dzaima
558c14cccd
fix fill of empty 𝕨⊏𝕩
2022-08-20 08:23:58 +03:00
dzaima
719d37cd63
reorder eachm_fn and eachd_fn args
2022-08-18 11:18:34 +03:00
dzaima
b1300e6e76
yet another string function rename
2022-08-18 09:07:32 +03:00
dzaima
e49fcd3449
typed n •rand.Range 2⋆31
2022-08-17 19:41:32 +03:00
dzaima
81bdec4737
128-bit multiplication & unrolling doesn't go well in clang
2022-08-17 19:10:01 +03:00
dzaima
c5b65b9246
typed •rand.Range
2022-08-17 18:53:41 +03:00
Marshall Lochbaum
56a1d9ec4c
Singeli integer ⌊ and ⌈
2022-08-15 16:01:17 -04:00
dzaima
1fcc3b0030
saner bytecode metadata storage
2022-08-15 12:00:50 +03:00
dzaima
4b272148f5
make allocL after splitTo call skip empty bucket checking
2022-08-14 11:19:11 +03:00
dzaima
7e4096e572
nicer fold loops
2022-08-14 02:34:26 +03:00
dzaima
ff0ea7a0ad
fix empty program check in REPL
2022-08-14 02:33:48 +03:00
Marshall Lochbaum
b579440f5e
Change × and ∧ integer reductions to reverse order
2022-08-13 19:02:22 -04:00
Marshall Lochbaum
82d2eb5b1a
Fix monadic ⌊` initial element
2022-08-13 19:00:59 -04:00
Marshall Lochbaum
195336b6df
Implement F˝x as <F´x for rank-1 x and arithmetic F
2022-08-13 16:04:20 -04:00
Marshall Lochbaum
22925eee4b
Fast ⌊, matching ⌈
2022-08-13 15:03:23 -04:00
Marshall Lochbaum
27943b85f4
Fast boolean =´ and ≠´
2022-08-13 14:39:53 -04:00
Marshall Lochbaum
37312f7a03
Lift out bitarr_ptr calls
2022-08-13 14:28:16 -04:00
Marshall Lochbaum
f406b05303
Fill boolean scan gaps: ∨ and dyadic int≠bool
2022-08-13 14:05:48 -04:00
Marshall Lochbaum
6a00b6d7d4
Fast boolean -´
2022-08-13 13:45:56 -04:00
Marshall Lochbaum
4950506c72
Separate boolean fold and scan code from other special cases to handle aliases better
2022-08-13 13:34:01 -04:00
dzaima
3ab92ecd66
explicit pointer → u64 conversion
...
work towards gcc 32-bit x86 builds. (gcc sign-extended pointers without this changeset)
gcc miscompiles `union B` usage though (https://godbolt.org/z/hEWKdc5PK ), which I can do nothing about, so clang is still the only option for 32-bit x86 builds
2022-08-10 10:20:48 +03:00
dzaima
a9b3b3de97
use TALLOC instead of m_shArr
2022-08-07 01:19:09 +03:00
dzaima
36e78da56f
Merge pull request #30 from mlochbaum/join
...
Native Join
2022-08-07 01:13:30 +03:00
Marshall Lochbaum
78f14be79d
Finish multidimensional join
2022-08-06 17:30:30 -04:00
Marshall Lochbaum
1d891388b5
High-rank join shape checking
2022-08-05 22:01:42 -04:00
Marshall Lochbaum
c1d5ca5c29
Switch from min and max to max and difference in Join shape checking
2022-08-05 21:50:39 -04:00
dzaima
bac1eaf9e3
squeeze result of ¨
2022-08-05 03:19:12 +03:00
dzaima
fd1ac7487c
wyhash microoptimization
2022-08-05 03:08:39 +03:00
dzaima
98e3021efb
fix bit boolean array hash only using the first 1/8 of the array
2022-08-04 02:55:19 +03:00
Marshall Lochbaum
bf6a8c5699
Handle any rank empty, and rank 0, in Join
2022-08-01 21:21:10 -04:00
Marshall Lochbaum
d9d421db04
Handle atoms in Join of list
2022-08-01 17:31:07 -04:00
Marshall Lochbaum
b8e6996e7e
Shape logic for Join of any list
2022-08-01 17:27:22 -04:00
dzaima
a6deb4b691
native unit∊vector
2022-07-26 04:30:33 +03:00
dzaima
9480ee9da2
native ⌾(F G), ⌾(F∘G), ⌾<, <⁼
2022-07-26 03:38:30 +03:00
dzaima
a5e206d009
always print sample sum in the profiler
2022-07-26 03:14:05 +03:00
dzaima
58f8772bd3
use singeli copy functions for mut copyG
2022-07-26 00:18:00 +03:00
dzaima
9acb9e6bf4
fix ⎉ low-rank fill computation
2022-07-26 00:04:13 +03:00
dzaima
d959482d44
move generic array copy to its own function
2022-07-25 05:21:14 +03:00
dzaima
6b90615896
more correct stack height going negative check
2022-07-24 22:18:22 +03:00
dzaima
c1b66c5982
don't bother iterating through generic array items in cpy.*Arr on free
2022-07-24 00:05:42 +03:00
dzaima
32d8c09e2b
limit row-wise F⌜ to 7<≠⥊𝕩
2022-07-23 02:18:42 +03:00
dzaima
599c56051d
convert ⊐ result to smaller type based on ≠𝕨
2022-07-22 05:50:34 +03:00
dzaima
bd5ab29387
native vec⊐highRankArr
2022-07-22 05:39:26 +03:00
dzaima
8ca94cc623
make withFill properly know that a bit boolean array is a number array
2022-07-22 05:03:57 +03:00
dzaima
046284b96f
random cleanup
2022-07-22 03:59:44 +03:00
dzaima
29fe3206cd
fix path_rel with empty base path
2022-07-15 23:25:49 +03:00
dzaima
b43153495a
a bit more valgrind debugging stuff
2022-07-10 06:07:28 +03:00
dzaima
5de154fb54
option to flush perf map after each write
...
e.g. for use while live debugging
2022-07-10 04:23:17 +03:00
dzaima
0b155e4416
simpler vg_pext_u64 tail handling
...
that makes it not get SIMD-mangled when optimizations are enabled, thus allowing valgrind to preserve vbits
2022-07-10 04:02:49 +03:00
dzaima
aabaac977b
more strict freed memory handling for valgrind
2022-07-10 02:40:43 +03:00
dzaima
a17d8004be
make valgrind run under -DMM=0
...
even if it's not very helpful as CBQN requires being able to read garbage past allocation ends
2022-07-10 02:07:18 +03:00
dzaima
eb5b32319f
make ∨`𝕩 run under valgrind
2022-07-10 02:01:59 +03:00
dzaima
041a87ff98
make valgrind accept /𝕩 and 𝕨/𝕩 impls
2022-07-10 01:51:15 +03:00
dzaima
0684fe5fcb
some fixes for ubsan
2022-07-10 01:43:21 +03:00
dzaima
9a00da6369
deduplicate ia writing
2022-07-09 02:18:22 +03:00
dzaima
3c2a7dbefa
high-rank in-place w∾x
2022-07-09 02:00:22 +03:00
dzaima
1c645e11d8
fix •FromUTF8 name
2022-07-08 19:34:30 +03:00
dzaima
1a9d2d0118
apparently apple clang 11.0.3 infinite-loops on mmap_nvm too
2022-07-03 02:18:14 +03:00
dzaima
837372295d
small simplification
2022-07-02 03:52:34 +03:00
dzaima
010db0b1fc
mark direct access result const
2022-07-01 21:30:47 +03:00
dzaima
a6a1448382
bqn_copy & bqnffi.h comment cleanup
2022-06-30 17:44:01 +03:00
dzaima
f27ba6d569
even more microoptimization
2022-06-30 16:25:29 +03:00
dzaima
c794fb0ef9
more microoptimization
2022-06-30 15:40:54 +03:00
dzaima
74eaa3853f
optimize squeeze result choosing
2022-06-30 03:51:00 +03:00
dzaima
685c3ecbc6
fix fill leak on @⌾(0⊸⊑) 2⥊<"foo"
2022-06-30 03:37:52 +03:00