diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-26 13:51:28 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-26 13:51:28 +0000 |
commit | 024867f3da16c7b51a768399401de1edcd417384 (patch) | |
tree | 45b8a7f7820f7870d6ad2212cfa74cf3211a27e3 | |
parent | 7f66d444451dab0e831cc0f14cc77ad691936f42 (diff) |
Add a better implementation of inner product, and don't simplify nested arrays if the contents are also arrays
-rw-r--r-- | array.c | 2 | ||||
-rw-r--r-- | operators.c | 4 |
2 files changed, 3 insertions, 3 deletions
@@ -217,7 +217,7 @@ simplifyarray(Array *a) return fnSame(a); /* cannot be simplified */ } - if(sametype){ + if(sametype && type != AtypeArray){ Array *b = duparrayshape(a, type); for(i = 0; i < a->size; i++){ if(nested){ diff --git a/operators.c b/operators.c index 2280e13..8fd9911 100644 --- a/operators.c +++ b/operators.c @@ -173,9 +173,9 @@ opInnerProduct(Datum *lefto, Datum *righto, Array *left, Array *right) throwerror(nil, EType); if(left->rank > 0 && right->rank > 0 && left->shape[left->rank-1] != right->shape[0]) - throwerror(L"Last dimension of A must match first dimension of B in A f.g B", EShape); + throwerror(nil, ELength); - return rundfn(L"⍶/¨(↓⍺)⍹⌾⍉↓⍉⍵", lefto, righto, left, right); + return rundfn(L"↑(↓⍺)(⍶/⍹¨)⌾⍉↓⍉⍵", lefto, righto, left, right); } Array * |