Ë
    âQ(hXn  ã                   óŽ  — d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z d dlmc mZ d dlmZmZmZmZmZmZmZ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! d dl"m#Z# e jH                  jJ                  Z% G d	„ d
«      Z& G d„ d«      Z' G d„ d«      Z(e  G d„ d«      «       Z) G d„ d«      Z*dddddœd„Z+ G d„ d«      Z, G d„ d«      Z-y)é    N)Úassert_equalÚassert_almost_equalÚassert_allclose)Úgiven)	ÚrombÚnewton_cotesÚcumulative_trapezoidÚ	trapezoidÚquadÚsimpsonÚ
fixed_quadÚqmc_quadÚcumulative_simpson)Ú%_cumulative_simpson_unequal_intervals)ÚstatsÚspecialÚ	integrate)Úarray_api_compatibleÚskip_xp_invalid_arg)Úxp_assert_closec                   ó   — e Zd Zd„ Zd„ Zy)ÚTestFixedQuadc                 ó`   ‡— dŠdd‰z  z  }t        ˆfd„dd‰¬«      \  }}t        ||d¬«       y )	Né   é   é   c                 ó   •— | d‰z  dz
  z  S )Nr   r   © )ÚxÚns    €úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/integrate/tests/test_quadrature.pyú<lambda>z+TestFixedQuad.test_scalar.<locals>.<lambda>   s   ø€  a¨!¨A©#°©'¡l€ ó    r   ©r    çê-�™—q=©Úrtol)r   r   )ÚselfÚexpectedÚgotÚ_r    s       @r!   Útest_scalarzTestFixedQuad.test_scalar   s6   ø€ ØˆØ�a˜‘c‘7ˆÜÓ2°A°q¸AÔ>‰ˆˆQä˜˜X¨EÖ2r#   c                 ó’   ‡— d}t        j                  dd|z  «      Šd‰dz   z  }t        ˆfd„dd|¬«      \  }}t        ||d¬«       y )	Nr   r   r   c                 ó   •— | ‰d d …d f   z  S ©Nr   )r   Úps    €r!   r"   z+TestFixedQuad.test_vector.<locals>.<lambda>"   s   ø€  a¨ª1¨d¨7©¡m€ r#   r   r$   r%   r&   )ÚnpÚaranger   r   )r(   r    r)   r*   r+   r0   s        @r!   Útest_vectorzTestFixedQuad.test_vector   sJ   ø€ ØˆÜ�I‰I�a˜˜1™ÓˆØ�a˜!‘e‘9ˆÜÓ3°Q¸¸QÔ?‰ˆˆQÜ˜˜X¨EÖ2r#   N)Ú__name__Ú
__module__Ú__qualname__r,   r3   r   r#   r!   r   r      s   „ ò3ó3r#   r   c                   óx   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze	j                  j                  ddd	g«      d
„ «       Zy)ÚTestQuadraturec                 ó   — t         ‚r/   )ÚNotImplementedError)r(   r   ÚaÚbÚargss        r!   r   zTestQuadrature.quad'   s   € Ü!Ð!r#   c                 óT   — t        t        t        j                  d«      «      d«       y )Né   é€   )r   r   r1   r2   ©r(   s    r!   Ú	test_rombzTestQuadrature.test_romb*   s   € Ü”Tœ"Ÿ)™) B›-Ó(¨#Õ.r#   c                 óì   — t        j                  d«      }t        j                  d|z  «      }t        |«      }t	        d„ |j                  «       |j                  «       «      \  }}t        ||dd¬«       y )Nr?   çš™™™™™É?c                 ó2   — t        j                  d| z  «      S )NrD   )r1   Úcos©r   s    r!   r"   z2TestQuadrature.test_romb_gh_3731.<locals>.<lambda>2   s   € ¤2§6¡6¨#¨a©%£=€ r#   g:Œ0âŽyE>r   ©r'   Úatol)r1   r2   rF   r   r   ÚminÚmaxr   )r(   r   ÚyÚvalÚval2Úerrs         r!   Útest_romb_gh_3731z TestQuadrature.test_romb_gh_3731-   sW   € ä�I‰I�fÓˆÜ�F‰F�3�q‘5‹MˆÜ�1‹gˆÜÑ0°!·%±%³'¸1¿5¹5»7ÓC‰	ˆˆcÜ˜˜T¨°1Ö5r#   c                 óV  — d}t        |d«      \  }}t        ||t        j                  ddg«      z  «       t	        ||dz   dz  «       d}t        |d«      \  }}t	        ||t        j                  g d¢«      z  dz  «       t	        ||dz   d	z  «       d}t        |d«      \  }}t	        ||t        j                  g d
¢«      z  dz  «       t	        ||dz   dz  «       d}t        |d«      \  }}t	        ||t        j                  g d¢«      z  dz  «       t	        ||dz   dz  «       y)z5Test the first few degrees, for evenly spaced points.r   ç      à?é   ç      (@r   )ç      ð?ç      @rU   ç      @é   g     €¦@)rU   ç      @rY   rU   ç       @g     P¹@r   )ç      @ç      @@rT   r\   r[   g     €V@é   g     ˆ=AN)r   r   r1   Úarrayr   )r(   r    ÚwtsÚerrcoffs       r!   Útest_newton_cotesz TestQuadrature.test_newton_cotes5   s  € àˆÜ# A qÓ)‰ˆˆWÜ�S˜!œBŸH™H c¨3 ZÓ0Ñ0Ô1Ü˜G a¨¡d U¨4¡ZÔ0àˆÜ# A qÓ)‰ˆˆWÜ˜C ¤2§8¡8ªOÓ#<Ñ!<¸SÑ!@ÔAÜ˜G a¨¡d U¨6¡\Ô2àˆÜ# A qÓ)‰ˆˆWÜ˜C ¤2§8¡8Ò,@Ó#AÑ!AÀ#Ñ!EÔFÜ˜G a¨¡d U¨6¡\Ô2àˆÜ# A qÓ)‰ˆˆWÜ˜C ¤2§8¡8Ò,HÓ#IÑ!IÈ$Ñ!NÔOÜ˜G a¨¡d U¨9¡_Õ5r#   c                 ó<  — t        j                  g d¢«      }|dz  }t        |«      \  }}d}t        j                  ||«      }t	        ||«       t        j                  g d¢«      }|dz  }t        |«      \  }}d}t        j                  ||«      }t	        ||«       y)z9Test newton_cotes with points that are not evenly spaced.)ç        g      ø?ç       @r   gUUUUUU@)rc   gffffffö?gÍÌÌÌÌÌ @rY   ç      "@N)r1   r^   r   Údotr   )r(   r   rL   r_   r`   Úexact_integralÚnumeric_integrals          r!   Útest_newton_cotes2z!TestQuadrature.test_newton_cotes2K   s�   € ô �H‰H’_Ó%ˆØˆq‰DˆÜ# A“‰ˆˆWØˆÜŸ6™6 # q›>ÐÜÐ,¨nÔ=ä�H‰HÒ)Ó*ˆØˆq‰DˆÜ# A“‰ˆˆWØˆÜŸ6™6 # q›>ÐÜÐ,¨nÕ=r#   c           
      óÜ	  — t        j                  d«      }t        t        |«      d«       t        t        |d¬«      d«       t        t        |t        j                  ddd«      ¬«      d	«       t        j                  d
dd«      }d„ }t        t         ||«      |¬«      d«       t        j                  d
dd«      }t        t         ||«      d¬«      d«       t        j                  d«      j                  dd«      }t        j                  d«      j                  ddd«      } ||«      }t        d«      D ]§  }t        |||¬«      }t        j                  |dg¬«      }|D ]z  }t        |j                  «      }	|	j                  |t        d «      «       |t        |	«         d   dz  dz  |t        |	«         d   dz  dz  z
  }
t        ||j                     |
«       Œ| Œ© t        j                  d«      j                  dd«      } ||«      }t        ||d¬«      }d|d d …d
f   |d d …df   z   z  |d d …d
f   |d d …df   z
  z  }
t        ||
«       t        j                  d«      j                  dd«      }t        j                  d«      j                  ddd«      } ||«      }t        d«      D ]§  }t        |||¬«      }t        j                  |dg¬«      }|D ]z  }t        |j                  «      }	|	j                  |t        d «      «       |t        |	«         d   dz  dz  |t        |	«         d   dz  dz  z
  }
t        ||j                     |
«       Œ| Œ© t        j                  dg«      }t        j                  |d«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  g d¢«      }t        j                  |d«      }t        t        ||d¬«      d«       t        t        ||d¬«      d«       t        j                  g d¢g d¢g d¢g«      }t        j                  |d«      }g d¢}d gdz  }t        t        ||d¬«      |«       t        t        ||d¬«      |«       t        j                  g d¢g d¢g d!¢g«      }t        j                  |d«      }g d"¢}g d#¢}t        t        ||d¬«      |«       t        t        ||d¬«      |«       y )$Nr?   r@   rR   ©Údxé@   r   r   rG   é    r   c                 ó   — | dz  S )Nr   r   rG   s    r!   Úfz&TestQuadrature.test_simpson.<locals>.fd   s   € Ø�a‘4ˆKr#   ç      5@r]   rd   ér   é   ç      P@rS   ©r   ÚaxisÚmulti_index)Úflagséÿÿÿÿé   r   é   rX   é}   rc   )rS   rS   rS   rS   )r   r   r   rz   )rc   rc   rc   rc   ç«ªªªªJe@)r   rz   rs   rn   )rc   g      a@g      ‘@g      Á@)r}   r}   gªªªª*UÅ@)r1   r2   r   r   Úlinspacer   ÚreshapeÚrangeÚnditerÚlistrw   ÚinsertÚsliceÚtupler^   Úpower)r(   rL   r   rp   r;   ÚiÚrÚitr+   ÚidxÚintegralÚ	zero_axisÚdefault_axiss                r!   Útest_simpsonzTestQuadrature.test_simpson\   s.  € Ü�I‰I�b‹MˆÜ”W˜Q“Z Ô%Ü”W˜Q 3Ô'¨Ô,Ü”W˜Q¤"§+¡+¨a°°BÓ"7Ô8¸"Ô=ô �K‰K˜˜1˜aÓ ˆò	ô 	œ¡ !£¨Ô*¨DÔ1ô �K‰K˜˜1˜aÓ ˆÜœ¡ !£¨Ô-¨sÔ3ô �I‰I�b‹M×!Ñ! ! QÓ'ˆÜ�I‰I�c‹N×"Ñ" 1 a¨Ó+ˆÙˆa‹DˆÜ�q“ò 	=ˆAÜ˜˜Q QÔ'ˆAÜ—‘˜1 ] OÔ4ˆBØò =�Ü˜2Ÿ>™>Ó*�Ø—
‘
˜1œe D›kÔ*ØœU 3›Z™=¨Ñ,¨aÑ/°!Ñ3°a¼¸c»
±mÀAÑ6FÈÑ6IÈAÑ6MÑM�Ü  "§.¡.Ñ 1°8Õ<ñ	=ð	=ô �I‰I�b‹M×!Ñ! ! QÓ'ˆÙˆa‹DˆÜ�A˜ Ô$ˆà˜!šA˜q˜D™' A¢a¨ d¡GÑ+Ñ,°²!°Q°$±¸!ºA¸q¸D¹'Ñ0AÑBˆÜ˜˜8Ô$ô �I‰I�b‹M×!Ñ! ! QÓ'ˆÜ�I‰I�c‹N×"Ñ" 1 a¨Ó+ˆÙˆa‹DˆÜ�q“ò 	=ˆAÜ˜˜Q QÔ'ˆAÜ—‘˜1 ] OÔ4ˆBØò =�Ü˜2Ÿ>™>Ó*�Ø—
‘
˜1œe D›kÔ*ØœU 3›Z™=¨Ñ,¨aÑ/°!Ñ3°a¼¸c»
±mÀAÑ6FÈÑ6IÈAÑ6MÑM�Ü  "§.¡.Ñ 1°8Õ<ñ	=ð	=ô �H‰H�a�S‹MˆÜ�H‰H�Q˜‹NˆÜœ  Q¨QÔ/°Ô5Üœ  Q¨RÔ0°#Ô6ä�H‰H’\Ó"ˆÜ�H‰H�Q˜‹NˆÜœ  Q¨QÔ/°Ô5Üœ  Q¨RÔ0°#Ô6ä�H‰H’l¢L²,Ð?Ó@ˆÜ�H‰H�Q˜‹NˆÚ(ˆ	Ø!�{ Q‘ˆÜœ  Q¨QÔ/°Ô;äœ  Q¨RÔ0°,Ô?ä�H‰H’l¢L².ÐAÓBˆÜ�H‰H�Q˜‹NˆÚ0ˆ	Ú>ˆÜœ  Q¨QÔ/°Ô;Üœ  Q¨RÔ0°,Õ?r#   ÚdroplastFTc                 óæ   — t        j                  g d¢g d¢g«      }|r|d d …d d…f   }t        |d¬«      }t        t        j                  |t         j                  ¬«      d¬«      }t	        ||«       y )N)r   r   r   r   rz   rz   éüÿÿÿrX   )r   r   r   r‘   é
   é   éþÿÿÿr’   ry   ©rv   ©Údtype)r1   r^   r   Úfloat64r   )r(   r�   rL   Úresultr)   s        r!   Útest_simpson_2d_integer_no_xz+TestQuadrature.test_simpson_2d_integer_no_xª   sb   € ô �H‰HÒ/Ú3ð5ó 6ˆáØ’!�S�b�S�&‘	ˆAÜ˜ Ô$ˆÜœ2Ÿ8™8 A¬R¯Z©ZÔ8¸rÔBˆÜ�V˜XÕ&r#   N)r4   r5   r6   r   rB   rP   ra   ri   rŽ   ÚpytestÚmarkÚparametrizerš   r   r#   r!   r8   r8   &   sL   „ ò"ò/ò6ò6ò,>ò"K@ð\ ‡[�[×Ñ˜Z¨%°¨Ó7ñ	'ó 8ñ	'r#   r8   c                   ór   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  dddg«      d„ «       Z
d	„ Zy
)ÚTestCumulative_trapezoidc                 ó®   — t        j                  ddd¬«      }|}t        ||d¬«      }g d¢}t        ||«       t        ||d ¬«      }t        ||dd  «       y )	Nr”   r   rX   ©Únumr   ©Úinitial)rc   ç      ø¿ç       Àr¥   rc   r   ©r1   r~   r	   r   )r(   r   rL   Úy_intÚ
y_expecteds        r!   Útest_1dz TestCumulative_trapezoid.test_1d¸   sT   € Ü�K‰K˜˜A 1Ô%ˆØˆÜ$ Q¨°1Ô5ˆÚ.ˆ
Ü˜˜zÔ*ä$ Q¨°4Ô8ˆÜ˜˜z¨!¨"˜~Õ.r#   c                 ó¤  — t        j                  d«      j                  ddd«      }|}t        ||d¬«      }t        j                  g d¢g d¢gg d	¢g d
¢gg d¢g d¢gg«      }t        ||«       g d¢}t        g d¢|«      D ]O  \  }}t        ||d|¬«      }t        |j                  d«       t        ||d |¬«      }t        |j                  |«       ŒQ y )Né   rS   r   r   r   r£   )rc   rR   rd   ç      @)rc   r­   ç      $@ç     €0@)rc   ç      !@ç      2@g     €<@)rc   ç      )@g      :@ç     @D@)rc   r¯   g      A@g     @J@)rc   ç     €4@g      E@g      P@))r   r   r   )rS   r   r   )rS   r   rS   ©r   r   r   )r¤   rv   )rS   r   r   )	r1   r2   r   r	   r^   r   Úzipr   Úshape)r(   r   rL   r¨   r©   Úshapesrv   r·   s           r!   Útest_y_nd_x_ndz'TestCumulative_trapezoid.test_y_nd_x_ndÂ   sÏ   € Ü�I‰I�iÓ ×(Ñ(¨¨A¨qÓ1ˆØˆÜ$ Q¨°1Ô5ˆÜ—X‘XÒ 2Ú 4ð 6â 4Ú 5ð 7â 5Ú 5ð 7ð	8ó 9ˆ
ô 	˜˜zÔ*ò 3ˆÜšy¨&Ó1ò 	-‰KˆD�%Ü(¨¨A°q¸tÔDˆEÜ˜Ÿ™ iÔ0Ü(¨¨A°tÀ$ÔGˆEÜ˜Ÿ™ eÕ,ñ		-r#   c           	      óÜ  — t        j                  d«      j                  ddd«      }t        j                  d«      dz  }t        j                  g d¢g d¢gg d¢g d¢gg«      t        j                  g d	¢gg d
¢gg d¢gg«      t        j                  g d¢g d¢gg d¢g d¢gg d¢g d¢gg«      f}t	        g d¢|«      D ]0  \  }}t        ||d |j                  |    |d ¬«      }t        ||«       Œ2 y )Nr¬   rS   r   r   )rV   ç      @rW   r[   )rZ   re   r®   ç      &@)g      D@g      F@g      H@g      J@)g      L@g      N@rt   g      Q@)rd   rY   rV   r»   )r®   r¼   rT   ç      *@)r±   g      3@ç      4@rq   )rR   r»   g     €1@)r­   rq   g     ÀJ@)r°   g     €B@g     `V@)r²   g     €J@g     `_@)r¯   g     @Q@g     0d@)r´   g     @U@g     °h@rµ   )r   rv   r¤   )r1   r2   r   r^   r¶   r	   r·   r   )r(   rL   r   Úys_expectedrv   r©   r¨   s          r!   Útest_y_nd_x_1dz'TestCumulative_trapezoid.test_y_nd_x_1d×   s  € Ü�I‰I�iÓ ×(Ñ(¨¨A¨qÓ1ˆÜ�I‰I�a‹L˜!‰Oˆô �H‰HÒ'Ú)ð+â+Ú+ð-ð.ó /ô �H‰HÒ'Ð(Ú+Ð,Ú+Ð,ð.ó /ô �H‰H’Ú'ð)â'Ú)ð+â)Ú)ð+ð	,ó -ð.ˆô !$¢I¨{Ó ;ò 	/ÑˆD�*Ü(¨¨a°°·±¸±Ð.?ÀdØ15ô7ˆEä˜E :Õ.ñ	/r#   c                 ó  — t        j                  ddd¬«      }t        |«      }g d¢}t        ||«       t        |d¬«      }g d¢}t        ||«       t        |d	¬
«      }g d¢}t        ||«       t        |d	d¬«      }g d¢}t        ||«       y )Nr”   r   rX   r¡   )r¥   r¦   r¥   rc   r   r£   )r   r¥   r¦   r¥   rc   rS   rk   )ç      Àç      ÀrÂ   rc   )rl   r¤   )r   rÂ   rÃ   rÂ   rc   r§   )r(   rL   r¨   r©   s       r!   Útest_x_nonez$TestCumulative_trapezoid.test_x_noneï   s€   € Ü�K‰K˜˜A 1Ô%ˆä$ QÓ'ˆÚ*ˆ
Ü˜˜zÔ*ä$ Q°Ô2ˆÚ-ˆ
Ü˜˜zÔ*ä$ Q¨1Ô-ˆÚ*ˆ
Ü˜˜zÔ*ä$ Q¨1°aÔ8ˆÚ-ˆ
Ü˜˜zÕ*r#   r¤   r   rR   c                 ó®   — t        j                  ddd¬«      }t        j                  t        d¬«      5  t        ||¬«       ddd«       y# 1 sw Y   yxY w)z4If initial is not None or 0, a ValueError is raised.r   r’   r¡   z	`initial`©Úmatchr£   N)r1   r~   r›   ÚraisesÚ
ValueErrorr	   )r(   r¤   rL   s      r!   Útest_initial_errorz+TestCumulative_trapezoid.test_initial_error  sC   € ô
 �K‰K˜˜2 2Ô&ˆÜ�]‰]œ:¨[Ô9ñ 	5Ü  ¨GÕ4÷	5÷ 	5ñ 	5ús   ´AÁAc                 ó|   — t        j                  t        d¬«      5  t        g ¬«       d d d «       y # 1 sw Y   y xY w)NúAt least one point is requiredrÆ   ©rL   )r›   rÈ   rÉ   r	   rA   s    r!   Útest_zero_len_yz(TestCumulative_trapezoid.test_zero_len_y  s.   € Ü�]‰]œ:Ð-MÔNñ 	'Ü  2Õ&÷	'÷ 	'ñ 	'ús   œ2²;N)r4   r5   r6   rª   r¹   rÀ   rÄ   r›   rœ   r�   rÊ   rÎ   r   r#   r!   rŸ   rŸ   ·   sG   „ ò/ò-ò*/ò0+ð& ‡[�[×ÑØ�A�s�8óñ5óð5ó'r#   rŸ   c                   ó<  — e Zd Zd„ Z eddg¬«      ej                  j                  d«      d„ «       «       Z eddg¬«      ej                  j                  d«      d„ «       «       Z	e
d„ «       Z ed	d
g¬«      ej                  j                  d«      d„ «       «       Zy)ÚTestTrapezoidc           	      ó   — |j                  ddd«      }t        |j                  d|dz  z  «      |j                  d|j	                  |j
                  «      z  «      z  d¬«      }t        ||j	                  d«      «       y )Néöÿÿÿr’   gš™™™™™¹?g      à¿r   rk   rU   )r2   r
   ÚexpÚsqrtÚasarrayÚpir   )r(   Úxpr   rˆ   s       r!   Útest_simplezTestTrapezoid.test_simple  sd   € Ø�I‰I�c˜2˜rÓ"ˆÜ�b—f‘f˜S 1¨¡6™\Ó*¨R¯W©W°Q¸¿¹ÀBÇEÁEÓ9JÑ5JÓ-KÑKÐPSÔTˆä˜˜2Ÿ:™: c›?Õ+r#   z	jax.numpyz)JAX arrays do not support item assignment)ÚreasonsÚskip_xp_backendsc                 ó  — |j                  ddd«      }|j                  ddd«      }|j                  ddd«      }|j                  |«      |d   |d   z
  z  }|dxx   dz  cc<   |dxx   dz  cc<   |j                  |«      |d   |d   z
  z  }|dxx   dz  cc<   |dxx   dz  cc<   |j                  |«      |d   |d   z
  z  }|dxx   dz  cc<   |dxx   dz  cc<   |d d …d d f   |d d d …d f   z   |d d d d …f   z   }|j                  ||d d …d d f   z  d¬«      }	|j                  ||d d d …d f   z  d¬«      }
|j                  ||d d d d …f   z  d¬«      }t        ||d d …d d f   d¬	«      }t	        ||	«       t        ||d d d …d f   d¬	«      }t	        ||
«       t        ||d d d d …f   d¬	«      }t	        ||«       t        ||d¬	«      }t	        ||	«       t        ||d¬	«      }t	        ||
«       t        ||d¬	«      }t	        ||«       y )
Nr   r   rS   r   rz   é   ry   r•   ru   )r~   Ú	ones_likeÚsumr
   r   )r(   r×   r   rL   ÚzÚwxÚwyÚwzÚqÚqxÚqyÚqzrˆ   s                r!   Ú	test_ndimzTestTrapezoid.test_ndim  s)  € ð �K‰K˜˜1˜aÓ ˆØ�K‰K˜˜1˜aÓ ˆØ�K‰K˜˜1˜bÓ!ˆà�\‰\˜!‹_  !¡ q¨¡t¡Ñ,ˆØ
ˆ1‹�‰
‹Ø
ˆ2‹�!‰‹Ø�\‰\˜!‹_  !¡ q¨¡t¡Ñ,ˆØ
ˆ1‹�‰
‹Ø
ˆ2‹�!‰‹Ø�\‰\˜!‹_  !¡ q¨¡t¡Ñ,ˆØ
ˆ1‹�‰
‹Ø
ˆ2‹�!‰‹àŠa��tˆmÑ˜q ¢a¨ ™Ñ.°°4¸ºa°<±Ñ@ˆà�V‰V�A˜š1˜d D˜=Ñ)Ñ)°ˆVÓ2ˆØ�V‰V�A˜˜4¢ D˜=Ñ)Ñ)°ˆVÓ2ˆØ�V‰V�A˜˜4 ¢q˜=Ñ)Ñ)°ˆVÓ2ˆô �a˜1šQ  d˜]Ñ+°!Ô4ˆÜ˜˜2ÔÜ�a˜1˜T¢! T˜\™?°Ô3ˆÜ˜˜2ÔÜ�a˜1˜T 4ª˜\™?°Ô3ˆÜ˜˜2Ôô �a˜1 1Ô%ˆÜ˜˜2ÔÜ�a˜1 1Ô%ˆÜ˜˜2ÔÜ�a˜1 1Ô%ˆÜ˜˜2Õr#   c           
      óè  — |j                  |j                  ddd«      d«      }|j                  |j                  ddd«      d«      }|j                  ddd«      }t        t        ||d¬«      |«       t        t        ||j	                  g d	¢«      d¬«      |«       t        t        ||j	                  g d	¢«      d d …d f   d¬«      |«       t        j                  t        «      5  t        ||j	                  g d	¢«      d d d …f   d¬«       d d d «       |j	                  g d
¢«      }t        t        ||d¬«      |«       t        t        ||j                  ddd«      d¬«      |«       y # 1 sw Y   Œ^xY w)Nr   é   é   )rS   r’   éÈ   i|  r’   ru   )r   r®   r¾   )r³   g     P`@g     �k@r   é	   )r   r~   r   r
   rÕ   r›   rÈ   Ú	Exception)r(   r×   r   rL   Úout0Úout1s         r!   Útest_gh21908zTestTrapezoid.test_gh21908@  s5  € ð
 �J‰J�r—{‘{ 1 b¨"Ó-¨wÓ7ˆØ�J‰J�r—{‘{ 1 b¨"Ó-¨wÓ7ˆà�{‰{˜3  RÓ(ˆÜœ	 ! q¨qÔ1°4Ô8Üœ	 ! r§z¡z²-Ó'@ÀqÔIÈ4ÔPäÜ�a˜2Ÿ:™:¢mÓ4²Q¸°WÑ=ÀAÔFØô	
ô �]‰]œ9Ó%ñ 	Gä�a˜2Ÿ:™:¢mÓ4°Tº1°WÑ=ÀAÕF÷	Gð �z‰zÒ/Ó0ˆÜœ	 ! q¨qÔ1°4Ô8ÜÜ�a˜2Ÿ;™; q¨!¨RÓ0°qÔ9Øõ	
÷	Gð 	Gús   Ã$'E(Å(E1c                 ó�  — t        j                  d«      }||z  }|dk(  }t         j                  j                  ||¬«      }d}t	        t        ||«      |«       t         j                  j                  ||¬«      }t	        t        ||«      |«       t         j                  j                  ||¬«      }t	        t        ||«      |«       y )NrX   r   )Úmaskr½   )r1   r2   Úmar^   r   r
   )r(   r×   r   rL   rò   Úymrˆ   Úxms           r!   Útest_maskedzTestTrapezoid.test_masked[  s�   € ô �I‰I�a‹LˆØ�‰EˆØ�A‰vˆÜ�U‰U�[‰[˜ ˆ[Ó&ˆØˆÜœ	 " aÓ(¨!Ô,ä�U‰U�[‰[˜ ˆ[Ó&ˆÜœ	 " bÓ)¨1Ô-ä�U‰U�[‰[˜ ˆ[Ó&ˆÜœ	 ! RÓ(¨!Õ,r#   Tz,array-likes only supported for NumPy backend)Únp_onlyrÙ   c                 ó  — t        t        d«      «      }|D �cg c]  }||z  ‘Œ	 }}|j                  ||j                  ¬«      }|j                  ||j                  ¬«      }t	        ||«      }t	        ||«      }t        ||«       y c c}w )NrX   r–   )r‚   r€   rÕ   r˜   r
   r   )	r(   r×   r   ÚtrL   ÚxarrÚyarrÚresÚresarrs	            r!   Útest_array_likezTestTrapezoid.test_array_likel  sz   € ô ”�q“‹NˆØÖ�qˆQ�‹UÐˆÐØ�z‰z˜! 2§:¡:ˆzÓ.ˆØ�z‰z˜! 2§:¡:ˆzÓ.ˆÜ˜˜1‹oˆÜ˜4 Ó&ˆÜ˜˜VÕ$ùò s   ™BN)r4   r5   r6   rØ   rÚ   r›   rœ   Úusefixturesrç   rð   r   rö   rþ   r   r#   r!   rÐ   rÐ     sÍ   „ ò,ñ �kØJÐKôMà‡[�[×ÑÐ/Ó0ñ#ó 1óMð#ñJ �kØJÐKôMà‡[�[×ÑÐ/Ó0ñ
ó 1óMð
ð0 ñ-ó ð-ñ  ˜dØMÐNôPà‡[�[×ÑÐ/Ó0ñ%ó 1óPñ%r#   rÐ   c                   ó²  — e Zd Zej                  j
                  d„ «       Zdd„Zej                  j                  dddg«      ej                  j                  ddd	g«      d
„ «       «       Z	ej                  j                  dddgddgddgddgg«      d„ «       Z
ej                  j
                  ej                  j                  dddg«      d„ «       «       Zd„ Zy)ÚTestQMCQuadc           	      óž  — d}t        j                  t        |¬«      5  t        dddgddg«       d d d «       d}t        j                  t        |¬«      5  t        d„ ddgddg«       d d d «       d„ }d	}t        j
                  t        |¬«      5  t        |ddgddg«       d d d «       d
}t        j                  t        |¬«      5  t        d„ ddgddgd¬«       d d d «       d}t        j                  t        |¬«      5  t        d„ ddgddgd¬«       d d d «       d}t        j                  t        |¬«      5  t        d„ ddgddgd¬«       d d d «       d}t        j                  t        |¬«      5  t        d„ ddgddgt        j                  j                  d«      ¬«       d d d «       d}t        j                  t        |¬«      5  t        d„ ddgddgd¬«       d d d «       y # 1 sw Y   �Œ¼xY w# 1 sw Y   �Œ‘xY w# 1 sw Y   �ŒdxY w# 1 sw Y   �Œ7xY w# 1 sw Y   �Œ
xY w# 1 sw Y   ŒÜxY w# 1 sw Y   Œ‘xY w# 1 sw Y   y xY w)Nz`func` must be callable.rÆ   za duckr   r   z/`func` must evaluate the integrand at points...c                   ó   — y©Nr   r   r   r#   r!   r"   z3TestQMCQuad.test_input_validation.<locals>.<lambda>‚  ó   � r#   c                 óN   — | j                   dk(  sJ ‚t        j                  | «      S r  )Úndimr1   rÞ   rG   s    r!   Úfuncz/TestQMCQuad.test_input_validation.<locals>.func„  s    € Ø—6‘6˜Q’;Ð�;Ü—6‘6˜!“9Ðr#   z8Exception encountered when attempting vectorized call...z`n_points` must be an integer.c                  ó   — yr  r   rG   s    r!   r"   z3TestQMCQuad.test_input_validation.<locals>.<lambda>�  r  r#   g     �@)Ún_pointsz!`n_estimates` must be an integer.c                  ó   — yr  r   rG   s    r!   r"   z3TestQMCQuad.test_input_validation.<locals>.<lambda>‘  r  r#   r°   )Ún_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.c                  ó   — yr  r   rG   s    r!   r"   z3TestQMCQuad.test_input_validation.<locals>.<lambda>•  r  r#   )Úqrngz8`qrng` must be initialized with dimensionality equal to c                  ó   — yr  r   rG   s    r!   r"   z3TestQMCQuad.test_input_validation.<locals>.<lambda>™  r  r#   z,`log` must be boolean \(`True` or `False`\).c                  ó   — yr  r   rG   s    r!   r"   z3TestQMCQuad.test_input_validation.<locals>.<lambda>�  r  r#   r’   ©Úlog)
r›   rÈ   Ú	TypeErrorr   rÉ   ÚwarnsÚUserWarningr   ÚqmcÚSobol)r(   Úmessager  s      r!   Útest_input_validationz!TestQMCQuad.test_input_validationz  s&  € à,ˆÜ�]‰]œ9¨GÔ4ñ 	/Ü�X  1˜v¨¨1 vÔ.÷	/ð DˆÜ�]‰]œ:¨WÔ5ñ 	0Ü‘Y  A ¨¨A¨Ô/÷	0ò	ð MˆÜ�\‰\œ+¨WÔ5ñ 	+Ü�T˜A˜q˜6 A q 6Ô*÷	+ð 3ˆÜ�]‰]œ9¨GÔ4ñ 	CÜ‘[ 1 a &¨1¨a¨&¸6ÕB÷	Cð 6ˆÜ�]‰]œ9¨GÔ4ñ 	CÜ‘[ 1 a &¨1¨a¨&¸cÕB÷	Cð MˆÜ�]‰]œ9¨GÔ4ñ 	AÜ‘[ 1 a &¨1¨a¨&°xÕ@÷	Að MˆÜ�]‰]œ:¨WÔ5ñ 	KÜ‘[ 1 a &¨1¨a¨&´u·y±y·±ÀqÓ7IÕJ÷	Kð BˆÜ�]‰]œ9¨GÔ4ñ 	:Ü‘[ 1 a &¨1¨a¨&°bÕ9÷	:ð 	:÷?	/ñ 	/ú÷	0ñ 	0ú÷	+ñ 	+ú÷	Cñ 	Cú÷	Cñ 	Cú÷	Að 	Aú÷	Kð 	Kú÷	:ð 	:ús_   žG*ÁG7ÂHÃHÄHÄ;H+Å52H7ÇIÇ*G4Ç7HÈHÈHÈH(È+H4È7I ÉIé   rz   Nc           	      óÀ  ‡‡‡— |€t        j                  d«      }d}t        j                  |«      Št        j                  |«      Šˆˆfd„Št         j                  j                  d«      }t        j                  j                  ||¬«      }t        j                  |«      }t        j                  |«      |z  }t        ‰|||||¬«      }	t        j                  j                  |‰‰|¬«      }
t        j                  |dz
  d«      |	j                  z  }t        |	j                   |
|¬	«       t        j"                  |«      |	j                   z  d
kD  sJ ‚t         j                  j                  d«      }t        j                  j                  ||¬«      }t        ˆfd„||||d|¬«      }t        t        j$                  |j                   «      |	j                   d¬«       t        j&                  |j                   «      t        j"                  |«      d
k  rt         j(                  nd
k(  sJ ‚t        t        j$                  |j                  «      |	j                  dd¬«       y )Nr   c                 óZ   •— t         j                  j                  | j                  ‰‰«      S r/   )r   Úmultivariate_normalÚpdfÚT)r   ÚcovÚmeans    €€r!   r  z$TestQMCQuad.basic_test.<locals>.func¦  s"   ø€ Ü×,Ñ,×0Ñ0°·±°d¸CÓ@Ð@r#   l   é^^@E9®? )Úseed)r
  r  r  )Úlower_limitr   g×£p=
×ï?©rI   r   c                  ó4   •— t        j                   ‰| Ž «      S r/   )r1   r  )r=   r  s    €r!   r"   z(TestQMCQuad.basic_test.<locals>.<lambda>¶  s   ø€ ¬¯©©t°T¨{Ó(;€ r#   T)r
  r  r  r  ç›+¡†›„=r&   ç¼‰Ø—²Òœ<rH   )r1   ÚonesÚzerosÚeyeÚrandomÚdefault_rngr   r  r  r   r  Úcdfr   ÚstdtritÚstandard_errorr   r‹   ÚprodrÓ   ÚimagrÖ   )r(   r
  r  Úsignsr  Úrngr  r;   r<   rü   ÚrefrI   Úlogresr   r  r!  s                @@@r!   Ú
basic_testzTestQMCQuad.basic_testŸ  sÆ  ú€ Øˆ=Ü—G‘G˜A“JˆEØˆÜ�x‰x˜‹~ˆÜ�f‰f�T‹lˆõ	Aô �i‰i×#Ñ#Ð$7Ó8ˆÜ�y‰y�‰˜t¨#ˆÓ.ˆÜ�H‰H�T‹NˆÜ�G‰G�D‹M˜EÑ!ˆÜ�t˜Q ¨HØ#.°Tô;ˆä×'Ñ'×+Ñ+¨A¨t°SÀaÐ+ÓHˆÜ�‰˜{¨1™}¨eÓ4°s×7IÑ7IÑIˆÜ˜Ÿ™ c°Õ5Ü�w‰w�u‹~˜cŸl™lÑ*¨QÒ.Ð.Ð.ä�i‰i×#Ñ#Ð$7Ó8ˆÜ�y‰y�‰˜t¨#ˆÓ.ˆÜÓ;¸QÀØ#+¸Ø"¨ô/ˆô 	œŸ™˜vŸ™Ó/°·±ÀEÕJÜ�w‰w�v—‘Ó'´R·W±W¸U³^ÀaÒ5G¬B¯EªEÈQÒOÐOÐOÜœŸ™˜v×4Ñ4Ó5Ø×*Ñ*°¸Uö	Dr#   r
  i   r  rs   c                 ó(   — | j                  ||«       y r/   ©r6  )r(   r
  r  s      r!   Ú
test_basiczTestQMCQuad.test_basic¾  s   € ð 	�‰˜ +Õ.r#   r2  r   ry   c                 ó(   — | j                  |¬«       y )N)r2  r8  )r(   r2  s     r!   Ú	test_signzTestQMCQuad.test_signÃ  s   € à�‰˜eˆÕ$r#   r  FTc                 óú   — d}t        j                  t        |¬«      5  t        d„ ddgddg|¬«      }d d d «       j                  |rt
        j                   ndk(  sJ ‚|j                  dk(  sJ ‚y # 1 sw Y   Œ?xY w)Nz-A lower limit was equal to an upper limit, sorÆ   c                  ó   — yr  r   rG   s    r!   r"   z'TestQMCQuad.test_zero.<locals>.<lambda>Ì  r  r#   r   r   r  )r›   r  r  r   r‹   r1   Úinfr/  )r(   r  r  rü   s       r!   Ú	test_zerozTestQMCQuad.test_zeroÇ  sy   € ð BˆÜ�\‰\œ+¨WÔ5ñ 	AÜ™;¨¨A¨°°A°¸CÔ@ˆC÷	Aà�|‰|©3¤§¡¡°AÒ6Ð6Ð6Ø×!Ñ! QÒ&Ð&Ñ&÷	Að 	Aús   žA1Á1A:c                 óØ   — d„ }t        |dd«      }t        j                  j                  dd¬«      t        j                  j                  dd¬«      z
  }t	        |j
                  |d«       y )Nc                 óD   — t         j                  j                  | d¬«      S )Nr   ©Úscale)r   Únormr  rG   s    r!   r  z-TestQMCQuad.test_flexible_input.<locals>.funcÓ  s   € Ü—:‘:—>‘> !¨1�>Ó-Ð-r#   r   r   r   rB  g{®Gáz„?)r   r   rD  r-  r   r‹   )r(   r  rü   r4  s       r!   Útest_flexible_inputzTestQMCQuad.test_flexible_inputÐ  sS   € ò	.ô �t˜Q Ó"ˆÜ�j‰j�n‰n˜Q aˆnÓ(¬5¯:©:¯>©>¸!À1¨>Ó+EÑEˆÜ˜Ÿ™ c¨4Õ0r#   )r  rz   N)r4   r5   r6   r›   rœ   Úthread_unsafer  r6  r�   r9  r;  r?  rE  r   r#   r!   r  r  y  sê   „ Ø‡[�[×Ññ":ó ð":óHDð> ‡[�[×Ñ˜Z¨$°¨Ó7Ø‡[�[×Ñ˜]¨Q°¨GÓ4ñ/ó 5ó 8ð/ð ‡[�[×Ñ˜W¨¨1 v°°B¨x¸"¸a¸À1ÀbÀ'Ð&JÓKñ%ó Lð%ð ‡[�[×ÑØ‡[�[×Ñ˜U U¨D MÓ2ñ'ó 3ó ð'ó1r#   r  ry   ©r   rl   r¤   rv   c                ót  ‡	— | j                   |   dk  r%|€t        | |||d ¬«      S |t        | |||d¬«      z   S t        j                  | |d«      } t        j                  |«      dkD  rt        j                  ||d«      n|}t        j                  |«      dkD  rt        j                  ||d«      n|}t        j                  |«      dkD  rt        j                  ||d«      n|}| j                   d   Š	|�|t        j
                  ‰	«      z  n|}|d u }|rdn|}t        j                  || j                   «      }t        j                  || j                   d d dz   «      }t        j                  | ||fd¬«      }ˆ	fd„}t        j                  |d|«      }|r	|d	dd …f   n|}t        j                  |d|«      }|S )
NrS   )r   rl   rv   r¤   r   ry   r   )r   r•   c                 ó>   •— t        | d ‰ | ‰d‰z   | d‰z  d  ¬«      S )Nr   )r   r¤   )r   )rß   r    s    €r!   rp   z*cumulative_simpson_nd_reference.<locals>.fö  s,   ø€ Ü! ! B Q %¨1¨Q¨q°©s¨8¸Q¸qÀ¹s¸t¸WÔEÐEr#   .)	r·   r	   r1   Úmoveaxisr  r2   Úbroadcast_toÚconcatenateÚapply_along_axis)
rL   r   rl   r¤   rv   Úinitial_was_nonerß   rp   rü   r    s
            @r!   Úcumulative_simpson_nd_referencerO  Û  sŒ  ø€ à‡w�wˆt�}�qÒØˆ?Ü'¨¨Q°2¸DÈ$ÔOÐOàÔ1°!°q¸RÀdÐTUÔVÑVÐVô 	�‰�A�t˜RÓ €AÜ$&§G¡G¨A£J°¢NŒ�‰�A�t˜RÔ ¸€AÜ&(§g¡g¨b£k°A¢oŒ�‰�R˜˜rÔ	"¸2€BÜ02·±¸Ó0@À1Ò0DŒb�k‰k˜' 4¨Ô,È'€Gð 	
�‰�‰€AØ˜^ˆŒR�Y‰Y�q‹\Ò°€Aà $�ÐÙ#‰a¨€Gô 	�‰˜˜1Ÿ7™7Ó#€AÜ�o‰o˜g q§w¡w¨s° |°dÑ':Ó;€GÜ
�‰˜˜1˜g�¨RÔ0€AôFä
×
Ñ
˜a  QÓ
'€Cñ +ˆ#ˆc�1‘2ˆgŠ,°€CÜ
�+‰+�c˜2˜tÓ
$€CØ€Jr#   c                   óà  — e Zd Z ej                  d«      Zedz  Zej                  j                  dd«      ej                  j                  dd«      d„ «       «       Z
ej                  j                  d ej                  dd	«      «      ej                  j                  d
d«      ej                  j                  dd«      ej                  j                  dd«      ej                  j                  dd«      d„ «       «       «       «       «       Zej                  j                  dd eg d¢¬«      fd eeg d¢geeg¬«      fd eeeegeeegd¬«      fd eg g ¬«      fd ed¬«      fd e ej                  d«      ¬«      fd  e ej                  d«      ¬!«      fd" ed# ej                  d«      ¬$«      fg«      d%„ «       Zd&„ Zd'„ Zej                  j                   ej                  j"                   e ej(                  ej*                   ej,                  dd	d(¬)«       ej0                  d*d(d+¬,«      j3                  d-„ «      ¬.«      ¬/«      d0„ «       «       «       Zej                  j                   ej                  j"                   e ej(                  ej*                   ej,                  dd	d(¬)«       ej0                  d*d(d+¬,«      j3                  d1„ «      ¬.«      ¬/«      d2„ «       «       «       Zy#)3ÚTestCumulativeSimpsonr   r   Úuse_dx)FTÚuse_initialc                 ó*  — t         j                  j                  d«      }d}|rdnd}|j                  «       }|dk(  r$t        j                  |j                  |«      «      n(t        j                  |«      |z  |j                  «       z   }t        j                  |dz   «      d d …t         j
                  f   }|j                  |dz   «      d d …t         j
                  f   }	t        j                  |	||z  z  d¬«      }
t        j                  |	||dz   z  z  |dz   z  d¬«      }|r|n
||d   z
  dd  }|r|d   nd }|rd|ind	|i}t        |
fi |¤d
|i¤Ž}|st        ||d¬«       y |rdnd}t        ||d¬«       t        ||d d…   ||d d…   d¬«       y )Nì   F»*ŒBG r’   rS   r   r   r   r•   rl   r   r¤   gVçž¯â<r&   g{®Gázd?)	r1   r+  r,  Úsortr2   ÚnewaxisrÞ   r   r   )r(   rR  rS  r3  r    Úorderrl   r   r‡   ÚcrL   ÚYr4  r¤   Úkwargrü   Úi0s                    r!   rª   zTestCumulativeSimpson.test_1d  sy  € ô
 �i‰i×#Ñ#Ð$8Ó9ˆØˆñ ‘ ˆØ�Z‰Z‹\ˆØ',°¢zŒR�W‰W�S—Z‘Z “]Ô#Ü—)‘)˜A“,˜r‘/ C§J¡J£LÑ0ð 	
ä�I‰I�e˜a‘iÓ ¢¤B§J¡J Ñ/ˆØ�J‰J�u˜q‘yÓ!¢!¤R§Z¡Z -Ñ0ˆÜ�F‰F�1�Q˜‘T‘6 Ô"ˆÜ�F‰F�1�Q˜˜Q™‘Z‘<  Q¡Ñ'¨aÔ0ˆÙ‰a Q q¨¡t¡V¨Q¨R Lˆñ &�!�A’$¨4ˆÙ$��r‘
¨3°¨(ˆÜ  Ñ= eÑ=°WÒ=ˆñ Ü˜C ¨5Ö1á!‘ qˆBä˜C ¨6Õ2ä˜C   A ™J¨¨B¨E°¨E©
¸Ö?r#   rv   éýÿÿÿrS   Úx_ndim)r   rS   Úx_len)r   r   r]   Úi_ndim)Nr   rS   rl   )NTc                 ó„  — t         j                  j                  d«      }dd|g}|d   ||   c||<   |d<   |j                  «       }d||<   |dk(  r|nd}	|j                  |¬«      }
d	\  }}|r(|dkD  r|j                  |¬«      n|j                  «       }nT|dkD  r't        j                  |j                  |¬«      |¬
«      n't        j                  |j                  ||   ¬«      «      }|€d n|j                  |	¬«      }t        |
||||¬«      }t        |
||||¬«      }t         j                  j                  ||d¬«       y )NrU  rX   é   ry   r   rS   r   ©Úsize)NNr•   rG  çVçž¯Ò<r&   )	r1   r+  r,  ÚcopyrV  r   rO  Útestingr   )r(   rv   r^  r_  r`  rl   r3  r·   Úshape_len_1Úi_shaperL   r   r¤   rü   r4  s                  r!   Útest_ndzTestCumulativeSimpson.test_nd'  s5  € ô �i‰i×#Ñ#Ð$8Ó9ˆð �A�u�ˆØ!& r¡¨E°$©KÐˆˆd‰�U˜2‘YØ—j‘j“lˆØˆ�DÑØ!'¨1¢‘+°"ˆð �J‰J˜EˆJÓ"ˆØ‰ˆˆ2ÙØ17¸!²�—‘ �Ô-ÀÇÁÃ‰Bà?EÈºz”—‘˜Ÿ™¨˜Ó/°dÕ;Ü—g‘g˜cŸj™j¨e°D©k˜jÓ:Ó;ð à ˜.‘$¨c¯j©j¸g¨jÓ.Fˆô !  a¨B¸ÀdÔKˆÜ-¨a°1¸ÀWÐSWÔXˆÜ
�
‰
×"Ñ" 3¨°%Ð"Õ8r#   )r  Úkwarg_updatezx must be strictly increasing)r   r   rS   r   rG   )r   r   r   rz   )r   rL   r   )r   rL   rv   rÌ   z-`axis=4` is not valid for `y` with `y.ndim=1`r•   z+shape of `x` must be the same as `y` or 1-DrX   z'`initial` must either be a scalar or...r£   z"`dx` must either be a scalar or...N)r   rl   c           
      óÖ   — t        | j                  | j                  d d d¬«      }t        j                  t
        |¬«      5  t        di t        |fi |¤Ž¤Ž d d d «       y # 1 sw Y   y xY w)Nry   )rL   r   rl   r¤   rv   rÆ   r   )ÚdictÚy0Úx0r›   rÈ   rÉ   r   )r(   r  rk  Úkwargs0s       r!   Útest_simpson_exceptionsz-TestCumulativeSimpson.test_simpson_exceptionsF  sZ   € ô ˜Ÿ™ D§G¡G°¸dÈÔLˆÜ�]‰]œ:¨WÔ5ñ 	@ÜÑ?¤ gÑ!>°Ñ!>Ò?÷	@÷ 	@ñ 	@ús   Á AÁA(c                 ó˜   — t         j                  j                  d«      }|j                  d¬«      }t        |d¬«      }t	        |d«       y )NrU  r’   rc  r   rk   )r1   r+  r,  r   r   )r(   r3  rL   rü   s       r!   Útest_special_casesz(TestCumulativeSimpson.test_special_casesU  s=   € ä�i‰i×#Ñ#Ð$8Ó9ˆØ�J‰J˜BˆJÓˆÜ   qÔ)ˆÜ�S˜!Õr#   c                 ór  — t        j                  |d¬«      }t        ||«      }t        |dddd…f   |dddd…f   «      dddd…f   }g |j                  dd ¢d‘­}t        j                  t        j
                  |«      |ddd…f   |ddd…f   z
  t        j
                  |«      gd¬«      }d|dddd…f<   |S )aj  `cumulative_simpson` and `simpson` can be tested against other to verify
        they give consistent results. `simpson` will iteratively be called with
        successively higher upper limits of integration. This function calculates
        the theoretical correction required to `simpson` at even intervals to match
        with `cumulative_simpson`.
        ry   r•   .Nr   rc   r   )r1   Údiffr   r·   rL  r)  )r(   rL   r   ÚdÚsub_integrals_h1Úsub_integrals_h2Úzeros_shapeÚtheoretical_differences           r!   Ú1_get_theoretical_diff_between_simps_and_cum_simpszGTestCumulativeSimpson._get_theoretical_diff_between_simps_and_cum_simps`  så   € ô �G‰G�A˜BÔˆÜ@ÀÀAÓFÐÜ@Øˆc‘4�R�4ˆi‰L˜!˜C¡ 2 ˜I™,ó
à
‰t�ˆtˆ)ñÐð
 )˜Ÿ™  ˜Ð( aÑ(ˆÜ!#§¡ä—‘˜Ó%Ø! # q¡r 'Ñ*Ð-=¸cÀ3ÀBÀ3¸hÑ-GÑGÜ—‘˜Ó%ðð
 ô"
Ðð -0Ð˜s A D q D˜yÑ)ð &Ð%r#   r’   )Úmax_dimsÚmin_sideÚmax_siderÒ   F)Ú	allow_nanc                 ó   — t        | «      dkD  S ©NgH¯¼šò×z>©ÚabsrG   s    r!   r"   zTestCumulativeSimpson.<lambda>„  ó   € Ì#ÈaË&ÐSWÉ-€ r#   )ÚelementsrÍ   c                 ó  — d„ }t        |d¬«      } ||«      }| j                  |t        j                  |j                  d   «      ¬«      }t        j
                  j                  |ddd…f   |ddd…f   |ddd…f   z   d	¬
«       y)áe  Theoretically, the output of `cumulative_simpson` will be identical
        to `simpson` at all even indices and in the last index. The first index
        will not match as `simpson` uses the trapezoidal rule when there are only two
        data points. Odd indices after the first index are shown to match with
        a mathematically-derived correction.c                 ó®   — t        j                  t        d| j                  d   dz   «      D �cg c]  }t	        | dd |…f   d¬«      ‘Œ c}d¬«      S c c}w )Nr   ry   r   .rU   rk   r•   ©r1   Ústackr€   r·   r   )rL   r‡   s     r!   Úsimpson_referencezhTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx.<locals>.simpson_reference�  sM   € Ü—8‘8Ü6;¸A¸q¿w¹wÀr¹{È1¹}Ó6MÖN°”˜˜3   ˜7™¨Ö,ÒNÐUWôð ùÚNs   ®ArU   rk   ry   rG   .r   Nr'  r$  )r   r{  r1   r2   r·   rg  r   )r(   rL   r‹  rü   r4  rz  s         r!   Ú7test_cumulative_simpson_against_simpson_with_default_dxzMTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx~  s‘   € ò"	ô
 !  sÔ+ˆÙ Ó"ˆØ!%×!WÑ!WØ”—‘˜1Ÿ7™7 2™;Ó'ð "Xó "
Ðô 	�
‰
×"Ñ"Ø��Q‘R�‰L˜#˜c 1¡2˜g™,Ð)?ÀÀQÁRÀÑ)HÑHÈuð 	#õ 	
r#   c                 ó   — t        | «      dkD  S r�  r‚  rG   s    r!   r"   zTestCumulativeSimpson.<lambda>£  r„  r#   c           	      ó¶  — d|j                   d   dz
  z  }t        j                  dd|j                   d   ¬«      }|dd d|z  t        j                  j	                  ddt        |«      dz
  «      z  z   |dd d„ }t        ||¬	«      } |||«      }| j                  ||«      }t        j                  j                  |d
dd…f   |d
dd…f   |d
dd…f   z   «       y)r‡  r’   ry   r   r   r¡   NrD   c                 ó¼   — t        j                  t        d| j                  d   dz   «      D �cg c]  }t	        | dd |…f   |dd |…f   ¬«      ‘Œ c}d¬«      S c c}w )Nr   ry   r   .rG   r•   r‰  )rL   r   r‡   s      r!   r‹  zXTestCumulativeSimpson.test_cumulative_simpson_against_simpson.<locals>.simpson_reference²  sZ   € Ü—8‘8Ü<AÀ!ÀQÇWÁWÈRÁ[ÐQRÁ]Ó<SÖT°q”˜˜3   ˜7™ q¨¨b¨q¨b¨¡zÖ2ÒTØôð ùÚTs   ®"ArG   .)
r·   r1   r~   r+  ÚuniformÚlenr   r{  rg  r   )r(   rL   Úintervalr   r‹  rü   r4  rz  s           r!   Ú'test_cumulative_simpson_against_simpsonz=TestCumulativeSimpson.test_cumulative_simpson_against_simpson�  sá   € ð" �q—w‘w˜r‘{ Q‘Ñ'ˆÜ�K‰K˜˜2 1§7¡7¨2¡;Ô/ˆØ�!�"�˜˜H™¤R§Y¡Y×%6Ñ%6°r¸1¼cÀ!»fÀq¹jÓ%IÑIÑIˆˆ!ˆ"ˆò	ô !  aÔ(ˆÙ  1Ó%ˆØ!%×!WÑ!WØˆqó"
Ðô 	�
‰
×"Ñ"Ø��Q‘R�‰L˜#˜c 1¡2˜g™,Ð)?ÀÀQÁRÀÑ)HÑHõ	
r#   )r4   r5   r6   r1   r2   ro  rn  r›   rœ   r�   rª   rj  rm  rq  rs  r{  rF  Úslowr   Úhyp_numÚarraysr˜   Úarray_shapesÚstÚfloatsÚfilterrŒ  r“  r   r#   r!   rQ  rQ     sÓ  „ Ø	ˆ�‰�1‹€BØ	ˆQ‰€Bà‡[�[×Ñ˜X }Ó5Ø‡[�[×Ñ˜]¨MÓ:ñ@ó ;ó 6ð@ðB ‡[�[×Ñ˜V Y R§Y¡Y¨r°1Ó%5Ó6Ø‡[�[×Ñ˜X vÓ.Ø‡[�[×Ñ˜W iÓ0Ø‡[�[×Ñ˜X }Ó5Ø‡[�[×Ñ˜T <Ó0ñ9ó 1ó 6ó 1ó /ó 7ð
9ð4 ‡[�[×ÑÐ8Ø	(©$²Ô*>Ð?Ø	(©$°"²lÐ1CÈÈBÀxÔ*PÐQØ	(©$°"°b¸"°À"ÀbÈ"ÀÐTUÔ*VÐWØ	)©4°"¸Ô+;Ð<Ø	8¹$ÀA¼,ÐGØ	6¹¸y¸r¿y¹yÈ»|Ô8LÐMØ	2±DÀÀÇÁÈ1ÃÔ4NÐOØ	-©t°d¸y¸r¿y¹yÈ»|Ô/LÐMð	;ó 	ñ@ó	ð@ò
ò&ð< ‡[�[×ÑØ‡[�[×ÑÙ
Ø
ˆ'�.‰.Ø�J‰JØ ˆG× Ñ ¨!°aÀ"ÔEØ�R—Y‘Y˜s B°%Ô8×?Ñ?Ñ@WÓXô
ôñ
óó ó ð
ð, ‡[�[×ÑØ‡[�[×ÑÙ
Ø
ˆ'�.‰.Ø�J‰JØ ˆG× Ñ ¨!°aÀ"ÔEØ�R—Y‘Y˜s B°%Ô8×?Ñ?Ñ@WÓXô
ôñ
óó ó ñ
r#   rQ  c                   óš   — e Zd Zd„ Zd„ Zej                  j                  d e e	ddd«      «       e e	ddd	«      «      z   «      d
„ «       Z
y)ÚTestLebedevc                 ó’   — d}t        j                  t        |¬«      5  t        j                  d«       d d d «       y # 1 sw Y   y xY w)NzOrder n=-1 not available...rÆ   ry   )r›   rÈ   r:   r   Úlebedev_rule)r(   r  s     r!   r  z!TestLebedev.test_input_validationÂ  s9   € à/ˆÜ�]‰]Ô.°gÔ>ñ 	'Ü×"Ñ" 2Ô&÷	'÷ 	'ñ 	'ús	   ž=½Ac                 óÐ   — d„ }t        j                  d«      \  }}| ||«      z  }d}t        ||d¬«       t        t        j                  |«      dt        j
                  z  «       y )Nc                 ó2   — t        j                  | d   «      S )Nr   )r1   rÓ   rG   s    r!   rp   z&TestLebedev.test_quadrature.<locals>.fË  s   € Ü—6‘6˜!˜A™$“<Ðr#   é   gá9‰-@r&  r&   r   )r   rž  r   r1   rÞ   rÖ   )r(   rp   r   Úwrü   r4  s         r!   Útest_quadraturezTestLebedev.test_quadratureÈ  sU   € ò	 ô ×%Ñ% bÓ)‰ˆˆ1Ø‘!�A“$‰hˆØˆÜ˜˜S uÕ-ÜœŸ™˜q›	 1¤r§u¡u¡9Õ-r#   rX  rS   rn   r   é#   é„   rb  c                 ó^  — t        j                  |«      \  }}t        j                  dd¬«      5  t	        j
                  |j                  d¬«      }t        |j                  dd¬«       d d d «       t        t        j                  |«      dt        j                  z  «       y # 1 sw Y   Œ:xY w)NÚignore)ÚdivideÚinvalidr   r•   re  r$  r   )r   rž  r1   Úerrstater   Údirectional_statsr  r   Úmean_resultant_lengthrÞ   rÖ   )r(   rX  r   r¢  rü   s        r!   Útest_propertieszTestLebedev.test_propertiesÔ  s�   € ä×%Ñ% eÓ,‰ˆˆ1ä�[‰[ °(Ô;ñ 	FÜ×)Ñ)¨!¯#©#°AÔ6ˆCÜ˜C×5Ñ5°q¸uÕE÷	Fô 	œŸ™˜q›	 1¤R§U¡U¡7Õ+÷		Fð 	Fús   °:B#Â#B,N)r4   r5   r6   r  r£  r›   rœ   r�   r‚   r€   r­  r   r#   r!   rœ  rœ  Á  sS   „ ò'ò
.ð ‡[�[×Ñ˜W¡d©5°°B¸«?Ó&;¹dÁ5ÈÈSÐRSÓCTÓ>UÑ&UÓVñ,ó Wñ,r#   rœ  ).r›   Únumpyr1   Únumpy.testingr   r   r   Ú
hypothesisr   Úhypothesis.strategiesÚ
strategiesr˜  Úhypothesis.extra.numpyÚextrar•  Úscipy.integrater   r   r	   r
   r   r   r   r   r   Úscipy.integrate._quadraturer   Úscipyr   r   r   Úscipy.conftestr   r   Úscipy._lib._array_api_no_0dr   rœ   rÚ   r   r8   rŸ   rÐ   r  rO  rQ  rœ  r   r#   r!   ú<module>rº     sÄ   ðã Û ß LÑ LÝ Ý "ß (Ð (÷;÷ ;õ ;õ Nç +Ñ +ß DÝ 7à—;‘;×/Ñ/Ð ÷3ñ 3÷ N'ñ N'÷bV'ñ V'ðr ÷e%ð e%ó ðe%÷P_1ñ _1ðD -1°TÀ4Èbô "÷J
ñ 
÷B,ò ,r#   