summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-21 23:36:48 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-21 23:36:48 +0000
commit0df1eeecacb4f4e0c32e8d86320fca1efdc4bdda (patch)
treee93f29ef225910ad51b0787990ec871c11dcae8e /array.c
parent12e1d1fe6464964b2bee1b83b8524445fc2bbe2c (diff)
Implement ∘ and fix a bug in simplifyarray
Diffstat (limited to 'array.c')
-rw-r--r--array.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/array.c b/array.c
index 37cd159..2e0e71e 100644
--- a/array.c
+++ b/array.c
@@ -192,8 +192,16 @@ simplifyarray(Array *a)
b->stranded = a->stranded;
for(i = 0; i < a->rank; i++)
b->shape[i] = a->shape[i];
- for(i = 0; i < a->size; i++)
+ for(i = 0; i < a->size; i++){
memcpy(b->rawdata + i * datasizes[type], a->arraydata[i]->rawdata, datasizes[type]);
+ if(b->type == AtypeArray)
+ incref(b->arraydata[i]);
+ }
+ if(b->type == AtypeArray){
+ Array *tmp = b;
+ b = simplifyarray(b);
+ freearray(tmp);
+ }
return b;
}else if(canfloat){
Array *b = allocarray(AtypeFloat, a->rank, a->size);