dzaima
1db746ea77
Singeli compile-time cdiv & low-stack @collect
2023-04-09 15:03:44 +03:00
dzaima
b66f628cff
tiny improvements to plus-scan
2023-04-09 12:09:52 +03:00
dzaima
9951f20751
clean up some error messages
2023-04-08 22:12:15 +03:00
dzaima
52dc05f228
SIMD +`
2023-04-08 20:04:23 +03:00
dzaima
6a0385b44b
better Singeli abs & absu definitions
2023-04-08 19:23:55 +03:00
dzaima
c3fe3c5b42
more Singeli utilities, more Scan fixing
2023-04-07 21:09:46 +03:00
dzaima
3a7bce3aab
a bunch of Scan fixes & improvements
2023-04-07 20:41:34 +03:00
dzaima
b0d8bcb428
add argument passing to makeOptBranch
2023-04-06 22:41:20 +03:00
dzaima
897c46df76
aarch64 fold.singeli
2023-04-06 20:17:09 +03:00
dzaima
b3f3190028
SSE2 fold.singeli
2023-04-06 19:49:14 +03:00
dzaima
1d6b33d528
restrict fold_addw to integer input
2023-04-06 19:18:43 +03:00
dzaima
65f25f735d
Merge pull request #73 from mlochbaum/count
...
Count by vector compare+add
2023-04-06 19:19:25 +03:00
dzaima
d13060f725
move fold to vfold
2023-04-06 19:05:38 +03:00
Marshall Lochbaum
9d7d330a03
Use AVX2 counting for 1-byte counting sort
2023-04-06 11:32:34 -04:00
Marshall Lochbaum
0e5b98c491
Return max from AVX2 counting function
2023-04-06 11:32:34 -04:00
Marshall Lochbaum
4b18466ae2
Clean up and simplify count.singeli; allow longer final block
2023-04-06 11:32:06 -04:00
Marshall Lochbaum
06b4f06e64
Move fold{} from squeeze.singeli to vecfold.singeli
2023-04-06 11:32:06 -04:00
Marshall Lochbaum
2ddcc14852
Use minimum in addition to maximum for AVX2 counting
2023-04-06 11:32:06 -04:00
Marshall Lochbaum
e6a3e846d9
Sum counts in groups of 4 when possible
2023-04-06 11:32:06 -04:00
Marshall Lochbaum
b655dd4771
AVX2 counting function for small-range 1-byte /⁼
2023-04-06 11:32:04 -04:00
dzaima
ecced53957
test usz=64
...
also fix MM=2 assertion
2023-04-06 18:17:59 +03:00
dzaima
a0cdcdc898
fix self-search radix-based cases with 64-bit usz
2023-04-06 17:51:58 +03:00
dzaima
cba6ef505a
add usz option to build/build
2023-04-06 17:47:31 +03:00
dzaima
5492eae8c5
unrolling for single-element search
2023-04-06 15:42:10 +03:00
dzaima
876914d053
Singeli single-element search
2023-04-06 14:56:49 +03:00
dzaima
a7e2d9ea17
extract single-element search to its own function
2023-04-06 13:38:33 +03:00
dzaima
71f9278a95
use COPY_TO to copy in bqn_readObjArr if possible
2023-04-06 13:37:00 +03:00
dzaima
0aca470931
more explicit inline requiring
2023-04-06 13:12:11 +03:00
dzaima
8b05cd243f
fix SSE2 unsigned comparisons
2023-04-05 13:47:16 +03:00
dzaima
7d1fcf2c3a
move &~ to base.singeli
2023-04-02 16:33:24 +03:00
dzaima
5a2b755191
move non-AVX2 x86-64 into SINGELI_SIMD
2023-04-02 15:55:49 +03:00
dzaima
100a188545
fix aarch64 singeli
2023-04-02 15:39:42 +03:00
dzaima
c76adb8b35
default to •internal.EEqual comparing 0 and ¯0 as equal
2023-04-02 15:29:11 +03:00
dzaima
00a5ddcb89
SSE2 squeeze
2023-04-02 15:04:00 +03:00
dzaima
e0a265472c
SSE2 extract{x,0} for [4]i32 and [2]i64
2023-04-02 12:10:18 +03:00
dzaima
9209ca5d6d
SSE2 copy.singeli
2023-04-02 01:53:16 +03:00
dzaima
5018cf9b2e
reduce unnecessary casts in C output
2023-04-01 23:04:55 +03:00
dzaima
9826201343
move neon.singeli type checks to w64/w128
2023-04-01 22:53:38 +03:00
dzaima
a62c21733e
SSE2 equal.singeli
2023-04-01 22:08:47 +03:00
dzaima
96ee73f644
enable Singeli monadic arith & comparisons on SSE2
2023-04-01 20:40:29 +03:00
dzaima
3a45eac1aa
separate SSE2, implement SSE2 dyarith & bitsel
...
also separate maskstore to homogeneous & top bit mask variants, and make blend require equal element widths
2023-04-01 20:40:23 +03:00
dzaima
13eebb1759
move all singeli builds to build.bqn, add has=
...
also:
include commit-based version by default for build/build
expand things included in --version
don't require Singeli for BMI2 usage in bitarr/bitarr
2023-03-31 19:15:23 +03:00
dzaima
dc2ac37e0a
arch-independent Singeli builds
2023-03-31 16:45:29 +03:00
dzaima
0180a54207
quiet gcc warning
2023-03-31 16:34:08 +03:00
dzaima
c513724fd4
hide clangd warning
...
and remove whitespace which was previously used for alignment
2023-03-31 14:27:43 +03:00
dzaima
baa1281efe
don't assume select returns refcount 1 array
...
that probably would be a safe assumption right now, but who knows about the future; cpyWithShape should return back its argument directly if it already has refcount 1 anyway
2023-03-31 14:14:13 +03:00
dzaima
413b49de30
don't assume sizeof(ur)==1
2023-03-31 13:44:32 +03:00
Marshall Lochbaum
69e2f6c690
Convert ⍉˘ with atom or no left argument to dyadic ⍉
2023-03-30 21:25:21 -04:00
Marshall Lochbaum
9fe6a2e7b2
Under for invertible Reorder Axes
2023-03-30 19:07:09 -04:00
Marshall Lochbaum
d53f3dbd72
Native dyadic ⍉⁼
2023-03-30 19:02:45 -04:00
Marshall Lochbaum
89016fc88d
Update Reorder Axes implementation comments
2023-03-29 20:23:16 -04:00
Marshall Lochbaum
597e25af4d
Full simplification pass for Reorder Axes
2023-03-29 20:08:36 -04:00
Marshall Lochbaum
d492cd0865
And strided height, so all orders are fast if axes are long
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
e923a71881
Use strided width in transpose-based Reorder Axes
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
814a677676
Make transpose movement functions strided
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
de18fb996b
Save a shape object in Reorder Axes
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
7fea4ca2ad
Combine transp_c2 temp allocations into one TALLOC
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
5b17ee44d6
SIMD kernel for Reorder Axes transposing last two axes
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
8413461074
Fast bottom-level loop for Reorder Axes loop structure
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
bbedbbc585
Transpose large cells with mut_copyG
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
b829076271
Put CPU-size transpose functions in a table
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
410d51501d
Check for AVX2 in Singeli transpose so it can build on non-x86 architectures
2023-03-29 12:37:15 -04:00
Marshall Lochbaum
bf04b3aab0
Move w128i and similar from sse3 and avx.singeli to base
2023-03-28 16:11:46 -04:00
Marshall Lochbaum
ebbddf9dcf
Move height/width 2 transposes to Singeli
2023-03-28 16:11:46 -04:00
Marshall Lochbaum
37f481ea0d
Separate out transpose data movement function and share with monadic ⍉⁼
2023-03-28 16:11:46 -04:00
Marshall Lochbaum
3c32844fe0
Separate out transpose_move function and use for el_B
2023-03-28 16:11:46 -04:00
Marshall Lochbaum
968bfd2fc6
Separate transpose el_B case and fix dropped fill for shape 2‿n
2023-03-28 16:11:46 -04:00
Marshall Lochbaum
dea063cb7b
Easy optimizations: (1-˜=𝕩)⍉𝕩 to ⍉𝕩 and detect trailing unchanged axes
2023-03-28 16:11:46 -04:00
Marshall Lochbaum
b555e3c035
Reorder Axes translated from runtime version
2023-03-28 16:11:46 -04:00
Marshall Lochbaum
432b4eaaa6
Transpose implementation comments
2023-03-28 16:11:46 -04:00
dzaima
21b9ad5c3c
don't include debug.singeli
2023-03-27 17:53:01 +03:00
dzaima
9780cacacd
commented-out heap alignment
2023-03-27 17:38:26 +03:00
dzaima
f175bc9e19
fix printf of sample count
2023-03-26 15:57:09 +03:00
dzaima
1f2456042c
clean up calls.h includes
2023-03-26 15:54:27 +03:00
dzaima
1f70c08aa2
fillarr NOGC
2023-03-26 15:43:59 +03:00
dzaima
709c1896d3
better selfElType
2023-03-26 14:30:49 +03:00
dzaima
37a32eb15a
fix native non-Singeli builds
2023-03-24 23:51:18 +02:00
dzaima
830c752e87
instruction pointer storing profiling
2023-03-24 18:07:48 +02:00
dzaima
e4c95dce22
fix profiler buffer size usage
2023-03-24 13:47:33 +02:00
dzaima
98f4df88d0
whitespace
2023-03-23 18:35:55 +02:00
dzaima
fa8437ca25
don't use _mm256_loadu2_m128i
...
doesn't exist on old gcc
2023-03-23 18:21:34 +02:00
Marshall Lochbaum
699faea69c
Dedicated width-overflow loop for SIMD transpose
2023-03-22 17:34:37 -04:00
Marshall Lochbaum
5a2bc15f2a
Overlap SIMD transpose on width too
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
61eefe0776
Fix writing past end in i16 transpose with overlapped halves
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
8ff40cb2e5
Overlap SIMD transpose to handle uneven heights (not widths yet)
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
fad7f3aa8b
Simplify
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
dd141add3f
Merge i16 SIMD transpose with the rest of them
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
9673771187
Combine code for the different transpose kernel geometries
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
e40feaa81c
Make transpose kernel code type-generic
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
923c485cc2
Use packed-halves transpose kernel for 8x8 i16
2023-03-22 15:14:09 -04:00
Marshall Lochbaum
2a8e6e9c8a
Separate most transpose kernel logic from loops and move i8 case into main
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
7d800bf349
SIMD transpose on 1-byte elements
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
5fccf4cda3
Refactoring; check for small transpose width/height in Singeli, not C
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
ff6361e363
Move tranpose to its own file
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
0e2e315e51
Allow an 8x8 row for 2-byte transpose
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
239c765998
SIMD transpose on 2-byte elements
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
f6c6e72661
More transpose kernel refactoring
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
c0aaa6f615
SIMD transpose on 8-byte elements
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
a0e85db702
Refactor vtranspose with more general code
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
ca44d41daa
Faster i32 transpose when height is a multiple of 16 by writing cache lines
2023-03-22 15:14:08 -04:00
Marshall Lochbaum
bfb2519aed
Remove transpose_rec (was unused): the whole cache-oblivious thing seems to be useless
2023-03-22 15:14:08 -04:00
dzaima
5c6075c29d
support namespace a.b in native compiler
...
and use for •file.At in bootstrap.bqn
2023-03-22 19:58:01 +02:00
dzaima
dc583d754c
separate FLDG for gid-based field lookup
2023-03-22 19:49:32 +02:00
dzaima
9337de5a0e
fix LST_/ARM_ comments in vm.h
2023-03-21 23:04:39 +02:00
dzaima
d9ebdf060f
)t:1s
...
also fix )profile
2023-03-21 04:06:53 +02:00
dzaima
fe36c74080
support exponential for )t
2023-03-21 02:56:39 +02:00
dzaima
1ec37410c6
faster constint|intarr
2023-03-21 02:45:42 +02:00
dzaima
d333902f74
fast integer 𝕨|𝕩
2023-03-21 02:06:45 +02:00
dzaima
e14a3629f6
don't try lowercasing ×
2023-03-20 18:18:16 +02:00
dzaima
b0201131e2
array type support for •FFI
2023-03-20 16:44:58 +02:00
dzaima
ca0c100b73
name normalization for •ns.Get & •ns.Has
...
also fix •ns.Has error message & rename some function declarations
2023-03-19 23:27:05 +02:00
dzaima
0b32ef96ce
inline → inplace in existing-scope-mutating function names
2023-03-19 22:47:00 +02:00
dzaima
4a6877a87a
Rank checks
2023-03-19 15:42:11 +02:00
dzaima
a3d74c6af2
MUT_APPEND
2023-03-16 22:27:44 +02:00
dzaima
390ee503fb
extract function for a+↕b
2023-03-16 22:05:44 +02:00
dzaima
a9b83ca70a
V_POS, V_DEPTH
2023-03-16 22:03:08 +02:00
dzaima
db8a4d3af0
don't use def as a variable name
2023-03-12 00:11:30 +02:00
dzaima
1178e5df56
new Singeli syntax
2023-03-11 23:17:30 +02:00
dzaima
8194f51b30
MAKE_MUT_INIT, move mut_init to mut.c
2023-03-11 16:52:09 +02:00
dzaima
3f0bc57503
move diagnostics coloring option outside of hash
2023-03-11 16:51:59 +02:00
dzaima
01c457b77b
make all cpy.*Arr function results Arr*
2023-03-11 16:51:13 +02:00
dzaima
92763fa8b2
proper hash values for derived functions
2023-03-06 20:29:35 +02:00
dzaima
ab5b8f92b4
fast F˜˝˘ and F˜˝ and F˜⌜ for pervasive F
2023-03-05 16:48:10 +02:00
dzaima
680d0f8601
use mut_copy for building fold_rows result
2023-03-05 15:20:12 +02:00
dzaima
1c0b797456
Merge pull request #69 from mlochbaum/transfold
...
Blocked transpose implementation for fold-cells
2023-03-05 15:10:26 +02:00
dzaima
98c963453b
•internal.GC
2023-03-05 14:16:38 +02:00
dzaima
4b6dd1bf81
immediately mark&sweep unknown reference objects instead of storing
2023-03-05 14:05:08 +02:00
dzaima
c5aedaa414
switch to GCv2, various fixes/cleanup
...
includes:
fixing some refcounts for FOR_BUILD build •FFI
moving DEBUG_VM prints to stderr
fixing heapverify reports of loose shape objects of fillarrs
regular ol' adding-of-semicolon-after-label for old gcc
move GC enable to after all initialization, not load_init
2023-03-05 01:23:53 +02:00
Marshall Lochbaum
f4d2e26e58
Don't do transposing fold unless height is greater than width
2023-03-04 14:42:00 -05:00
Marshall Lochbaum
176152b445
Handle fold-cells on row length 1 with ⊏˘
2023-03-04 14:28:22 -05:00
Marshall Lochbaum
4b35acb82b
Transpose-based fold-cells implementation
2023-03-04 14:24:56 -05:00
dzaima
16274e5952
bucket coalescing on GC
2023-03-04 20:09:12 +02:00
dzaima
ead637b135
don't leak c1fn/c2fn arguments from array function
2023-03-04 18:58:07 +02:00
dzaima
717074a2f8
fast transpose on shape n‿2 𝕩
2023-03-03 19:13:15 +02:00
dzaima
76d26db4c2
faster F˘´n‿2⥊𝕩 for pervasive F
2023-03-03 17:45:16 +02:00
dzaima
fd72d416db
manual prefix character typing detecting
2023-03-03 16:11:55 +02:00
dzaima
093beda394
faster path for 𝕨/𝕩 with non-boolean 𝕨 with sum 0
2023-03-03 13:41:20 +02:00
dzaima
397f8745ce
go back to regular completions if no system commands match
2023-02-27 23:51:35 +02:00
dzaima
dfd78115c3
remove repl initialization before it's needed
2023-02-26 18:58:08 +02:00
dzaima
2c107025ab
add argument for non-GC_VISIT_V2
2023-02-26 18:53:06 +02:00
dzaima
78eb351e10
allow top-level GC to collect all garbage in GC_VISIT_V2
2023-02-26 18:37:07 +02:00
dzaima
418a1c054f
no longer need position setting hack on enter
...
also makes enter_replxx allocation-free, allowing it to run during OOM
2023-02-26 18:30:22 +02:00
dzaima
bcc19c11fd
fix GC_VISIT_V2 completely not respecting -M
2023-02-26 18:26:19 +02:00
dzaima
1c1da8fdfe
completion options for system commands
2023-02-26 18:09:28 +02:00
dzaima
a570bcaf88
fix replxx things
2023-02-26 16:09:38 +02:00
dzaima
6d03071ae6
SIMD i32 transpose
2023-02-26 01:19:54 +02:00
dzaima
a928277e8c
make heapverify run on GC_VISIT_V2
...
also make it able to track shape object leaks
2023-02-25 00:21:15 +02:00
dzaima
c6c0b8925e
don't need allocMore_rec on non-gcv2
2023-02-24 23:38:29 +02:00
dzaima
6e6169530d
GC v2
2023-02-24 23:28:55 +02:00
dzaima
deee2c7a18
use C1 & C2 more
2023-02-24 15:53:11 +02:00
dzaima
1af9155425
optional path arg for •internal.HeapDump; STORE_JIT_MAP
2023-02-24 00:16:44 +02:00
dzaima
b506b434a2
add Singeli directory to build cache key, add rebuild-singeli, quiet gcc
2023-02-23 23:36:41 +02:00
dzaima
8ad5132a6d
find & eqfn changes, use toI32Any more
2023-02-22 13:48:45 +02:00
Marshall Lochbaum
032e32ae1a
Fast flat ≡˘ and ≢˘ in most cases
2023-02-20 10:43:24 -05:00
Marshall Lochbaum
89e6be10e5
Add eqFns to calls.h and use for Find
2023-02-20 10:07:44 -05:00
Marshall Lochbaum
b56e547e34
Define eqFns in non-Singeli build
2023-02-20 08:20:05 -05:00
Marshall Lochbaum
fcc5c2e449
Slice function instead of take/drop
2023-02-19 21:14:42 -05:00
Marshall Lochbaum
ea6c7d9a7a
Use a C comparison function instead of a BQN one
2023-02-19 21:08:21 -05:00
Marshall Lochbaum
d2950a8df6
Flat rank 1 Find implementation using primitive calls
2023-02-19 20:34:32 -05:00
dzaima
70fec7eb1e
fix •ns.Keys on namespaces with unexported fields
2023-02-19 18:30:57 +02:00
dzaima
7013a9edf9
•ns.Get, •ns.Has, •ns.Keys
2023-02-19 18:02:35 +02:00
dzaima
428064a5c2
skip lookup table zero-initialization for x⊐x
2023-02-18 23:57:02 +02:00
dzaima
bb36755d67
native 𝕨/highrank
2023-02-18 21:04:22 +02:00
dzaima
96316f0fe1
faster 2↕
2023-02-18 19:47:22 +02:00
dzaima
7b57b4ae39
explicitly mark code sections where allocations aren't allowed to happen
2023-02-18 17:46:55 +02:00
dzaima
c32285dba9
Singeli copy from unaligned bitarr
2023-02-18 11:52:45 +02:00
dzaima
63fa511c55
deduplicate typed pointer calculation in mut.c
2023-02-18 00:09:37 +02:00
dzaima
8e720a2faa
use loadLow & storeLow in neq.singeli
2023-02-17 23:41:26 +02:00
dzaima
1e6b612e13
NEON copy.singeli
2023-02-17 22:10:21 +02:00
dzaima
0aada6163a
move src/clangdCommands.bqn to build/build clangd
2023-02-17 18:44:13 +02:00
dzaima
f76836aedd
clean up arithd.c & slightly improve non-Singeli impls
2023-02-17 16:43:07 +02:00
dzaima
32142a45d6
Widen cells in 𝕨∊𝕩, 𝕨⊐𝕩, 𝕨⊒𝕩
2023-02-17 00:27:15 +02:00
dzaima
089e2a38c6
update Singeli things
2023-02-16 21:31:19 +02:00
dzaima
f700a3e150
pad input cells when needed for for ∊𝕩, ⊐𝕩, ⊒𝕩
2023-02-13 00:19:50 +02:00
dzaima
fd1178bc0e
use BMI2 for widening to <32-bit cells
2023-02-10 23:04:20 +02:00
dzaima
53737ab3fb
use BMI2 for narrowing <32-bit cells
2023-02-10 23:01:45 +02:00
dzaima
855541954f
initial bit widen&narrow for ⊏
2023-02-10 17:59:22 +02:00
dzaima
23d99d7a24
more precise detection of when bit 𝕩 won't use simd for widening path
2023-02-04 18:17:21 +02:00
dzaima
f39ca95c58
maybe slightly better bit→i8→bit heuristic
...
the more proper thing is to pad cells to the nearest power-of-two byte size anyway
2023-02-04 17:16:01 +02:00
dzaima
be9d0c287e
better 𝕨⊏𝕩 with non-power-of-two cell sizes
2023-02-04 03:30:05 +02:00
dzaima
d2679da7e8
⊏: don't get in an infinite loop of f64 𝕨
2023-02-04 03:04:06 +02:00
dzaima
98f6944440
unify rank 1 and high-rank ⊏
2023-02-03 18:55:19 +02:00
dzaima
a84ca6c5d6
strict prototypes
2023-02-03 15:33:31 +02:00
dzaima
dbe4c0b51a
support character literals in native compiler
2023-02-02 22:52:02 +02:00
dzaima
356093e313
remove unwanted increment
2023-02-02 22:51:44 +02:00
dzaima
05c1270344
better 𝕨⊏𝕩 with 0=×´≢𝕨
2023-02-02 00:40:52 +02:00
dzaima
c5272b47fb
allow running el2t on el_B & el_MAX
...
under the assumption that the result won't actually be used; but if it is, trying to free or gc the object will result in a crash
2023-02-01 22:48:10 +02:00
dzaima
c38565ab8d
whitespace cleanup
2023-01-31 00:07:00 +02:00
dzaima
a650051a82
don't need an actual function object for eachd_fn / eachm_fn
2023-01-28 14:57:04 +02:00
dzaima
4a45a07a2b
native ⚇0
2023-01-27 22:59:22 +02:00
dzaima
e5bbde745a
native handling of ⌾{...}
2023-01-27 04:09:07 +02:00
dzaima
10705823de
more squeezing changes in ⊐𝕩 and ⊒𝕩
2023-01-27 03:17:20 +02:00
dzaima
ea0aa709fe
squeeze result of ⊒𝕩, copy result of ⊐𝕩 to smaller width when possible
2023-01-27 02:57:05 +02:00
dzaima
ae4c4a03ee
copy ⊐ and ⊒ results to more correct element width arrays
2023-01-27 02:09:43 +02:00
dzaima
f13e82af62
fix leaking in comp.c
2023-01-26 19:27:43 +02:00
dzaima
5f9aeafec6
use switch for tokenization
2023-01-26 19:21:02 +02:00
dzaima
1a80cf312d
more error checking in comp.c
2023-01-26 19:03:03 +02:00
dzaima
fbd4c79161
speed improvements for comp.c
...
not that it needs to be any faster
2023-01-26 03:46:25 +02:00
dzaima
422cc26054
dyadic •CompObj to replace compiler
2023-01-26 02:42:25 +02:00
dzaima
cc5a5752bf
add •CompObj to NATIVE_COMPILER
2023-01-26 01:53:09 +02:00
dzaima
9abe7506ab
native minimal compiler
2023-01-26 01:30:10 +02:00
dzaima
e231d36471
clean up gcc warnings
2023-01-25 17:16:24 +02:00
dzaima
c33cd81e06
use native ⁼ in ⍟(-n)
2023-01-25 15:30:54 +02:00
dzaima
73724acf1d
use invalidFn_c1 instead of c1_bad
2023-01-25 15:09:07 +02:00
dzaima
31bd75630c
make f=-DNO_RT functional
2023-01-25 15:05:23 +02:00
dzaima
6baa96c1e3
NEON squeeze
2023-01-25 02:22:53 +02:00
dzaima
88410c02e5
prep for NEON squeeze
2023-01-24 22:21:38 +02:00
dzaima
f91d3dfaf5
use num_squeeze directly for bytecode LSTO
2023-01-24 22:00:09 +02:00
dzaima
7768d6475f
various OOM fixes
2023-01-23 23:49:27 +02:00
dzaima
b0dbd5c37b
fix gcc build
2023-01-23 21:57:47 +02:00
dzaima
92c855920b
unroll int×u1
2023-01-23 21:43:39 +02:00
dzaima
721dd8889b
monadic arith
2023-01-23 01:22:40 +02:00
dzaima
7284eb7010
more manual unrolling in dyarith.singeli
2023-01-22 22:49:44 +02:00
dzaima
b1cace31ac
don't make a slice on n⊏list
2023-01-22 19:31:11 +02:00
dzaima
679e90925a
preserve ⟨a⟩ & ⟨a,b⟩ fill behavior for JIT
2023-01-22 19:24:34 +02:00
dzaima
162adbca68
more Singeli utilities
2023-01-22 18:04:52 +02:00
dzaima
86c2aa7e2c
unroll non-overflowing dyarith loops for aarch64
2023-01-22 04:22:21 +02:00
dzaima
afe6707654
dyarith NEON support
2023-01-22 03:27:41 +02:00
dzaima
20daceaae5
move things in eachd_fn around
2023-01-22 01:42:20 +02:00
dzaima
7bd8331346
add more GS_UPD
2023-01-21 23:34:13 +02:00
dzaima
d84c04bc63
use incBy more
2023-01-21 00:09:47 +02:00
dzaima
e4578a345e
fix 0‿1⊐"ab"‿"cd" & 0‿1∊˜"ab"‿"cd"
2023-01-19 16:04:44 +02:00
dzaima
b43184d629
fix 1‿2 +⎉0 1
2023-01-19 03:57:13 +02:00
dzaima
5cd1ee0ee3
fix NaN formatting
2023-01-18 20:08:18 +02:00
dzaima
5b8ac969db
don't unroll on i8arr ↕n
2023-01-18 15:41:53 +02:00
dzaima
4945a90ff0
valgrind changes
2023-01-18 02:05:24 +02:00
dzaima
7b996c772a
lea tmp,[CS+123]; mov [tmp],rax → mov [CS+123],rax
2023-01-17 20:55:39 +02:00
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