diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index e0da0114cfa..8ca632f7591 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -327,11 +327,11 @@ FUNC1(tanh, tanh, 0, sum([1e+308, 1e+308, 1e-308]) raises an OverflowError due to the overflow of the first partial sum. - Note 3: The itermediate values lo, yr, and hi are declared volatile so + Note 3: The intermediate values lo, yr, and hi are declared volatile so aggressive compilers won't algebraicly reduce lo to always be exactly 0.0. Also, the volatile declaration forces the values to be stored in memory as regular doubles instead of extended long precision (80-bit) values. This - prevents double rounding because any addition or substraction of two doubles + prevents double rounding because any addition or subtraction of two doubles can be resolved exactly into double-sized hi and lo values. As long as the hi value gets forced into a double before yr and lo are computed, the extra bits in downstream extended precision operations (x87 for example) will be