Commit graph

519 commits

Author SHA1 Message Date
Zoltán Vörös
c69f2d9256 implemented the ==, and != binary operators 2020-04-04 22:14:36 +02:00
Zoltán Vörös
ceaede8cb8 added trace to linalg, trimmed other code 2020-04-03 12:07:11 +02:00
Zoltán Vörös
32e0bf5bde
Merge branch 'master' into sort 2020-04-02 21:26:06 +02:00
Zoltán Vörös
89d73974e3 another attempt at fixing issue #79 2020-04-02 21:22:45 +02:00
Zoltán Vörös
b4f83997e7
Merge branch 'master' into power 2020-04-02 19:08:00 +02:00
Jeff Epler
0d5dc6b0d4
Merge pull request #78 from v923z/argmax
contraction returns scalar, if dimension is 0
2020-04-02 08:56:08 -05:00
Zoltán Vörös
2e27a356f5 added unistd.h to ndarray.c to fix issue #73 2020-04-02 11:04:23 +02:00
Zoltán Vörös
a3d77a3fa1 updated docs for ndarray_make_new_core 2020-04-02 09:52:04 +02:00
Zoltán Vörös
1648325d69 added fast ndarray initialisation option 2020-04-02 09:41:13 +02:00
Zoltán Vörös
04422f3da5 fixed indexing error in sort function 2020-04-01 23:43:31 +02:00
Zoltán Vörös
c2c525247c contraction returns scalar, if dimension is 0 2020-04-01 22:56:07 +02:00
Zoltán Vörös
2517d8be25 incremented version number, modified change log 2020-03-31 23:14:54 +02:00
Zoltán Vörös
3153c86f09 fixed empty array error 2020-03-31 23:02:14 +02:00
Zoltán Vörös
ae0dfbc126 fixed binary error with empty arrays 2020-03-31 22:52:06 +02:00
Zoltán Vörös
a2d52b6454 implemented the ** operator, and the reversed binary operators 2020-03-31 21:38:47 +02:00
53c158bde3 ndarray.c: circuitpython needs translate() for mp_raise 2020-03-30 15:34:01 -05:00
cbe41034a3 ndarray.h: provide mp_obj_is_bool for circuitpython 2020-03-30 15:33:45 -05:00
Zoltán Vörös
b3562ae78c Boolean indexing raises TypeError, if index is not of Boolean type 2020-03-30 12:58:04 +02:00
Zoltán Vörös
ea4a7422ef fixing Boolean indexing issue 2020-03-30 12:45:54 +02:00
3dc52575f0 slice_length: avoid implementation-defined division by negative number
In CircuitPython (only), a the slice assignment to [-1👎-3] of an
ndarray of length 1 caused a crash.  This appears to be because in
CircuitPython, the internal pointer of an empty array was NULL rather than
pointing at some memory which happened to be valid and assignable.

This appears to be a corner case of how integer promotion rules work in C.
The expression `slice.stop - slice.start + (slice.step + correction)`
is type `unsigned long` and on a LP64 platform its value is
18446744073709551614.  This led to the function returning that this slice
had length 1 instead, during the automated tests.

By casting to signed types capable of holding indices and sizes, the
problem is corrected on both platforms.
2020-03-16 22:09:39 -05:00
Zoltán Vörös
94e5b304d2 added arctan2 to vectorise.c 2020-03-16 19:36:37 +01:00
Zoltán Vörös
49e2e68f9b added around to vectorise.c, and implemented array initialiation from another ndarray 2020-03-12 17:28:23 +01:00
Zoltán Vörös
3e53136a93 ndarrays can now be initialised from ndarrays 2020-03-12 07:17:54 +01:00
Zoltán Vörös
037cd6e733 re-named spectrum->spectrogram, updated manual 2020-03-10 21:11:44 +01:00
Jeff Epler
1095994a4a
Merge pull request #59 from v923z/cholesky
added Cholesky decomposition to linalg.c, updated documentation
2020-03-10 14:51:48 -05:00
Zoltán Vörös
525fbb6527 added Cholesky decomposition to linalg.c, updated documentation 2020-03-10 20:40:11 +01:00
Zoltán Vörös
5d0eab244b added function declarations to linalg.h 2020-03-09 21:22:31 +01:00
Zoltán Vörös
6b3d43846f moved spectrum to extras module 2020-03-09 20:47:58 +01:00
Jeff Epler
f9fabc5079 Fix handling of negative indices
I don't know why, but mp_seq_get_fast_slice_indexes adjusts "stop" in a
surprising way, and that led to the (remaining) differences in slicing
between ulab and built-in lists.

    // If the index is negative then stop points to the last item, not after it
    if (indexes->step < 0) {
        indexes->stop++;
    }

Call the underlying routine, mp_obj_slice_indices, instead.
2020-02-29 17:00:42 -06:00
Jeff Epler
585513ce76 Return empty slices as empty ndarrays, not exceptions
This matches the behavior of built-in lists as well as numpy
2020-02-29 16:57:59 -06:00
Jeff Epler
66b89de8c7 Always include creation functions 2020-02-27 14:07:04 -06:00
Zoltán Vörös
bee25781b9 added new source file... 2020-02-27 20:46:52 +01:00
Zoltán Vörös
47bf2ec9a7 created new create sub-module for ndarray initialisation functions 2020-02-27 20:39:13 +01:00
Jeff Epler
aa5ef4afb9 Enable sort method in circuitpython 2020-02-27 10:06:33 -06:00
Jeff Epler
d99d834d87 Enable properties in circuitpython
I verified that these work for us as coded.
2020-02-27 10:06:27 -06:00
Jeff Epler
83479f115b Move zeros(), ones() to base ulab module 2020-02-27 10:05:50 -06:00
Jeff Epler
daaacac16f Remove CIRCUITPY special cases 2020-02-27 08:56:07 -06:00
Jeff Epler
aa4d53e292 Use circuitpy-compat for none 2020-02-27 08:56:04 -06:00
Zoltán Vörös
7e2be88dff Merge branch '2dim' of github.com:v923z/micropython-ulab into 2dim
added circuitpython-related stuff to code and manual
2020-02-26 18:06:19 +01:00
Zoltán Vörös
e0e840f6d5 added circuitpython-related stuff to the manual 2020-02-26 18:05:49 +01:00
1e5ebe739d numerical: add __name__ 2020-02-18 21:27:05 -06:00
cf057c4df9 roll back constness corrections 2020-02-18 21:00:30 -06:00
43551c9a7a Merge remote-tracking branch 'upstream/master' into 2dim 2020-02-18 20:46:43 -06:00
23adf6e4a7 Mark modules as 'extern const' 2020-02-18 20:32:33 -06:00
f6d123beb8 Don't export modules if CIRCUITPY
.. We are using the "shared bindings" method of circuitpython
2020-02-18 20:32:28 -06:00
27996c9003 Add MP_DELCARE_CONST_FUN declarations to headers 2020-02-18 20:32:22 -06:00
Zoltán Vörös
e71f667114 temporary fix for issue #40 2020-02-17 19:57:55 +01:00
Zoltán Vörös
017c1c2c46 added extras.h/extras.c 2020-02-16 19:49:28 +01:00
Zoltán Vörös
6fe015f134 properties are now defined in ndarray_properties.h 2020-02-16 19:49:01 +01:00
Zoltán Vörös
d8bfe46bd8 added __name__ to all submodules 2020-02-14 19:51:28 +01:00
Zoltán Vörös
2e3a0b4483 separated sub-modules into proper python sub-modules 2020-02-13 21:49:09 +01:00
Jeff Epler
fc80a25685 Increase CircuitPython compatibility
- Adapt to signature of mp_make_new_fun_t for mpy and cpy by ifdef
 - Use MP_OBJ_IS_TYPE instead of mp_obj_is_type
 - Ditto MP_OBJ_IS_INT
 - Use mp_const_none instead of MP_ROM_NONE
 - Ditto mp_const_true, mp_const_false
2020-02-12 10:15:47 -06:00
Jeff Epler
f47abf90ac filter_convolve: fix build error
My earlier change introduced a build error.  I'm not sure why
I didn't find this before making the pull request.
2020-02-12 09:50:17 -06:00
Jeff Epler
7846b0c469 convolve: Optimize and special-case floats
Special casing floats decreases runtime to about 50% (applying a 117-tap
filter to 512 points of data goes from 70ms to 32ms)

The top_n/bot_n calculations already meant that the a/c indices were
never out of range.  This decreases runtime further to about 15% of
original (11ms)

Timings done on an Adafruit Clue (nrf52840 at 64MHz)

It does of course increase code size somewhat.
2020-02-11 17:57:54 -06:00
Zoltán Vörös
9153fd8f8a added a short section to the manual on how to customise ulab 2020-02-11 21:36:12 +01:00
Zoltán Vörös
57cf52838c
Merge pull request #33 from jepler/fix-undef-errors-mpy
Fix some define-guards
2020-02-11 20:19:27 +01:00
Zoltán Vörös
c14eee1bd4 trying to fix ulab.h definitions 2020-02-11 20:15:45 +01:00
Zoltán Vörös
2c71467ced implemented ndarray properties 2020-02-11 20:08:37 +01:00
02d74a4d3e Fix some define-guards
These problems were found building in circuitpython:
../../extmod/ulab/code/numerical.c:671:5: error: "ULAB_NUMERICAL_ARGSORT" is not defined, evaluates to 0 [-Werror=undef]
  671 | #if ULAB_NUMERICAL_ARGSORT
      |     ^~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
../../extmod/ulab/code/ulab.c:150:9: error: "ULAB_VECTORISE_" is not defined, evaluates to 0 [-Werror=undef]
  150 |     #if ULAB_VECTORISE_
      |         ^~~~~~~~~~~~~~~
../../extmod/ulab/code/ulab.c:159:9: error: "ULAB_VECTORISE_TAHN" is not defined, evaluates to 0 [-Werror=undef]
  159 |     #if ULAB_VECTORISE_TAHN
      |         ^~~~~~~~~~~~~~~~~~~
../../extmod/ulab/code/ulab.c:198:9: error: "ULAB_NUMERICAL_ARGSORT" is not defined, evaluates to 0 [-Werror=undef]
  198 |     #if ULAB_NUMERICAL_ARGSORT
      |         ^~~~~~~~~~~~~~~~~~~~~~
2020-02-11 11:08:25 -06:00
Zoltán Vörös
4a0677fd14 removed extra ndarray_get_buffer 2020-02-10 19:54:49 +01:00
Zoltán Vörös
800bb3b872 Merge branch 'master' of github.com:v923z/micropython-ulab 2020-02-10 19:51:22 +01:00
Zoltán Vörös
89170a13a6 fixed error in filter.c, removed asbytearray, and added buffer protocol to ndarray.c 2020-02-10 19:50:49 +01:00
Zoltán Vörös
ca23263655
Merge pull request #31 from jepler/memoryview
ndarray: let memoryview(arr) work
2020-02-10 18:38:11 +01:00
Zoltán Vörös
936bb3bae5 corrected slicing error in issue #32 2020-02-09 19:56:32 +01:00
a90d18caf1 ndarray: let memoryview(arr) work
.. this makes ndarray.rawbytes redundant.  Circuitpython will remove it.
2020-02-08 10:29:45 -06:00
Zoltán Vörös
918075daaf fixed a couple of small issues in filter.c 2020-02-08 10:45:13 +01:00
Zoltán Vörös
fac3eb4099 fixed a couple of small issues in filter.c 2020-02-08 10:44:24 +01:00
Zoltán Vörös
76ccd1a118 the master branch is configurable now 2020-02-07 21:23:24 +01:00
Jeff Epler
722401c2e4 Clean up and polish based on review comments
no functional change
2020-02-06 12:43:39 -06:00
Jeff Epler
efa4c148c9 convolve: implement and document 2020-02-05 16:33:48 -06:00
Zoltán Vörös
dcd65feb21 fixed indexing error in linalg.dot 2020-01-29 19:27:28 +01:00
Zoltán Vörös
b2c4749962 replaced MP_ROM_PTR macro, wherever it made sense 2020-01-20 19:55:38 +01:00
Zoltán Vörös
ac1111c251 fixed glitch in std/mean functions 2020-01-07 21:53:23 +01:00
Zoltán Vörös
992e48b84e switched to version string 2020-01-07 21:02:20 +01:00
Zoltán Vörös
68e38bc6b8 backup commit 2020-01-06 07:43:27 +01:00
Zoltán Vörös
81acfc7da8 ulab_ndarray_type is extern now 2019-12-31 10:57:10 +01:00
Zoltán Vörös
107587de00 found and fixed macro error in vectorise.h 2019-11-29 08:02:48 +01:00
Zoltán Vörös
22f85e0d3b fixed indexing error in linalg.dot 2019-11-28 19:16:59 +01:00
Zoltán Vörös
1df50af368 replaced fabs by platform-agnostic version 2019-11-14 20:27:32 +01:00
Zoltán Vörös
1b9a80a442 replaced fabs by platform-agnostic version 2019-11-14 20:26:15 +01:00
Nicko van Someren
e33720e9c0 Fixed several issues preventing compilation on macOS 2019-11-11 13:39:28 -08:00
Zoltán Vörös
1f5d1a9765 fixed version number in ulab.c 2019-11-06 18:34:12 +01:00
Zoltán Vörös
0e9656cc1d added argsort, and fixed a number of smaller bugs 2019-11-06 17:35:01 +01:00
Zoltán Vörös
08b8fd0ae2 fixed float_t->mp_float_t mistake in ndarray.c 2019-11-04 19:28:06 +01:00
Zoltán Vörös
351eafa06c first implementation of sort 2019-11-04 18:54:19 +01:00
Zoltán Vörös
3379f0b897 fixed linking error with sin/sqrt 2019-11-01 14:42:08 +01:00
Zoltán Vörös
6e4911d96f replaced float with mp_float_t everywhere, so that the source can be compiled for all platforms 2019-11-01 14:28:29 +01:00
Zoltán Vörös
8b6d03417b added diff function, and updated the manual accordingly 2019-10-31 12:52:40 +01:00
Zoltán Vörös
761ad69d71 fully implemented subscription methods 2019-10-29 21:12:12 +01:00
Zoltán Vörös
5599dd2f31 fixed small bug in rawsize 2019-10-19 19:45:26 +02:00
Zoltán Vörös
148364e189 added eig to linalg, and updated the manual 2019-10-19 15:32:45 +02:00
Zoltán Vörös
31e40dad5d added uniform interface to fft, ifft, spectrum, and significantly extended manual 2019-10-17 20:52:41 +02:00
Zoltán Vörös
d4acce7b1f extended documentation, and moved size function to linalg 2019-10-16 20:08:16 +02:00
Zoltán Vörös
69225c3707 added det to linalg.c 2019-10-15 21:37:21 +02:00
Zoltán Vörös
13c343f3cf fixed the roll function in numerical.c 2019-10-15 19:47:22 +02:00
Zoltán Vörös
13511aaf08 min/max conforms to numpy behaviour now 2019-10-14 21:29:15 +02:00
Zoltán Vörös
5caa711422 extended manual, inserted links to numpy functions 2019-10-12 22:33:13 +02:00
Zoltán Vörös
e30b8d6f4e added first version of manual, fixed small bug in roll 2019-10-11 21:45:14 +02:00
Zoltán Vörös
be6ab7ba18 extended universal functions for arbitrary typecode 2019-10-11 18:59:45 +02:00
Zoltán Vörös
0c161e2ba3 fixed error in iterator and make_new 2019-10-11 15:58:17 +02:00
Zoltán Vörös
68dd3a7423 this is mainly a safety backup; subscr is not fully implemented yet 2019-10-10 22:01:26 +02:00
Zoltán Vörös
1c233de552 extended unary operators in ndarray.c 2019-10-08 17:37:53 +02:00
Zoltán Vörös
4a8ecc28f2 added keyword arguments to linspace, made binary_op tighter 2019-10-07 20:49:29 +02:00
Zoltán Vörös
a5f61f4e3c added comparison operators to ndarray 2019-10-05 16:01:00 +02:00
Zoltán Vörös
ba975c100d added comparison operators to ndarray 2019-10-05 15:59:03 +02:00
Zoltán Vörös
7feaf8c57e removed printf statement in ndarray.c 2019-10-04 20:11:28 +02:00
Zoltán Vörös
cadae1dbf7 extended linalg, added .flatten to ndarray 2019-10-04 20:06:04 +02:00
Zoltán Vörös
52694959d3 bit of clean-up in binary_op/removed upcasting() 2019-10-04 12:32:49 +02:00
Zoltán Vörös
6a65d33445 fixed half of the binary operator code (implemented macros) 2019-09-27 20:23:25 +02:00
Zoltán Vörös
093bc39b7d cleaned up material for first release 2019-09-25 17:33:02 +02:00
Zoltán Vörös
fce8850b05 added lots of examples and code comments 2019-09-18 21:59:31 +02:00
Zoltán Vörös
c958ac272d fixed stm32 code 2019-09-18 19:39:04 +02:00
Zoltán Vörös
be8be6d155 fixed subscription method 2019-09-17 22:23:07 +02:00
Zoltán Vörös
69037a2d60 added in-place fft implementation 2019-09-17 21:25:27 +02:00
Zoltán Vörös
f2d41862da added version info 2019-09-11 20:12:49 +02:00
Zoltán Vörös
d9f9a26197 implemented binary operators 2019-09-11 19:51:48 +02:00
Zoltán Vörös
5997dd2a5c implemented numpy-like iterators 2019-09-06 20:24:18 +02:00
Zoltán Vörös
f7884529fe added keyword argument to ndarray 2019-09-05 21:56:00 +02:00
Zoltán Vörös
3ed5e1a651 initial commit 2019-08-31 18:51:26 +02:00