§
    µ³Ùg,  ã                   óp   — d dl Zd dlmZ d dlmZmZ ddlmZ  ed„ dd„ ¬¦  «        dd
dœd„¦   «         Z	dS )é    N)Ú_get_nan)Úarray_namespaceÚxp_copysigné   )Ú_axis_nan_policy_factoryc                 ó   — | S ©N© ©Úxs    úL/granary/edev/quantum/lib/python3.11/site-packages/scipy/stats/_variation.pyú<lambda>r   
   s   € ˆa€ ó    c                 ó   — | fS r	   r
   r   s    r   r   r   
   s   € ¸¸€ r   )Ú	n_outputsÚresult_to_tupleÚ	propagateF)Úkeepdimsc                óX  — t          | ¦  «        }|                     | ¦  «        } |€|                     | d¦  «        } d}| j        |         }t	          | ¦  «        }| j        dk    s||k    rUt          | j        ¦  «        }|                     |¦  «         |                     ||¬¦  «        }	|	j	        dk    r|	d         n|	S | 
                    | |¬¦  «        }
||k    rn|                     | |d¬¦  «        }|                     |dk    t          |                     |j        ¦  «        |
¦  «        |¦  «        }	|	j	        dk    r|	d         n|	S t          j        dd¬	¦  «        5  |                     | ||¬¦  «        }||
z  }	ddd¦  «         n# 1 swxY w Y   |	j	        dk    r|	d         n|	S )
a�  
    Compute the coefficient of variation.

    The coefficient of variation is the standard deviation divided by the
    mean.  This function is equivalent to::

        np.std(x, axis=axis, ddof=ddof) / np.mean(x)

    The default for ``ddof`` is 0, but many definitions of the coefficient
    of variation use the square root of the unbiased sample variance
    for the sample standard deviation, which corresponds to ``ddof=1``.

    The function does not take the absolute value of the mean of the data,
    so the return value is negative if the mean is negative.

    Parameters
    ----------
    a : array_like
        Input array.
    axis : int or None, optional
        Axis along which to calculate the coefficient of variation.
        Default is 0. If None, compute over the whole array `a`.
    nan_policy : {'propagate', 'raise', 'omit'}, optional
        Defines how to handle when input contains ``nan``.
        The following options are available:

          * 'propagate': return ``nan``
          * 'raise': raise an exception
          * 'omit': perform the calculation with ``nan`` values omitted

        The default is 'propagate'.
    ddof : int, optional
        Gives the "Delta Degrees Of Freedom" used when computing the
        standard deviation.  The divisor used in the calculation of the
        standard deviation is ``N - ddof``, where ``N`` is the number of
        elements.  `ddof` must be less than ``N``; if it isn't, the result
        will be ``nan`` or ``inf``, depending on ``N`` and the values in
        the array.  By default `ddof` is zero for backwards compatibility,
        but it is recommended to use ``ddof=1`` to ensure that the sample
        standard deviation is computed as the square root of the unbiased
        sample variance.

    Returns
    -------
    variation : ndarray
        The calculated variation along the requested axis.

    Notes
    -----
    There are several edge cases that are handled without generating a
    warning:

    * If both the mean and the standard deviation are zero, ``nan``
      is returned.
    * If the mean is zero and the standard deviation is nonzero, ``inf``
      is returned.
    * If the input has length zero (either because the array has zero
      length, or all the input values are ``nan`` and ``nan_policy`` is
      ``'omit'``), ``nan`` is returned.
    * If the input contains ``inf``, ``nan`` is returned.

    References
    ----------
    .. [1] Zwillinger, D. and Kokoska, S. (2000). CRC Standard
       Probability and Statistics Tables and Formulae. Chapman & Hall: New
       York. 2000.

    Examples
    --------
    >>> import numpy as np
    >>> from scipy.stats import variation
    >>> variation([1, 2, 3, 4, 5], ddof=1)
    0.5270462766947299

    Compute the variation along a given dimension of an array that contains
    a few ``nan`` values:

    >>> x = np.array([[  10.0, np.nan, 11.0, 19.0, 23.0, 29.0, 98.0],
    ...               [  29.0,   30.0, 32.0, 33.0, 35.0, 56.0, 57.0],
    ...               [np.nan, np.nan, 12.0, 13.0, 16.0, 16.0, 17.0]])
    >>> variation(x, axis=1, ddof=1, nan_policy='omit')
    array([1.05109361, 0.31428986, 0.146483  ])

    N)éÿÿÿÿr   )Ú
fill_valuer
   )Úaxis)r   Ú
correctionÚignore)ÚdivideÚinvalid)r   ÚasarrayÚreshapeÚshaper   ÚsizeÚlistÚpopÚfullÚndimÚmeanÚstdÚwherer   ÚinfÚnpÚerrstate)Úar   Ú
nan_policyÚddofr   ÚxpÚnÚNaNÚshpÚresultÚmean_aÚstd_as               r   Ú	variationr5   	   sÜ  € õp 
˜Ñ	Ô	€BØ
�
Š
�1‰Œ€Að €|Ø�JŠJ�q˜%Ñ Ô ˆØˆà	Œ�Œ€AÝ
�1‰+Œ+€Cà„v�‚{€{�d˜Q’h�hõ �1”7‰mŒmˆØ�Š�‰ŒˆØ—’˜¨�Ñ-Ô-ˆØ#œ[¨AÒ-Ð-ˆv�bŒzˆz°6Ð9à�WŠW�Q˜TˆWÑ"Ô"€Fàˆq‚y€yà—’�q˜t°�Ñ2Ô2ˆØ—’˜% !š)¥[°·²¸B¼FÑ1CÔ1CÀVÑ%LÔ%LÈcÑRÔRˆØ#œ[¨AÒ-Ð-ˆv�bŒzˆz°6Ð9å	Œ˜H¨hÐ	7Ñ	7Ô	7ð  ð  Ø—’�q˜t°�Ñ5Ô5ˆØ˜‘ˆð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  œ¨Ò)Ð)ˆ6�"Œ:ˆ:¨vÐ5s   Å"FÆFÆF)r   r   r   )
Únumpyr)   Úscipy._lib._utilr   Úscipy._lib._array_apir   r   Ú_axis_nan_policyr   r5   r
   r   r   ú<module>r:      s«   ðØ Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à 6Ð 6Ð 6Ð 6Ð 6Ð 6ð ÐØ€K˜1¨n¨nðñ ô ðt6ÀUð t6ð t6ð t6ð t6ñô ðt6ð t6ð t6r   