
    (ph/                         S SK rS SKJrJrJr  S SKJrJrJ	r	J
r
JrJrJrJrJrJr  S SKJr  S SKr " S S5      r " S S5      r " S	 S
5      rg)    N)	histogramhistogramddhistogram_bin_edges)
assert_assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_raisesassert_allcloseassert_array_max_ulpassert_raises_regexsuppress_warnings)requires_memoryc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"\#RH                  RK                  S!S"9S# 5       r&S$ r'S%r(g&)'TestHistogram   c                     g N selfs    R/var/www/html/venv/lib/python3.13/site-packages/numpy/lib/tests/test_histograms.pysetup_methodTestHistogram.setup_method           c                     g r   r   r   s    r   teardown_methodTestHistogram.teardown_method   r   r   c                     Sn[         R                  R                  U5      n[        U5      u  p4[	        [         R
                  " USS9U5        [        [         R                  " SSS5      5      u  p4[        US5        g )Nd   r   axis
   )nprandomrandr   r   sumlinspacer   )r   nvabs        r   test_simpleTestHistogram.test_simple   s^    IINN11RVVAA&* 2;;q"c231b!r   c                 ,   [        / SQSS/5      u  p[        US/5        [        USS/5        [        [        [         SS/SS9  [        SS/SS9u  p4[	        U[
        R                  " S/5      5        [        U[
        R                  " SS/5      5        g )N            r3   r4   r   bins      ?       @)r   r   r   
ValueErrorr   r&   arrayr   )r   histedgeshes        r   test_one_binTestHistogram.test_one_bin    s}    q!f54!'51a&)j)aV!<!Qa(Q!&288RH-.r   c                    Sn[         R                  R                  U5      n[        USS9u  p4[         R                  " U[         R
                  " U5      -  5      n[        US5        [         R                  " S5      n/ SQn[        X&SS9u  p4[        US5        [        [         R                  " U[         R
                  " U5      -  5      S5        [        X&SS9u  p4[        U/ S	Q5        [         R                  " S5      nS
SSS[         R                  /n[        X&SS9u  p4[        U/ SQ5        [         R                  " / S	QSS[         R                  /SS9u  px[        USS
/5        g )Nr"   Tdensityr3   r%   r   r3   r5      r%   皙?Fr2   r   r5   rG   )rH   rH   rH                 ?      ?      ?)r&   r'   r(   r   r)   diffr	   aranger   r   inf)	r   r+   r,   r-   r.   arear8   countsdmys	            r   test_densityTestHistogram.test_density*   s   IINN1D)vva"''!*n%D!$ IIbM$/1b!RVVA
N+Q/ %01l+ IIbM1aBFF#$/1./ ll3RVV,d<Vc1X&r   c                 D   [         R                  " S5      S-   n[        USS/S9u  p#[        UR	                  5       S5        [        USS/S9u  p#[        UR	                  5       S5        [        USS/SS9u  p#[        U[         R                  " U5      -  R	                  5       SS	S
9  [         R                  " S5      S-   n[        USS/USS9u  p#[        U[         R                  " U5      -  R	                  5       S5        [        USSS/US9u  p#[        X$SS 5        g )Nr%   rJ   r   	   ranger3   TrX   rE      decimalrX   weightsrE      r8   rX   r^   )r&   rN   r   r   r)   r	   rM   )r   r-   r?   r.   ws        r   test_outliersTestHistogram.test_outliersJ   s    IIbMB 1a&)QUUWa  1b'*QUUWa  1a&$7Q^002ArB IIbMB1a&!TBa"''!*n))+Q/1a&!<Q!B r   c                     [         R                  " S5      S-   n[         R                  " S5      S-   n[        [        S5         [	        USS/USS9u  p4S S S 5        g ! , (       d  f       g = f)	Nr%   rJ      zsame shape asr3   rV   Tr]   )r&   rN   r   r;   r   )r   r-   rb   r?   r.   s        r   test_arr_weights_mismatch'TestHistogram.test_arr_weights_mismatchb   sR    IIbMBIIbMB _=Qq!faFDA >==s   A
A+c                    [         R                  " S5      S-   n[        U5      u  p#[        [         R                  " UR
                  [         R                  5      5        [        USS9u  p#[        [         R                  " UR
                  [         R                  5      5        [        U[         R                  " S[        5      S9u  p#[        [         R                  " UR
                  [         R                  5      5        [        U[         R                  " S[        5      S9u  p#[        [         R                  " UR
                  [         R                  5      5        g )Nr%   rJ   TrD   r^   )r&   rN   r   r   
issubdtypedtypeintegerfloatingonesintfloat)r   r-   r?   r.   s       r   	test_typeTestHistogram.test_typei   s    IIbMB|aggrzz23D)aggr{{34BGGB$45aggrzz23BGGB$67aggr{{34r   c                     [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[         R                  " XSS9u  p4n[	        UR                  5       S5        g )N)g2VEq@gx>fQg-VT5@rl   )g!@gS@g^z@r"   r7         @)r&   r<   float32histogram2dr   r)   )r   xycounts_histxedgesyedgess         r   test_f32_roundingTestHistogram.test_f32_roundingx   sR    HH8

KHH<BJJO&(nnQ&D#V[__&+r   c                 |   [         R                  " / SQ[         R                  S9n[         R                  " U5      u  p#[	        5        nUR                  [        S5      n[         R                  " / SQ5      u  pg[        [        U5      S5        [        Xb5        [        Xs5        S S S 5        g ! , (       d  f       g = f)N)r3   r3   r   ru   zConverting input from .*)TTFr3   )
r&   r<   uint8r   r   recordRuntimeWarningr   lenr   )r   r-   int_hist	int_edgessuprecr=   r>   s           r   test_bool_conversion"TestHistogram.test_bool_conversion   s~     HHYbhh/ ll1o
  C**^-GHC,,':;KDS1%t.u0 !  s   AB--
B;c                 0   [         R                  R                  S5      n[         R                  " S5      S-  n[	        U5      u  p4[	        USS9u  pV[	        XS9u  px[	        XSS9u  p[        US-  U5        [        XY5        [         R                  " SSS5      n[         R                  " [         R                  " S5      [         R                  " S5      45      n[	        U[         R                  " S	5      US
9u  px[        Xr5        [	        / SQS/ SQS
9u  px[        U/ SQ5        [	        / SQS/ SQSS9u  px[        U[         R                  " / SQ5      S-  S-  S-  5        [	        [         R                  " S5      / SQ/ SQSS9u  p4[        U/ SQ5        g )Nr"      TrD   rj   r^   rE   r   r%   rf   r8   r^   )r3   r4   r4   r6   r6   )r6   r5   r4   r3   )r6   r   r   r3   )r8   r^   rE   g      $@rv   rV   rF   )	r4   r3   r3   r3   r3   r3   r3   r3   r3   )g?rH   rH   g333333?)r&   r'   r(   ro   r   r
   r*   concatenatezerosrN   r   r<   r	   )r   r,   rb   r-   r.   nanbwawbnwanwbs              r   test_weightsTestHistogram.test_weights   sH   IINN3GGCL1|1d+1(Q48!!a%,!"* KK2r"NNBHHQK451299R=!<!"( <aF2|,q,F!"bhh|&<s&BR&G!&KL IIaL*/? 	A12r   c           	         [         R                  " / SQ5      n[         R                  " / SQ5      S[         R                  " / SQ5      -  -   n[        U/ SQUS9u  p4[        U[         R                  " SS/5      S[         R                  " SS	/5      -  -   5        [        USSS	/US
9u  p4[        U[         R                  " SS/5      S[         R                  " SS	/5      -  -   5        SSKJn  [         R                  " / SQ5      n[         R                  " U" S5      U" S5      U" S	5      /5      n[        U/ SQUS9u  p4[        X5" S5      U" S5      /5        [        USSS	/US
9u  p4[        X5" S5      U" S5      /5        g )Ng?      @gffffff@)r3   ra   r4   y              ?)r4   r3   r4   )r   r4   r5   r   r3   r4   r5   r`   r   )Decimalr   )r&   r<   r   r
   r\   r   )r   valuesr^   r   r   r   s         r   test_exotic_weights!TestHistogram.test_exotic_weights   sE    /*((:&bhhy.A)AA 6	7C!"bhh1v&6bhh1v>N9N&NO 6!QI!"bhh1v&6bhh1v>N9N&NO 	$/*((GAJ
GAJ?@ 6	7C!"wqz71:&>? 6!QI!"wqz71:&>?r   c                     [         R                  " / SQ5      n[         R                  " USS/SS9  [        U/ SQ5        g )Nr   r%   r"   )rX   r8   )r&   r<   r   r
   )r   r   s     r   test_no_side_effects"TestHistogram.test_no_side_effects   s0     /*
VC937!&/:r   c                     [        / SS/S9u  p[        U[        R                  " S/5      5        [        U[        R                  " SS/5      5        g )Nr   r3   r7   r   r   r&   r<   r   r-   r.   s      r   
test_emptyTestHistogram.test_empty   s?    Aq6+1bhhsm,1bhh1v./r   c                 t    [         R                  " SSSS9n[        US5        [        [        [        US5        g )NrI   r9   r"   numr   g333333@)r&   r*   r   r   	TypeErrorr   valss     r   test_error_binnum_type$TestHistogram.test_error_binnum_type   s,    {{3-$iD#6r   c                     [         R                  " SSSS9n[        USS/S9  [        [        [        U[         R
                  S/S9  [        [        [        US[         R                  /S9  g )NrI   r9   r"   r   rL         ?rW   )r&   r*   r   r   r;   nanrO   r   s     r   test_finite_rangeTestHistogram.test_finite_range   sN    {{3-$tDk*j)T"&&Gj)T$rvvGr   c                     [         R                  " SSSS9n[        [        S5         [         R                  " USS/S9  S S S 5        g ! , (       d  f       g = f)	NrI   r9   r"   r   zmax must be larger thanrH   g{Gz?rW   )r&   r*   r   r;   r   r   s     r   test_invalid_range TestHistogram.test_invalid_range   s>    {{3- -FGLLc4[1 HGGs   A
Ac                     [         R                  " / SQ5      n[         R                  " USSS9u  p#US:  nUS S U   nUSS  U   n[        XU5       H   u  pxn	[	        Xx:  5        [	        Xy:  5        M"     g )N)iQ  i  i  i&  i  i  i  ih   )r4   i  r8   rX   r   ra   r3   )r&   r<   r   zipr   )
r   arrr=   r>   mask
left_edgesright_edgesry   leftrights
             r   test_bin_edge_cases!TestHistogram.test_bin_edge_cases   sw    hh=>ll3TCax3BZ%
ABio!#;?NAUAIAI @r   c                     [         R                  " / SQ5      n[         R                  " USSS9u  p#[        US   S5        g )N	rI   rI   rI   r9   r:   rv   rv   g      @g      @         r   r   ra   r3   )r&   r<   r   r   )r   r   r=   r>   s       r   test_last_bin_inclusive_range+TestHistogram.test_last_bin_inclusive_range   s3    hhCDll3RyAT"Xq!r   c                     [         R                  " SSSS9n[         R                  " SS/SS//5      n[        [        S5         [         R
                  " XS	9  S S S 5        g ! , (       d  f       g = f)
NrI   r9   r"   r   r   rJ   g333333?z
must be 1dr7   )r&   r*   r<   r   r;   r   )r   r   r8   s      r   test_bin_array_dims!TestHistogram.test_bin_array_dims   sQ    {{3-xx!SC:./ \:LL) ;::s   A!!
A/c                     [         R                  " S/5      n[         R                  " / SQSS9n[        [        5         [         R                  " XS9u  p4S S S 5        g ! , (       d  f       g = f)Nr4   )r3   r5   r3   uint64ru   r7   )r&   r<   r   r;   r   )r   r   r8   r=   r>   s        r    test_unsigned_monotonicity_check.TestHistogram.test_unsigned_monotonicity_check  sG     hhsmxx	2:&,,s6KD '&&s   A
A,c           
         [        [        [        [        S5       Vs/ s H  n[        R
                  " S5      PM     sn[        R                  * /-   5        [        [        [        [        S5       Vs/ s H  n[        R
                  " S5      PM     sn[        R                  /-   5        [        R                  " [        S5       Vs/ s H  n[        R
                  " S5      PM     snS/-   5        [        R                  " [        S5       Vs/ s H  n[        R
                  " S5      PM     snS/-   5        g s  snf s  snf s  snf s  snf )Nr%   g?rJ   g	     ?)r   r;   r   rX   r&   r<   rO   )r   is     r   test_object_array_of_0d%TestHistogram.test_object_array_of_0d	  s    juRy9y!y9bffWIE	GjuRy9y!y9RVVHD	F 	U2Y7YbhhsmY7;K:LLM
U2Y7YbhhsmY72$>? :9 87s    D=3 E	 E Ec                    [         R                  " SS[         R                  /5      n[         R                  " [         R                  [         R                  /5      n[        5       nUR	                  [
        5        U   [        [        [        USS9  [        [        [        USS9  [        USSS9u  pE[        UR                  5       S5        [        USSS9u  pE[        UR                  5       S5        [        USS/S9u  pE[        UR                  5       S5        [        USS/S9u  pE[        UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr   r3   autor7   r   r3   r   r4   )r&   r<   r   r   filterr   r   r;   r   r   r)   )r   one_nanall_nanr   r?   r.   s         r   test_some_nan_values"TestHistogram.test_some_nan_values  s    ((Aq"&&>*((BFFBFF+,  !

>"*ivF*ivF W6@DA!$W6@DA!$ WAq62DA!$WAq62DA!$ SSs   =CE
Ec                 f   [         R                  " SS5      n[         R                  " / SQ5      n[         R                  " / SQ5      nX-   nX-   n[         R                  " S5      n[	        XES9u  px[	        UR                  U5      UR                  U5      S9u  p[	        X#S9u  p[        X{5        [        X5        [        X-
  R                  [        5      U5        [        U
R                  [        5      U5        [        UR                  UR                  5        [        U
R                  U5        g )Nz
2000-01-01D)	r   r   r3   r3   r4   r5   r   r%      )r   r4      r   ztimedelta64[D]r7   )r&   
datetime64r<   rl   r   astyper   rp   )r   beginoffsetsr8   dates	date_binstdd_countd_edget_countt_edgei_counti_edges                r   test_datetimeTestHistogram.test_datetime-  s    lC0((89xx&L	XX&'
 $E:#GNN2$6T[[_M#G7W&W&fn,,S16:V]]3'0V\\5;;/V\\2&r   c                    S[         R                  " U5      R                  -  S-
  n[         R                  " SU-  * S-   SU-  S-
  /US9n[	        USS9u  pE[        USU-  * S-   SSU-  S-
  /5        [        USS/5        g )Nr_   r3   r4   r6   ru   r7   r   )r&   rl   itemsizer<   r   r   )r   rl   exponentr   r=   r@   s         r   do_signed_overflow_bounds'TestHistogram.do_signed_overflow_boundsF  s    rxx///!3hhHq(!X+/:%HCa(Q!X+)1akAo>?TAq6"r   c                 :   U R                  [        R                  5        U R                  [        R                  5        U R                  [        R                  5        U R                  [        R
                  5        U R                  [        R                  5        g r   )r   r&   byteshortintcint_longlongr   s    r   test_signed_overflow_bounds)TestHistogram.test_signed_overflow_boundsM  s\    &&rww/&&rxx0&&rww/&&rww/&&r{{3r   c                 T   [         R                  " U5      R                  n[         R                  " S/U5      n[         R                  " SU-   S/U5      nUR	                  U5      S   S:w  a  g [         R
                  " USUS9u  pg[        US/5        [        UR                  U5        g )Nr9   r:   r   r3   r   r&   finfoepsr<   r   r   r   rl   r   float_smallfloat_larger  r   rX   countx_locs           r   do_precision_lower_bound&TestHistogram.do_precision_lower_boundT  s    hh{#''hhuk*#)S);7 <<$Q'1, ||Cau=UQC  	U[[+.r   c                 T   [         R                  " U5      R                  n[         R                  " S/U5      n[         R                  " SSU-
  /U5      nUR	                  U5      S   S:w  a  g [         R
                  " USUS9u  pg[        US/5        [        UR                  U5        g )Nr9   rI   ra   r3   r   r   r  s           r   do_precision_upper_bound&TestHistogram.do_precision_upper_bounde  s    hh{#''hhuk*#sSy);7 <<$R(A- ||Cau=UQC  	U[[+.r   c                 H    U R                  X5        U R                  X5        g r   )r  r
  )r   r  r  s      r   do_precisionTestHistogram.do_precisionv  s    %%k?%%k?r   c                 ,   U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R
                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R
                  5        U R                  [        R                  [        R
                  5        g r   )r  r&   halfsingledouble
longdoubler   s    r   test_precisionTestHistogram.test_precisionz  s    "''299-"''299-"''2==1"))RYY/"))R]]3"))R]]3r   c                    [        / SQSS/5      u  p[        / SQSS/5      n[        X25        [        R                  " / SQ5      n[        USSS9u  p[        USSS9n[        X25        [        USS	S9u  p[        USS	S9n[        X25        g )
Nr2   r3   r4   r   r   r   r   r   r   )r   r   r   r&   r<   )r   r=   r@   r>   r   s        r   test_histogram_bin_edges&TestHistogram.test_histogram_bin_edges  s    L1a&1#L1a&95$hhCDCb	:#Cb	B5$CfF;#CfFC5$r   z,Bad memory reports lead to OOM in ci testing)reasonc                     [         R                  " SS/5      nSnSn[         R                  " S5      n[         R                  " XX44S9n[	        [        U5      [        S5      5        g )Ni r5   i  i>  )sampler8   )r3   r4   )r&   r   rN   r   r   type)r   r  xbinsybinszbinsr=   s         r   test_big_arraysTestHistogram.test_big_arrays  sQ    9a.)		% ~~V%2GHT$Zf.r   c                     [         R                  " [         R                  " S/SS9SSS9u  p[         R                  " SS/5      n[        X5        g )	Ng$xz>f8ru   r4   )gx0gel	  r   r3   r   )r&   r   r<   r   )r   r=   r@   expected_hists       r   test_gh_23110TestHistogram.test_gh_23110  sC    ,,rxx5A$%%79 !Q(4/r   r   N))__name__
__module____qualname____firstlineno__r   r   r/   rA   rS   rc   rg   rr   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  pytestmarkskipr   r$  __static_attributes__r   r   r   r   r      s    	"/'@!0G5,1"3:@<;0
7H2	"
*7	@%2'2#4/"/"@4%  [[KL/ M/0r   r   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS r\R                  R!                  S/ SQ5      S 5       rS rSrg)TestHistogramOptimBinNumsi  zQ
Provide test coverage when using provided estimators for optimal number of
bins
c                     / SQnU HR  n[        / US9u  p4[        U[        R                  " S/5      5        [        U[        R                  " SS/5      5        MT     g )Nfdscottricesturgesdoanesqrtr   stoner7   r   r3   r   )r   estimator_list	estimatorr-   r.   s        r   r   $TestHistogramOptimBinNums.test_empty  sN    < (IRi0DAq"((A3-0q"((Aq6"23 (r   c                    SSSSSSSSS.SSSSSS	SS
S.SSSSSSSSS.S.nUR                  5        H  u  p#[        R                  " SSUS-  S-  5      n[        R                  " SSUS-  S-  5      n[        R                  " XE45      nUR                  5        H@  u  px[        R                  " Xg5      u  p[        [        U	5      USR                  Xr5      S9  MB     M     g)z
Straightforward testing with a mixture of linspace data (for
consistency). All test values have been precomputed and the values
shouldn't change
r6   r_   r   r4   r1     r%         rV      #      G   r   2   i  i  r   ra   r   r3   r5   *For the {0} estimator with datasize of {1}err_msgN)itemsr&   r*   r   r   r   r   format)r   
basic_testtestlenexpectedResultsx1x2ry   r:  numbinsr-   r.   s              r   r/   %TestHistogramOptimBinNums.test_simple  s     $%A1&'AK#$B2&("b1N#%B2&("b2O	P
 )3(8(8(:$G S"glQ&67BQGqL1$45Bx(A&5&;&;&="	||A1SVW 744:F94NP '> );r   c           
      F   SSSSSSSS.SSSSSSSS.SSSSSSSS.S.nUR                  5        Ho  u  p#[        R                  " U5      nUR                  5        H@  u  pV[        R                  " XE5      u  px[	        [        U5      USR                  XR5      S9  MB     Mq     g)	z
Smaller datasets have the potential to cause issues with the data
adaptive methods, especially the FD method. All bin numbers have been
precalculated.
r3   )r2  r3  r4  r5  r6  r7  r8  r4   r5   r3   r4   r5   rF  rG  N)rI  r&   rN   r   r   r   rJ  )	r   	small_datrL  rM  testdatr:  expbinsr-   r.   s	            r   
test_small$TestHistogramOptimBinNums.test_small  s      !1aA"#Q< 1aA"#Q< 1aA"#Q<	=	 )2(9$Gii(G&5&;&;&="	||G7SVW 744:F94NP '> ):r   c                 N    / SQnU H  n[        [        [        / SQU5        M     g)zC
Check a Value Error is thrown when an unknown string is passed in
)madfreeman
histogramsIQRrS  N)r   r;   r   )r   
check_listr:  s      r   test_incorrect_methods0TestHistogramOptimBinNums.test_incorrect_methods  s!     =
#I*iIF $r   c           	          [         R                  " S5      nSSSSSSSSS.nUR                  5        H@  u  p4[         R                  " X5      u  pV[	        [        U5      USR                  U5      S9  MB     g)zt
Check that methods handle no variance in data
Primarily for Scott and FD as the SD and IQR are both 0 in this case
r"   r3   r1  z{0} estimator, No Variance testrG  N)r&   ro   rI  r   r   r   rJ  )r   novar_datasetnovar_resultdictr:  rP  r-   r.   s          r   test_novariance)TestHistogramOptimBinNums.test_novariance  ss    
 "#aq%&1qJ #3"8"8":I<<9DAQ 3,,2F9,=? #;r   c                 X   [         R                  " S5      nSUSS& SUSS& [        US5      n[        U[         R                  " SSS5      5        [        US	5      n[        U[         R
                  " SS/5      5        [        US
5      n[        U[         R                  " SSS5      5        g)z]
Check when IQR is 0, but variance exists, we return the sturges value
and not the fd value.
i  r   Nr5   r"   r   r>  r2  r5  )r&   ro   r   r   r*   r<   )r   lim_var_data
edges_autoedges_fdedges_sturgess        r   test_limited_variance/TestHistogramOptimBinNums.test_limited_variance  s    
 wwt}RaRS(v>
ZQR!89&|T:XrxxC12+L)D]BKK3$;<r   c                 *   [         R                  " SSS5      n[         R                  " [         R                  " SSS5      U45      nSSSS	S
.nUR                  5        H2  u  pE[         R                  " X$5      u  pg[        [        U5      U5        M4     g)a  
Check the FD, Scott and Doane with outliers.

The FD estimates a smaller binwidth since it's less affected by
outliers. Since the range is so (artificially) large, this means more
bins, most of which will be empty, but the data of interest usually is
unaffected. The Scott estimator is more affected and returns fewer bins,
despite most of the variance being in one area of the data. The Doane
estimator lies somewhere between the other two.
r   r%   rE  ir      rf   rG   )r2  r3  r6  r8  N)r&   r*   hstackrI  r   r   r   )r   xcenteroutlier_datasetoutlier_resultdictr:  rP  r-   r.   s           r   test_outlier&TestHistogramOptimBinNums.test_outlier	  sy     ++c2r*))R[[tQ%?$IJ$&R!L"4":":"<I<<;DAQ) #=r   c                 L   S n[        S5       VVs/ s HP  n[        R                  " SSSS9R                  5       R	                  [
        5       Vs/ s H
  o1" X#5      PM     snPMR     nnn[        [        R                  " USS9S-
  5      n[        U/ S	QS
S9  gs  snf s  snnf )zQVerify that Scott's rule and Stone's rule converges for normally distributed datac                     [         R                  R                  U 5      nUR                  SSUS9n[	        [         R
                  " US5      S   5      [	        [         R
                  " US5      S   5      pTXDU-   -  $ )Nr   r4   )locscalesizer8  r3  )r&   r'   RandomStatenormalr   r   )seedr{  rngry   r-   r.   s         r   nbins_ratioBTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.nbins_ratio   sh    ))''-C

q
5Ar||Aw/23Sa9QRS9T5UqA;r   r%   r"   r6   )startstopr   r   r#   rJ   )g333333?g
ףp=
?g{Gz?gQ?r4   r[   N)	rX   r&   	geomspaceroundr   rp   absmeanr	   )r   r  r~  r{  llavgs         r   test_scott_vs_stone-TestHistogramOptimBinNums.test_scott_vs_stone  s    	  )%#$ 46<<bsXY3Z3`3`3b3i3ijm3no3n4{4&3no# 	 % "''"1%+,C!91E p %s   ?B B"B B c           	         SSSSSSS.SSSSSSS.S	S	S
SS	SS.S.nUR                  5        H  u  p#[        R                  " SSUS-  S-  5      n[        R                  " SSUS-  S-  5      n[        R                  " SSU5      n[        R                  " XEU45      nUR                  5        HT  u  p[        R                  " XxSS9u  pSR                  U5      nUSR                  U5      -  n[        [        U
5      XS9  MV     M     g)z
Straightforward testing with a mixture of linspace data (for
consistency). Adding in a 3rd mixture that will then be
completely ignored. All test values have been precomputed and
the shouldn't change.
r_   rZ   rB  )r2  r3  r4  r5  r   r8  r=      r   P   !   E      rD  r   ra   r   r4   r3   r%   r5   ro  i)ir   rW   zFor the {0} estimatorz with datasize of {0}rG  N)rI  r&   r*   rq  r   rJ  r   r   )r   rK  rL  rM  rN  rO  x3ry   r:  rP  r-   r.   msgs                r   test_simple_range+TestHistogramOptimBinNums.test_simple_range-  s    $%B(*BD#%B(*BE#%B(*BE
 )3(8(8(:$G S"glQ&67BQGqL1$45BT30B		22,'A&5&;&;&="	||A)D-44Y?.55g>>SVW:	 '> );r   r8   )r   r2  r6  r3  r8  r4  r5  c                    [         R                  " / SQ[         R                  S9n[         R                  " X!S9u  p4[         R                  " UR	                  [         R
                  5      US9u  pV[        X55        [        XF5        g )N)r      ru   r7   )r&   r<   int8r   r   int32r   )r   r8   r-   r=   r>   hist32edges32s          r   test_signed_integer_data2TestHistogramOptimBinNums.test_signed_integer_dataL  sW     HH\1ll10,,qxx'9E4(5*r   c           	      P    / SQnU H  n[        [        [        / SQU/ SQS9  M     g)z-
Check that weighted data raises a TypeError
)r2  r3  r4  r5  r   rS  rj   N)r   r   r   )r   r9  r:  s      r   test_simple_weighted.TestHistogramOptimBinNums.test_simple_weightedV  s'     D'I)Y	#Y8 (r   r   N)r&  r'  r(  r)  __doc__r   r/   rW  r_  rd  rl  ru  r  r  r*  r+  parametrizer  r  r-  r   r   r   r/  r/    sj    
4P4P(G?=$*(F ;> [[V &B C+C+8r   r/  c                   n    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)TestHistogramddi`  c           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        USSS	/S
S/S
S//S9u  p#[         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      n[        X$5        / SQ/ SQ/ SQ/n[        XSS9u  p#[	        [         R
                  " X$S-  :H  5      5        [        USSS	/S
S/S
S//SS9u  p#[         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      n[        X$S-  S5        [         R                  " USS	S9 Vs/ s H  n[         R                  " U5      PM     nn[        USSS/S
S/S
S//S 9u  p#[         R                  " S
S
/S
S
/S
S
//S
S	/S
S
/S	S
//S
S	/S
S
/S
S
//S
S
/S
S
/S
S
///5      n[        X$5        [         R                  " S!5      nS"U[        [        S#5      5      [        [        S#5      5      [        [        S#5      5      4'   [        [         R                  " S#5      [         R                  " S#5      [         R                  " S#5      /S#5      u  p#[        X(5        g s  snf )$N)r   rJ   rK   )r   rK   r   )r   r   rJ   )rJ   rJ   rK   )rJ   rK   r   )rJ   r   r   )r4   r5   r5   ra   r3   r   r5   rW   )r   r3   r   )r   r   r3   )r3   r   r   )r  r   r4   )r   r3   r4   r5   Tr8   rE   g      (@)r4   r5   r6   r6   rY   )r   r3   r   r   )r   r   r3   r   )r3   r   r   r   g      @r#   )r6   r5   r4   r  r4   r   )r   r   r   r9   r   )r&   r<   r   r   r   allr
   splitsqueezer   listrX   rN   )	r   ry   Hr>   answeredrz   zZs	            r   r/   TestHistogramdd.test_simpleb  sI   HHno~$oH Iq)')1g1v1v%>@Iy)<%y)<> ?1% ,5q48qSL()* q)')1g1v1v%>'+- L,E(,EG H!!b[!4 %'HHQ$:;$:qRZZ]$:;Ir1g1v1v%>@QFQFQF3FQFQF3FQFQF3FQFQF35 6 	1%HHY<>$uQx.$uQx.$uQx.
89		!biilBIIaLI1M1  <s    Ic                     Sn[         R                  R                  SS5      nU H(  n[        X#5      u  pE[	        UR
                  U:H  5        M*     g )N))r   r6   rG   )rG   r6   r   )r   rG   r6   )r6   rG   r   )rG   r   r6   )r6   r   rG   r%   r5   r&   r'   r(   r   r   shaper   r8   rr.   r  r>   s         r   test_shape_3dTestHistogramdd.test_shape_3d  sC    IINN2q!A"1(HAAGGqL! r   c                     Sn[         R                  R                  SS5      nU H(  n[        X#5      u  pE[	        UR
                  U:H  5        M*     g )N))r   r6   r   rG   )r6   r   r   rG   )r   rG   r6   r   )r   rG   r   r6   )r   r   rG   r6   )r6   rG   r   r   )rG   r   r   r6   )r   r   r6   rG   )r   r6   rG   r   )rG   r6   r   r   )rG   r   r   r6   )r6   rG   r   r   )r6   r   r   rG   )r   r6   rG   r   )r   r   r6   rG   )rG   r   r6   r   )rG   r   r6   r   )r6   r   rG   r   )r6   r   rG   r   )r   rG   r6   r   )r   r6   r   rG   )r   rG   r   r6   )rG   r6   r   r   )r   r   rG   r6   r%   r6   r  r  s         r   test_shape_4dTestHistogramdd.test_shape_4d  sF    H IINN2q!A"1(HAAGGqL! r   c                    [         R                  R                  SS5      n[        U5      u  p#[        USS9u  pC[        U[         R                  " S5      S9u  pS[        XR5        [        U[         R                  " S5      S-  SS9u  pS[        XT5        [        U[         R                  " S[        5      S-  S9u  pS[        USU-  5        g )Nr"   r4   TrD   rj   r   )r&   r'   r(   r   ro   r   rp   )r   r,   r=   r>   n_histw_hists         r   r   TestHistogramdd.test_weights  s    IINN3"!!n#At4#Arwws|<6(#Arwws|a/?N6*#ArwwsC/@1/DE61t8,r   c                     [         R                  " S[        5      n[        USS9u  p#[	        US   [         R
                  " / SQ5      5        g )N)r%   r4   r4   r7   r   )r   rI   rJ   )r&   r   rp   r   r   r<   )r   ry   r=   r>   s       r   test_identical_samples&TestHistogramdd.test_identical_samples  s7    HHWc"!!!,58RXXo%>?r   c                     [        / / /SS/SS/4S9u  p[        U[        R                  " S//5      5        [        R                   " / / / /SS9u  p[        U[        R                  " S5      5        g )Nr   r3   r7   rI   r4   )r4   r4   r4   )r   r   r&   r<   r   r   s      r   r   TestHistogramdd.test_empty  sc    B8Aq6Aq6*:;Q2$ 01~~r2rl3Q 34r   c           
      `   [         R                  " S5      R                  SS5      n[        [        [         R
                  U/ SQS9  [        [        [         R
                  U/ SQS9  [        [        [         R
                  USSS/ SQ/S9  [        [         R
                  " USSS/ S	Q/S95        g )
Nr_   r4   r6   )ra   r4   r6   r   r7   )r3   gGz?r3   r3   r3   )r3   r4   r5   r2   )r&   rN   reshaper   r;   r   r   )r   ry   s     r   test_bins_errors TestHistogramdd.test_bins_errors  s}     IIaL  A&j"..!-Hj"..!/JAq-0H	Jq1a'>?@r   c           
      p   [         R                  " SS9   [         R                  " S5      R                  SS5      n[         R                  " SS/SS/SS//5      n[         R
                  " US[         R                  * SS//S	9u  p4[        X25        [         R
                  " US[         R                  " S
S[         R                  /5      /S	9u  p4[        X25        [         R
                  " US[         R                  * S[         R                  //S	9u  p4[        X25        S S S 5        g ! , (       d  f       g = f)Nignore)invalidrG   r5   r4   r3   r   r%   r7   ra   )r&   errstaterN   r  r<   r   rO   r   )r   ry   expectedr?   r@   s        r   test_inf_edgesTestHistogramdd.test_inf_edges  s    [[*		!$$Q*Axx!Q!Q!Q 89H>>!1w2.>*?@DAA(>>!1bhhArvv.G*HIDAA(>>!1w266.B*CDDAA( +**s   D	D''
D5c                    S/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        S/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        S/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        S	/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        g )
NgG?)rI   rJ   r9   r7   r   rI   r3   r9   g8   ?gqh ?)r   r   )r   ry   r8   r=   _s        r   test_rightmost_binedge&TestHistogramdd.test_rightmost_binedge  s    Na+Q3Q2Ea+Q3Q2Na+Q3Q3Ha+Q3Q3r   c           	         [         R                  R                  S5      n[        USS/SS/SS//S9  [        [        [        USS/SS/S[         R
                  //S9  [        [        [        USS/[         R                  S/SS//S9  g )N)r"   r5   rI   r9   rL   r   rJ   rW   )r&   r'   r   r   r;   rO   r   r   s     r   r   !TestHistogramdd.test_finite_range  s    yy)D#sdD\D#; GHj+t!3Z$bff~F	Hj+t!3Z"&&$$E	Gr   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      nSn[        X4X44S9u  pV[         R                  " S/S//5      n[        XW5        g)z9Test that adjacent entries in an edge array can be equal )r   r3   r4   )r   r4   r4   r3   r7   r:   r9   Nr&   r<   r   r   )r   ry   rz   x_edgesy_edgesr=   r>   hist_expecteds           r   test_equal_edges TestHistogramdd.test_equal_edges  sk    HHYHHY((9%!1&/ABDD"
  	T)r   c                     [         R                  " / SQ5      nUS-  n[         R                  " / SQ5      nUS-  n[        X4X44S9u  pV[        US   R                  UR                  5        [        US   R                  UR                  5        g)z;Test that if an edge array is input, its type is preserved )r   r%   r   r%   )r   r   rZ   r   r7   r   r3   N)r&   r<   r   r   rl   )r   ry   rz   r  r  r=   r>   s          r   test_edge_dtypeTestHistogramdd.test_edge_dtype  so    HH[!F((>*B,!1&/ABU1X^^W]]3U1X^^W]]3r   c                     Sn[         R                  " S/[         R                  5      n[         R                  " SS/[         R                  5      nX-   nX-   n[        X$4X54S9u  pg[	        US   S5        g )Nl            r   ra   r3   r7   )r   r   )r&   r<   int64r   r   )r   bigry   r  rz   r  r=   r>   s           r   test_large_integers#TestHistogramdd.test_large_integers  sd    HHaS"((#((B8RXX.G-!1&/ABT$Z#r   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " SS/SS//5      n[         R                  " S/S/S-  -   S/S-  -   S/S-  -   5      n[         R                  " S/S/S-  -   S/S-  -   S/S-  -   5      n[        XT4X!4S9u  pg[        Xc5        [        XT4X!4SS	9u  pg[        US
5        g )N)r   r4   r_   )r   rG   r_   r5   rV   r3   r   r7   Tr  g      ?r  )r   r  r  relative_areasry   rz   r=   r>   s           r   test_density_non_uniform_2d+TestHistogramdd.test_density_non_uniform_2d  s     ((9%((9%FF# 
 HHaSA3q5[A3q5(A3q501HHaSA3q5[A3q5(A3q501 "1&/ABT* "1&/A4PT9%r   c                     [         R                  " S5      n[         R                  " / SQ5      n[        XSS9u  p4[	        U4U4SS9u  pV[        X55        [        XFS   5        g )Nr%   rF   TrD   r   )r&   rN   r<   r   r   r   )r   r,   r8   r=   r>   hist_ddedges_dds          r   test_density_non_uniform_1d+TestHistogramdd.test_density_non_uniform_1d)  sU    IIbMxx()6'tgtDT#UQK(r   r   N)r&  r'  r(  r)  r/   r  r  r   r  r   r  r  r  r   r  r  r  r  r  r-  r   r   r   r  r  `  sQ    #!J""	-@
5A
) .G*	4
$&6)r   r  )numpyr&   numpy.lib.histogramsr   r   r   numpy.testingr   r   r   r	   r
   r   r   r   r   r   numpy.testing._private.utilsr   r*  r   r/  r  r   r   r   <module>r     sK     L L  
 9 T0 T0ny8 y8xP) P)r   