§
    µ³Ùg�6  ã                   óþ   — d dl Z d dlZd dlmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZmZ  G d„ d	¦  «        Zeej                             d
¦  «         G d„ d¦  «        ¦   «         ¦   «         ZdS )é    N)Úraises)Ústats)ÚnormÚexpon)Úarray_api_compatible)Úarray_namespaceÚis_array_api_strictÚis_jax)Úxp_assert_closeÚxp_assert_equalÚxp_assert_lessc                   óX  — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestEntropyc                 óD  — |                      g d¢¦  «        }|                      g d¢¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }t          ||                      d¦  «        ¦  «         t	          | |                      d¦  «        ¦  «         d S )N)ç      à?çš™™™™™É?ç333333Ó?)çš™™™™™¹?g      Ð?gÍÌÌÌÌÌä?ç        )Úasarrayr   Úentropyr   r   )ÚselfÚxpÚpkÚqkÚeselfÚedoubles         úT/granary/edev/quantum/lib/python3.11/site-packages/scipy/stats/tests/test_entropy.pyÚtest_entropy_positivez!TestEntropy.test_entropy_positive   s�   € ð �ZŠZ˜˜˜Ñ(Ô(ˆØ�ZŠZÐ)Ð)Ð)Ñ*Ô*ˆÝ”˜b "Ñ%Ô%ˆÝ”-  BÑ'Ô'ˆÝ˜˜rŸzšz¨"™~œ~Ñ.Ô.Ð.Ý˜�x §¢¨B¡¤Ñ0Ô0Ð0Ð0Ð0ó    c                 ón  — |                      d¦  «        }t          j        |d¬¦  «        }t          |                     |dz
  ¦  «        |                     d¦  «        ¦  «         |                      d¦  «        }|                     |                     d¦  «        dk     |                     d¦  «        |¦  «        }t          j        ||¦  «        }t          j        ||d¬¦  «        }t          |                     ||z  t          j	        d¦  «        z
  ¦  «        |                     d¦  «        ¦  «         d S )Né   ç       @©Úbaseg      @gñhãˆµøä>é   )
Úonesr   r   r   Úabsr   ÚwhereÚarangeÚmathÚlog)r   r   r   ÚSr   ÚS2s         r   Útest_entropy_basezTestEntropy.test_entropy_base   sò   € à�WŠW�R‰[Œ[ˆÝŒM˜" 2Ð&Ñ&Ô&ˆÝ�r—v’v˜a "™f‘~”~ r§z¢z°%Ñ'8Ô'8Ñ9Ô9Ð9à�WŠW�R‰[Œ[ˆØ�XŠX�b—i’i ‘m”m aÒ'¨¯ª°B©¬¸Ñ<Ô<ˆÝŒM˜"˜bÑ!Ô!ˆÝŒ]˜2˜r¨Ð+Ñ+Ô+ˆÝ�r—v’v˜a ™d¥T¤X¨b¡\¤\Ñ1Ñ2Ô2°B·J²J¸uÑ4EÔ4EÑFÔFÐFÐFÐFr    c                 óž   — |                      g d¢¦  «        }t          t          j        |¦  «        |                      d¦  «        ¦  «         d S )N)r   ç      ð?r#   g ŠöR^ä?©r   r   r   r   )r   r   Úxs      r   Útest_entropy_zerozTestEntropy.test_entropy_zero%   sQ   € ð �JŠJ�|�|�|Ñ$Ô$ˆÝ�œ aÑ(Ô(ØŸ
š
Ð#6Ñ7Ô7ñ	9ô 	9ð 	9ð 	9ð 	9r    c                 óî   — |                      ddgddgddgg¦  «        }|                      ddgddgddgg¦  «        }t          t          j        ||¦  «        |                      ddg¦  «        ¦  «         d S )Nr   r   ç333333ã?r   r   gN!ü0ç¾È?çÈó2íÒÇ?r2   ©r   r   r   r   s       r   Útest_entropy_2dzTestEntropy.test_entropy_2d,   sˆ   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆØ�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¨"Ñ-Ô-ØŸ
š
 I¨zÐ#:Ñ;Ô;ñ	=ô 	=ð 	=ð 	=ð 	=r    c                 ó¤  — |                      ddgddgddgg¦  «        }|                      ddgddgddgg¦  «        }t          t          j        ||¦  «        |                      |j        dg¦  «        ¦  «         |                      ddgddgddgg¦  «        }t          t          j        ||¦  «        |                      ddg¦  «        ¦  «         d S )	Nr   r   r6   r   r   r   r7   g¯^fTðFÆ?)r   r   r   r   Úinfr8   s       r   Útest_entropy_2d_zeroz TestEntropy.test_entropy_2d_zero3   sä   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆØ�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¨"Ñ-Ô-ØŸ
š
 B¤F¨JÐ#7Ñ8Ô8ñ	:ô 	:ð 	:ð �ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¨"Ñ-Ô-ØŸ
š
 J°
Ð#;Ñ<Ô<ñ	>ô 	>ð 	>ð 	>ð 	>r    c                 ó´   — |                      ddgddgddgg¦  «        }t          t          j        |d¬¦  «        |                      g d¢¦  «        ¦  «         d S )	Nr   r   r6   r   r   é   ©Úaxis)çæòöR^ä?rA   gD%¬†+å?r2   ©r   r   r   s      r   Ú$test_entropy_base_2d_nondefault_axisz0TestEntropy.test_entropy_base_2d_nondefault_axis>   sn   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¨qÐ1Ñ1Ô1ØŸ
š
Ð#GÐ#GÐ#GÑHÔHñ	Jô 	Jð 	Jð 	Jð 	Jr    c                 óò   — |                      ddgddgddgg¦  «        }|                      ddgddgddgg¦  «        }t          t          j        ||d¬¦  «        |                      g d¢¦  «        ¦  «         d S )	Nr   r   r6   r   r   r>   r?   )ç{[<þ“Í?rE   g¾C8¯XÀ?r2   r8   s       r   Útest_entropy_2d_nondefault_axisz+TestEntropy.test_entropy_2d_nondefault_axisD   s”   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆØ�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¨"°1Ð5Ñ5Ô5ØŸ
š
Ð#GÐ#GÐ#GÑHÔHñ	Jô 	Jð 	Jð 	Jð 	Jr    c                 ó  — |                      ddgddgddgg¦  «        }|                      ddgddgg¦  «        }d}t          j        t          |¬¦  «        5  t	          j        ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   r6   r   r   ú/Array shapes are incompatible for broadcasting.©Úmatch)r   Úpytestr   Ú
ValueErrorr   r   )r   r   r   r   Úmessages        r   Útest_entropy_raises_value_errorz+TestEntropy.test_entropy_raises_value_errorK   sÔ   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆØ�ZŠZ˜#˜s˜ c¨3 ZÐ0Ñ1Ô1ˆØCˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	"ð 	"ÝŒM˜"˜bÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s   ÁA:Á:A>ÂA>c                 ó®   — |                      ddgddgddgg¦  «        }t          t          j        |d¬¦  «        t          j        |¦  «        ¦  «         d S ©Nr   r   r6   r   r   r   r?   r2   rB   s      r   Ú1test_base_entropy_with_axis_0_is_equal_to_defaultz=TestEntropy.test_base_entropy_with_axis_0_is_equal_to_defaultS   s`   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¨qÐ1Ñ1Ô1Ýœ bÑ)Ô)ñ	+ô 	+ð 	+ð 	+ð 	+r    c                 óî   — |                      ddgddgddgg¦  «        }|                      ddgddgddgg¦  «        }t          t          j        ||d¬¦  «        t          j        ||¦  «        ¦  «         d S rP   r2   r8   s       r   Ú,test_entropy_with_axis_0_is_equal_to_defaultz8TestEntropy.test_entropy_with_axis_0_is_equal_to_defaultY   sˆ   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆØ�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¨"°1Ð5Ñ5Ô5Ýœ b¨"Ñ-Ô-ñ	/ô 	/ð 	/ð 	/ð 	/r    c                 ó¸   — |                      ddgddgddgg¦  «        }t          t          j        |j        ¦  «        t          j        |d¬¦  «        ¦  «         d S ©Nr   r   r6   r   r   r>   r?   ©r   r   r   r   ÚTrB   s      r   Útest_base_entropy_transposedz(TestEntropy.test_base_entropy_transposed`   sb   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¤dÑ+Ô+Ýœ b¨qÐ1Ñ1Ô1ñ	3ô 	3ð 	3ð 	3ð 	3r    c                 ó  — |                      ddgddgddgg¦  «        }|                      ddgddgddgg¦  «        }t          t          j        |j        |j        ¦  «        t          j        ||d¬¦  «        ¦  «         d S rU   rV   r8   s       r   Útest_entropy_transposedz#TestEntropy.test_entropy_transposedf   sŒ   € à�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆØ�ZŠZ˜#˜s˜ c¨3 Z°#°s°Ð<Ñ=Ô=ˆÝ�œ b¤d¨B¬DÑ1Ô1Ýœ b¨"°1Ð5Ñ5Ô5ñ	7ô 	7ð 	7ð 	7ð 	7r    c                 óÎ  — t           j                             d¦  «        }|                     |                     d¦  «        ¦  «        }|                     |                     d¦  «        ¦  «        }t	          j        ||d¬¦  «        }t          |d         t	          j        ||d         ¦  «        ¦  «         t          |d         t	          j        ||d	         ¦  «        ¦  «         d S )
Nl   Ü@”UáC<é   )é   r>   éÿÿÿÿr?   r   )r   .r>   )r>   .)ÚnpÚrandomÚdefault_rngr   r   r   r   )r   r   Úrngr3   ÚyÚress         r   Útest_entropy_broadcastingz%TestEntropy.test_entropy_broadcastingm   s´   € åŒi×#Ò#Ð$5Ñ6Ô6ˆØ�JŠJ�s—z’z !‘}”}Ñ%Ô%ˆØ�JŠJ�s—z’z &Ñ)Ô)Ñ*Ô*ˆÝŒm˜A˜q rÐ*Ñ*Ô*ˆÝ˜˜Aœ¥¤¨a°°6´Ñ ;Ô ;Ñ<Ô<Ð<Ý˜˜Aœ¥¤¨a°°6´Ñ ;Ô ;Ñ<Ô<Ð<Ð<Ð<r    c                 óð   — |                      d¦  «        }|                      d¦  «        }d}t          j        t          |¬¦  «        5  t	          j        ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)é
   r>   é   )é   r]   rH   rI   ©r'   rK   r   rL   r   r   )r   r   r3   rc   rM   s        r   Útest_entropy_shape_mismatchz'TestEntropy.test_entropy_shape_mismatchv   s´   € à�GŠG�KÑ Ô ˆØ�GŠG�GÑÔˆØCˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	 ð 	 ÝŒM˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ÁA+Á+A/Á2A/c                 óÈ   — |                      d¦  «        }d}t          j        t          |¬¦  «        5  t	          j        |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrg   z!`base` must be a positive number.rI   éþÿÿÿr$   rj   ©r   r   r3   rM   s       r   Útest_input_validationz!TestEntropy.test_input_validation~   s¤   € à�GŠG�B‰KŒKˆØ5ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	&ð 	&ÝŒM˜! "Ð%Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ³AÁAÁAN)Ú__name__Ú
__module__Ú__qualname__r   r   r/   r4   r9   r<   rC   rF   rN   rQ   rS   rX   rZ   re   rk   ro   © r    r   r   r      s¿  € € € € € Øð1ð 1ñ Ôð1ð ð	Gð 	Gñ Ôð	Gð ð9ð 9ñ Ôð9ð ð=ð =ñ Ôð=ð ð>ð >ñ Ôð>ð ðJð Jñ ÔðJð
 ðJð Jñ ÔðJð ð"ð "ñ Ôð"ð ð+ð +ñ Ôð+ð
 ð/ð /ñ Ôð/ð ð3ð 3ñ Ôð3ð
 ð7ð 7ñ Ôð7ð ð=ð =ñ Ôð=ð ð ð  ñ Ôð ð ð&ð &ñ Ôð&ð &ð &r    r   Úskip_xp_backendsc                   óæ  — e Zd ZdZd„ Zd„ Zd„ Zej         	                    dd¬¦  «        d„ ¦   «         Z
ej         	                    dd¬¦  «        d	„ ¦   «         Zd
„ Zej                             dg d¢¦  «        d„ ¦   «         ZdddddœZdddddœZeeeeiZej                             dg d¢¦  «        ej                             deeg¦  «        d„ ¦   «         ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zej         	                    dd¬¦  «        ej                             dg d¢¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         ¦   «         ZdS ) ÚTestDifferentialEntropyzº
    Vasicek results are compared with the R package vsgoftest.

    # library(vsgoftest)
    #
    # samp <- c(<values>)
    # entropy.estimate(x = samp, window = <window_length>)

    c                 ó  — t           j                             d¦  «        }|                     d¦  «        }|                     |                     ¦   «         ¦  «        }t          j        |d¬¦  «        }t          ||                     d¦  «        ¦  «         t          j        |dd¬¦  «        }t          ||                     d¦  «        ¦  «         t          j        |d	d¬¦  «        }t          ||                     d
¦  «        ¦  «         d S )Nr   éd   Úvasicek©Úmethodç- ô{õ?r>   )Úwindow_lengthr{   ç¡ €˜äóñ?r&   ç=£&—õ?©	r_   r`   ÚRandomStateÚstandard_normalr   Útolistr   Údifferential_entropyr   )r   r   Úrandom_stateÚvaluesr   s        r   Ú!test_differential_entropy_vasicekz9TestDifferentialEntropy.test_differential_entropy_vasicek“   sñ   € å”y×,Ò,¨QÑ/Ô/ˆØ×-Ò-¨cÑ2Ô2ˆØ—’˜FŸMšM™OœOÑ,Ô,ˆåÔ,¨V¸IÐFÑFÔFˆÝ˜ §¢Ð,=Ñ!>Ô!>Ñ?Ô?Ð?åÔ,¨VÀ1Ø4=ð?ñ ?ô ?ˆå˜ §¢Ð,=Ñ!>Ô!>Ñ?Ô?Ð?åÔ,¨VÀ1Ø4=ð?ñ ?ô ?ˆå˜ §¢Ð,=Ñ!>Ô!>Ñ?Ô?Ð?Ð?Ð?r    c                 ó4  — t           j                             d¦  «        }|                     d¦  «        }|                     |                     ¦   «         ¦  «        }t          j        |dd¬¦  «        }|                     g d¢¦  «        }t          ||¦  «         t          j        |ddd¬¦  «        }|                     g d¢¦  «        }t          ||¦  «         t          j        |dd	d¬¦  «        }|                     g d
¢¦  «        }t          ||¦  «         d S )Nr   ©r\   rx   r>   ry   )r@   r{   )r|   gUZdpxõ?gEÄ7ÿL³ô?)r@   r}   r{   )r~   gzGÃÀ¨¥ñ?gt¤Åèò?r&   )r   gl+ÛÉ�jõ?g×o4d­ô?r€   )r   r   r…   r†   r   Úrefs         r   Ú4test_differential_entropy_vasicek_2d_nondefault_axiszLTestDifferentialEntropy.test_differential_entropy_vasicek_2d_nondefault_axis¤   s  € Ý”y×,Ò,¨QÑ/Ô/ˆØ×-Ò-¨hÑ7Ô7ˆØ—’˜FŸMšM™OœOÑ,Ô,ˆåÔ,¨V¸!ÀIÐNÑNÔNˆØ�jŠjÐRÐRÐRÑSÔSˆÝ˜ Ñ%Ô%Ð%åÔ,¨V¸!È1Ø4=ð?ñ ?ô ?ˆà�jŠjÐQÐQÐQÑRÔRˆÝ˜ Ñ%Ô%Ð%åÔ,¨V¸!È1Ø4=ð?ñ ?ô ?ˆà�jŠjÐRÐRÐRÑSÔSˆÝ˜ Ñ%Ô%Ð%Ð%Ð%r    c                 óª  — t           j                             d¦  «        }|                     d¦  «        }|                     |                     ¦   «         ¦  «        }d}|j        d         }dd|dz  |hD ]^}|                     ||¬¦  «        }t          t          |¬¦  «        5  t          j        ||d¬	¦  «         d d d ¦  «         n# 1 swxY w Y   Œ_d S )
Nr   r‰   zhWindow length \({window_length}\) must be positive and less than half the sample size \({sample_size}\).r>   r^   r]   )r}   Úsample_sizerI   )r}   r@   )r_   r`   r�   r‚   r   rƒ   ÚshapeÚformatÚassert_raisesrL   r   r„   )r   r   r…   r†   Ú	error_strr�   r}   Úformatted_error_strs           r   Ú,test_differential_entropy_raises_value_errorzDTestDifferentialEntropy.test_differential_entropy_raises_value_error¸   s0  € Ý”y×,Ò,¨QÑ/Ô/ˆØ×-Ò-¨hÑ7Ô7ˆØ—’˜FŸMšM™OœOÑ,Ô,ˆð<ð 	ð
 ”l 1”oˆà  ! [°!¡^°[ÐAð 	ð 	ˆMà"+×"2Ò"2Ø+Ø'ð #3ñ #ô #Ðõ
 �zÐ1DÐEÑEÔEð ð ÝÔ*ØØ"/Øðñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	ð 	s   Â#CÃC	ÃC	z	jax.numpyz#JAX doesn't support item assignment)Úreasonc                 ó0  — t           j                             d¦  «        }|                     d¦  «        }|                     |                     ¦   «         ¦  «        }t          j        |d¬¦  «        }t          j        |¦  «        }t          ||¦  «         d S )Nr   )rx   r\   r?   r€   )r   r   r…   r†   r   Údefault_entropys         r   Ú>test_base_differential_entropy_with_axis_0_is_equal_to_defaultzVTestDifferentialEntropy.test_base_differential_entropy_with_axis_0_is_equal_to_defaultÒ   s€   € õ ”y×,Ò,¨QÑ/Ô/ˆØ×-Ò-¨hÑ7Ô7ˆØ—’˜FŸMšM™OœOÑ,Ô,ˆåÔ,¨V¸!Ð<Ñ<Ô<ˆÝÔ4°VÑ<Ô<ˆÝ˜ Ñ1Ô1Ð1Ð1Ð1r    c                 ó2  — t           j                             d¦  «        }|                     d¦  «        }|                     |                     ¦   «         ¦  «        }t          t          j        |j	        ¦  «        t          j        |d¬¦  «        ¦  «         d S )Nr   r‰   r>   r?   )
r_   r`   r�   r‚   r   rƒ   r   r   r„   rW   )r   r   r…   r†   s       r   Ú)test_base_differential_entropy_transposedzATestDifferentialEntropy.test_base_differential_entropy_transposedÝ   s„   € õ ”y×,Ò,¨QÑ/Ô/ˆØ×-Ò-¨hÑ7Ô7ˆØ—’˜FŸMšM™OœOÑ,Ô,ˆåÝÔ& v¤xÑ0Ô0ÝÔ& v°AÐ6Ñ6Ô6ñ	
ô 	
ð 	
ð 	
ð 	
r    c                 óÀ  — t           j                             d¦  «        }|                     |                     ¦   «         ¦  «        }d}t          j        t          |¬¦  «        5  t          j	        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j	        |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nrg   z+`base` must be a positive number or `None`.rI   rm   r$   z`method` must be one of...z	ekki-ekkirz   )
r_   r`   Úrandr   rƒ   rK   r   rL   r   r„   rn   s       r   ro   z-TestDifferentialEntropy.test_input_validationé   sI  € ÝŒI�NŠN˜2ÑÔˆØ�JŠJ�q—x’x‘z”zÑ"Ô"ˆà?ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	3ð 	3ÝÔ& q¨rÐ2Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð /ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	>ð 	>ÝÔ& q°Ð=Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s$   Á$BÂBÂBÂ/CÃCÃCr{   )ry   úvan esÚebrahimiÚcorreac                 ó  — t          |¦  «        r|dk    rt          j        d¦  «         n)t          |¦  «        r|dk    rt          j        d¦  «         |dk    rdnd}t          j                             |d¬¦  «        }|                     |                     ¦   «         ¦  «        }|                     t          t          j         
                    ¦   «         ¦  «        ¦  «        }t	          j        ||¬	¦  «        }t          ||d
¬¦  «         d S )Nr�   úNeeds array assignment.rž   úNeeds fancy indexing.é'  i@B r   ©Úsizer…   rz   ç{®Gázt?)Úrtol)r
   rK   Úxfailr	   r   r   Úrvsr   rƒ   Úfloatr   r„   r   )r   r{   r   Únr¨   Úexpectedrd   s          r   Útest_consistencyz(TestDifferentialEntropy.test_consistencyõ   sõ   € õ �"‰:Œ:ð 	2˜& JÒ.Ð.ÝŒLÐ2Ñ3Ô3Ð3Ð3Ý  Ñ$Ô$ð 	2¨°8Ò);Ð);ÝŒLÐ0Ñ1Ô1Ð1à˜xÒ'Ð'ˆEˆE¨WˆÝŒj�nŠn !°!ˆnÑ4Ô4ˆØ�jŠj˜Ÿš™œÑ&Ô&ˆØ—:’:�e¥E¤J×$6Ò$6Ñ$8Ô$8Ñ9Ô9Ñ:Ô:ˆÝÔ(¨°VÐ<Ñ<Ô<ˆÝ˜˜X¨EÐ2Ñ2Ô2Ð2Ð2Ð2r    )gòÒMbXÉ?ç�•C‹lç»?)g‰A`åÐ"Ë?g)\�Âõ(¼?)gHáz®GÁ?gyé&1¬¼?)gü©ñÒMbÀ?r­   )ry   rœ   rž   r�   )g¢E¶óýÔÈ?ç‹lçû©ñÂ?)g¶óýÔxéÆ?gßO�—nÃ?)g×£p=
×Ã?gÛù~j¼tÃ?)g‡ÙÎ÷SÃ?r®   Údistc                 óJ  — t          |¦  «        r|dk    rt          j        d¦  «         n)t          |¦  «        r|dk    rt          j        d¦  «         d\  }}}| j        |         |         }|                     |d         ¦  «        |                     |d         ¦  «        }	}|                     ||fd¬¦  «        }
|                     |
                     ¦   «         ¦  «        }
|                     t          | 	                    ¦   «         ¦  «        ¦  «        }t          j        |
||d	¬
¦  «        }t          |                     |                     ||z
  dz  ¦  «        ¦  «        |d¬¦  «         t          |¦  «        }t          |                     |d¬¦  «        |	d¬¦  «         d S )Nr�   r    rž   r¡   )r¢   é2   é   r   r>   r£   r^   )r}   r{   r@   r]   r¥   )Úatol)Ú
correctiongü©ñÒMb`?)r
   rK   r§   r	   Úrmse_std_casesr   r¨   rƒ   r©   r   r   r„   r   ÚsqrtÚmeanr   Ústd)r   r{   r¯   r   Úrepsrª   Úmr«   Úrmse_expectedÚstd_expectedr¨   Útrue_entropyrd   Úxp_tests                 r   Útest_rmse_stdz%TestDifferentialEntropy.test_rmse_std  s�  € õ �"‰:Œ:ð 	2˜& JÒ.Ð.ÝŒLÐ2Ñ3Ô3Ð3Ð3Ý  Ñ$Ô$ð 	2¨°8Ò);Ð);ÝŒLÐ0Ñ1Ô1Ð1à!‰
ˆˆa�ØÔ& tÔ,¨VÔ4ˆØ&(§j¢j°¸!´Ñ&=Ô&=¸r¿zºzÈ(ÐSTÌ+Ñ?VÔ?V�|ˆØ�hŠh˜T 1˜I°AˆhÑ6Ô6ˆØ�jŠj˜Ÿš™œÑ&Ô&ˆØ—z’z¥%¨¯ª©¬Ñ"7Ô"7Ñ8Ô8ˆÝÔ(¨¸AØ06¸RðAñ Aô Aˆå˜Ÿš §¢¨¨|Ñ);¸aÑ(?Ñ @Ô @ÑAÔAØ%¨Eð	3ñ 	3ô 	3ð 	3å! #Ñ&Ô&ˆÝ˜Ÿš C°A˜Ñ6Ô6¸È5ÐQÑQÔQÐQÐQÐQr    z	n, method))r&   rœ   )rh   r�   )ié  ry   c                 ó^  — t          |¦  «        r|dk    rt          j        d¦  «         t          j                             |fd¬¦  «        }|                     |                     ¦   «         ¦  «        }t          j        |¦  «        }t          j        ||¬¦  «        }t          ||¦  «         d S )Nr�   r    r   r£   rz   )
r
   rK   r§   r   r   r¨   r   rƒ   r„   r   )r   rª   r{   r   r¨   Úres1Úres2s          r   Útest_method_autoz(TestDifferentialEntropy.test_method_auto/  sš   € õ �"‰:Œ:ð 	4˜& JÒ.Ð.ÝŒLÐ2Ñ3Ô3Ð3ÝŒj�nŠn 1 $°QˆnÑ7Ô7ˆØ�jŠj˜Ÿš™œÑ&Ô&ˆÝÔ)¨#Ñ.Ô.ˆÝÔ)¨#°fÐ=Ñ=Ô=ˆÝ˜˜dÑ#Ô#Ð#Ð#Ð#r    Údtype)NÚfloat32Úfloat64c                 ó  — t          |¦  «        r|dk    rt          j        d¦  «         g d¢}t          |t	          |¦  «        d ¦  «        }t          |t	          |¦  «        |                     d¦  «        j        ¦  «        }t          j        |                     ||¬¦  «        |¬¦  «        }t          j        |                     ||j	        ¬¦  «        |¬¦  «        }t          ||                     ||¬¦  «        d         ¦  «         d S )Nrž   r¡   )r>   r>   r]   r\   r\   é   é   rÉ   é   r²   r&   é	   rg   ri   r1   )rÄ   rz   rs   )r	   rK   r§   ÚgetattrÚstrr   rÄ   r   r„   rÆ   r   )	r   r   r{   rÄ   r3   Údtype_inÚ	dtype_outrd   rŠ   s	            r   Útest_dtypes_gh21192z+TestDifferentialEntropy.test_dtypes_gh21192;  sí   € õ ˜rÑ"Ô"ð 	2 v°Ò'9Ð'9ÝŒLÐ0Ñ1Ô1Ð1Ø8Ð8Ð8ˆÝ˜2�s 5™zœz¨4Ñ0Ô0ˆÝ˜B¥ E¡
¤
¨B¯JªJ°r©N¬NÔ,@ÑAÔAˆ	ÝÔ(¨¯ª°A¸X¨Ñ)FÔ)FÈvÐVÑVÔVˆÝÔ(¨¯ª°A¸R¼Z¨Ñ)HÔ)HÐQWÐXÑXÔXˆÝ˜˜RŸZšZ¨°9˜ZÑ=Ô=¸bÔAÑBÔBÐBÐBÐBr    N)rp   rq   rr   Ú__doc__r‡   r‹   r“   rK   Úmarkrt   r—   r™   ro   Úparametrizer¬   Únorm_rmse_std_casesÚexpon_rmse_std_casesr   r   rµ   r¿   rÃ   rÐ   rs   r    r   rv   rv   †   s�  € € € € € ðð ð@ð @ð @ð"&ð &ð &ð(ð ð ð4 „[×!Ò! +Ø)Nð "ñ Pô Pð2ð 2ñPô Pð2ð „[×!Ò! +Ø)Nð "ñ Pô Pð
ð 
ñPô Pð
ð
>ð 
>ð 
>ð „[×Ò˜Xð (>ð (>ð (>ñ ?ô ?ð3ð 3ñ?ô ?ð3ð '5Ø%3Ø%3Ø'5ð	ð Ðð (6Ø&4Ø&4Ø(6ð	ð Ðð Ð/ØÐ1ð3€Nð „[×Ò˜XÐ'RÐ'RÐ'RÑSÔSØ„[×Ò˜V d¨E ]Ñ3Ô3ðRð Rñ 4Ô3ñ TÔSðRð, „[×Ò˜[ð +>ð +>ð +>ñ ?ô ?ð$ð $ñ?ô ?ð$ð „[×!Ò! +Ø)Nð "ñ Pô Pà„[×Ò˜XÐ'RÐ'RÐ'RÑSÔSØ„[×Ò˜WÐ&BÐ&BÐ&BÑCÔCðCð Cñ DÔCñ TÔSñPô PðCð Cð Cr    rv   )r+   rK   r   r�   Únumpyr_   Úscipyr   Úscipy.statsr   r   Úscipy.conftestr   Úscipy._lib._array_apir   r	   r
   Úscipy._lib._array_api_no_0dr   r   r   r   rÒ   Úusefixturesrv   rs   r    r   ú<module>rÝ      sa  ðØ €€€Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð à Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø /Ð /Ð /Ð /Ð /Ð /Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ðu&ð u&ð u&ð u&ð u&ñ u&ô u&ð u&ðp Ø„×ÒÐ+Ñ,Ô,ðBCð BCð BCð BCð BCñ BCô BCñ -Ô,ñ ÔðBCð BCð BCr    