5bed394ef7
core/ndstrides: implement subscript assignment
...
Overlapping is not handled. Currently it has undefined behavior.
2024-10-18 14:58:58 +08:00
f731e604c7
core/ndstrides: add more ScalarOrNDArray and NDArrayObject utils
2024-10-18 14:58:58 +08:00
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
9359ed9685
core/ndstrides: implement broadcasting & np_broadcast_to()
2024-10-18 14:57:33 +08:00
926e7e93a8
core/ndstrides: implement np_reshape()
2024-10-18 14:56:24 +08:00
9e0f636d2a
core: categorize np_{transpose,reshape} as 'view functions'
2024-10-18 14:55:18 +08:00
2c1030d158
core/ndstrides: implement np_size()
2024-10-18 14:54:40 +08:00
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
18db85fa7b
core/ndstrides: implement ndarray.fill() and .copy()
2024-10-18 14:21:57 +08:00
fa047d505d
core/ndstrides: implement np_identity() and np_eye()
2024-10-18 14:21:57 +08:00
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
b8190ccc87
core/irrt: add List
...
Needed for implementing np_array()
2024-10-18 14:21:50 +08:00
9cfa2622ca
core/ndstrides: add NDArrayObject::atleast_nd
2024-10-18 14:21:50 +08:00
b6980c3a39
core/ndstrides: add NDArrayObject::make_copy
2024-10-18 14:21:50 +08:00
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
M-Labs/nac3#486 .
2024-10-18 14:21:42 +08:00
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
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
54a842a93f
core/ndstrides: implement len(ndarray) & refactor len()
2024-10-18 14:21:28 +08:00
792374fa9a
core/ndstrides: implement np_{zeros,ones,full,empty}
2024-10-18 14:21:28 +08:00
b41d091cac
core/model: add util::gen_for_model
2024-10-18 14:21:27 +08:00
79eda92582
core/object: add ListObject and TupleObject
...
Needed for implementing other ndarray utils.
2024-10-18 14:21:27 +08:00
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
a0a1f35b5d
core/ndstrides: introduce NDArray
...
NDArray with strides.
2024-10-18 14:21:27 +08:00
45f590f238
core/irrt: fix exception.hpp C++ castings
2024-10-18 14:21:27 +08:00
d51f45193f
core/toplevel/helper: add {extract,create}_ndims
2024-10-18 14:21:26 +08:00
572ae116ec
core/object: introduce object
...
A small abstraction to simplify implementations.
2024-10-18 14:21:26 +08:00
870a922367
[core] introduce models
2024-10-18 14:21:04 +08:00
b6e2644391
[meta] Update cargo dependencies
2024-10-18 14:17:16 +08:00
45cd01556b
[meta] Apply cargo fmt
2024-10-18 14:16:42 +08:00
b6cd2a6993
[meta] Reorganize order of use declarations - Phase 3
2024-10-17 16:25:52 +08:00
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
5839badadd
[standalone] Update globals.py with type-inferred global var
2024-10-07 20:44:08 +08:00
56c845aac4
[standalone] Add support for registering globals without type decl
2024-10-07 20:44:06 +08:00
65a12d9ab3
[core] Refactor registration of top-level variables
2024-10-07 17:05:48 +08:00
9c6685fa8f
[core] typecheck/function_check: Fix lookup of defined ids in scope
2024-10-07 16:51:37 +08:00
2bb788e4bb
[core] codegen/expr: Materialize implicit globals
...
Required for when globals are read without the use of a global
declaration.
2024-10-07 13:13:20 +08:00
42a2f243b5
[core] typecheck: Disallow redeclaration of var shadowing global
2024-10-07 13:11:00 +08:00
3ce2eddcdc
[core] typecheck/type_inferencer: Infer whether variables are global
2024-10-07 13:10:46 +08:00
51bf126a32
[core] typecheck/type_inferencer: Differentiate global symbols
...
Required for analyzing use of global symbols before global declaration.
2024-10-07 12:25:00 +08:00
1a197c67f6
[core] toplevel/composer: Reduce lock scope while analyzing function
2024-10-05 15:53:20 +08:00
581b2f7bb2
[standalone] Add demo for global variables
2024-10-04 13:24:30 +08:00
746329ec5d
[standalone] Implement symbol resolution for globals
2024-10-04 13:24:30 +08:00
e60e8e837f
[core] Add support for global statements
2024-10-04 13:24:27 +08:00
9fdbe9695d
[core] Add generator to SymbolResolver::get_symbol_value
...
Needed in a future commit.
2024-10-04 13:20:29 +08:00
8065e73598
[core] toplevel/composer: Add type analysis for global variables
2024-10-04 13:20:29 +08:00
192290889b
[core] Add IdentifierInfo
...
Keeps track of whether an identifier refers to a global or local
variable.
2024-10-04 13:20:24 +08:00
1407553a2f
[core] Implement parsing of global variables
...
Globals are now parsed into symbol resolver and top level definitions.
2024-10-04 13:18:29 +08:00
c7697606e1
[core] Add TopLevelDef::Variable
2024-10-04 13:09:25 +08:00
88d0ccbf69
[standalone] Explicit panic when encountering a compilation error
...
Otherwise scripts will continue to execute.
2024-10-04 13:00:16 +08:00
a43b59539c
[meta] Move variables declarations closer to where they are first used
2024-10-04 13:00:16 +08:00