# Polygon examples broken

You're right that for math expressions, it is nice to have them in the
namespace, so this is used a lot:

from numpy import sqrt, sin, cos, exp

Maybe it's a reasonable idea to write a Nmath.py, which would have an
import line like that.

Out of 491 names in the numpy namespace, I found 26 that would commonly
be found in math expressions. Not bad, really, much better than
including all 491.

Inf NaN abs angle arccos arccosh arcsin arcsinh arctan
arctan2 arctanh cos cosh exp log log10 pi sign sin
sinc sinh sqrt square tan tanh

The C99 math/complex headers define a number of symbols.

constants:

log: M_E M_LOG2E M_LOG10E M_LN2 M_LN10
pi: M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI
sqrt(2): M_SQRT2 M_SQRT1_2

functions:

isfinite isnormal isnan isinf
acos asin atan atan2 cos sin tan
acosh asinh atanh cosh sinh tanh
exp log log10 expm1 log1p exp2 log2
pow sqrt cbrt erf erfc lgamma tgamma hypot
fmod remainder remquo
fabs fdim fmax fmin
copysign signbit frexp ldexp logb modf scalbn
ceil floor rint nexttoward nearbyingt round trunc

complex functions:

acos asin atan atan2 cos sin tan
acosh asinh atanh cosh sinh tanh
exp log pow sqrt
conj cproj abs arg imag real

The glibc header files are not the most concise source so likely I've
made mistakes (e.g., missing inf/nan defs) and included things that
are not actually standard (e.g., hypot?). Making a lot of these available
in mpl.math would be nice.

Short of installing all of scipy, anyone know where I can pick up erf()?

> I'm guessing a function sqrt(-1.) which returns 1j is out of the question?

what's wrong with "1j" as a literal?

Let me rephrase: Can we have a function sqrt(x) which returns real if x is
nonnegative, and complex if it is negative? Similarly for other math functions
such as log which produce complex values for negative numbers?

I suppose the numpy list is the place to debate this, but it seems like it
ought to be a feature of pylab in as much as pylab helps matlab users do
pythonic things in a familiar environment.

- Paul

···

On Fri, Jul 20, 2007 at 12:34:44PM -0700, Christopher Barker wrote:

Paul Kienzle wrote:

Let me rephrase: Can we have a function sqrt(x) which returns real if x is
nonnegative, and complex if it is negative? Similarly for other math functions
such as log which produce complex values for negative numbers?

I suppose the numpy list is the place to debate this, but it seems like it
ought to be a feature of pylab in as much as pylab helps matlab users do
pythonic things in a familiar environment.

numpy.sqrt() won't do that (we've already discussed it). scipy.sqrt() does,
though. The functions that work like this are in numpy.lib.scimath.

···

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
an underlying truth."
-- Umberto Eco

Paul Kienzle wrote:

Let me rephrase: Can we have a function sqrt(x) which returns real if x is
nonnegative, and complex if it is negative? Similarly for other math functions
such as log which produce complex values for negative numbers?

standard python is

import cmath
cmath.sqrt(-1)

1j