diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex index c7bb5a628f8..158ea0c9c80 100644 --- a/Doc/lib/libfuncs.tex +++ b/Doc/lib/libfuncs.tex @@ -248,9 +248,9 @@ def my_import(name): \end{funcdesc} \begin{funcdesc}{divmod}{a, b} - Take two numbers as arguments and return a pair of numbers consisting - of their quotient and remainder when using long division. With mixed - operand types, the rules for binary arithmetic operators apply. For + Take two (non complex) numbers as arguments and return a pair of numbers + consisting of their quotient and remainder when using long division. With + mixed operand types, the rules for binary arithmetic operators apply. For plain and long integers, the result is the same as \code{(\var{a} / \var{b}, \var{a} \%{} \var{b})}. For floating point numbers the result is \code{(\var{q}, \var{a} \%{} diff --git a/Doc/lib/libstdtypes.tex b/Doc/lib/libstdtypes.tex index f2cbe749355..143b05ae544 100644 --- a/Doc/lib/libstdtypes.tex +++ b/Doc/lib/libstdtypes.tex @@ -218,8 +218,8 @@ to coerce numbers to a specific type. \bifuncindex{float} \bifuncindex{complex} -All numeric types support the following operations, sorted by -ascending priority (operations in the same box have the same +All numeric types (except complex) support the following operations, +sorted by ascending priority (operations in the same box have the same priority; all numeric operations have a higher priority than comparison operations): @@ -229,7 +229,7 @@ comparison operations): \hline \lineiii{\var{x} * \var{y}}{product of \var{x} and \var{y}}{} \lineiii{\var{x} / \var{y}}{quotient of \var{x} and \var{y}}{(1)} - \lineiii{\var{x} \%{} \var{y}}{remainder of \code{\var{x} / \var{y}}}{} + \lineiii{\var{x} \%{} \var{y}}{remainder of \code{\var{x} / \var{y}}}{(4)} \hline \lineiii{-\var{x}}{\var{x} negated}{} \lineiii{+\var{x}}{\var{x} unchanged}{} @@ -240,7 +240,7 @@ comparison operations): \lineiii{float(\var{x})}{\var{x} converted to floating point}{} \lineiii{complex(\var{re},\var{im})}{a complex number with real part \var{re}, imaginary part \var{im}. \var{im} defaults to zero.}{} \lineiii{\var{c}.conjugate()}{conjugate of the complex number \var{c}}{} - \lineiii{divmod(\var{x}, \var{y})}{the pair \code{(\var{x} / \var{y}, \var{x} \%{} \var{y})}}{(3)} + \lineiii{divmod(\var{x}, \var{y})}{the pair \code{(\var{x} / \var{y}, \var{x} \%{} \var{y})}}{(3)(4)} \lineiii{pow(\var{x}, \var{y})}{\var{x} to the power \var{y}}{} \lineiii{\var{x} ** \var{y}}{\var{x} to the power \var{y}}{} \end{tableiii} @@ -273,6 +273,12 @@ for well-defined conversions. See section \ref{built-in-funcs}, ``Built-in Functions,'' for a full description. +\item[(4)] +Complex floor division operator, modulo operator, and \function{divmod()}. + +\deprecated{2.3}{Instead convert to float using \function{abs()} +if appropriate.} + \end{description} % XXXJH exceptions: overflow (when? what operations?) zerodivision diff --git a/Doc/ref/ref5.tex b/Doc/ref/ref5.tex index 6e28fab7a42..bcd1f262cc3 100644 --- a/Doc/ref/ref5.tex +++ b/Doc/ref/ref5.tex @@ -689,7 +689,7 @@ The integer division and modulo operators are connected by the following identity: \code{x == (x/y)*y + (x\%y)}. Integer division and modulo are also connected with the built-in function \function{divmod()}: \code{divmod(x, y) == (x/y, x\%y)}. These identities don't hold for -floating point and complex numbers; there similar identities hold +floating point numbers; there similar identities hold approximately where \code{x/y} is replaced by \code{floor(x/y)}) or \code{floor(x/y) - 1} (for floats),\footnote{ If x is very close to an exact integer multiple of y, it's @@ -697,8 +697,13 @@ approximately where \code{x/y} is replaced by \code{floor(x/y)}) or \code{(x-x\%y)/y} due to rounding. In such cases, Python returns the latter result, in order to preserve that \code{divmod(x,y)[0] * y + x \%{} y} be very close to \code{x}. -} or \code{floor((x/y).real)} (for -complex). +}. + +Complex floor division operator, modulo operator, and +\function{divmod()}. + +\deprecated{2.3}{Instead convert to float using \function{abs()} +if appropriate.} The \code{+} (addition) operator yields the sum of its arguments. The arguments must either both be numbers or both sequences of the