Current File : //usr/lib64/python2.7/site-packages/numpy/core/machar.pyo
�
E�`Qc@s`dZdgZddlmZddlmZdefd��YZedkr\e�GHndS(sX
Machine arithmetics - determine the parameters of the
floating-point arithmetic system
tMachAri����(tany(tseterrcBs;eZdZeeed�dd�Zd�Zd�ZRS(s�

    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, substracted
        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(Ns%24.16e((tv((s7/usr/lib64/python2.7/site-packages/numpy/core/machar.pyt<lambda>assPython floating point numbercCs>tdd�}z|j|||||�Wdt|�XdS(s)
          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
        tundertignoreN(Rt_do_init(tselft
float_convtint_convtfloat_to_floattfloat_to_strttitletsaverrstate((s7/usr/lib64/python2.7/site-packages/numpy/core/machar.pyt__init___s
c.Cs�d}d}|d�}||}	||}
|}xet|�D]>}||}||}
|
|}t|||
k�r?Pq?q?Wt|||jf��|}xgt|�D]@}||}||}
||
|�}t|dk�r�Pq�q�Wt|||jf��|}||�}d}|}xot|�D]H}|d}||}||}
|
|}t|||
k�r5Pq5q5Wt|||jf��||	}|}xet|�D]>}||}||}
|
|}t|||
k�r�Pq�q�Wt|||jf��||}
d}t|
||
k�rAd}n||}||}
|dkr�t|
||
k�r�d}n|d}||}|}xt|�D]}||}q�W|}x�t|�D]`}||}
t|
||
k�r�Pn||}|d}|dkr�tdt���q�q�Wt|||jf��|}|}|d}|}xet|�D]>}||}
t|
||
k�r�Pn||}|d}qvWt|||jf��|}d}||}
|dkrt|
|||
k�rd}nd}d}|}||} d}!x�t|�D]�}|}"|"|"}||}|| }
t|||
k�s�tt|�|"k�r�Pn|
|}t|||k�r�Pn|d}||}qEWt|||jf��|d	kr|d}#||}$nAd}#|}%x$||%krK|%|}%|#d}#q(W|%|%d}$x�t|�D]�}|"}&|"|}"|"|}|"| }
t|||
k�rtt|"�|&k�r|d}|
|}t|||"k�rt|
|"k�rd}!|"}&PqqgPqgWt|||jf��|}'|$||dkrj|d	krj|$|$}$|#d}#n|$|'}(||!}|dkr�|(d}(n|(|'}|dkr�|r�|(d}(n|d
kr�|(d}(nt||"k�r�|(d}(n||})t|)||)k�r*|||})n|)|&|||})|(|'d}x7t|�D])}*|dkrz|)|)})q[|)|})q[W||_||_||_	||�|_
||�|_||_||�|_
||�|_||_|#|_|'|_||&�|_||&�|_|(|_||)�|_||)�|_||_||_|j
|_|j|_|j|_ddl}+t|+j||j
���|_|	|	|	|	|	},|,|j}-||-�|_ ||-�|_!dS(Ni's'Did not converge after %d tries with %siii����iisAcould not determine machine tolerance for 'negep', locals() -> %si
i("txrangeRtRuntimeErrortdtypetrangetlocalstabstibetatittnegeptepsnegt_str_epsnegtmacheptepst_str_epstngrdtiexptminexptxmint	_str_xmintmaxexptxmaxt	_str_xmaxtirndR
tepsilonttinythugetmathtinttlog10t	precisiont
resolutiont_str_resolution(.RR	R
RRR
t	max_iterNtmsgtonettwotzerotat_ttempttemp1tbtitempRtbetaRtbetahR&ttempaRtbetaintiRRRRtktztttnxrestyRtmxtizR!R R#R$tjR*ttenR.((s7/usr/lib64/python2.7/site-packages/numpy/core/machar.pyRrs\















	

"	







&	



.







.

( 










										"cCsd|jS(Ns�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)
---------------------------------------------------------------------
(t__dict__(R((s7/usr/lib64/python2.7/site-packages/numpy/core/machar.pyt__str__Es
(t__name__t
__module__t__doc__tfloatR+RRRJ(((s7/usr/lib64/python2.7/site-packages/numpy/core/machar.pyRsO	�t__main__N(	RMt__all__tnumpy.core.fromnumericRtnumpy.core.numericRtobjectRRK(((s7/usr/lib64/python2.7/site-packages/numpy/core/machar.pyt<module>s	�D