diff options
author | dzaima <dzaimagit@gmail.com> | 2024-04-20 21:21:33 +0300 |
---|---|---|
committer | dzaima <dzaimagit@gmail.com> | 2024-04-20 21:21:47 +0300 |
commit | de529e483bcdda2ad571f37070d4a88ed98e9144 (patch) | |
tree | 7c7733bf00a4f2b1c313a567093c4c57876432f0 | |
parent | ce4461ff44b6aff5a6f53015bf0e16c8bde9960d (diff) |
make non-Singeli getRange_f64 check first element for integerness
-rw-r--r-- | src/builtins/search.c | 5 | ||||
-rw-r--r-- | test/cases/prims.bqn | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/builtins/search.c b/src/builtins/search.c index e7979509..1cd897bb 100644 --- a/src/builtins/search.c +++ b/src/builtins/search.c @@ -50,9 +50,10 @@ INIT_GLOBAL RangeFn getRange_fns[el_f64+1]; #define SINGELI_FILE search #include "../utils/includeSingeli.h" #else - #define GETRANGE(T,X) bool getRange_##T(void* x0, i64* res, u64 ia) { \ + #define GETRANGE(T,CHK) bool getRange_##T(void* x0, i64* res, u64 ia) { \ assert(ia>0); T* x=x0; T min=*x,max=min; \ - for (ux i=1; i<ia; i++) { T c=x[i]; X; \ + { T c=min; CHK; (void)c; } \ + for (ux i=1; i<ia; i++) { T c=x[i]; CHK; \ {if(c<min)min=c;} {if(c>max)max=c;} \ } \ res[0]=min; res[1]=max; return 1; \ diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn index 70bc88aa..0a6ae759 100644 --- a/test/cases/prims.bqn +++ b/test/cases/prims.bqn @@ -371,6 +371,8 @@ w←1‿1⥊1 ⋄ x←2⥊1 ⋄ w‿x <¨↩ ⋄ {! (∾⟨•Repr𝕩,": Expe !"Integer out of range: 1e20" % 1⊸+⍟1e20 0 !"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨1.5⟩ !"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨1e20⟩ +!"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨9, 1.5⟩ +!"⍟: 𝔾 contained non-integer (or integer was out of range)" % %USE evar ⋄ {1⊸+⍟𝕩 0}_evar ⟨1.5, 9⟩ # ◶ !"◶: 𝕘 must have rank 1 when index is a number" % 1◶[1‿2,3‿4] 3 |