Commit Graph

130 Commits

Author SHA1 Message Date
Mark Dickinson e979ec8fbf Issue #8986: erfc was raising OverflowError on Linux for arguments in
the (approximate) range (-27.3, 30.0), as a result of an escaped errno
value.
2010-06-13 10:50:29 +00:00
Antoine Pitrou c83ea137d7 Untabify C files. Will watch buildbots. 2010-05-09 14:46:46 +00:00
Mark Dickinson f132c16199 Make use of PyLong_AsLongAndOverflow in math_ldexp. 2010-01-03 12:03:03 +00:00
Mark Dickinson d3e323215c Refactor some longobject internals: PyLong_AsDouble and _PyLong_AsScaledDouble
(the latter renamed to _PyLong_Frexp) now use the same core code.  The
exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the
previously used int, and no longer needs scaling by PyLong_SHIFT.  This
frees the math module from having to know anything about the PyLong
implementation.  This closes issue #5576.
2010-01-02 14:45:40 +00:00
Mark Dickinson 12748b003c Issue #7518: Move substitute definitions of C99 math functions from
pymath.c to Modules/_math.c.
2009-12-21 15:22:00 +00:00
Mark Dickinson 5698977186 math.factorial depends on PyLong_AsLong correctly converting floats; rewrite
it to do the conversion explicitly instead.  See issue #7550.
2009-12-20 13:58:18 +00:00
Mark Dickinson 5ff37ae14b Issue #3366: Add error function and complementary error function to
math module.
2009-12-19 11:07:23 +00:00
Mark Dickinson 9cae178f21 Issue #3366: Add expm1 function to math module. Thanks Eric Smith for
testing on Windows.
2009-12-16 20:13:40 +00:00
Mark Dickinson 9be87bc992 Issue #3366: Add lgamma function to math module. 2009-12-11 17:29:33 +00:00
Georg Brandl a8f8bed203 Use a single style for all the docstrings in the math module. 2009-10-29 20:54:03 +00:00
Georg Brandl 40777e6606 Use the correct function name in docstring. 2009-10-29 20:38:32 +00:00
Mark Dickinson b93fff0a57 Issue #3366: Add gamma function to math module.
(lgamma, erf and erfc to follow).
2009-09-28 18:54:55 +00:00
Benjamin Peterson 9de7298102 remove redundant sentence 2008-12-20 22:49:24 +00:00
Benjamin Peterson fed67fd41e beef up docstring 2008-12-20 02:57:19 +00:00
Mark Dickinson 4c96fa5525 Issues #3167, #3682: tests for math.log and math.log10 were failing on
Solaris and OpenBSD.  Fix this by handling special values and domain
errors directly in mathmodule.c, passing only positive nonspecial floats
to the system log/log10.
2008-12-11 19:28:08 +00:00
Mark Dickinson ff3fdce0d2 Replace math.sum with math.fsum in a couple of comments
that were missed by r65308
2008-07-30 16:25:16 +00:00
Mark Dickinson fef6b13c32 Rename math.sum to math.fsum 2008-07-30 16:20:10 +00:00
Mark Dickinson abe0aee3cf Fix special-value handling for math.sum.
Also minor cleanups to the code: fix tabbing, remove
trailing whitespace, and reformat to fit into 80
columns.
2008-07-30 12:01:41 +00:00
Mark Dickinson 2fcd8c9703 Fix another typo in math_sum comment 2008-06-20 15:26:19 +00:00
Andrew M. Kuchling 5f198bee4e Fix comment typos 2008-06-20 02:11:42 +00:00
Raymond Hettinger 2281da42b0 Fix double decref. 2008-06-18 00:56:57 +00:00
Mark Dickinson fb1c4b98e9 Issue 3118: make test_math pass on Ubuntu/ia64. exp(-745.0) was raising
OverflowError incorrectly on this platform, presumably as a result of
the libm setting errno = ERANGE for this call.
2008-06-17 21:16:55 +00:00
Raymond Hettinger d623414141 Unhappy buildbots. Revert 64052. Long doubles have unexpected effects on some builds. 2008-06-09 11:24:47 +00:00
Raymond Hettinger 7b1ed66372 Address double-rounding scenarios by setting all variables to long doubles. 2008-06-09 09:29:17 +00:00
Raymond Hettinger ecbdd2e9b0 Issue #2138: Add math.factorial(). 2008-06-09 06:54:45 +00:00
Raymond Hettinger ef712d6fd3 * Mark intermedidate computes values (hi, lo, yr) as volatile.
* Expand comments.
* Swap variable names in the sum_exact code so that x and y
  are consistently chosen as the larger and smaller magnitude
  values respectively.
2008-05-30 18:20:50 +00:00
Raymond Hettinger 2a9179ac73 Fix two typos. 2008-05-29 08:38:23 +00:00
Raymond Hettinger 778d5cc4fb Tweak the comments and formatting. 2008-05-23 04:32:43 +00:00
Mark Dickinson 99dfe92759 Issue #2819: Add math.sum, a function that sums a sequence of floats
efficiently but with no intermediate loss of precision.  Based on
Raymond Hettinger's ASPN recipe.  Thanks Jean Brouwers for the patch.
2008-05-23 01:35:30 +00:00
Mark Dickinson f8476c1573 Issue #2487. math.ldexp(x, n) raised OverflowError when n was large and
negative; fix to return an (appropriately signed) zero instead.
2008-05-09 17:54:23 +00:00
Mark Dickinson 0da94c8a34 Silence 'r may be used uninitialized' compiler warning. 2008-04-21 01:55:50 +00:00
Mark Dickinson 92483cd8da math.atan2 is misbehaving on Windows; this patch
should fix the problem in the same way that
the cmath.phase problems were fixed.
2008-04-20 21:39:04 +00:00
Mark Dickinson cec3f138d8 Yet more explicit special case handling to make
math.pow behave on alpha Tru64.  All IEEE 754
special values are now handled directly; only
the finite**finite case is handled by libm.
2008-04-20 04:13:13 +00:00
Mark Dickinson b2f7090239 FreeBSD doesn't follow C99 for modf(inf); so add explicit
special-value handling to math.modf code.
2008-04-20 01:39:24 +00:00
Mark Dickinson a1293eb65f Additional special-case handling for math.pow.
Windows/VS2008 doesn't like (-1)**(+-inf).
2008-04-19 19:41:52 +00:00
Mark Dickinson e941d97d12 Additional tests for math.pow, and extra special-case
handling code in math.pow, in the hope of making all
tests pass on the alpha Tru64 buildbot.
2008-04-19 18:51:48 +00:00
Christian Heimes 6f34109384 I finally got the time to update and merge Mark's and my trunk-math branch. The patch is collaborated work of Mark Dickinson and me. It was mostly done a few months ago. The patch fixes a lot of loose ends and edge cases related to operations with NaN, INF, very small values and complex math.
The patch also adds acosh, asinh, atanh, log1p and copysign to all platforms. Finally it fixes differences between platforms like different results or exceptions for edge cases. Have fun :)
2008-04-18 23:13:07 +00:00
Raymond Hettinger fe424f754f Neaten-up a bit. 2008-02-02 05:24:44 +00:00
Jeffrey Yasskin ca2b69f765 Move __builtins__.trunc() to math.trunc() per
http://mail.python.org/pipermail/python-dev/2008-January/076626.html and issue
1965.
2008-02-01 06:22:46 +00:00
Christian Heimes 543cabc842 setup.py doesn't pick up changes to a header file 2008-01-25 14:54:23 +00:00
Neal Norwitz 5f95a79b2b Add prototypes to get the mathmodule.c to compile on OSF1 5.1 (Tru64)
and eliminate a compiler warning in floatobject.c.  There might be
a better way to go about this, but it should be good enough for now.
2008-01-25 08:04:16 +00:00
Jeffrey Yasskin 9871d8fe22 Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
 * Revert round to its 2.6 behavior (half away from 0).
 * Because round, floor, and ceil always return float again, it's no
   longer necessary to have them delegate to __xxx___, so I've ripped
   that out of their implementations and the Real ABC. This also helps
   in implementing types that work in both 2.6 and 3.0: you return int
   from the __xxx__ methods, and let it get enabled by the version
   upgrade.
 * Make pow(-1, .5) raise a ValueError again.
2008-01-05 08:47:13 +00:00
Christian Heimes 66ecda4990 Fixed math.copysign() on Windows 2008-01-04 01:48:50 +00:00
Christian Heimes eebb79cc69 Added copysign(x, y) function to the math module 2008-01-03 22:32:26 +00:00
Christian Heimes e2ca4245c9 Added math.isinf() and math.isnan() 2008-01-03 20:23:15 +00:00
Jeffrey Yasskin 2f3c16be73 Backport PEP 3141 from the py3k branch to the trunk. This includes r50877 (just
the complex_pow part), r56649, r56652, r56715, r57296, r57302, r57359, r57361,
r57372, r57738, r57739, r58017, r58039, r58040, and r59390, and new
documentation. The only significant difference is that round(x) returns a float
to preserve backward-compatibility. See http://bugs.python.org/issue1689.
2008-01-03 02:21:52 +00:00
Neal Norwitz 45e230a8e1 Speed up function calls into the math module by using METH_O.
There should be no functional changes. However, the error msgs are
slightly different.  Also verified that the module dict is not NULL on init.
2006-11-19 21:26:53 +00:00
Georg Brandl a355c14fa1 Whoops. 2006-05-29 22:00:30 +00:00
Georg Brandl bf92f46572 Convert more modules to METH_VARARGS. 2006-05-29 21:58:42 +00:00
Neal Norwitz 1ac754fa10 Check return result from Py_InitModule*(). This API can fail.
Probably should be backported.
2006-01-19 06:09:39 +00:00