Terry J. Reedy <tjre...@udel.edu> added the comment:

> "Return a float with the magnitude of x but the sign of y."
This appears to describe both current behavior and what I believe was the 
intention. I would go with a doc patch based on this.
umedoblock, go ahead and make one.

It occurred to me, also, that as currently written, copysign 'should' return 
the type of the first arg. In C89, and I suspect in Python 1.0, all math 
functions return double (Python float). Like Mark, I am more inclined to change 
the doc than the code.

1. One use of copysign is to give a correctly signed 0.0. This does not apply 
to ints, where 0 is always unsigned. I do not know of any use of copysign in 
number (count/int) theory. (There could be, of course.)

2. icopysign(-1,0) == +1 (sign added for emphasis), whereas I believe that for 
ints, the answer should be -1, as 0 has no sign.

def icopysign(j,k):
    if (j > 0) and (k < 0) or (j < 0) and (k > 0):
        return -j
    return j
for j,k,i in ((1,1,1), (1,-1,-1), (-1,-1,-1), (-1, 1, 1),
              (1,0,1), (-1,0,-1)):
    assert icopysign(j,k) == i, (j,k,i)

This would certainly be up for debate if we changed the code, but there should 
be no difference in outputs for same value inputs. (This principle is the 
reason for / and //.) So lets leave copysign as a function defined on floats 
with inputs coerced to float if needed. Anyone who needs it for ints can define 
it for (-1,0) according to their need.

----------
assignee:  -> docs@python
components: +Documentation -Library (Lib)
nosy: +docs@python
stage:  -> needs patch
versions: +Python 2.7, Python 3.3

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12211>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to