Ë
    âQ(hš�  ã                   ó,  — d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZmZmZ d dlmZ ej.                  j1                  d«      gZej.                  j4                  Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d „ Z3d!„ Z4e G d"„ d#«      «       Z5ej.                  jm                  d$d%g«      ej.                  jm                  d&d'g«      ej.                  jm                  d(g d)¢«      e G d*„ d+«      «       «       «       «       Z7e G d,„ d-«      «       Z8e G d.„ d/«      «       Z9e G d0„ d1«      «       Z:e ed2d3g¬4«       G d5„ d6«      «       «       Z; G d7„ d8e«      Z<y)9é    N)Úarray_namespaceÚxp_assert_closeÚxp_sizeÚ	np_compatÚis_array_api_strict)Úarray_api_compatible)Úcubature)ÚRuleÚ	FixedRuleÚNestedFixedRuleÚGaussLegendreQuadratureÚGaussKronrodQuadratureÚGenzMalikCubature)Ú_InfiniteLimitsTransformÚskip_xp_backendsc                 óT   — |j                  | d«      }|j                  |d«      }||z  S ©N)éÿÿÿÿé   r   )r   r   r   ©Úreshape)ÚxÚnÚxpÚ
x_reshapedÚ
n_reshapeds        úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/integrate/tests/test_cubature.pyÚbasic_1d_integrandr   %   s-   € Ø—‘˜A˜zÓ*€JØ—‘˜A˜zÓ*€Jà�zÑ!Ð!ó    c                 ó>   — |j                  d| dz   z  | dz   z  d«      S )Né   r   ©r   r   r   ©r   r   s     r   Úbasic_1d_integrand_exactr$   ,   s#   € à�:‰:�a˜!˜A™#‘h  !¡‘n gÓ.Ð.r   c                 ón   — |j                  |j                  | d¬«      d«      |j                  |d«      z  S )Nr   ©Úaxisr"   ©r   r   )r   Úsum)r   r   r   s      r   Úbasic_nd_integrandr*   1   s0   € Ø�:‰:�b—f‘f˜Q R�fÓ(¨'Ó2°B·J±J¸qÀ'Ó4JÑJÐJr   c                 ó>   — dd| z   z   dd| z   z  z   d| z   d| z   z  z  S )Nr!   é   é   r   © r#   s     r   Úbasic_nd_integrand_exactr/   5   s0   € à��1‘‰XˆI˜˜A˜a™C™Ñ  A a¡C¨!¨A©#¡;Ñ/Ð/r   c                 ó$  — | j                   d   | j                   d   }}|d   }|j                  | |gdgt        |j                   «      dz
  z  ¢|‘­«      }|j                  dt        j
                  z  |z  |j                  ||z  d¬«      z   «      S )zÍ
    .. math:: f_1(\mathbf x) = \cos\left(2\pi r + \sum^n_{i = 1}\alpha_i x_i\right)

    .. code-block:: mathematica

        genzMalik1980f1[x_List, r_, alphas_List] := Cos[2*Pi*r + Total[x*alphas]]
    r   r   ©N.r   r!   r&   )Úshaper   ÚlenÚcosÚmathÚpir)   )r   ÚrÚalphasr   ÚnpointsÚndimÚalphas_reshapedr   s           r   Úgenz_malik_1980_f_1r<   :   s‹   € ð —G‘G˜A‘J §¡¨¡ˆT€Gà˜YÑ'€OØ—‘˜A ÐN¨A¨3´°F·L±LÓ0AÀAÑ0EÑ+FÐNÈÑNÓO€Jà�6‰6�!”D—G‘G‘)˜A‘+ §¡ ¸Ñ'CÈ" Ó MÑMÓNÐNr   c           	      óò  — t        | «      }|j                  | g dgt        |j                  «      dz
  z  ¢|‘­«      } |j                  |g dgt        |j                  «      dz
  z  ¢|‘­«      }d|z  dz  |j	                  |d¬«      z  |j                  dt        j                  z  |z  |j                  || |z   z  dz  d¬«      z   «      z  |j	                  |j                  || |z
  z  dz  «      d¬«      z  S )Nr   éþÿÿÿr   r&   r!   ç      à?)
r   r   r3   r2   Úprodr4   r5   r6   r)   Úsin)ÚaÚbr7   r8   r   r:   s         r   Úgenz_malik_1980_f_1_exactrD   K   s   € Ü�1‹:€DØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€AØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€Að 
ˆd‰
Ø
ñ	Ø�G‰G�F ˆGÓ$ñ	%à
�&‰&�”4—7‘7‘˜1‘˜rŸv™v f°°!±¡n°sÑ&:À˜vÓDÑDÓ
Eñ	Fð �'‰'�"—&‘&˜ 1 Q¡3™¨Ñ)Ó*°ˆ'Ó
4ñ	5ðr   c                 óÐ   — |j                  | j                  |d d «      «      }|j                  | j                  |«      «      }d}|j                  |d¬«      d   }||z  |z  }||fS )Nr   é	   r&   ©.N©ÚasarrayÚrandomr)   )Úrngr2   r   r7   r8   Ú
difficultyÚnormalisation_factorss          r   Úgenz_malik_1980_f_1_random_argsrN   X   sm   € Ø
�
‰
�3—:‘:˜e C R˜jÓ)Ó*€AØ�Z‰Z˜Ÿ
™
 5Ó)Ó*€Fà€JØŸF™F 6°˜FÓ3°IÑ>ÐØ˜&Ñ Ð#8Ñ8€Fàˆvˆ;Ðr   c                 óú   — | j                   d   | j                   d   }}|d   }|d   }|j                  | |gdgt        |j                   «      dz
  z  ¢|‘­«      }d|j                  |dz  ||z
  dz  z   d¬«      z  S )zì
    .. math:: f_2(\mathbf x) = \prod^n_{i = 1} (\alpha_i^2 + (x_i - \beta_i)^2)^{-1}

    .. code-block:: mathematica

        genzMalik1980f2[x_List, alphas_List, betas_List] :=
            1/Times @@ ((alphas^2 + (x - betas)^2))
    r   r   r1   r   r!   r&   )r2   r   r3   r@   ©	r   r8   Úbetasr   r9   r:   r;   Úbetas_reshapedr   s	            r   Úgenz_malik_1980_f_2rS   c   s�   € ð —G‘G˜A‘J §¡¨¡ˆT€Gà˜YÑ'€OØ˜9Ñ%€Nà—‘˜A ÐN¨A¨3´°F·L±LÓ0AÀAÑ0EÑ+FÐNÈÑNÓO€JàˆR�W‰W�_ aÑ'¨:°nÑ+DÀqÑ*HÑHÈrˆWÓRÑRÐRr   c                 ó¬  — t        | «      }|j                  | g dgt        |j                  «      dz
  z  ¢|‘­«      } |j                  |g dgt        |j                  «      dz
  z  ¢|‘­«      }t	        | «      }d|z  dz  |j                  |d¬«      z  |j                  |j                  | |z
  |z  «      |j                  ||z
  |z  «      z
  d¬«      z  S ©Nr   r   r&   )r   r   r3   r2   r   r@   Úatan)rB   rC   r8   rQ   r   r:   Úxp_tests          r   Úgenz_malik_1980_f_2_exactrX   v   sà   € Ü�1‹:€DØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€AØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€Aô ˜aÓ €Gð 
ˆd‰
�Q‰�r—w‘w˜v¨B�wÓ/Ñ/Ø
�'‰'Ø�L‰L˜!˜e™) VÑ+Ó,¨w¯|©|¸QÀ¹YÈÑ<NÓ/OÑOØð ó 
ñ	
ðr   c                 ój  — |d   }|j                  | j                  |«      «      }|j                  | j                  |«      «      }d}|j                  ||j                  d«      z  d¬«      }||j                  dd|z  z  «      z  d   }||z  t        j                  |dd|z  z  «      z  }|dz  }||fS )	Nr   g      9@g       Àr&   r   r!   rG   é
   )rI   rJ   r@   r5   Úpow)	rK   r2   r   r:   r8   rQ   rL   ÚproductsrM   s	            r   Úgenz_malik_1980_f_2_random_argsr]   ‡   s·   € Ø�‰9€DØ�Z‰Z˜Ÿ
™
 5Ó)Ó*€FØ�J‰J�s—z‘z %Ó(Ó)€Eà€JØ�w‰w�v˜rŸz™z¨$Ó/Ñ/°bˆwÓ9€HØ% r§z¡z°!°q¸±v±,Ó'?Ñ?ÀÑKÐØÐ+Ñ+¬d¯h©h°zÀ1ÈÈ$ÉÁ<Ó.PÑP€Fð ˆb�L€Fà�5ˆ=Ðr   c                 óö   — | j                   d   | j                   d   }}|d   }|j                  | |gdgt        |j                   «      dz
  z  ¢|‘­«      }|j                  |j	                  ||z  d¬«      «      S )z·
    .. math:: f_3(\mathbf x) = \exp\left(\sum^n_{i = 1} \alpha_i x_i\right)

    .. code-block:: mathematica

        genzMalik1980f3[x_List, alphas_List] := Exp[Dot[x, alphas]]
    r   r   r1   r   r&   ©r2   r   r3   Úexpr)   ©r   r8   r   r9   r:   r;   r   s          r   Úgenz_malik_1980_f_3rb   ˜   sz   € ð —G‘G˜A‘J §¡¨¡ˆT€Gà˜YÑ'€OØ—‘˜A ÐN¨A¨3´°F·L±LÓ0AÀAÑ0EÑ+FÐNÈÑNÓO€Jà�6‰6�"—&‘&˜¨:Ñ5¸B�&Ó?Ó@Ð@r   c                 óŠ  — t        | «      }|j                  | g dgt        |j                  «      dz
  z  ¢|‘­«      } |j                  |g dgt        |j                  «      dz
  z  ¢|‘­«      }d|z  dz  |j	                  |d¬«      z  |j	                  |j                  || z  «      |j                  ||z  «      z
  d¬«      z  S rU   )r   r   r3   r2   r@   r`   )rB   rC   r8   r   r:   s        r   Úgenz_malik_1980_f_3_exactrd   ©   sÄ   € Ü�1‹:€DØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€AØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€Að 
ˆd‰
�Q‰�r—w‘w˜v¨B�wÓ/Ñ/Ø
�'‰'�"—&‘&˜ !™Ó$ r§v¡v¨f°q©jÓ'9Ñ9Àˆ'Ó
Cñ	Dðr   c                 óˆ   — |j                  | j                  |«      «      }|j                  |d¬«      d   }d}||z  |z  }|fS )Nr   r&   rG   g      (@rH   )rK   r2   r   r8   rM   rL   s         r   Úgenz_malik_1980_f_3_random_argsrf   ´   sN   € Ø�Z‰Z˜Ÿ
™
 5Ó)Ó*€FØŸF™F 6°˜FÓ3°IÑ>ÐØ€JØ˜&Ñ Ð#8Ñ8€Fàˆ9Ðr   c                 óì   — | j                   d   | j                   d   }}|d   }|j                  | |gdgt        |j                   «      dz
  z  ¢|‘­«      }d|j                  ||z  d¬«      z   | dz
  z  S )zà
    .. math:: f_4(\mathbf x) = \left(1 + \sum^n_{i = 1} \alpha_i x_i\right)^{-n-1}

    .. code-block:: mathematica
        genzMalik1980f4[x_List, alphas_List] :=
            (1 + Dot[x, alphas])^(-Length[alphas] - 1)
    r   r   r1   r   r&   )r2   r   r3   r)   ra   s          r   Úgenz_malik_1980_f_4rh   ½   s�   € ð —G‘G˜A‘J §¡¨¡ˆT€Gà˜YÑ'€OØ—‘˜A ÐN¨A¨3´°F·L±LÓ0AÀAÑ0EÑ+FÐNÈÑNÓO€Jà�—‘�¨Ñ3¸"�Ó=Ñ=À$ÀÀqÁÑIÐIr   c                 óH   ‡‡‡— t        | «      Šˆˆˆfd„}t        || |‰«      S )Nc                 óø   •— ‰j                  | g dgt        ‰j                  «      dz
  z  ¢‰‘­«      }d‰z  ‰j                  ‰d¬«      z  t	        j
                  ‰«      z  d‰j                  ‰|z  d¬«      z   z  S rU   )r   r3   r2   r@   r5   Ú	factorialr)   )r   r   r8   r:   r   s     €€€r   ÚFz$genz_malik_1980_f_4_exact.<locals>.FÑ   sƒ   ø€ Ø—Z‘Z Ð#I q c¬3¨v¯|©|Ó+<¸qÑ+@Ñ&AÐ#IÀDÑ#IÓJˆ
ð �$‰J�r—w‘w˜v¨B�wÓ/Ñ/Ü�n‰n˜TÓ"ñ#à�2—6‘6˜& :Ñ-°B�6Ó7Ñ7ñ9ð	
r   )r   Ú_eval_indefinite_integral)rB   rC   r8   r   rl   r:   s     `` @r   Úgenz_malik_1980_f_4_exactrn   Î   s$   ú€ Ü�1‹:€Dö
ô % Q¨¨1¨bÓ1Ð1r   c           
      ó`  — t        |«      }|j                  ||gd¬«      }d}t        j                  t	        d«      |¬«      D ]b  }|j                  t        |t	        |«      «      D ��	cg c]  \  }}	|||	f   ‘Œ c}	}«      }
|t        dt        |«      |z   «       | |
«      z  z  }Œd |S c c}	}w )z‡
    Calculates a definite integral from points `a` to `b` by summing up over the corners
    of the corresponding hyperrectangle.
    r   r&   r!   )Úrepeatr   )	r   ÚstackÚ	itertoolsÚproductÚrangerI   Úzipr[   r)   )rl   rB   rC   r   r:   ÚpointsÚoutÚindÚiÚjÚselected_pointss              r   rm   rm   Ý   s¨   € ô �1‹:€DØ�X‰X�q˜!�f 1ˆXÓ%€Fà
€CÜ× Ñ ¤ q£°$Ô7ò =ˆØŸ*™*¼sÀ3ÌÈdËÓ?T×%U±t°q¸! f¨Q°¨T£lÓ%UÓVˆØŒs�2”s˜3“x $‘Ó'©!¨OÓ*<Ñ<Ñ<‰ð=ð €Jùó &Vs   Á)B*c                 ó˜   — |d   }|j                  | j                  |«      «      }|j                  |d¬«      d   }d}||z  |z  |z  }|fS )Nr   r&   rG   g      ,@rH   )rK   r2   r   r:   r8   rM   rL   s          r   Úgenz_malik_1980_f_4_random_argsr}   î   s\   € Ø�‰9€Dà�Z‰Z˜Ÿ
™
 5Ó)Ó*€FØŸF™F 6°˜FÓ3°IÑ>ÐØ€JØ˜4Ñ 6Ñ)Ð,AÑA€Fàˆ9Ðr   c                 ó  — | j                   d   | j                   d   }}|d   }|d   }|j                  | |gdgt        |j                   «      dz
  z  ¢|‘­«      }|j                  |j	                  |dz  ||z
  dz  z  d¬«       «      S )zû
    .. math::

        f_5(\mathbf x) = \exp\left(-\sum^n_{i = 1} \alpha^2_i (x_i - \beta_i)^2\right)

    .. code-block:: mathematica

        genzMalik1980f5[x_List, alphas_List, betas_List] :=
            Exp[-Total[alphas^2 * (x - betas)^2]]
    r   r   r1   r   r!   r&   r_   rP   s	            r   Úgenz_malik_1980_f_5r   ù   s›   € ð —G‘G˜A‘J §¡¨¡ˆT€Gà˜YÑ'€OØ˜9Ñ%€Nà—‘˜A ÐN¨A¨3´°F·L±LÓ0AÀAÑ0EÑ+FÐNÈÑNÓO€Jà�6‰6Ø	�‰� Ñ" j°>Ñ&AÀAÑ%EÑEÈBˆÓ	OÐOóð r   c           	      óü  — t        | «      }|j                  | g dgt        |j                  «      dz
  z  ¢|‘­«      } |j                  |g dgt        |j                  «      dz
  z  ¢|‘­«      }d|z  dz  |j	                  |d¬«      z  t
        j                  |dz  z  z  |j	                  t        j                  j                  ||| z
  z  «      t        j                  j                  |||z
  z  «      z   d¬«      z  S )Nr   r?   r   r&   r!   )
r   r   r3   r2   r@   r5   r6   ÚscipyÚspecialÚerf)rB   rC   r8   rQ   r   r:   s         r   Úgenz_malik_1980_f_5_exactr„     s  € Ü�1‹:€DØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€AØ
�
‰
�1Ð<˜!˜œc &§,¡,Ó/°!Ñ3Ñ4Ð<°tÑ<Ó=€Að 
ˆt‰Ø
ñ	Ø�G‰G�F ˆGÓ$ñ	%ä�7‰7�T˜!‘VÑñ	ð �'‰'Ü�M‰M×Ñ˜f¨°©	Ñ2Ó3Ü�m‰m×Ñ ¨!¨e©)Ñ 4Ó5ñ6àð ó 
ñ	
ð	r   c                 ó2  — |j                  | j                  |«      «      }|j                  | j                  |«      «      }d}|j                  |j                  ||j                  d«      z  d¬«      «      d   }||z  t	        j                  |«      z  }||fS )Ng      5@g       @r   r&   rG   )rI   rJ   Úsqrtr)   r5   )rK   r2   r   r8   rQ   rL   rM   s          r   Úgenz_malik_1980_f_5_random_argsr‡   "  s†   € Ø�Z‰Z˜Ÿ
™
 5Ó)Ó*€FØ�J‰J�s—z‘z %Ó(Ó)€Eà€JØŸG™G B§F¡F¨6°2·:±:¸c³?Ñ+BÈ FÓ$LÓMÈiÑXÐØÐ+Ñ+¬d¯i©i¸
Ó.CÑC€Fà�5ˆ=Ðr   c                 óþ   — | j                   d   | j                   d   }}|d   }|j                  | |gdgt        |j                   «      dz
  z  ¢|‘­«      }|j                  |j	                  ||z  dz  d¬«       «      S )z^
    .. math::

        f(\mathbf x) = \exp\left(-\sum^n_{i = 1} (\alpha_i x_i)^2 \right)
    r   r   r1   r   r!   r&   r_   ra   s          r   Ú
f_gaussianr‰   -  s‚   € ð —G‘G˜A‘J §¡¨¡ˆT€GØ˜YÑ'€OØ—‘˜A ÐN¨A¨3´°F·L±LÓ0AÀAÑ0EÑ+FÐNÈÑNÓO€Jà�6‰6�2—6‘6˜?¨ZÑ7¸!Ñ;À"�6ÓEÐEÓFÐFr   c                 óz  — t        | «      }d}d}t        |«      D ]_  }|j                  | |   «      r|j                  ||   «      r|dz  }Œ1|j                  | |   «      |j                  ||   «      k7  sŒ[|dz  }Œa t        j                  t        j
                  «      |z  d|z  |j                  |d¬«      z  z  S )Nr   r   r!   r   r&   )r   rt   Úisinfr5   r†   r6   r@   )rB   rC   r8   r   r:   Údouble_infinite_countÚsemi_infinite_country   s           r   Úf_gaussian_exactrŽ   :  s»   € ô �1‹:€DØÐØÐä�4‹[ò %ˆØ�8‰8�A�a‘DŒ>˜bŸh™h q¨¡tœnØ! QÑ&Ñ!Ø�X‰X�a˜‘d‹^˜rŸx™x¨¨!©›~Ó-Ø 1Ñ$Ñð	%ô �I‰I”d—g‘gÓ $Ñ&Ø	ÐÑ §¡¨°b Ó!9Ñ9ñð r   c                 óR   — |j                  | j                  |«      «      }|dz  }|fS )Néd   )rI   rJ   )rK   r2   r   r8   s       r   Úf_gaussian_random_argsr‘   P  s,   € Ø�Z‰Z˜Ÿ
™
 5Ó)Ó*€Fð ˆc�M€Fàˆ9Ðr   c                 óâ   — | dd…df   | dd…df   | dd…df   | dd…df   f\  }}}}||dd…df   z  |j                  |«      z  |j                  | |dz  z
  |dz  z
  «      z  }|j                  S )zJ
    .. math::

        f(x, y, z, w) = x^n \sqrt{y} \exp(-y-z^2-w^2)
    Nr   r   r!   r,   )r†   r`   ÚT)Úx_arrr   r   r   ÚyÚzÚwÚress           r   Úf_modified_gaussianr™   Z  s�   € ð ’q˜!�t‘˜e¢A q D™k¨5²°A°©;¸ºaÀ¸d¹ÐC�J€A€qˆ!ˆQØ�’!�T�'‘
‰?˜bŸg™g a›jÑ
(¨2¯6©6°1°"°Q¸±T±'¸!¸Q¹$±,Ó+?Ñ
?€Cà�5‰5€Lr   c                 ó@   — ddd|z  z   z  t         j                  dz  z  S )Nr   r!   g      ø?)r5   r6   )rB   rC   r   r   s       r   Úf_modified_gaussian_exactr›   f  s$   € ð
 ˆa�!�A‘#‰g‰;œŸ™ SÑ)Ñ)Ð)r   c                 óŠ   — |D ]!  }|j                  | |k(  «      sŒt        d«      ‚ |j                  | j                  d   «      S )zœ
    This emulates a function with a list of singularities given by `points`.

    If no `x_arr` are one of the `points`, then this function returns 1.
    úcalled with a problematic pointr   )ÚanyÚ
ValueErrorÚonesr2   )r”   rv   r   Úpoints       r   Úf_with_problematic_pointsr¢   n  sJ   € ð ò @ˆØ�6‰6�%˜5‘.Õ!ÜÐ>Ó?Ð?ð@ð �7‰7�5—;‘;˜q‘>Ó"Ð"r   c                   óœ   — e Zd ZdZej
                  j                  dg d¢«      d„ «       Z edd¬«      d„ «       Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestCubaturez7
    Tests related to the interface of `cubature`.
    Úrule_str)zgauss-kronrodú
genz-malikÚgk21Úgk15c                 ó,  — |j                  d|j                  ¬«      }|j                  ddg|j                  ¬«      }|j                  ddg|j                  ¬«      }t        t        |||||f¬«      }t        |j                  t        ||«      dd¬«       y )Né   ©Údtyper   r!   )ÚruleÚargsç:Œ0âŽyE>©ÚrtolÚatol)ÚarangeÚfloat64rI   r	   r*   r   Úestimater/   )Úselfr¥   r   r   rB   rC   r˜   s          r   Útest_pass_strzTestCubature.test_pass_str‚  s„   € ð �I‰I�a˜rŸz™zˆIÓ*ˆØ�J‰J˜˜1�v R§Z¡ZˆJÓ0ˆØ�J‰J˜˜1�v R§Z¡ZˆJÓ0ˆäÔ)¨1¨a°hÀaÈÀWÔMˆäØ�L‰LÜ$ Q¨Ó+ØØö		
r   Tz,array-likes only supported for NumPy backend)Únp_onlyÚreasonc                 óÊ   — t        j                  dt         j                  ¬«      }dg}dg}t        t        ||||f¬«      }t        |j                  t        ||«      dd¬«       y )Nrª   r«   r   r!   ©r®   r¯   r°   )r   r³   r´   r	   r   r   rµ   r$   ©r¶   r   r   rB   rC   r˜   s         r   Útest_pass_array_like_not_arrayz+TestCubature.test_pass_array_like_not_array–  se   € ô ×Ñ˜Q¤i×&7Ñ&7Ô8ˆØˆCˆØˆCˆäÜØØØ�R�ô	
ˆô 	Ø�L‰LÜ$ Q¨Ó+ØØö		
r   c                 ó  — |j                  dg«      }|j                  dg«      }t        «       }t        t        |||d|j	                  d|j
                  ¬«      |f¬«      }|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )Nr   r   rZ   rª   r«   )r­   Úmax_subdivisionsr®   Únot_converged)rI   ÚBadErrorRuler	   r   r³   r´   ÚsubdivisionsÚstatus)r¶   r   rB   rC   r­   r˜   s         r   Ú!test_stops_after_max_subdivisionsz.TestCubature.test_stops_after_max_subdivisions«  s�   € Ø�J‰J˜�s‹OˆØ�J‰J˜�s‹OˆÜ‹~ˆäÜØØØØØ—)‘)˜A R§Z¡Z�)Ó0°"Ð5ô
ˆð ×Ñ 2Ò%Ð%Ð%Ø�z‰z˜_Ò,Ð,Ñ,r   c                 ó  — |j                  dgg|j                  ¬«      }|j                  dgg|j                  ¬«      }t        j                  t        d¬«      5  t        t        |||f¬«       d d d «       y # 1 sw Y   y xY w)Nr   r«   r   z`a` and `b` must be 1D arrays©Úmatchr»   )rI   r´   ÚpytestÚraisesÚ	Exceptionr	   r   ©r¶   r   rB   rC   s       r   Útest_a_and_b_must_be_1dz$TestCubature.test_a_and_b_must_be_1d¼  sk   € Ø�J‰J˜˜�u B§J¡JˆJÓ/ˆØ�J‰J˜˜�u B§J¡JˆJÓ/ˆä�]‰]œ9Ð,KÔLñ 	;ÜÔ'¨¨A°R°EÕ:÷	;÷ 	;ñ 	;ús   ÁA8Á8Bc                 óÐ   — |j                  g «      }|j                  g «      }t        j                  t        d¬«      5  t	        t
        |||f¬«       d d d «       y # 1 sw Y   y xY w)Nz`a` and `b` must be nonemptyrÆ   r»   )rI   rÈ   rÉ   rÊ   r	   r   rË   s       r   Útest_a_and_b_must_be_nonemptyz*TestCubature.test_a_and_b_must_be_nonemptyÃ  sQ   € Ø�J‰J�r‹NˆØ�J‰J�r‹Nˆä�]‰]œ9Ð,JÔKñ 	;ÜÔ'¨¨A°R°EÕ:÷	;÷ 	;ñ 	;ús   ¾AÁA%c           
      ó\  — |j                  d|j                  ¬«      }|j                  dg|j                  ¬«      }|j                  dg|j                  ¬«      }t        t        ||||f¬«      }t        |j                  |j                  dgdgdgdgdgg|j                  ¬«      dd¬«       y )Nrª   r«   r   r»   r¯   r°   )r³   r´   rI   r	   r   r   rµ   r¼   s         r   Útest_zero_width_limitsz#TestCubature.test_zero_width_limitsÊ  s¢   € Ø�I‰I�a˜rŸz™zˆIÓ*ˆà�J‰J˜�s "§*¡*ˆJÓ-ˆØ�J‰J˜�s "§*¡*ˆJÓ-ˆäÜØØØ�R�ô	
ˆô 	Ø�L‰LØ�J‰J˜˜˜a˜S 1 #¨ s¨Q¨CÐ0¸¿
¹
ˆJÓCØØö		
r   c                 ó(  — |j                  d|j                  ¬«      }|j                  dg|j                  ¬«      }|j                  dg|j                  ¬«      }t        t        ||||f¬«      }t        |j                  t        ||«       dd¬«       y )Nrª   r«   r!   r   r»   r¯   r°   )r³   r´   rI   r	   r   r   rµ   r$   r¼   s         r   Útest_limits_other_way_aroundz)TestCubature.test_limits_other_way_aroundÞ  s†   € Ø�I‰I�a˜rŸz™zˆIÓ*ˆà�J‰J˜�s "§*¡*ˆJÓ-ˆØ�J‰J˜�s "§*¡*ˆJÓ-ˆäÜØØØ�R�ô	
ˆô 	Ø�L‰LÜ% a¨Ó,Ð,ØØö		
r   c           
      ó^  — t        t        |j                  dg|j                  ¬«      |j                  dg|j                  ¬«      g |j                  dg|j                  ¬«      |f¬«      j                  j
                  }||j                  k(  sJ ‚t        t        |j                  dg|j                  ¬«      |j                  dg|j                  ¬«      g |j                  dg|j                  ¬«      |f¬«      j                  j
                  }||j                  k(  sJ ‚t        t        |j                  dg|j                  ¬«      |j                  dg|j                  ¬«      g |j                  dg|j                  ¬«      |f¬«      j                  j
                  }||j                  k(  sJ ‚y )Nr   r«   r   )rv   r®   )r	   r   rI   r´   rµ   r¬   Úfloat32)r¶   r   Úresult_dtypes      r   Ú$test_result_dtype_promoted_correctlyz1TestCubature.test_result_dtype_promoted_correctlyò  sm  € ÜÜØ�J‰J˜�s "§*¡*ˆJÓ-Ø�J‰J˜�s "§*¡*ˆJÓ-ØØ—*‘*˜a˜S¨¯
©
�*Ó3°RÐ8ô
÷ ‰(—5‘5ð 	ð ˜rŸz™zÒ)Ð)Ð)äÜØ�J‰J˜�s "§*¡*ˆJÓ-Ø�J‰J˜�s "§*¡*ˆJÓ-ØØ—*‘*˜a˜S¨¯
©
�*Ó3°RÐ8ô
÷ ‰(—5‘5ð 	ð ˜rŸz™zÒ)Ð)Ð)äÜØ�J‰J˜�s "§*¡*ˆJÓ-Ø�J‰J˜�s "§*¡*ˆJÓ-ØØ—*‘*˜a˜S¨¯
©
�*Ó3°RÐ8ô
÷ ‰(—5‘5ð 	ð ˜rŸz™zÒ)Ð)Ñ)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÈ   ÚmarkÚparametrizer·   r   r½   rÄ   rÌ   rÎ   rÐ   rÒ   rÖ   r.   r   r   r¤   r¤   |  so   „ ñð ‡[�[×Ñ˜Zò *ó ñ
óð
ñ ˜dØKôMñ
óMð
ò&-ò";ò;ò
ò(
ó(*r   r¤   r±   g-Cëâ6?r²   gñhãˆµøä>r­   )r¨   r§   r¦   c                   óˆ	  — e Zd ZdZej
                  j                  deedgdgddgffeeddgddgddd	gffeeddgddgd
dd	gffeeg d¢g d¢d
g d¢ffe	e
dgdgdgd	gffe	e
ddgddgddgddgffe	e
g d¢g d¢g d¢g d¢ffe	e
g d¢g d¢g d¢g d¢ffe	e
g d¢g d¢g d¢g d¢ffe	e
g d¢g d¢g d¢g d¢ffeedgdgd
gffeeddgddgddgffeeg d¢g d¢g d¢ffeedgdgdgffeeddgddgddgffeeg d¢g d¢g d¢ffeedgdgdgdgffeeddgddgddgd	dgffeeddgddgddgddgffeeg d¢g d¢g d¢g d¢ffg«      d„ «       Zej
                  j                  deeefe	e
efeeefeeefeeefg«      ej
                  j                  dg d¢«      d„ «       «       Zej
                  j                  dd„ dgdgdgdfd„ d gdgdgd!ggfd"„ d#gg d¢g d¢g d$¢gfd%„ d#gg d¢g d¢g d&¢g d$¢gfd'„ d#gg d¢g d¢g d(¢g d&¢g d$¢gfg«      d)„ «       Z ed*d+g¬,«      ej
                  j                  deeed-ej<                   gej<                  gfeeed.ej<                   ej<                   gej<                  ej<                  gfeeed-dgej<                  gfeeed-ej<                   gdgfeeed.ddgej<                  ej<                  gfeeed.dej<                   gej<                  ej<                  gfeeed/ddej<                   ej<                   gej<                  ej<                  ej<                  ej<                  gfeeed/ej<                   ej<                   ej<                   ej<                   gddej<                  ej<                  gfd0„ d1„ d2„  e«       dej<                   dgej<                  dej<                  gf ej@                  e!e"d3„  e«       ddej<                   ej<                   gdej<                  ej<                  ej<                  gfej
                  jF                  ¬4«      g
«      d5„ «       «       Z$ ed*d+g¬,«      ej
                  j                  dd6„ d7ejJ                  z  gej<                   gej<                  gdggfd8„ d7ejJ                  z  ej<                   dgej<                  dgdd
ggfg«      d9„ «       «       Z&y):ÚTestCubatureProblemsz9
    Tests that `cubature` gives the correct answer.
    Úproblemr   rZ   ç      Ð?rª   r   r!   r-   r?   )r   r   r   )rª   rª   rª   ©r   r   r   r   é2   éýÿÿÿr,   r>   )r!   r,   r-   )r   r   r   )r!   r!   r!   )r   r   r   r   )r   r   r   r   c           
      óÚ  ‡— |\  }}}}	}
‰j                  |‰j                  ¬«      }‰j                  |	‰j                  ¬«      }	t        ˆfd„|
D «       «      }
t        |«      }|dk(  r|dk  rt	        j
                  d«       t        |||	|||g |
¢‰‘­¬«      }|j                  dk(  sJ ‚|j                  } |||	g|
¢‰‘­Ž }t        ||||d|j                  › d	|j                  › �¬
«       y )Nr«   c              3   óX   •K  — | ]!  }‰j                  |‰j                  ¬ «      –— Œ# y­w)r«   N©rI   r´   )Ú.0Úargr   s     €r   ú	<genexpr>z:TestCubatureProblems.test_scalar_output.<locals>.<genexpr>÷  s"   øè ø€ ÒG¸3�R—Z‘Z ¨2¯:©:�Z×6ÑGùs   ƒ'*r¦   r!   ú1Genz-Malik cubature does not support 1D integrals©r­   r±   r²   r®   Ú	convergedúestimate_error=ú, subdivisions=©r±   r²   Úerr_msg)rI   r´   Útupler   rÈ   Úskipr	   rÃ   rµ   r   ÚerrorrÂ   )r¶   rß   r­   r±   r²   r   ÚfÚexactrB   rC   r®   r:   r˜   ÚestÚ	exact_sols        `         r   Útest_scalar_outputz'TestCubatureProblems.test_scalar_output  sÿ   ø€ ðh  'Ñˆˆ5�!�Q˜à�J‰J�q §
¡
ˆJÓ+ˆØ�J‰J�q §
¡
ˆJÓ+ˆÜÓGÀ$ÔGÓGˆä�q‹zˆà�<Ò D¨1¢HÜ�K‰KÐKÔLäØØØØØØØ�4�˜‘ô
ˆð �z‰z˜[Ò(Ð(Ð(à�l‰lˆÙ˜!˜QÐ* Ð* rÒ*ˆ	äØØØØØ% c§i¡i [°À×@PÑ@PÐ?QÐRö	
r   r2   )	©r!   ©r,   )r-   )r   r!   )r   r,   ©r   r-   )r,   r!   )r,   r-   r!   )r!   r   r,   c           
      ó  — t         j                  j                  d«      }|d   }|dk(  r|dk  rt        j                  d«       |dk(  r$|dk\  rt        j
                  j                  d«       |\  }	}
} ||||«      }|j                  dg|z  |j                  ¬	«      }|j                  dg|z  |j                  ¬	«      }t        |	|||||g |¢|‘­¬
«      }|j                  } |
||g|¢|‘­Ž }t        ||||d|j                  › d|j                  › �¬«       d|j                  › d|j                  › d|j                  |j                  |z
  «      › �}|j                  dk(  sJ |«       ‚|j                  j                   |d d k(  sJ ‚y )Nr   r   r¦   r!   rê   rª   ú!Gauss-Kronrod is slow in >= 5 dimr   r«   rë   rí   rî   rï   ú, subdivisions= ú, true_error=rì   )r   rJ   Údefault_rngrÈ   rò   rÛ   ÚslowrI   r´   r	   rµ   r   ró   rÂ   ÚabsrÃ   r2   )r¶   rß   r­   r2   r±   r²   r   rK   r:   rô   rõ   Úrandom_argsr®   rB   rC   r˜   rö   r÷   rð   s                      r   Útest_array_outputz&TestCubatureProblems.test_array_output  s£  € ôX ×Ñ×*Ñ*¨1Ó-ˆØ�R‰yˆà�<Ò D¨1¢HÜ�K‰KÐKÔLà�<Ò D¨A¢IÜ�K‰K×ÑÐ@ÔAà 'Ñˆˆ5�+Ù˜3  rÓ*ˆà�J‰J˜�s˜T‘z¨¯©ˆJÓ4ˆØ�J‰J˜�s˜T‘z¨¯©ˆJÓ4ˆäØØØØØØØ�4�˜‘ô
ˆð �l‰lˆÙ˜!˜QÐ* Ð* rÒ*ˆ	äØØØØØ% c§i¡i [°À×@PÑ@PÐ?QÐRõ	
ð % S§Y¡Y Kð 0$Ø$'×$4Ñ$4Ð#5ð 6!Ø!#§¡¨¯©°yÑ(@Ó!AÐ BðDˆð �z‰z˜[Ò(Ð1¨'Ó1Ð(à�|‰|×!Ñ! U¨3¨B ZÒ/Ð/Ñ/r   c                 ó   — | S ©Nr.   ©r   r   s     r   ú<lambda>zTestCubatureProblems.<lambda>o  s   € ˜!€ r   g      I@Nc                 ó*   — |j                  | «      | z  S r  ©rA   r  s     r   r  zTestCubatureProblems.<lambda>~  s   € ˜"Ÿ&™& ›) A™+€ r   gB¾sÂvi@g        c                 óB   — |j                  | j                  d   df«      S ©Nr   r   ©r    r2   r  s     r   r  zTestCubatureProblems.<lambda>‡  ó   € ˜"Ÿ'™' 1§7¡7¨1¡:¨q /Ó2€ r   g      ð?)r?   r?   r?   c                 óB   — |j                  | j                  d   df«      S r  r  r  s     r   r  zTestCubatureProblems.<lambda>�  r  r   )rà   rà   rà   c                 óB   — |j                  | j                  d   df«      S r  r  r  s     r   r  zTestCubatureProblems.<lambda>š  r  r   )gš™™™™™¹?rà   r?   c           
      óþ  — |\  }}}}	}
|j                  ||j                  ¬«      }|j                  |	|j                  ¬«      }	|j                  ||j                  ¬«      }|
�*|
D �cg c]  }|j                  ||j                  ¬«      ‘Œ! }
}t        |«      }|dk(  r|dk  rt        j                  d«       |dk(  r$|dk\  rt        j
                  j                  d«       t        |||	||||
|f¬«      }t        |j                  |||d|j                  › d	|j                  › �d
¬«       d|j                  › d|j                  › d|j                  |j                  |z
  «      › �}|j                  dk(  sJ |«       ‚y c c}w )Nr«   r¦   r!   rê   rª   rý   ©r­   r±   r²   rv   r®   rí   rî   F)r±   r²   rð   Úcheck_dtyperþ   rÿ   rì   )rI   r´   r   rÈ   rò   rÛ   r  r	   r   rµ   ró   rÂ   r  rÃ   )r¶   rß   r­   r±   r²   r   rô   rõ   rB   rC   rv   r¡   r:   r˜   rð   s                  r   Útest_break_pointsz&TestCubatureProblems.test_break_pointsl  s…  € ðt ")Ñˆˆ5�!�Q˜à�J‰J�q §
¡
ˆJÓ+ˆØ�J‰J�q §
¡
ˆJÓ+ˆØ—
‘
˜5¨¯
©
�
Ó3ˆàÐØGMÖN¸e�b—j‘j ¨b¯j©j�jÕ9ÐNˆFÐNä�q‹zˆà�<Ò D¨1¢HÜ�K‰KÐKÔLà�<Ò D¨A¢IÜ�K‰K×ÑÐ@ÔAäØØØØØØØØ�ô	
ˆô 	Ø�L‰LØØØØ% c§i¡i [°À×@PÑ@PÐ?QÐRØõ	
ð % S§Y¡Y Kð 0$Ø$'×$4Ñ$4Ð#5ð 6!Ø!#§¡¨¯©°uÑ(<Ó!=Ð >ð@ˆð �z‰z˜[Ò(Ð1¨'Ó1Ñ(ùòC Os   Á&$E:ú	jax.numpyú*transforms make use of indexing assignment©Úreasons)r   r   )r!   r!   rû   c                 ó4   — d|j                  | d¬«      dz  z  S )Nr   r   r&   r!   )r@   r  s     r   r  zTestCubatureProblems.<lambda>  s   € ˜!˜BŸG™G A¨B˜GÓ/°Ñ2Ñ2€ r   c                 ó<   — |j                  d|j                  ¬«      S )NgUUUUUUÅ?r«   ræ   )rB   rC   r   s      r   r  zTestCubatureProblems.<lambda>   s   € ˜RŸZ™Z¨°2·:±:˜ZÓ>€ r   c                 ó   — t        «       S r  )rñ   ©rK   r2   r   s      r   r  zTestCubatureProblems.<lambda>#  s   € ¤5£7€ r   c                 óB   — |j                  g d¢|j                  ¬«      fS )N)r   r   r!   r,   r-   r«   ræ   r  s      r   r  zTestCubatureProblems.<lambda>4  s   € ¨¯
©
²?È"Ï*É*¨
Ó(UÐ'W€ r   )Úmarksc           
      ó¸  — t         j                  j                  d«      }|\  }}}	}
}}|j                  ||j                  ¬«      }|j                  ||j                  ¬«      } |	||
|«      }t        |«      }|dk(  r|dk  rt        j                  d«       |dk(  r$|dk\  rt        j                  j                  d«       |dk(  r/|dk\  r*t        |«      rt        j                  j                  d«       t        ||||||g |¢|‘­¬	«      }|j                  d
k(  sJ ‚t        |j                   |||g|¢|‘­Ž ||d|j                   › d|j"                  › �d¬«       y )Nr   r«   r¦   r!   rê   r-   zGenz-Malik is slow in >= 5 dimz5Genz-Malik very slow for array_api_strict in >= 4 dimrë   rì   úerror_estimate=rî   F©r±   r²   rð   Úcheck_0d)r   rJ   r   rI   r´   r   rÈ   rò   rÛ   r  r   Úxslowr	   rÃ   r   rµ   ró   rÂ   )r¶   rß   r­   r±   r²   r   rK   rô   rõ   Úrandom_args_funcÚrandom_args_shaperB   rC   r®   r:   r˜   s                   r   Útest_infinite_limitsz)TestCubatureProblems.test_infinite_limitsÐ  sZ  € ô^ ×Ñ×*Ñ*¨1Ó-ˆØ>EÑ;ˆˆ5Ð"Ð$5°q¸!à�J‰J�q §
¡
ˆJÓ+ˆØ�J‰J�q §
¡
ˆJÓ+ˆÙ Ð%6¸Ó;ˆä�q‹zˆà�<Ò D¨1¢HÜ�K‰KÐKÔLà�<Ò D¨A¢IÜ�K‰K×ÑÐ=Ô>à�<Ò D¨A¢IÔ2EÀbÔ2IÜ�K‰K×ÑÐUÔVäØØØØØØØ�4�˜‘ô
ˆð �z‰z˜[Ò(Ð(Ð(äØ�L‰LÙ�!�QÐ"˜Ð"˜rÒ"ØØØ% c§i¡i [°À×@PÑ@PÐ?QÐRØö	
r   c                 ó0   — |j                  | «      | z  dz  S )Né   r
  r  s     r   r  zTestCubatureProblems.<lambda>m  s   € ˜2Ÿ6™6 !›9 q™=¨1Ñ,€ r   gßê­Þê­Þ?c                 óL   — |j                  | d d …df   «      | d d …df   z  dz  S )Nr   r(  r
  r  s     r   r  zTestCubatureProblems.<lambda>|  s(   € ˜2Ÿ6™6 !¢A q D¡'›?¨Qªq°!¨t©WÑ4°qÑ8€ r   c           
      ó,  — |\  }}}}	}
|j                  ||j                  ¬«      }|j                  |	|j                  ¬«      }	|j                  ||j                  ¬«      }t        |«      }|dk(  r|dk  rt        j                  d«       |
�*|
D �cg c]  }|j                  ||j                  ¬«      ‘Œ! }
}t        |||	||||
|f¬«      }|j                  dk(  sJ ‚t        |j                  |||d|j                  › d|j                  › �d	¬
«       y c c}w )Nr«   r¦   r!   rê   r  rì   r   rî   Fr!  )rI   r´   r   rÈ   rò   r	   rÃ   r   rµ   ró   rÂ   )r¶   rß   r­   r±   r²   r   rô   rõ   rB   rC   rv   r:   r¡   r˜   s                 r   Ú%test_infinite_limits_and_break_pointsz:TestCubatureProblems.test_infinite_limits_and_break_pointsf  s  € ðJ ")Ñˆˆ5�!�Q˜à�J‰J�q §
¡
ˆJÓ+ˆØ�J‰J�q §
¡
ˆJÓ+ˆØ—
‘
˜5¨¯
©
�
Ó3ˆä�q‹zˆà�<Ò D¨1¢HÜ�K‰KÐKÔLàÐØGMÖN¸e�b—j‘j ¨b¯j©j�jÕ9ÐNˆFÐNäØØØØØØØØ�ô	
ˆð �z‰z˜[Ò(Ð(Ð(äØ�L‰LØØØØ% c§i¡i [°À×@PÑ@PÐ?QÐRØö	
ùò Os   Â$D)'r×   rØ   rÙ   rÚ   rÈ   rÛ   rÜ   r<   rD   rS   rX   rb   rd   rh   rn   r   r„   rø   rN   r]   rf   r}   r‡   r  r  r   r‰   rŽ   r‘   r5   Úinfrñ   Úparamr™   r›   r#  r&  r6   r+  r.   r   r   rÞ   rÞ     sº  „ ñð ‡[�[×Ñ˜Yð  ð &ð ˆCð ˆDð Ø�ðð	
ð(  Ø%Ø�ˆFØ�ˆFàØ�A�ðð		
ð  Ø%Ø�ˆFØ�ˆFàØ�A�ðð		
ð  Ø%ÚÚàÚðð		
ð  Ø%ØˆDØˆCà�Ø�ðð		
ð  Ø%à�ˆFØ�ˆHà�Q�Ø�Q�ðð
	
ð  Ø%ÚÚâÚðð		
ð  Ø%ÚÚâÚðð		
ð  Ø%ÚÚâÚðð		
ð  Ø%ÚÚâÚðð		
ð  Ø%ØˆDØˆCà�ðð	
ð  Ø%Ø�ˆGØ�ˆFà�A�ðð	
ð  Ø%ÚÚâðð	
ð  Ø%ØˆCØˆCà�ðð	
ð  Ø%Ø�ˆFØ�ˆFØ�ˆVˆIð	
ð  Ø%ÚÚÚˆLð	
ð  Ø%ØˆDØˆCà�Ø�ðð		
ð  Ø%Ø�ˆHØ�ˆFà�A�Ø�A�ðð		
ð  Ø%Ø�ˆHØ�ˆFà�Q�Ø�A�ðð		
ð  Ø%ÚÚâÚðð		
ðQR)ó Rñf!
ógRðf!
ðF ‡[�[×Ñ˜Yð  ð &ð ,ð		
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð5)ó ð@ ‡[�[×Ñ˜Wò 
'ó 
ñ*0ó
óAðV*0ðX ‡[�[×Ñ˜Yñ ð ˆFð ˆCð ˆDð ð	
ñ" &ØÐØˆDØˆCà�ðð	
ñ 3ØˆEÚÚâðð	
ñ 3ØˆEÚÚâ"Úðð		
ñ 3ØˆEÚÚâ Ú"Úðð
	
ð[8)ó 8ñr)2ós8ðr)2ñV ØØ=Ð>ôð ‡[�[×Ñ˜Yð ð ð #Øð �h‰hˆYˆKØ�X‰XˆJð	
ð  ØØ"ØØ�h‰hˆY˜Ÿ™˜	Ð"Ø�X‰X�t—x‘xÐ ð	
ð ØØ"ØØˆCØ�X‰XˆJð	
ð ØØ"ØØ�h‰hˆYˆKØˆCð	
ð ØØ"ØØ�ˆFØ�X‰X�t—x‘xÐ ð	
ð ØØ"ØØ�—‘�	ˆNØ�X‰X�t—x‘xÐ ð	
ð ØØ"ØØ��D—H‘H�9˜tŸx™x˜iÐ(Ø�X‰X�t—x‘x §¡¨4¯8©8Ð4ð	
ð ØØ"ØØ�h‰hˆY˜Ÿ™˜	 D§H¡H 9¨t¯x©x¨iÐ8Ø��4—8‘8˜TŸX™XÐ&ð	
ñ 3ñ ?ñ +Ù‹Gà�—‘�	˜1ÐØ�X‰X�r˜4Ÿ8™8Ð$ð	
ð 	ˆ�‰ð $ð *ñ XÙ“à�A˜Ÿ™�y 4§8¡8 )Ð,Ø�D—H‘H˜dŸh™h¨¯©Ð1ðð —+‘+×#Ñ#ô!	
ðoi)ó iñT&
óUió	ð\&
ñP ØØ=Ð>ôð ‡[�[×Ñ˜Yñ -ð �t—w‘wÑÐð �h‰hˆYˆKØ�X‰XˆJð ˆSˆEð	
ñ" 9ð �d—g‘gÑð �h‰hˆY˜ˆNØ�X‰X�qˆMð �ˆXˆJð	
ð!)ó ñ@#
óAó	ñH#
r   rÞ   c                   óz   — e Zd ZdZej
                  j                  dddgddgedfdgdgedfg«      d„ «       Z	d„ Z
y	)
Ú	TestRuleszJ
    Tests related to the general Rule interface (currently private).
    rß   r   r   ©é   rù   c                 ó*  — |\  }}}} ||d|iŽ}|j                  ||j                  ¬«      }|j                  ||j                  ¬«      }t        j                  t        d¬«      5  |j                  t        |||f¬«       d d d «       y # 1 sw Y   y xY w)Nr   r«   zincompatible dimensionrÆ   r»   )rI   r´   rÈ   rÉ   rÊ   rµ   r   )r¶   rß   r   rB   rC   Ú
quadratureÚquadrature_argsr­   s           r   Ú(test_incompatible_dimension_raises_errorz2TestRules.test_incompatible_dimension_raises_error¶  sŒ   € ð" -4Ñ)ˆˆ1ˆj˜/Ù˜?Ð2¨rÑ2ˆà�J‰J�q §
¡
ˆJÓ+ˆØ�J‰J�q §
¡
ˆJÓ+ˆä�]‰]œ9Ð,DÔEñ 	@Ø�M‰MÔ,¨a°¸"¸ˆMÔ?÷	@÷ 	@ñ 	@ús   Á%B	Â	Bc                 ó  — |j                  dg«      }|j                  dg«      }t        «       t        «       fD ]>  }t        j                  t
        «      5  |j                  t        |||f¬«       d d d «       Œ@ y # 1 sw Y   ŒKxY w)Nr   r   r»   )rI   r
   r   rÈ   rÉ   rÊ   rµ   r   )r¶   r   rB   rC   Ú
base_classs        r   Ú+test_estimate_with_base_classes_raise_errorz5TestRules.test_estimate_with_base_classes_raise_errorÐ  s   € Ø�J‰J˜�s‹OˆØ�J‰J˜�s‹Oˆä›6¤9£;Ð/ò 	JˆJÜ—‘œyÓ)ñ JØ×#Ñ#Ô$6¸¸1ÀBÀ5Ð#ÔI÷Jð Jñ	J÷Jð Jús   ÁA;Á;B	N)r×   rØ   rÙ   rÚ   rÈ   rÛ   rÜ   r   r   r5  r8  r.   r   r   r/  r/  °  sk   „ ñð ‡[�[×Ñ˜Yð �ˆFØ�ˆFØ"Øð	
ð ˆCØˆCØØð	
ð)ó ñ @ó!ð @óJr   r/  c            	       ó  — e Zd ZdZej
                  j                  dedfedfedfedfedfg«      d„ «       Z	ej
                  j                  d	eefd
fg«      d„ «       Z
ej
                  j                  deg«      d„ «       Zy)ÚTestRulesQuadraturez8
    Tests underlying quadrature rules (ndim == 1).
    )r­   Ú	rule_argsrú   )rª   )rZ   )é   r0  c                 óV  ‡‡
—  ||d‰iŽ}‰j                  d‰j                  ¬«      Š
ˆ
ˆfd„}‰j                  dg‰j                  ¬«      }‰j                  dg‰j                  ¬«      }‰j                  d‰
dz   z  ‰
dz   z  d«      }|j	                  |||«      }	t        |	|d	d¬
«       y )Nr   rª   r«   c                 óV   •— ‰j                  | d«      }‰j                  ‰d«      }||z  S r   r   )r   r   r   r   r   s      €€r   rô   z>TestRulesQuadrature.test_base_1d_quadratures_simple.<locals>.fë  s.   ø€ ØŸ™ A zÓ2ˆJØŸ™ A zÓ2ˆJà˜zÑ)Ð)r   r   r!   r   r"   r¯   r°   )r³   r´   rI   r   rµ   r   )r¶   r­   r;  r   r3  rô   rB   rC   rõ   rµ   r   s      `      @r   Útest_base_1d_quadratures_simplez3TestRulesQuadrature.test_base_1d_quadratures_simpleß  s©   ù€ ñ ˜9Ð,¨Ñ,ˆ
à�I‰I�a˜rŸz™zˆIÓ*ˆõ	*ð �J‰J˜�s "§*¡*ˆJÓ-ˆØ�J‰J˜�s "§*¡*ˆJÓ-ˆà—
‘
˜1˜q ™s™8 Q q¡S™>¨7Ó3ˆØ×&Ñ& q¨!¨QÓ/ˆäØØØØö		
r   )Ú	rule_pairÚrule_pair_args)rZ   rª   c           	      ó‚  — |j                  d|j                  ¬«      }|j                  dg|j                  ¬«      }|j                  dg|j                  ¬«      } |d   |d   |¬«      } |d   |d   |¬«      }t        ||«      }	t	        t
        |||	d||f¬«      }
t        |
j                  t        ||«      dd¬	«       y )
Nrª   r«   r   r!   ©r   r   r¯   )r­   r±   r®   r°   )	r³   r´   rI   r   r	   r   r   rµ   r$   )r¶   r@  rA  r   r   rB   rC   ÚhigherÚlowerr­   r˜   s              r   Ú.test_base_1d_quadratures_error_from_differencezBTestRulesQuadrature.test_base_1d_quadratures_error_from_differenceþ  sÄ   € ð
 �I‰I�a˜rŸz™zˆIÓ*ˆØ�J‰J˜�s "§*¡*ˆJÓ-ˆØ�J‰J˜�s "§*¡*ˆJÓ-ˆà�˜1‘˜n¨QÑ/°BÔ7ˆØ�	˜!‘˜^¨AÑ.°2Ô6ˆä˜v uÓ-ˆÜÜØˆqØØØ�R�ô
ˆô 	Ø�L‰LÜ$ Q¨Ó+ØØö		
r   r3  c                 ót   — t        j                  t        «      5   |d|¬«       d d d «       y # 1 sw Y   y xY w)Nr   rC  )rÈ   rÉ   rÊ   )r¶   r3  r   s      r   Ú$test_one_point_fixed_quad_impossiblez8TestRulesQuadrature.test_one_point_fixed_quad_impossible  s/   € ô �]‰]œ9Ó%ñ 	!Ù�q˜RÕ ÷	!÷ 	!ñ 	!ús   š.®7N)r×   rØ   rÙ   rÚ   rÈ   rÛ   rÜ   r   r   r?  rF  rH  r.   r   r   r:  r:  Ù  sÀ   „ ñð ‡[�[×ÑÐ2Ø	  $Ð'Ø	  $Ð'Ø	  %Ð(Ø	 Ð'Ø	 Ð'ð5ó ñ
óð
ð0 ‡[�[×ÑÐ<Ø
!Ð#:Ð	;¸WÐEð?ó ñ
óð
ð2 ‡[�[×Ñ˜\Øð,ó ñ!óñ!r   r:  c                   óh   — e Zd ZdZej
                  j                  d edd«      «      d„ «       Zd„ Z	y)ÚTestRulesCubaturez6
    Tests underlying cubature rules (ndim >= 2).
    r:   r!   é   c                 óŠ   — t        ||¬«      j                  \  }}|j                  d   d|z  d|dz  z  z   d|z  z   dz   k(  sJ ‚y)z“
        Tests that the number of function evaluations required for Genz-Malik cubature
        matches the number in Genz and Malik 1980.
        rC  r   r!   r   N)r   Únodes_and_weightsr2   )r¶   r:   r   ÚnodesÚ_s        r   Ú test_genz_malik_func_evaluationsz2TestRulesCubature.test_genz_malik_func_evaluations(  sO   € ô % T¨bÔ1×CÑC‰ˆˆqà�{‰{˜1‰~ ! T¡'¨Q¨t°Q©w©YÑ!6¸¸4¹Ñ!?À!Ñ!CÒCÐCÑCr   c                 ó~   — t        j                  t        d¬«      5  t        d|¬«       d d d «       y # 1 sw Y   y xY w)Nzonly defined for ndim >= 2rÆ   r   rC  )rÈ   rÉ   rÊ   r   )r¶   r   s     r   Útest_genz_malik_1d_raises_errorz1TestRulesCubature.test_genz_malik_1d_raises_error3  s0   € Ü�]‰]œ9Ð,HÔIñ 	(Ü˜a BÕ'÷	(÷ 	(ñ 	(ús   œ3³<N)
r×   rØ   rÙ   rÚ   rÈ   rÛ   rÜ   rt   rP  rR  r.   r   r   rJ  rJ  "  s9   „ ñð ‡[�[×Ñ˜V¡U¨1¨b£\Ó2ñDó 3ðDó(r   rJ  r  r  r  c                   ó®   — e Zd Zej                  j                  dddej                   gdej                  ej                  gg d¢g d¢gfg«      d„ «       Zy)ÚTestTransformations)rB   rC   rv   r   r   rá   )r?   rZ   rZ   c                 óî  ‡‡	— t        |j                  d«      «      Š	‰D �cg c]  }|j                  ||j                  ¬«      ‘Œ! c}Št	        ˆˆ	fd„|j                  |‰	j                  ¬«      |j                  |‰	j                  ¬«      ‰	¬«      }‰D ]O  }|j                  ‰	j                  |d«      «      }t        j                  t        d¬«      5   ||«       ddd«       ŒQ yc c}w # 1 sw Y   ŒaxY w)	zx
        Test that break points are correctly mapped under the _InfiniteLimitsTransform
        transformation.
        r   r«   c                 ó   •— t        | ‰‰«      S r  )r¢   )r   rv   Ú	xp_compats    €€r   r  zKTestTransformations.test_infinite_limits_maintains_points.<locals>.<lambda>S  s   ø€ Ô/°°6¸9ÓE€ r   rC  r(   r�   rÆ   N)
r   ÚemptyrI   r´   r   Úinvr   rÈ   rÉ   rÊ   )
r¶   rB   rC   rv   r   ÚpÚf_transformedr¡   Útransformed_pointrW  s
      `     @r   Ú%test_infinite_limits_maintains_pointsz9TestTransformations.test_infinite_limits_maintains_points>  sÛ   ù€ ô  $ B§H¡H¨Q£KÓ0ˆ	Ø;AÖB°a�"—*‘*˜Q b§j¡j�*Õ1ÒBˆä0äEØ�J‰J�q 	× 1Ñ 1ˆJÓ2Ø�J‰J�q 	× 1Ñ 1ˆJÓ2Øô
ˆð ò 	1ˆEØ -× 1Ñ 1°)×2CÑ2CÀEÈ7Ó2SÓ TÐä—‘œyÐ0QÔRñ 1ÙÐ/Ô0÷1ð 1ñ	1ùò C÷1ð 1ús   ¡$C&Ã	C+Ã+C4	N)	r×   rØ   rÙ   rÈ   rÛ   rÜ   r5   r,  r]  r.   r   r   rT  rT  8  s_   „ ð ‡[�[×ÑÐ1à��D—H‘H�9ÐØ�—‘˜$Ÿ(™(Ð#âÚðð	
ð	4ó 	ñ1ó	ñ1r   rT  c                   ó    — e Zd ZdZdd„Zdd„Zy)rÁ   zP
    A rule with fake high error so that cubature will keep on subdividing.
    c                 ó\   — t        ||«      }t        d|¬«      }|j                  ||||«      S )NrZ   rC  )r   r   rµ   )r¶   rô   rB   rC   r®   r   Ú
underlyings          r   rµ   zBadErrorRule.estimatee  s1   € Ü˜Q Ó"ˆÜ,¨R°BÔ7ˆ
à×"Ñ" 1 a¨¨DÓ1Ð1r   c                 óT   — t        ||«      }|j                  d|j                  ¬«      S )Ng    €„.Ar«   )r   rI   r´   )r¶   rô   rB   rC   r®   r   s         r   Úestimate_errorzBadErrorRule.estimate_errork  s%   € Ü˜Q Ó"ˆØ�z‰z˜# R§Z¡ZˆzÓ0Ð0r   N)r.   )r×   rØ   rÙ   rÚ   rµ   rb  r.   r   r   rÁ   rÁ   `  s   „ ñó2ô1r   rÁ   )=r5   r�   rr   rÈ   Úscipy._lib._array_apir   r   r   r   r   Úscipy.conftestr   Úscipy.integrater	   Úscipy.integrate._rulesr
   r   r   r   r   r   Úscipy.integrate._cubaturer   rÛ   ÚusefixturesÚ
pytestmarkr   r   r$   r*   r/   r<   rD   rN   rS   rX   r]   rb   rd   rf   rh   rn   rm   r}   r   r„   r‡   r‰   rŽ   r‘   r™   r›   r¢   r¤   rÜ   rÞ   r/  r:  rJ  rT  rÁ   r.   r   r   ú<module>rj     s  ðÛ Û Û ã ÷õ õ 0å $÷÷ õ ?à�k‰k×%Ñ%Ð&8Ó9Ð;€
Ø—;‘;×/Ñ/Ð ò"ò/ò
Kò0ò
Oò"
òòSò&ò"ò"Aò"òòJò"2òò"òò0ò"ò
Gòò,ò	ò*ò#ð ÷R*ð R*ó ðR*ðj ‡�×Ñ˜ $ Ó(Ø‡�×Ñ˜ $ Ó(Ø‡�×Ñ˜ò "ó ð
 ÷S

ð S

ó óó )ó )ðS

ðl ÷%Jð %Jó ð%JðP ÷E!ð E!ó ðE!ðP ÷(ð (ó ð(ð* ÙØØ9Ð:ô÷ 1ð  1ó	ó ð
 1ôF1�4õ 1r   