Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/numpy/core/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/numpy/core/__pycache__/machar.cpython-35.pyc



(��^%*�@s~dZddlmZmZmZdgZddlmZddlm	Z	Gdd�de
�Zedkrze
e��dS)	z�
Machine arithmetics - determine the parameters of the
floating-point arithmetic system

Author: Pearu Peterson, September 2003

�)�division�absolute_import�print_function�MachAr)�any)�errstatec@sOeZdZdZeeedd�ddd�Zdd�Zd	d
�ZdS)ra�

    Diagnosing machine parameters.

    Attributes
    ----------
    ibeta : int
        Radix in which numbers are represented.
    it : int
        Number of base-`ibeta` digits in the floating point mantissa M.
    machep : int
        Exponent of the smallest (most negative) power of `ibeta` that,
        added to 1.0, gives something different from 1.0
    eps : float
        Floating-point number ``beta**machep`` (floating point precision)
    negep : int
        Exponent of the smallest power of `ibeta` that, subtracted
        from 1.0, gives something different from 1.0.
    epsneg : float
        Floating-point number ``beta**negep``.
    iexp : int
        Number of bits in the exponent (including its sign and bias).
    minexp : int
        Smallest (most negative) power of `ibeta` consistent with there
        being no leading zeros in the mantissa.
    xmin : float
        Floating point number ``beta**minexp`` (the smallest [in
        magnitude] usable floating value).
    maxexp : int
        Smallest (positive) power of `ibeta` that causes overflow.
    xmax : float
        ``(1-epsneg) * beta**maxexp`` (the largest [in magnitude]
        usable floating value).
    irnd : int
        In ``range(6)``, information on what kind of rounding is done
        in addition, and on how underflow is handled.
    ngrd : int
        Number of 'guard digits' used when truncating the product
        of two mantissas to fit the representation.
    epsilon : float
        Same as `eps`.
    tiny : float
        Same as `xmin`.
    huge : float
        Same as `xmax`.
    precision : float
        ``- int(-log10(eps))``
    resolution : float
        ``- 10**(-precision)``

    Parameters
    ----------
    float_conv : function, optional
        Function that converts an integer or integer array to a float
        or float array. Default is `float`.
    int_conv : function, optional
        Function that converts a float or float array to an integer or
        integer array. Default is `int`.
    float_to_float : function, optional
        Function that converts a float array to float. Default is `float`.
        Note that this does not seem to do anything useful in the current
        implementation.
    float_to_str : function, optional
        Function that converts a single float to a string. Default is
        ``lambda v:'%24.16e' %v``.
    title : str, optional
        Title that is printed in the string representation of `MachAr`.

    See Also
    --------
    finfo : Machine limits for floating point types.
    iinfo : Machine limits for integer types.

    References
    ----------
    .. [1] Press, Teukolsky, Vetterling and Flannery,
           "Numerical Recipes in C++," 2nd ed,
           Cambridge University Press, 2002, p. 31.

    cCsd|S)Nz%24.16e�)�vrr�D/opt/alt/python35/lib64/python3.5/site-packages/numpy/core/machar.py�<lambda>dszMachAr.<lambda>zPython floating point numberc
Cs4tdd��|j|||||�WdQRXdS)a!

        float_conv - convert integer to float (array)
        int_conv   - convert float (array) to integer
        float_to_float - convert float array to float
        float_to_str - convert array float to str
        title        - description of used floating point numbers

        Zunder�ignoreN)r�_do_init)�self�
float_conv�int_conv�float_to_float�float_to_str�titlerrr
�__init__bszMachAr.__init__c.Cs�d}d}|d�}||}	||}
|}xbt|�D];}||}||}
|
|}t|||
k�r?Pq?Wt|||jf��|}xdt|�D]=}||}||}
||
|�}t|dk�r�Pq�Wt|||jf��|}||�}d
}|}xlt|�D]E}|d}||}||}
|
|}t|||
k�r/Pq/Wt|||jf��||	}|}xbt|�D];}||}||}
|
|}t|||
k�r�Pq�Wt|||jf��||}
d}t|
||
k�r2d}||}||}
|dkrnt|
||
k�rnd}|d}||}|}xt|�D]}||}q�W|}x�t|�D]Z}||}
t|
||
k�r�P||}|d}|dkr�tdt���q�Wt|||jf��|}|}|d}|}xbt|�D];}||}
t|
||
k�r�P||}|d}q^Wt|||jf��|}d}||}
|dkr�t|
|||
k�r�d}d}d}|}||} d}!x�t|�D]�}|}"|"|"}||}|| }
t|||
k�stt|�|"k�r�P|
|}t|||k�r�P|d}||}q'Wt|||jf��|dkr�|d}#||}$nAd}#|}%x$||%kr'|%|}%|#d}#qW|%|%d}$x�t|�D]�}|"}&|"|}"|"|}|"| }
t|||
k�r�tt|"�|&k�r�|d}|
|}t|||"k�r�t|
|"k�r�d}!|"}&PqCPqCWt|||jf��|}'|$||dkr@|dkr@|$|$}$|#d}#|$|'}(||!}|dkrj|(d}(|(|'}|dkr�|r�|(d}(|d	kr�|(d}(t||"k�r�|(d}(||})t|)||)k�r�|||})|)|&|||})|(|'d}x7t|�D])}*|dkrA|)|)})q"|)|})q"W||_||_||_||�|_	||�|_
||_||�|_||�|_
||_|#|_|'|_||&�|_||&�|_|(|_||)�|_||)�|_||_||_|j|_|j|_|j|_ddl}+t|+j||j���|_|	|	|	|	|	},|,|j}-||-�|_||-�|_ dS)Ni'z'Did not converge after %d tries with %s�r��zAcould not determine machine tolerance for 'negep', locals() -> %s�
����)!�ranger�RuntimeErrorZdtype�locals�abs�ibeta�it�negep�epsnegZ_str_epsneg�machep�epsZ_str_eps�ngrd�iexp�minexp�xminZ	_str_xmin�maxexp�xmaxZ	_str_xmax�irndr�epsilonZtinyZhuge�math�int�log10Z	precision�
resolutionZ_str_resolution).rrrrrrZ	max_iterN�msgZoneZtwoZzero�a�_�tempZtemp1�bZitempr�betar Zbetahr+Ztempar!Zbetain�ir"r#r$r%�k�z�tZnxres�yr&�mxZizr(r'r)r*�jr-Ztenr0rrr
r
ts\

















"







&



.







.

( 










										"zMachAr._do_initcCsd}||jS)Na�Machine parameters for %(title)s
---------------------------------------------------------------------
ibeta=%(ibeta)s it=%(it)s iexp=%(iexp)s ngrd=%(ngrd)s irnd=%(irnd)s
machep=%(machep)s     eps=%(_str_eps)s (beta**machep == epsilon)
negep =%(negep)s  epsneg=%(_str_epsneg)s (beta**epsneg)
minexp=%(minexp)s   xmin=%(_str_xmin)s (beta**minexp == tiny)
maxexp=%(maxexp)s    xmax=%(_str_xmax)s ((1-epsneg)*beta**maxexp == huge)
---------------------------------------------------------------------
)�__dict__)r�fmtrrr
�__str__Gs	zMachAr.__str__N)	�__name__�
__module__�__qualname__�__doc__�floatr.rr
r@rrrr
rsO	��__main__N)rD�
__future__rrr�__all__Znumpy.core.fromnumericrZnumpy.core.numericr�objectrrA�printrrrr
�<module>s	�E