From 01f73dc83b192981f55b570468b1ab9f30573ba4 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 19 Sep 2022 19:38:26 -0400 Subject: [PATCH] Move usum and bit_sum from numarr.h to stuff.c --- src/core/numarr.h | 39 ++------------------------------------- src/core/stuff.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/core/numarr.h b/src/core/numarr.h index b029ed7b..ce47a59e 100644 --- a/src/core/numarr.h +++ b/src/core/numarr.h @@ -88,40 +88,5 @@ static B toF64Any(B x) { u8 t=TY(x); return t==t_f64arr || t==t_f64slice? x : ta B m_cai32(usz ia, i32* a); B m_caf64(usz sz, f64* a); -static i64 bit_sum(u64* x, u64 am) { - i64 r = 0; - for (u64 i = 0; i < (am>>6); i++) r+= POPC(x[i]); - if (am&63) r+= POPC(x[am>>6]<<(64-am & 63)); - return r; -} - -static u64 usum(B x) { // doesn't consume; may error - assert(isArr(x)); - u64 r = 0; - usz xia = IA(x); - u8 xe = TI(x,elType); - if (xe==el_bit) return bit_sum(bitarr_ptr(x), xia); - else if (xe==el_i8 ) { i8* p = i8any_ptr (x); i8 m=0; for (usz i = 0; i < xia; ) { usz b=1<< 8; i16 s=0; for (usz e = xia-i>6); i++) r+= POPC(x[i]); + if (am&63) r+= POPC(x[am>>6]<<(64-am & 63)); + return r; +} + +u64 usum(B x) { // doesn't consume; may error + assert(isArr(x)); + u64 r = 0; + usz xia = IA(x); + u8 xe = TI(x,elType); + if (xe==el_bit) return bit_sum(bitarr_ptr(x), xia); + else if (xe==el_i8 ) { i8* p = i8any_ptr (x); i8 m=0; for (usz i = 0; i < xia; ) { usz b=1<< 8; i16 s=0; for (usz e = xia-i