You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For small integers it will fallback to PyLong_FromLong() (like _PyLong_Negate() does), for the rest - just _PyLong_FlipSign() to change sign in place.
Alternatively, we could just expose a direct wrapper of _PyLong_FlipSign() and warn users to not use this function for small ints (that doesn't make sense for me anyway).
In both variants, on success - flip the sign of obj and return 0. On failure - return -1 with exception set. Shouldn't fail on PyLongObject or it's subtype.
I'll work on a patch if this proposal does make sense.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Feature or enhancement
Proposal:
Currently there is only a slow way (i.e.
PyNumber_Negative()
) to invert the sign of a big integer. Direct manipulation of the sign value is available only via private function, e.g._PyLong_SetSignAndDigitCount()
:https://github.com/aleaxit/gmpy/blob/1c0d4f38d4f1093df0e9460d82e4331d3d3946b6/src/gmpy2_convert_gmp.c#L153
I propose this interface:
For small integers it will fallback to
PyLong_FromLong()
(like_PyLong_Negate()
does), for the rest - just_PyLong_FlipSign()
to change sign in place.Alternatively, we could just expose a direct wrapper of
_PyLong_FlipSign()
and warn users to not use this function for small ints (that doesn't make sense for me anyway).In both variants, on success - flip the sign of
obj
and return 0. On failure - return -1 with exception set. Shouldn't fail on PyLongObject or it's subtype.I'll work on a patch if this proposal does make sense.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
The text was updated successfully, but these errors were encountered: