lyken
33555be7e0
core: remove old ndarray code and NDArray proxy
...
Nothing depends on the old ndarray implementation now.
2024-10-18 15:03:03 +08:00
lyken
7ef934722e
artiq: reimplement get_obj_value to use ndarray with strides
2024-10-18 15:03:03 +08:00
lyken
2a6ee503ba
artiq: reimplement polymorphic_print for ndarray
2024-10-18 15:03:03 +08:00
lyken
2e75d5a730
artiq: reimplement reformat_rpc_arg for ndarray
2024-10-18 15:03:03 +08:00
lyken
d44e226e43
standalone/ndarray: improve {reshape,broadcast_to,transpose} tests
...
Print their shapes and exhaustively print all contents.
2024-10-18 15:02:35 +08:00
lyken
a83df19a81
standalone/ndarray: add and organize view function tests
2024-10-18 15:02:35 +08:00
lyken
7f3c45302d
core/ndstrides: update builtin_fns to use ndarray with strides
2024-10-18 15:01:54 +08:00
lyken
3a12d39548
core/ndstrides: add NDArrayObject::to_any
2024-10-18 15:01:54 +08:00
lyken
618854f8d0
core/ndstrides: add ContiguousNDArray
...
Currently this is used to interop with nalgebra.
2024-10-18 15:01:54 +08:00
lyken
693b7f3774
core/ndstrides: implement np_dot() for scalars and 1D
2024-10-18 15:01:29 +08:00
lyken
73c2203b89
core/ndstrides: implement general matmul
2024-10-18 15:01:25 +08:00
lyken
56cccce149
core/ndstrides: implement cmpop
2024-10-18 14:59:52 +08:00
lyken
bb992704b2
core/ndstrides: implement unary op
2024-10-18 14:59:52 +08:00
lyken
9e40c83490
core/ndstrides: implement binop
2024-10-18 14:59:52 +08:00
lyken
fbfc0b293a
core/ndstrides: add NDArrayOut, broadcast_map and map
2024-10-18 14:59:52 +08:00
lyken
5bed394ef7
core/ndstrides: implement subscript assignment
...
Overlapping is not handled. Currently it has undefined behavior.
2024-10-18 14:58:58 +08:00
lyken
f731e604c7
core/ndstrides: add more ScalarOrNDArray and NDArrayObject utils
2024-10-18 14:58:58 +08:00
lyken
052b67c8e9
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-10-18 14:58:29 +08:00
lyken
9359ed9685
core/ndstrides: implement broadcasting & np_broadcast_to()
2024-10-18 14:57:33 +08:00
lyken
926e7e93a8
core/ndstrides: implement np_reshape()
2024-10-18 14:56:24 +08:00
lyken
9e0f636d2a
core: categorize np_{transpose,reshape} as 'view functions'
2024-10-18 14:55:18 +08:00
lyken
2c1030d158
core/ndstrides: implement np_size()
2024-10-18 14:54:40 +08:00
lyken
40c2448651
core/ndstrides: implement np_shape() and np_strides()
...
These functions are not important, but they are handy for debugging.
`np.strides()` is not an actual NumPy function, but `ndarray.strides` is used.
2024-10-18 14:54:04 +08:00
lyken
18db85fa7b
core/ndstrides: implement ndarray.fill() and .copy()
2024-10-18 14:21:57 +08:00
lyken
fa047d505d
core/ndstrides: implement np_identity() and np_eye()
2024-10-18 14:21:57 +08:00
lyken
8f0084ac8a
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]]`.
However, currently only `np_array(<input>, copy=False)` and `np_array(<input>, copy=True)` are supported. In NumPy, copy could be false, true, or None. Right now, NAC3's `np_array(<input>, copy=False)` behaves like NumPy's `np.array(<input>, copy=None)`.
2024-10-18 14:21:50 +08:00
lyken
b8190ccc87
core/irrt: add List
...
Needed for implementing np_array()
2024-10-18 14:21:50 +08:00
lyken
9cfa2622ca
core/ndstrides: add NDArrayObject::atleast_nd
2024-10-18 14:21:50 +08:00
lyken
b6980c3a39
core/ndstrides: add NDArrayObject::make_copy
2024-10-18 14:21:50 +08:00
lyken
8f9d2d82dd
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
#486 .
2024-10-18 14:21:42 +08:00
lyken
9d0bfd965c
core/irrt: rename NDIndex to NDIndexInt
...
Unfortunately the name `NDIndex` is used in later commits. Renaming this
typedef to `NDIndexInt` to avoid amending. `NDIndexInt` will be removed
anyway when ndarray strides is completed.
2024-10-18 14:21:42 +08:00
lyken
01c9639646
core/irrt: add Slice and Range
...
Needed for implementing general ndarray indexing.
Currently IRRT slice and range have nothing to do with NAC3's slice
and range. The IRRT slice and range are currently there to implement
ndarray specific features. However, in the future their definitions may
be used to replace that of NAC3's. (NAC3's range is a [i32 x 3], IRRT's
range is a proper struct. NAC3 does not have a slice struct).
2024-10-18 14:21:42 +08:00
lyken
54a842a93f
core/ndstrides: implement len(ndarray) & refactor len()
2024-10-18 14:21:28 +08:00
lyken
792374fa9a
core/ndstrides: implement np_{zeros,ones,full,empty}
2024-10-18 14:21:28 +08:00
lyken
b41d091cac
core/model: add util::gen_for_model
2024-10-18 14:21:27 +08:00
lyken
79eda92582
core/object: add ListObject and TupleObject
...
Needed for implementing other ndarray utils.
2024-10-18 14:21:27 +08:00
lyken
50f960abb5
core/ndstrides: implement ndarray iterator NDIter
...
A necessary utility to iterate through all elements in a possibly strided ndarray.
2024-10-18 14:21:27 +08:00
lyken
a0a1f35b5d
core/ndstrides: introduce NDArray
...
NDArray with strides.
2024-10-18 14:21:27 +08:00
lyken
45f590f238
core/irrt: fix exception.hpp C++ castings
2024-10-18 14:21:27 +08:00
lyken
d51f45193f
core/toplevel/helper: add {extract,create}_ndims
2024-10-18 14:21:26 +08:00
lyken
572ae116ec
core/object: introduce object
...
A small abstraction to simplify implementations.
2024-10-18 14:21:26 +08:00
lyken
870a922367
[core] introduce models
2024-10-18 14:21:04 +08:00
David Mak
b6e2644391
[meta] Update cargo dependencies
2024-10-18 14:17:16 +08:00
David Mak
45cd01556b
[meta] Apply cargo fmt
2024-10-18 14:16:42 +08:00
David Mak
b6cd2a6993
[meta] Reorganize order of use declarations - Phase 3
2024-10-17 16:25:52 +08:00
David Mak
a98f33e6d1
[meta] Reorganize order of use declarations - Phase 2
...
Some more rules:
- For module-level imports, prefer no prefix > super > crate.
- Use crate instead of super if super refers to the crate-level module
2024-10-17 15:57:33 +08:00
David Mak
5839badadd
[standalone] Update globals.py with type-inferred global var
2024-10-07 20:44:08 +08:00
David Mak
56c845aac4
[standalone] Add support for registering globals without type decl
2024-10-07 20:44:06 +08:00
David Mak
65a12d9ab3
[core] Refactor registration of top-level variables
2024-10-07 17:05:48 +08:00
David Mak
9c6685fa8f
[core] typecheck/function_check: Fix lookup of defined ids in scope
2024-10-07 16:51:37 +08:00