Issue #16686: Fixed a lot of bugs in audioop module.

* avgpp() and maxpp() no more crash on empty and 1-samples input fragment. They now work when peak-peak values are greater INT_MAX.
* ratecv() no more crashes on empty input fragment.
* Fixed an integer overflow in ratecv().
* Fixed an integer overflow in add() and bias() for 32-bit samples.
* reverse(), lin2lin() and ratecv() no more lose precision for 32-bit samples.
* max() and rms() no more returns negative result for 32-bit sample -0x80000000.
* minmax() now returns correct max value for 32-bit sample -0x80000000.
* avg(), mul(), tomono() and tostereo() now round negative result down and can return 32-bit sample -0x80000000.
* add() now can return 32-bit sample -0x80000000.
diff --git a/Doc/library/audioop.rst b/Doc/library/audioop.rst
index 0a8ac56..a9fa23c 100644
--- a/Doc/library/audioop.rst
+++ b/Doc/library/audioop.rst
@@ -38,7 +38,7 @@
 
    Return a fragment which is the addition of the two samples passed as parameters.
    *width* is the sample width in bytes, either ``1``, ``2`` or ``4``.  Both
-   fragments should have the same length.
+   fragments should have the same length.  Samples are truncated in case of overflow.
 
 
 .. function:: adpcm2lin(adpcmfragment, width, state)
@@ -71,7 +71,7 @@
 .. function:: bias(fragment, width, bias)
 
    Return a fragment that is the original fragment with a bias added to each
-   sample.
+   sample.  Samples wrap around in case of overflow.
 
 
 .. function:: cross(fragment, width)
@@ -181,7 +181,7 @@
 .. function:: mul(fragment, width, factor)
 
    Return a fragment that has all samples in the original fragment multiplied by
-   the floating-point value *factor*.  Overflow is silently ignored.
+   the floating-point value *factor*.  Samples are truncated in case of overflow.
 
 
 .. function:: ratecv(fragment, width, nchannels, inrate, outrate, state[, weightA[, weightB]])