Re: flags in a bitmap

"Ruud H.G. van Tol" <[email protected]> Fri, 4 Jul 2025 16:57:39 +0200
Newsgroups gmane.comp.mathematics.pari.devel
Message-ID <[email protected]>
On 2025-07-04 16:16, Ruud H.G. van Tol wrote:
> [switched from user to dev]
>
> On 2025-07-04 15:51, Bill Allombert wrote:
>> On Fri, Jul 04, 2025 at 12:38:59PM +0200, Ruud H.G. van Tol wrote:
>>>> ? install(bitset,vWL)
>>>> ? x=2^(2^20);
>>>> ? forprime(p=2,2^20,bitset(~x,p))
>>>>     ***   last result computed in 8 ms.
>>>> ? my(S=0);for(i=0,2^20-1,S+=bittest(x,i));S
>>>> %16 = 82025
>>>>     ***   last result computed in 159 ms.
>>> That indeed looks good, and I can test it.
>> Great, I have made a GIT branch bill-bitset
>>
>> commit 8632eaf7528554234aaa90d9a503476452cbd736 (HEAD -> bill-bitset, 
>> origin/bill-bitset, master)
>> Author: Bill Allombert <[email protected]>
>> Date:   Thu Jul 3 23:57:00 2025 +0200
>>
>>      New GP functions bitset, bitclear
>
> Thanks. First (minor) remark:
>
>
> -Help: bitclear(~n,i): clear bit i of n (in place)
> +Help: bitclear(~x,n): clear bit n of x (in place)
>
> -Help: bitset(~n,i): set bit i of n in place
> +Help: bitset(~x,n): set bit n of x in place
>
>
> to align it with bittest, and with the code.

And of course another:

diff --git a/src/headers/paridecl.h b/src/headers/paridecl.h
+void    bitclear(GEN x, long i);
+void    bitset(GEN x, long i);
  long    bittest(GEN x, long n);

Those long i's might also want to be n's.

-- Ruud