lyken
6528115d6a
core: refactor range with model and RangeObject
2024-08-25 17:01:44 +08:00
lyken
7701691794
core: remove old ndarray code and NDArray proxy
...
Nothing depends on the old ndarray implementation now.
2024-08-25 00:53:04 +08:00
lyken
61ea014c61
core/ndstrides: implement general matmul
2024-08-25 00:52:41 +08:00
lyken
75ba01d547
core/ndstrides: implement np_transpose() (no axes argument)
...
The IRRT implementation knows how to handle axes. But the argument is
not in NAC3 yet.
2024-08-25 00:52:41 +08:00
lyken
25be81cc83
core/ndstrides: implement broadcasting & np_broadcast_to()
2024-08-25 00:52:41 +08:00
lyken
34709cf076
core/ndstrides: implement np_reshape()
2024-08-25 00:52:41 +08:00
lyken
0ec4d13735
core/ndstrides: implement np_array()
...
It also checks for inconsistent dimensions if the input is a list.
e.g., rejecting `[[1.0, 2.0], [3.0]]`. Previously it was a todo of
`np_array()`.
2024-08-25 00:52:41 +08:00
lyken
dd1a19d97f
core/irrt: add List
...
Needed for implementing np_array()
2024-08-25 00:52:41 +08:00
lyken
7e22f09e6e
core/ndstrides: implement ndarray indexing
...
The functionality for `...` and `np.newaxis` is there in IRRT, but there
is no implementation of them for @kernel Python expressions because of
M-Labs/nac3#486 .
2024-08-25 00:52:41 +08:00
lyken
494616f0d9
core/irrt: rename NDIndex to NDIndexInt
...
The name `NDIndex` is used in later commits.
2024-08-25 00:52:41 +08:00
lyken
2bbc619151
core/irrt: add Slice and Range
...
Needed for implementing general ndarray indexing.
Currently the IRRT slice and range have nothing to do with NAC3's slice
and range.
2024-08-25 00:52:41 +08:00
lyken
98b65cf3e2
core/ndstrides: implement ndarray iterator NDIter
2024-08-25 00:52:41 +08:00
lyken
4a26a0e222
core/ndstrides: introduce NDArray
...
NDArray with strides.
2024-08-25 00:52:41 +08:00
lyken
d75c5d460f
core/irrt/exceptions: add debug utils with exceptions
2024-08-24 15:35:00 +08:00
lyken
cd69fa07a5
core/irrt/exceptions: allow irrt to raise exceptions
...
Achieved through defining all the needed Exception ID constants at link
time.
Secondly, since `Exception` is `size_t` dependent, `__nac3_raise()`
takes an opaque pointer to `Exception`, unless IRRT is compiled into
32-bit and 64-bit separately with a defined `size_t` type.
2024-08-24 15:29:04 +08:00
lyken
b743603a97
core/irrt: split irrt.cpp into headers
2024-08-24 15:29:04 +08:00
lyken
27a1fc7024
core/irrt: reformat
2024-08-24 15:29:04 +08:00
lyken
2c62b61363
core/irrt: comment build.rs & move irrt to its own dir
...
To prepare for future IRRT implementations, and to also make cargo
only have to watch a single directory.
2024-08-24 13:04:06 +08:00