413 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			413 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						||
=========
 | 
						||
Constants
 | 
						||
=========
 | 
						||
 | 
						||
.. currentmodule:: numpy
 | 
						||
 | 
						||
NumPy includes several constants:
 | 
						||
 | 
						||
%(constant_list)s
 | 
						||
"""
 | 
						||
#
 | 
						||
# Note: the docstring is autogenerated.
 | 
						||
#
 | 
						||
import re
 | 
						||
import textwrap
 | 
						||
 | 
						||
# Maintain same format as in numpy.add_newdocs
 | 
						||
constants = []
 | 
						||
def add_newdoc(module, name, doc):
 | 
						||
    constants.append((name, doc))
 | 
						||
 | 
						||
add_newdoc('numpy', 'pi',
 | 
						||
    """
 | 
						||
    ``pi = 3.1415926535897932384626433...``
 | 
						||
 | 
						||
    References
 | 
						||
    ----------
 | 
						||
    https://en.wikipedia.org/wiki/Pi
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'e',
 | 
						||
    """
 | 
						||
    Euler's constant, base of natural logarithms, Napier's constant.
 | 
						||
 | 
						||
    ``e = 2.71828182845904523536028747135266249775724709369995...``
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    exp : Exponential function
 | 
						||
    log : Natural logarithm
 | 
						||
 | 
						||
    References
 | 
						||
    ----------
 | 
						||
    https://en.wikipedia.org/wiki/E_%28mathematical_constant%29
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'euler_gamma',
 | 
						||
    """
 | 
						||
    ``γ = 0.5772156649015328606065120900824024310421...``
 | 
						||
 | 
						||
    References
 | 
						||
    ----------
 | 
						||
    https://en.wikipedia.org/wiki/Euler-Mascheroni_constant
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'inf',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of (positive) infinity.
 | 
						||
 | 
						||
    Returns
 | 
						||
    -------
 | 
						||
    y : float
 | 
						||
        A floating point representation of positive infinity.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    isinf : Shows which elements are positive or negative infinity
 | 
						||
 | 
						||
    isposinf : Shows which elements are positive infinity
 | 
						||
 | 
						||
    isneginf : Shows which elements are negative infinity
 | 
						||
 | 
						||
    isnan : Shows which elements are Not a Number
 | 
						||
 | 
						||
    isfinite : Shows which elements are finite (not one of Not a Number,
 | 
						||
    positive infinity and negative infinity)
 | 
						||
 | 
						||
    Notes
 | 
						||
    -----
 | 
						||
    NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
 | 
						||
    (IEEE 754). This means that Not a Number is not equivalent to infinity.
 | 
						||
    Also that positive infinity is not equivalent to negative infinity. But
 | 
						||
    infinity is equivalent to positive infinity.
 | 
						||
 | 
						||
    `Inf`, `Infinity`, `PINF` and `infty` are aliases for `inf`.
 | 
						||
 | 
						||
    Examples
 | 
						||
    --------
 | 
						||
    >>> np.inf
 | 
						||
    inf
 | 
						||
    >>> np.array([1]) / 0.
 | 
						||
    array([ Inf])
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'nan',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of Not a Number (NaN).
 | 
						||
 | 
						||
    Returns
 | 
						||
    -------
 | 
						||
    y : A floating point representation of Not a Number.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    isnan : Shows which elements are Not a Number.
 | 
						||
 | 
						||
    isfinite : Shows which elements are finite (not one of
 | 
						||
    Not a Number, positive infinity and negative infinity)
 | 
						||
 | 
						||
    Notes
 | 
						||
    -----
 | 
						||
    NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
 | 
						||
    (IEEE 754). This means that Not a Number is not equivalent to infinity.
 | 
						||
 | 
						||
    `NaN` and `NAN` are aliases of `nan`.
 | 
						||
 | 
						||
    Examples
 | 
						||
    --------
 | 
						||
    >>> np.nan
 | 
						||
    nan
 | 
						||
    >>> np.log(-1)
 | 
						||
    nan
 | 
						||
    >>> np.log([-1, 1, 2])
 | 
						||
    array([        NaN,  0.        ,  0.69314718])
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'newaxis',
 | 
						||
    """
 | 
						||
    A convenient alias for None, useful for indexing arrays.
 | 
						||
 | 
						||
    Examples
 | 
						||
    --------
 | 
						||
    >>> newaxis is None
 | 
						||
    True
 | 
						||
    >>> x = np.arange(3)
 | 
						||
    >>> x
 | 
						||
    array([0, 1, 2])
 | 
						||
    >>> x[:, newaxis]
 | 
						||
    array([[0],
 | 
						||
    [1],
 | 
						||
    [2]])
 | 
						||
    >>> x[:, newaxis, newaxis]
 | 
						||
    array([[[0]],
 | 
						||
    [[1]],
 | 
						||
    [[2]]])
 | 
						||
    >>> x[:, newaxis] * x
 | 
						||
    array([[0, 0, 0],
 | 
						||
    [0, 1, 2],
 | 
						||
    [0, 2, 4]])
 | 
						||
 | 
						||
    Outer product, same as ``outer(x, y)``:
 | 
						||
 | 
						||
    >>> y = np.arange(3, 6)
 | 
						||
    >>> x[:, newaxis] * y
 | 
						||
    array([[ 0,  0,  0],
 | 
						||
    [ 3,  4,  5],
 | 
						||
    [ 6,  8, 10]])
 | 
						||
 | 
						||
    ``x[newaxis, :]`` is equivalent to ``x[newaxis]`` and ``x[None]``:
 | 
						||
 | 
						||
    >>> x[newaxis, :].shape
 | 
						||
    (1, 3)
 | 
						||
    >>> x[newaxis].shape
 | 
						||
    (1, 3)
 | 
						||
    >>> x[None].shape
 | 
						||
    (1, 3)
 | 
						||
    >>> x[:, newaxis].shape
 | 
						||
    (3, 1)
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'NZERO',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of negative zero.
 | 
						||
 | 
						||
    Returns
 | 
						||
    -------
 | 
						||
    y : float
 | 
						||
        A floating point representation of negative zero.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    PZERO : Defines positive zero.
 | 
						||
 | 
						||
    isinf : Shows which elements are positive or negative infinity.
 | 
						||
 | 
						||
    isposinf : Shows which elements are positive infinity.
 | 
						||
 | 
						||
    isneginf : Shows which elements are negative infinity.
 | 
						||
 | 
						||
    isnan : Shows which elements are Not a Number.
 | 
						||
 | 
						||
    isfinite : Shows which elements are finite - not one of
 | 
						||
               Not a Number, positive infinity and negative infinity.
 | 
						||
 | 
						||
    Notes
 | 
						||
    -----
 | 
						||
    NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
 | 
						||
    (IEEE 754). Negative zero is considered to be a finite number.
 | 
						||
 | 
						||
    Examples
 | 
						||
    --------
 | 
						||
    >>> np.NZERO
 | 
						||
    -0.0
 | 
						||
    >>> np.PZERO
 | 
						||
    0.0
 | 
						||
 | 
						||
    >>> np.isfinite([np.NZERO])
 | 
						||
    array([ True])
 | 
						||
    >>> np.isnan([np.NZERO])
 | 
						||
    array([False])
 | 
						||
    >>> np.isinf([np.NZERO])
 | 
						||
    array([False])
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'PZERO',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of positive zero.
 | 
						||
 | 
						||
    Returns
 | 
						||
    -------
 | 
						||
    y : float
 | 
						||
        A floating point representation of positive zero.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    NZERO : Defines negative zero.
 | 
						||
 | 
						||
    isinf : Shows which elements are positive or negative infinity.
 | 
						||
 | 
						||
    isposinf : Shows which elements are positive infinity.
 | 
						||
 | 
						||
    isneginf : Shows which elements are negative infinity.
 | 
						||
 | 
						||
    isnan : Shows which elements are Not a Number.
 | 
						||
 | 
						||
    isfinite : Shows which elements are finite - not one of
 | 
						||
               Not a Number, positive infinity and negative infinity.
 | 
						||
 | 
						||
    Notes
 | 
						||
    -----
 | 
						||
    NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
 | 
						||
    (IEEE 754). Positive zero is considered to be a finite number.
 | 
						||
 | 
						||
    Examples
 | 
						||
    --------
 | 
						||
    >>> np.PZERO
 | 
						||
    0.0
 | 
						||
    >>> np.NZERO
 | 
						||
    -0.0
 | 
						||
 | 
						||
    >>> np.isfinite([np.PZERO])
 | 
						||
    array([ True])
 | 
						||
    >>> np.isnan([np.PZERO])
 | 
						||
    array([False])
 | 
						||
    >>> np.isinf([np.PZERO])
 | 
						||
    array([False])
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'NAN',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of Not a Number (NaN).
 | 
						||
 | 
						||
    `NaN` and `NAN` are equivalent definitions of `nan`. Please use
 | 
						||
    `nan` instead of `NAN`.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    nan
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'NaN',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of Not a Number (NaN).
 | 
						||
 | 
						||
    `NaN` and `NAN` are equivalent definitions of `nan`. Please use
 | 
						||
    `nan` instead of `NaN`.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    nan
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'NINF',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of negative infinity.
 | 
						||
 | 
						||
    Returns
 | 
						||
    -------
 | 
						||
    y : float
 | 
						||
        A floating point representation of negative infinity.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    isinf : Shows which elements are positive or negative infinity
 | 
						||
 | 
						||
    isposinf : Shows which elements are positive infinity
 | 
						||
 | 
						||
    isneginf : Shows which elements are negative infinity
 | 
						||
 | 
						||
    isnan : Shows which elements are Not a Number
 | 
						||
 | 
						||
    isfinite : Shows which elements are finite (not one of Not a Number,
 | 
						||
    positive infinity and negative infinity)
 | 
						||
 | 
						||
    Notes
 | 
						||
    -----
 | 
						||
    NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
 | 
						||
    (IEEE 754). This means that Not a Number is not equivalent to infinity.
 | 
						||
    Also that positive infinity is not equivalent to negative infinity. But
 | 
						||
    infinity is equivalent to positive infinity.
 | 
						||
 | 
						||
    Examples
 | 
						||
    --------
 | 
						||
    >>> np.NINF
 | 
						||
    -inf
 | 
						||
    >>> np.log(0)
 | 
						||
    -inf
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'PINF',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of (positive) infinity.
 | 
						||
 | 
						||
    Use `inf` because `Inf`, `Infinity`, `PINF` and `infty` are aliases for
 | 
						||
    `inf`. For more details, see `inf`.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    inf
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'infty',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of (positive) infinity.
 | 
						||
 | 
						||
    Use `inf` because `Inf`, `Infinity`, `PINF` and `infty` are aliases for
 | 
						||
    `inf`. For more details, see `inf`.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    inf
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'Inf',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of (positive) infinity.
 | 
						||
 | 
						||
    Use `inf` because `Inf`, `Infinity`, `PINF` and `infty` are aliases for
 | 
						||
    `inf`. For more details, see `inf`.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    inf
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
add_newdoc('numpy', 'Infinity',
 | 
						||
    """
 | 
						||
    IEEE 754 floating point representation of (positive) infinity.
 | 
						||
 | 
						||
    Use `inf` because `Inf`, `Infinity`, `PINF` and `infty` are aliases for
 | 
						||
    `inf`. For more details, see `inf`.
 | 
						||
 | 
						||
    See Also
 | 
						||
    --------
 | 
						||
    inf
 | 
						||
 | 
						||
    """)
 | 
						||
 | 
						||
 | 
						||
if __doc__:
 | 
						||
    constants_str = []
 | 
						||
    constants.sort()
 | 
						||
    for name, doc in constants:
 | 
						||
        s = textwrap.dedent(doc).replace("\n", "\n    ")
 | 
						||
 | 
						||
        # Replace sections by rubrics
 | 
						||
        lines = s.split("\n")
 | 
						||
        new_lines = []
 | 
						||
        for line in lines:
 | 
						||
            m = re.match(r'^(\s+)[-=]+\s*$', line)
 | 
						||
            if m and new_lines:
 | 
						||
                prev = textwrap.dedent(new_lines.pop())
 | 
						||
                new_lines.append('%s.. rubric:: %s' % (m.group(1), prev))
 | 
						||
                new_lines.append('')
 | 
						||
            else:
 | 
						||
                new_lines.append(line)
 | 
						||
        s = "\n".join(new_lines)
 | 
						||
 | 
						||
        # Done.
 | 
						||
        constants_str.append(""".. data:: %s\n    %s""" % (name, s))
 | 
						||
    constants_str = "\n".join(constants_str)
 | 
						||
 | 
						||
    __doc__ = __doc__ % dict(constant_list=constants_str)
 | 
						||
    del constants_str, name, doc
 | 
						||
    del line, lines, new_lines, m, s, prev
 | 
						||
 | 
						||
del constants, add_newdoc
 |