@@ -100,16 +100,16 @@ extern mp_obj_module_t ulab_numerical_module;
100
100
101
101
#define RUN_DIFF1 (ndarray , type , array , results , rarray , index , stencil , N )\
102
102
({\
103
- for(size_t i=0; i < (ndarray )->shape[(index)] - (N) ; i++) {\
103
+ for(size_t i=0; i < (results )->shape[ULAB_MAX_DIMS - 1] ; i++) {\
104
104
type sum = 0;\
105
105
uint8_t *source = (array);\
106
106
for(uint8_t d=0; d < (N)+1; d++) {\
107
107
sum -= (stencil)[d] * *((type *)source);\
108
108
source += (ndarray)->strides[(index)];\
109
109
}\
110
- (array) += (strides) [ULAB_MAX_DIMS - 1];\
110
+ (array) += (ndarray)->strides [ULAB_MAX_DIMS - 1];\
111
111
*(type *)(rarray) = sum;\
112
- (rarray) += (ndarray )->itemsize;\
112
+ (rarray) += (results )->itemsize;\
113
113
}\
114
114
})
115
115
@@ -260,10 +260,12 @@ extern mp_obj_module_t ulab_numerical_module;
260
260
size_t l = 0;\
261
261
do {\
262
262
RUN_DIFF1((ndarray), type, (array), (results), (rarray), (index), (stencil), (N));\
263
- (array) -= (strides)[ULAB_MAX_DIMS - 1] * (shape)[ULAB_MAX_DIMS - 1];\
264
- (array) += (strides)[ULAB_MAX_DIMS - 2];\
263
+ (array) -= (ndarray)->strides[ULAB_MAX_DIMS - 1] * (results)->shape[ULAB_MAX_DIMS - 1];\
264
+ (array) += (ndarray)->strides[ULAB_MAX_DIMS - 2];\
265
+ (rarray) -= (results)->strides[ULAB_MAX_DIMS - 1] * (results)->shape[ULAB_MAX_DIMS - 1];\
266
+ (rarray) += (results)->strides[ULAB_MAX_DIMS - 2];\
265
267
l++;\
266
- } while(l < (shape) [ULAB_MAX_DIMS - 1 ]);\
268
+ } while(l < (results)->shape [ULAB_MAX_DIMS - 2 ]);\
267
269
} while(0)
268
270
269
271
#define HEAPSORT (ndarray , type , array , shape , strides , index , increment , N ) do {\
@@ -358,14 +360,18 @@ extern mp_obj_module_t ulab_numerical_module;
358
360
size_t l = 0;\
359
361
do {\
360
362
RUN_DIFF1((ndarray), type, (array), (results), (rarray), (index), (stencil), (N));\
361
- (array) -= (strides)[ULAB_MAX_DIMS - 1] * (shape)[ULAB_MAX_DIMS - 1];\
362
- (array) += (strides)[ULAB_MAX_DIMS - 2];\
363
+ (array) -= (ndarray)->strides[ULAB_MAX_DIMS - 1] * (results)->shape[ULAB_MAX_DIMS - 1];\
364
+ (array) += (ndarray)->strides[ULAB_MAX_DIMS - 2];\
365
+ (rarray) -= (results)->strides[ULAB_MAX_DIMS - 1] * (results)->shape[ULAB_MAX_DIMS - 1];\
366
+ (rarray) += (results)->strides[ULAB_MAX_DIMS - 2];\
363
367
l++;\
364
- } while(l < (shape)[ULAB_MAX_DIMS - 1]);\
365
- (array) -= (strides)[ULAB_MAX_DIMS - 1] * (shape)[ULAB_MAX_DIMS-1];\
366
- (array) += (strides)[ULAB_MAX_DIMS - 2];\
368
+ } while(l < (shape)[ULAB_MAX_DIMS - 2]);\
369
+ (array) -= (ndarray)->[ULAB_MAX_DIMS - 2] * (results)->shape[ULAB_MAX_DIMS-2];\
370
+ (array) += (ndarray)->[ULAB_MAX_DIMS - 3];\
371
+ (rarray) -= (results)->strides[ULAB_MAX_DIMS - 2] * (results)->shape[ULAB_MAX_DIMS - 2];\
372
+ (rarray) += (results)->strides[ULAB_MAX_DIMS - 3];\
367
373
k++;\
368
- } while(k < (shape)[ULAB_MAX_DIMS - 2 ]);\
374
+ } while(k < (shape)[ULAB_MAX_DIMS - 3 ]);\
369
375
} while(0)
370
376
371
377
#define HEAPSORT (ndarray , type , array , shape , strides , index , increment , N ) do {\
@@ -500,18 +506,24 @@ extern mp_obj_module_t ulab_numerical_module;
500
506
size_t l = 0;\
501
507
do {\
502
508
RUN_DIFF1((ndarray), type, (array), (results), (rarray), (index), (stencil), (N));\
503
- (array) -= (strides)[ULAB_MAX_DIMS - 1] * (shape)[ULAB_MAX_DIMS - 1];\
504
- (array) += (strides)[ULAB_MAX_DIMS - 2];\
509
+ (array) -= (ndarray)->strides[ULAB_MAX_DIMS - 1] * (results)->shape[ULAB_MAX_DIMS - 1];\
510
+ (array) += (ndarray)->strides[ULAB_MAX_DIMS - 2];\
511
+ (rarray) -= (results)->strides[ULAB_MAX_DIMS - 1] * (results)->shape[ULAB_MAX_DIMS - 1];\
512
+ (rarray) += (results)->strides[ULAB_MAX_DIMS - 2];\
505
513
l++;\
506
- } while(l < (shape)[ULAB_MAX_DIMS - 1]);\
507
- (array) -= (strides)[ULAB_MAX_DIMS - 1] * (shape)[ULAB_MAX_DIMS-1];\
508
- (array) += (strides)[ULAB_MAX_DIMS - 2];\
514
+ } while(l < (shape)[ULAB_MAX_DIMS - 2]);\
515
+ (array) -= (strides)[ULAB_MAX_DIMS - 2] * (shape)[ULAB_MAX_DIMS-2];\
516
+ (array) += (strides)[ULAB_MAX_DIMS - 3];\
517
+ (rarray) -= (results)->strides[ULAB_MAX_DIMS - 2] * (results)->shape[ULAB_MAX_DIMS - 2];\
518
+ (rarray) += (results)->strides[ULAB_MAX_DIMS - 3];\
509
519
k++;\
510
- } while(k < (shape)[ULAB_MAX_DIMS - 2]);\
511
- (array) -= (strides)[ULAB_MAX_DIMS - 2] * (shape)[ULAB_MAX_DIMS-2];\
512
- (array) += (strides)[ULAB_MAX_DIMS - 3];\
520
+ } while(k < (shape)[ULAB_MAX_DIMS - 3]);\
521
+ (array) -= (strides)[ULAB_MAX_DIMS - 3] * (shape)[ULAB_MAX_DIMS-3];\
522
+ (array) += (strides)[ULAB_MAX_DIMS - 4];\
523
+ (rarray) -= (results)->strides[ULAB_MAX_DIMS - 3] * (results)->shape[ULAB_MAX_DIMS - 3];\
524
+ (rarray) += (results)->strides[ULAB_MAX_DIMS - 4];\
513
525
j++;\
514
- } while(j < (shape)[ULAB_MAX_DIMS - 3 ]);\
526
+ } while(j < (shape)[ULAB_MAX_DIMS - 4 ]);\
515
527
} while(0)
516
528
517
529
#define HEAPSORT (ndarray , type , array , shape , strides , index , increment , N ) do {\
0 commit comments