On Tue, 10 Dec 2024, Luis Felipe Hernandez wrote:
On Tue, Dec 10, 2024 at 02:59:12PM -0500, Nicolas Pitre wrote:
This will fail on a 32-bit system where sizeof(long) == 32 and ULONG_MAX == 4294967295. (meaning the result would be 65535).
Thank you for taking the time to review my patch and for pointing out the issue with the ULONG_MAX test case. I failed to think about how a 32-bit system would treat ULONG_MAX == 4294967295.
To address this, I was thinking of updating the test case to use a large enough value that remains within the bounds of unsigned long for both 32-bit and 64-bit architectures instead. Specifically, 2147483648 (2^31), which has an integer square root of 46340. I believe this would ensure the test remains valid and portable across all supported architectures.
The updated test case would be as follows: { 2147483648, 46340, "large input"}
Sure.
And for such kind of test, more values to test is not a bad thing. So I'd suggest keeping { 4294967295, 65535 ] as well in the set as this represents a nice edge case.
It wouldn't hurt adding the entire set from 0 to 9 as well. Many different edge cases in that range.
Nicolas