Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #198023
| Path | csiph.com!news.nrbbs.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer05.iad!feed-me.highwinds-media.com!peer05.ams1!peer.ams1.xlned.com!news.xlned.com!peer05.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx11.ams4.POSTED!not-for-mail |
|---|---|
| MIME-Version | 1.0 |
| User-Agent | Mozilla Thunderbird |
| Subject | Re: ( n & -n ).bit_length() - 1 ## Really? |
| Newsgroups | comp.lang.python |
| References | <X0ArS.155893$NMu2.109571@fx15.ams4> <bits-20260919192308@ram.dialup.fu-berlin.de> |
| Content-Language | en-US |
| From | "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> |
| Organization | Watcom Pro Ltd. |
| In-Reply-To | <bits-20260919192308@ram.dialup.fu-berlin.de> |
| Content-Type | text/plain; charset=UTF-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| Lines | 28 |
| Message-ID | <JbBrS.493032$a02.417651@fx11.ams4> (permalink) |
| X-Complaints-To | abuse@easynews.com |
| X-Complaints-Info | Please be sure to forward a copy of ALL headers otherwise we will be unable to process your complaint properly. |
| Date | Sun, 20 Sep 2026 03:15:51 +0800 |
| X-Received-Bytes | 2414 |
| Xref | csiph.com comp.lang.python:198023 |
Show key headers only | View raw
On 9/20/2026 2:23 AM, Stefan Ram wrote: > "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> wrote or quoted: >> The above formula seems to work, given a few spot checks, but I thought >> this should be a utility function in the underlying multiprecision lib- >> rary in Python. Is the calculation n & -n really necessary? > > While "n & -n" might take some time for large Python integers, > I see no way to do it faster in Python. > > In C, one might be able to access the segments of large numbers > (the "limbs") starting with the least significant one to shortcut > the operation as soon as a "1" is found. Yes, this is perplexing. I'm working with /arbitrary large numbers/ in Cryptohack, for cryptographic purposes, and need a utility function to count the number of zero bits from the right. The toy implementations of the Jacobi Symbol I've seen online, in Python and otherwise, all seem to use a loop to repeatedly divide by two, which is presumably much slower, so I'm /sort of happy/ with this method. For practical applications, I resorted to the jacobi_symbol() function in SymPy, since I have not finished a correct implementation myself. But more on that in a later post. -- Johann | email: invalid -> com | http://www.myrkraverk.com/blog/ I'm not from the Internet, I just work there. | via Easynews.com https://bsky.app/profile/myrkraverk.bsky.social | for ( ;; ) _:;
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
( n & -n ).bit_length() - 1 ## Really? "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 01:56 +0800
Re: ( n & -n ).bit_length() - 1 ## Really? ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-19 18:23 +0000
Re: ( n & -n ).bit_length() - 1 ## Really? "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 03:15 +0800
Re: ( n & -n ).bit_length() - 1 ## Really? Lane W <cactus_DAC@yahoo.com> - 2026-09-19 13:37 -0600
Re: ( n & -n ).bit_length() - 1 ## Really? "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 04:32 +0800
Re: ( n & -n ).bit_length() - 1 ## Really? ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-19 20:39 +0000
Re: ( n & -n ).bit_length() - 1 ## Really? "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 04:56 +0800
myrkraverk.c (was: Re: ( n & -n ).bit_length() - 1 ## Really?) "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 18:00 +0800
Re: myrkraverk.c ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-20 12:25 +0000
Re: myrkraverk.c "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 21:33 +0800
Re: myrkraverk.c ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-20 13:48 +0000
Re: myrkraverk.c "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 22:09 +0800
jacobi_symbol.py (was: Re: myrkraverk.c) Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-09-21 20:34 +0800
Re: jacobi_symbol.py Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-09-22 15:20 +0800
Re: jacobi_symbol.py Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-09-25 23:32 +0800
Re: ( n & -n ).bit_length() - 1 ## Really? "Johann \"Myrkraverk\" Oskarsson" <johann@myrkraverk.invalid> - 2026-09-20 04:52 +0800
Re: ( n & -n ).bit_length() - 1 ## Really? Paul Rubin <no.email@nospam.invalid> - 2026-09-19 14:50 -0700
csiph-web