§
    fŠtj¯�  ã                   óˆ  — 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	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 ej        j        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„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d „ Z2 e
e¦  «         G d!„ d"¦  «        ¦   «         Z3 e
e¦  «        ej         4                    d#d$g¦  «        ej         4                    d%d&g¦  «        ej         4                    d'g d(¢¦  «         G d)„ d*¦  «        ¦   «         ¦   «         ¦   «         ¦   «         Z5 G d+„ d,¦  «        Z6 G d-„ d.¦  «        Z7 G d/„ d0¦  «        Z8ej                             d1e¬2¦  «        ej                             d3e¬2¦  «         G d4„ d5¦  «        ¦   «         ¦   «         Z9 G d6„ d7e¦  «        Z:dS )8é    N)Úarray_namespaceÚxp_assert_closeÚxp_sizeÚ	np_compatÚis_array_api_strictÚmake_xp_test_case)Úcubature)Ú_InfiniteLimitsTransform)ÚRuleÚ	FixedRuleÚNestedFixedRuleÚGaussLegendreQuadratureÚGaussKronrodQuadratureÚGenzMalikCubaturez2JAX/Dask arrays do not support boolean assignment.c                 ód   — |                      | d¦  «        }|                      |d¦  «        }||z  S ©N)éÿÿÿÿé   r   )r   r   r   ©Úreshape)ÚxÚnÚxpÚ
x_reshapedÚ
n_reshapeds        úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/integrate/tests/test_cubature.pyÚbasic_1d_integrandr   "   s3   € Ø—’˜A˜zÑ*Ô*€JØ—’˜A˜zÑ*Ô*€Jà�zÑ!Ð!ó    c                 óF   — |                      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                 ó†   — |                      |                     | d¬¦  «        d¦  «        |                      |d¦  «        z  S )Nr   ©Úaxisr!   ©r   r   )r   Úsum)r   r   r   s      r   Úbasic_nd_integrandr)   .   s9   € Ø�:Š:�b—f’f˜Q R�fÑ(Ô(¨'Ñ2Ô2°B·J²J¸qÀ'Ñ4JÔ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.   2   s0   € à��1‘‰XˆI˜˜A˜a™C™Ñ  A a¡C¨!¨A©#¡;Ñ/Ð/r   c                 ó0  — | j         d         | j         d         }}|d         }|                     | |gdgt          |j         ¦  «        dz
  z  ¢|‘R ¦  «        }|                     dt          j        z  |z  |                     ||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;   7   s’   € ð ”G˜A”J ¤¨¤ˆT€Gà˜YÔ'€OØ—’˜A ÐN¨A¨3µ°F´LÑ0AÔ0AÀAÑ0EÑ+FÐNÈÐNÐNÑOÔO€Jà�6Š6�!•D”G‘)˜A‘+ §¢ ¸Ñ'CÈ" Ñ MÔ MÑMÑNÔNÐNr   c           	      ó&  — t          | ¦  «        }|                     | g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        } |                     |g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        }d|z  dz  |                     |d¬¦  «        z  |                     dt          j        z  |z  |                     || |z   z  dz  d¬¦  «        z   ¦  «        z  |                     | 	                    || |z
  z  dz  ¦  «        d¬¦  «        z  S )Nr   éþÿÿÿr   r%   r    ç      à?)
r   r   r2   r1   Úprodr3   r4   r5   r(   Úsin)ÚaÚbr6   r7   r   r9   s         r   Úgenz_malik_1980_f_1_exactrC   H   s  € Ý�1‰:Œ:€DØ
�
Š
�1Ð<˜!˜�c &¤,Ñ/Ô/°!Ñ3Ñ4Ð<°tÐ<Ð<Ñ=Ô=€AØ
�
Š
�1Ð<˜!˜�c &¤,Ñ/Ô/°!Ñ3Ñ4Ð<°tÐ<Ð<Ñ=Ô=€Að 
ˆd‰
Ø
ñ	Ø�GŠG�F ˆGÑ$Ô$ñ	%à
�&Š&�•4”7‘˜1‘˜rŸvšv f°°!±¡n°sÑ&:À˜vÑDÔDÑDÑ
EÔ
Eñ	Fð �'Š'�"—&’&˜ 1 Q¡3™¨Ñ)Ñ*Ô*°ˆ'Ñ
4Ô
4ñ	5ðr   c                 ó  — |                      |                      |d d…         ¦  «        ¦  «        }|                      |                      |¦  «        ¦  «        }d}|                     |d¬¦  «        d         }||z  |z  }||fS )Nr   é	   r%   ©.N©ÚasarrayÚrandomr(   )Úrngr1   r   r6   r7   Ú
difficultyÚnormalisation_factorss          r   Úgenz_malik_1980_f_1_random_argsrM   U   s~   € Ø
�
Š
�3—:’:˜e C R CœjÑ)Ô)Ñ*Ô*€AØ�ZŠZ˜Ÿ
š
 5Ñ)Ô)Ñ*Ô*€Fà€JØŸFšF 6°˜FÑ3Ô3°IÔ>ÐØ˜&Ñ Ð#8Ñ8€Fàˆvˆ;Ðr   c                 ó  — | j         d         | j         d         }}|d         }|d         }|                     | |gdgt          |j         ¦  «        dz
  z  ¢|‘R ¦  «        }d|                     |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   r0   r   r    r%   )r1   r   r2   r?   ©	r   r7   Úbetasr   r8   r9   r:   Úbetas_reshapedr   s	            r   Úgenz_malik_1980_f_2rR   `   s•   € ð ”G˜A”J ¤¨¤ˆT€Gà˜YÔ'€OØ˜9Ô%€Nà—’˜A ÐN¨A¨3µ°F´LÑ0AÔ0AÀAÑ0EÑ+FÐNÈÐNÐNÑOÔO€JàˆR�WŠW�_ aÑ'¨:°nÑ+DÀqÑ*HÑHÈrˆWÑRÔRÑRÐRr   c                 óÊ  — t          | ¦  «        }|                     | g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        } |                     |g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        }d|z  dz  |                     |d¬¦  «        z  |                     |                     | |z
  |z  ¦  «        |                     ||z
  |z  ¦  «        z
  d¬¦  «        z  S ©Nr   r   r%   )r   r   r2   r1   r?   Úatan©rA   rB   r7   rP   r   r9   s         r   Úgenz_malik_1980_f_2_exactrW   s   sò   € Ý�1‰:Œ:€DØ
�
Š
�1Ð<˜!˜�c &¤,Ñ/Ô/°!Ñ3Ñ4Ð<°tÐ<Ð<Ñ=Ô=€AØ
�
Š
�1Ð<˜!˜�c &¤,Ñ/Ô/°!Ñ3Ñ4Ð<°tÐ<Ð<Ñ=Ô=€Að 
ˆd‰
�Q‰�r—w’w˜v¨B�wÑ/Ô/Ñ/Ø
�'Š'Ø�GŠG�Q˜‘Y Ñ&Ñ'Ô'¨"¯'ª'°1°u±9¸fÑ2DÑ*EÔ*EÑEØð ñ 
ô 
ñ	
ðr   c                 ó¬  — |d         }|                      |                      |¦  «        ¦  «        }|                      |                      |¦  «        ¦  «        }d}|                     ||                      d¦  «        z  d¬¦  «        }||                      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    rF   é
   )rH   rI   r?   r4   Úpow)	rJ   r1   r   r9   r7   rP   rK   ÚproductsrL   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Ô9€HØ% r§z¢z°!°q¸±v±,Ñ'?Ô'?Ñ?ÀÔKÐØÐ+Ñ+­d¬h°zÀ1ÈÈ$ÉÁ<Ñ.PÔ.PÑP€Fð ˆb�L€Fà�5ˆ=Ðr   c                 ó
  — | j         d         | j         d         }}|d         }|                     | |gdgt          |j         ¦  «        dz
  z  ¢|‘R ¦  «        }|                     |                     ||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   r0   r   r%   ©r1   r   r2   Úexpr(   ©r   r7   r   r8   r9   r:   r   s          r   Úgenz_malik_1980_f_3ra   ’   sƒ   € ð ”G˜A”J ¤¨¤ˆT€Gà˜YÔ'€OØ—’˜A ÐN¨A¨3µ°F´LÑ0AÔ0AÀAÑ0EÑ+FÐNÈÐNÐNÑOÔO€Jà�6Š6�"—&’&˜¨:Ñ5¸B�&Ñ?Ô?Ñ@Ô@Ð@r   c                 ó¾  — t          | ¦  «        }|                     | g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        } |                     |g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        }d|z  dz  |                     |d¬¦  «        z  |                     |                     || z  ¦  «        |                     ||z  ¦  «        z
  d¬¦  «        z  S rT   )r   r   r2   r1   r?   r_   )rA   rB   r7   r   r9   s        r   Úgenz_malik_1980_f_3_exactrc   £   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Ñ9Àˆ'Ñ
CÔ
Cñ	Dðr   c                 ó¦   — |                      |                      |¦  «        ¦  «        }|                     |d¬¦  «        d         }d}||z  |z  }|fS )Nr   r%   rF   g      (@rG   )rJ   r1   r   r7   rL   rK   s         r   Úgenz_malik_1980_f_3_random_argsre   ®   sW   € Ø�ZŠZ˜Ÿ
š
 5Ñ)Ô)Ñ*Ô*€FØŸFšF 6°˜FÑ3Ô3°IÔ>ÐØ€JØ˜&Ñ Ð#8Ñ8€Fàˆ9Ðr   c                 óø   — | j         d         | j         d         }}|d         }|                     | |gdgt          |j         ¦  «        dz
  z  ¢|‘R ¦  «        }d|                     ||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   r0   r   r%   )r1   r   r2   r(   r`   s          r   Úgenz_malik_1980_f_4rg   ·   s‡   € ð ”G˜A”J ¤¨¤ˆT€Gà˜YÔ'€OØ—’˜A ÐN¨A¨3µ°F´LÑ0AÔ0AÀAÑ0EÑ+FÐNÈÐNÐNÑOÔO€Jà�—’�¨Ñ3¸"�Ñ=Ô=Ñ=À$ÀÀqÁÑIÐIr   c                 óX   ‡‡‡— t          | ¦  «        Šˆˆˆfd„}t          || |‰¦  «        S )Nc                 ó  •— ‰                      | g dgt          ‰j        ¦  «        dz
  z  ¢‰‘R ¦  «        }d‰z  ‰                     ‰d¬¦  «        z  t	          j        ‰¦  «        z  d‰                     ‰|z  d¬¦  «        z   z  S rT   )r   r2   r1   r?   r4   Ú	factorialr(   )r   r   r7   r9   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Ð#IÑJÔJˆ
ð �$‰J�r—w’w˜v¨B�wÑ/Ô/Ñ/ÝŒn˜TÑ"Ô"ñ#à�2—6’6˜& :Ñ-°B�6Ñ7Ô7Ñ7ñ9ð	
r   )r   Ú_eval_indefinite_integral)rA   rB   r7   r   rk   r9   s     `` @r   Úgenz_malik_1980_f_4_exactrm   È   sI   øøø€ Ý�1‰:Œ:€Dð
ð 
ð 
ð 
ð 
ð 
ð 
õ % Q¨¨1¨bÑ1Ô1Ð1r   c           
      ó~  ‡— t          |¦  «        }|                     ||gd¬¦  «        Šd}t          j        t	          d¦  «        |¬¦  «        D ]m}|                     ˆfd„t          |t	          |¦  «        ¦  «        D ¦   «         ¦  «        }|t          dt          |¦  «        |z   ¦  «         | |¦  «        z  z  }Œn|S )z‡
    Calculates a definite integral from points `a` to `b` by summing up over the corners
    of the corresponding hyperrectangle.
    r   r%   r    )Úrepeatc                 óD   •— g | ]\  }}t          ‰||f         ¦  «        ‘ŒS r-   )Úfloat)Ú.0ÚiÚjÚpointss      €r   ú
<listcomp>z-_eval_indefinite_integral.<locals>.<listcomp>ã   s-   ø€ ÐCÐCÐC¡T Q¨�U�6˜!˜Q˜$”<Ñ Ô ÐCÐCÐCr   r   )	r   ÚstackÚ	itertoolsÚproductÚrangerH   ÚziprZ   r(   )	rk   rA   rB   r   r9   ÚoutÚindÚselected_pointsru   s	           @r   rl   rl   ×   sÃ   ø€ õ �1‰:Œ:€DØ�XŠX�q˜!�f 1ˆXÑ%Ô%€Fà
€CÝÔ ¥ q¡¤°$Ð7Ñ7Ô7ð =ð =ˆØŸ*š*ØCÐCÐCÐC­S°µe¸D±k´kÑ-BÔ-BÐCÑCÔCñ
ô 
ˆð 	�s�2•s˜3‘x”x $‘Ñ'Ô'¨!¨!¨OÑ*<Ô*<Ñ<Ñ<ˆˆà€Jr   c                 ó¼   — |d         }|                      |                      |¦  «        ¦  «        }|                     |d¬¦  «        d         }d}||z  |z  |z  }|fS )Nr   r%   rF   g      ,@rG   )rJ   r1   r   r9   r7   rL   rK   s          r   Úgenz_malik_1980_f_4_random_argsr€   ê   se   € Ø�Œ9€Dà�ZŠZ˜Ÿ
š
 5Ñ)Ô)Ñ*Ô*€FØŸFšF 6°˜FÑ3Ô3°IÔ>ÐØ€JØ˜4Ñ 6Ñ)Ð,AÑA€Fàˆ9Ðr   c                 ó.  — | j         d         | j         d         }}|d         }|d         }|                     | |gdgt          |j         ¦  «        dz
  z  ¢|‘R ¦  «        }|                     |                     |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   r0   r   r    r%   r^   rO   s	            r   Úgenz_malik_1980_f_5r‚   õ   s¦   € ð ”G˜A”J ¤¨¤ˆT€Gà˜YÔ'€OØ˜9Ô%€Nà—’˜A ÐN¨A¨3µ°F´LÑ0AÔ0AÀAÑ0EÑ+FÐNÈÐNÐNÑOÔO€Jà�6Š6Ø	�Š� Ñ" j°>Ñ&AÀAÑ%EÑEÈBˆÑ	OÔ	OÐOñô ð r   c           	      ó  — t          | ¦  «        }|                     | g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        } |                     |g dgt          |j        ¦  «        dz
  z  ¢|‘R ¦  «        }d|z  dz  |                     |d¬¦  «        z  t
          j        |dz  z  z  |                     t          j         	                    ||| z
  z  ¦  «        t          j         	                    |||z
  z  ¦  «        z   d¬¦  «        z  S )Nr   r>   r   r%   r    )
r   r   r2   r1   r?   r4   r5   ÚscipyÚspecialÚerfrV   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�T˜!‘VÑñ	ð �'Š'ÝŒM×Ò˜f¨°©	Ñ2Ñ3Ô3ÝŒm×Ò ¨!¨e©)Ñ 4Ñ5Ô5ñ6àð ñ 
ô 
ñ	
ð	r   c                 ón  — |                      |                      |¦  «        ¦  «        }|                      |                      |¦  «        ¦  «        }d}|                     |                     ||                      d¦  «        z  d¬¦  «        ¦  «        d         }||z  t	          j        |¦  «        z  }||fS )Ng      5@g       @r   r%   rF   )rH   rI   Úsqrtr(   r4   )rJ   r1   r   r7   rP   rK   rL   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Ô$LÑMÔMÈiÔXÐØÐ+Ñ+­d¬i¸
Ñ.CÔ.CÑC€Fà�5ˆ=Ðr   c                 ó  — | j         d         | j         d         }}|d         }|                     | |gdgt          |j         ¦  «        dz
  z  ¢|‘R ¦  «        }|                     |                     ||z  dz  d¬¦  «         ¦  «        S )z^
    .. math::

        f(\mathbf x) = \exp\left(-\sum^n_{i = 1} (\alpha_i x_i)^2 \right)
    r   r   r0   r   r    r%   r^   r`   s          r   Ú
f_gaussianrŒ   )  s‹   € ð ”G˜A”J ¤¨¤ˆT€GØ˜YÔ'€OØ—’˜A ÐN¨A¨3µ°F´LÑ0AÔ0AÀAÑ0EÑ+FÐNÈÐNÐNÑOÔO€Jà�6Š6�2—6’6˜?¨ZÑ7¸!Ñ;À"�6ÑEÔEÐEÑFÔFÐFr   c                 ó¼  — t          | ¦  «        }d}d}t          |¦  «        D ]{}|                     | |         ¦  «        r!|                     ||         ¦  «        r|dz  }Œ>|                     | |         ¦  «        |                     ||         ¦  «        k    r|dz  }Œ|t          j        t          j        ¦  «        |z  d|z  |                     |d¬¦  «        z  z  S )Nr   r   r    r   r%   )r   rz   Úisinfr4   r‰   r5   r?   )rA   rB   r7   r   r9   Údouble_infinite_countÚsemi_infinite_countrs   s           r   Úf_gaussian_exactr‘   6  sØ   € õ �1‰:Œ:€DØÐØÐå�4‰[Œ[ð %ð %ˆØ�8Š8�A�a”D‰>Œ>ð 	%˜bŸhšh q¨¤t™nœnð 	%Ø! QÑ&Ð!Ð!Ø�XŠX�a˜”d‰^Œ^˜rŸxšx¨¨!¬™~œ~Ò-Ð-Ø 1Ñ$ÐøåŒI•d”gÑÔ $Ñ&Ø	ÐÑ §¢¨°b Ñ!9Ô!9Ñ9ñð r   c                 ób   — |                      |                      |¦  «        ¦  «        }|dz  }|fS )Néd   )rH   rI   )rJ   r1   r   r7   s       r   Úf_gaussian_random_argsr”   L  s2   € Ø�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  |                      |¦  «        z  |                     | |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œ   V  s˜   € ð �q�q�q˜!�t”˜e A A A q Dœk¨5°°°°A°¬;¸¸a¸a¸aÀ¸d¼ÐC�J€A€qˆ!ˆQØ��!�!�!�T�'”
‰?˜bŸgšg a™jœjÑ
(¨2¯6ª6°1°"°Q¸±T±'¸!¸Q¹$±,Ñ+?Ô+?Ñ
?€CàŒ5€Lr   c                 ó8   — ddd|z  z   z  t           j        dz  z  S )Nr   r    g      ø?)r4   r5   )rA   rB   r   r   s       r   Úf_modified_gaussian_exactrž   b  s"   € ð
 ˆa�!�A‘#‰g‰;�œ SÑ)Ñ)Ð)r   c                 óœ   — |D ]*}|                      | |k    ¦  «        rt          d¦  «        ‚Œ+|                     | 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Úonesr1   )r—   ru   r   Úpoints       r   Úf_with_problematic_pointsr¥   j  s]   € ð ð @ð @ˆØ�6Š6�%˜5’.Ñ!Ô!ð 	@ÝÐ>Ñ?Ô?Ð?ð	@ð �7Š7�5”;˜q”>Ñ"Ô"Ð"r   c                   óˆ   — e Zd ZdZej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ ZdS )ÚTestCubaturez7
    Tests related to the interface of `cubature`.
    Úrule_str)zgauss-kronrodú
genz-malikÚgk21Úgk15c                 ó8  — |                      d|j        ¬¦  «        }|                     ddg|j        ¬¦  «        }|                     ddg|j        ¬¦  «        }t          t          |||||f¬¦  «        }t          |j        t          ||¦  «        dd¬¦  «         d S )Né   ©Údtyper   r    )ÚruleÚargsç:Œ0âŽyE>©ÚrtolÚatol)ÚarangeÚfloat64rH   r	   r)   r   Úestimater.   )Úselfr¨   r   r   rA   rB   r›   s          r   Útest_pass_strzTestCubature.test_pass_str~  s§   € ð �IŠI�a˜rœzˆIÑ*Ô*ˆØ�JŠJ˜˜1�v R¤ZˆJÑ0Ô0ˆØ�JŠJ˜˜1�v R¤ZˆJÑ0Ô0ˆåÕ)¨1¨a°hÀaÈÀWÐMÑMÔMˆåØŒLÝ$ Q¨Ñ+Ô+ØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óæ   — t          j        dt           j        ¬¦  «        }dg}dg}t          t          |||t           f¬¦  «        }t          |j        t          |t           ¦  «        dd¬¦  «         d S )Nr­   r®   r   r    ©r±   r²   r³   )r   r¶   r·   r	   r   r   r¸   r#   )r¹   r   rA   rB   r›   s        r   Útest_pass_array_like_not_arrayz+TestCubature.test_pass_array_like_not_array’  s‡   € ÝÔ˜Q¥iÔ&7Ð8Ñ8Ô8ˆØˆCˆØˆCˆåÝØØØ•Y�ð	
ñ 
ô 
ˆõ 	ØŒLÝ$ Q­	Ñ2Ô2ØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — |                      dg¦  «        }|                      dg¦  «        }t          ¦   «         }t          t          |||d|                     d|j        ¬¦  «        |f¬¦  «        }|j        dk    sJ ‚|j        dk    sJ ‚d S )Nr   r   rY   r­   r®   )r°   Úmax_subdivisionsr±   Únot_converged)rH   ÚBadErrorRuler	   r   r¶   r·   ÚsubdivisionsÚstatus)r¹   r   rA   rB   r°   r›   s         r   Ú!test_stops_after_max_subdivisionsz.TestCubature.test_stops_after_max_subdivisions¥  s™   € Ø�JŠJ˜�s‰OŒOˆØ�JŠJ˜�s‰OŒOˆÝ‰~Œ~ˆåÝØØØØØ—)’)˜A R¤Z�)Ñ0Ô0°"Ð5ð
ñ 
ô 
ˆð Ô 2Ò%Ð%Ð%Ð%ØŒz˜_Ò,Ð,Ð,Ð,Ð,Ð,r   c                 ó  — |                      dgg|j        ¬¦  «        }|                      dgg|j        ¬¦  «        }t          j        t          d¬¦  «        5  t          t          |||f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r®   r   z`a` and `b` must be 1D arrays©Úmatchr¼   )rH   r·   ÚpytestÚraisesÚ	Exceptionr	   r   ©r¹   r   rA   rB   s       r   Útest_a_and_b_must_be_1dz$TestCubature.test_a_and_b_must_be_1d¶  sÌ   € Ø�JŠJ˜˜�u B¤JˆJÑ/Ô/ˆØ�JŠJ˜˜�u B¤JˆJÑ/Ô/ˆåŒ]�9Ð,KÐLÑLÔLð 	;ð 	;ÝÕ'¨¨A°R°EÐ:Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   ÁA?Á?BÂBc                 óô   — |                      g ¦  «        }|                      g ¦  «        }t          j        t          d¬¦  «        5  t	          t
          |||f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz`a` and `b` must be nonemptyrÆ   r¼   )rH   rÈ   rÉ   rÊ   r	   r   rË   s       r   Útest_a_and_b_must_be_nonemptyz*TestCubature.test_a_and_b_must_be_nonempty½  s´   € Ø�JŠJ�r‰NŒNˆØ�JŠJ�r‰NŒNˆåŒ]�9Ð,JÐKÑKÔKð 	;ð 	;ÝÕ'¨¨A°R°EÐ:Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   ÁA-Á-A1Á4A1c           
      ó^  — |                      d|j        ¬¦  «        }|                     dg|j        ¬¦  «        }|                     dg|j        ¬¦  «        }t          t          ||||f¬¦  «        }t          |j        |                     dgdgdgdgdgg|j        ¬¦  «        dd¬¦  «         d S )Nr­   r®   r   r¼   r²   r³   )r¶   r·   rH   r	   r   r   r¸   ©r¹   r   r   rA   rB   r›   s         r   Útest_zero_width_limitsz#TestCubature.test_zero_width_limitsÄ  sÇ   € Ø�IŠI�a˜rœzˆIÑ*Ô*ˆà�JŠJ˜�s "¤*ˆJÑ-Ô-ˆØ�JŠJ˜�s "¤*ˆJÑ-Ô-ˆåÝØØØ�R�ð	
ñ 
ô 
ˆõ 	ØŒLØ�JŠJ˜˜˜a˜S 1 #¨ s¨Q¨CÐ0¸¼
ˆJÑCÔCØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó4  — |                      d|j        ¬¦  «        }|                     dg|j        ¬¦  «        }|                     dg|j        ¬¦  «        }t          t          ||||f¬¦  «        }t          |j        t          ||¦  «         dd¬¦  «         d S )Nr­   r®   r    r   r¼   r²   r³   )r¶   r·   rH   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ˆIÑ*Ô*ˆà�JŠJ˜�s "¤*ˆJÑ-Ô-ˆØ�JŠJ˜�s "¤*ˆJÑ-Ô-ˆåÝØØØ�R�ð	
ñ 
ô 
ˆõ 	ØŒLÝ% a¨Ñ,Ô,Ð,ØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c           
      ó  — t          t          |                     dg|j        ¬¦  «        |                     dg|j        ¬¦  «        g |                     dg|j        ¬¦  «        |f¬¦  «        j        j        }||j        k    sJ ‚t          t          |                     dg|j        ¬¦  «        |                     dg|j        ¬¦  «        g |                     dg|j        ¬¦  «        |f¬¦  «        j        j        }||j        k    sJ ‚t          t          |                     dg|j        ¬¦  «        |                     dg|j        ¬¦  «        g |                     dg|j        ¬¦  «        |f¬¦  «        j        j        }||j        k    sJ ‚d S )Nr   r®   r   )ru   r±   )r	   r   rH   r·   r¸   r¯   Úfloat32)r¹   r   Úresult_dtypes      r   Ú$test_result_dtype_promoted_correctlyz1TestCubature.test_result_dtype_promoted_correctlyì  s‘  € ÝÝØ�JŠJ˜�s "¤*ˆJÑ-Ô-Ø�JŠJ˜�s "¤*ˆJÑ-Ô-ØØ—*’*˜a˜S¨¬
�*Ñ3Ô3°RÐ8ð
ñ 
ô 
ô ”5ð 	ð ˜rœzÒ)Ð)Ð)Ð)åÝØ�JŠJ˜�s "¤*ˆJÑ-Ô-Ø�JŠJ˜�s "¤*ˆJÑ-Ô-ØØ—*’*˜a˜S¨¬
�*Ñ3Ô3°RÐ8ð
ñ 
ô 
ô ”5ð 	ð ˜rœzÒ)Ð)Ð)Ð)åÝØ�JŠJ˜�s "¤*ˆJÑ-Ô-Ø�JŠJ˜�s "¤*ˆJÑ-Ô-ØØ—*’*˜a˜S¨¬
�*Ñ3Ô3°RÐ8ð
ñ 
ô 
ô ”5ð 	ð ˜rœzÒ)Ð)Ð)Ð)Ð)Ð)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÈ   ÚmarkÚparametrizerº   r½   rÄ   rÌ   rÎ   rÑ   rÓ   r×   r-   r   r   r§   r§   x  sÈ   € € € € € ðð ð „[×Ò˜Zð *ð *ð *ñ ô ð
ð 
ñô ð
ð
ð 
ð 
ð&-ð -ð -ð";ð ;ð ;ð;ð ;ð ;ð
ð 
ð 
ð(
ð 
ð 
ð(*ð *ð *ð *ð *r   r§   r´   g-Cëâ6?rµ   gñhãˆµøä>r°   )r«   rª   r©   c                   ó4	  — e Zd ZdZ edd¬¦  «        e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dd¬¦  «        e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                             dg d¢¦  «        d„ ¦   «         ¦   «         ¦   «         Ze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j                             d-e¬¦  «        ej                             de¬¦  «        e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d0ddej         ej         gej        ej        ej        ej        gfeeed0ej         ej         ej         ej         gddej        ej        gfd1„ d2„ d3„  e ¦   «         d
ej         dgej        dej        gf ej!        e"e#d4„  e ¦   «         ddej         ej         gd
ej        ej        ej        gfej        j$        ¬5¦  «        g
¦  «        d6„ ¦   «         ¦   «         ¦   «         Z%ej                             d-e¬¦  «        ej                             de¬¦  «        ej                             dd7„ d8ej&        z  gej         gej        gdggfd9„ d8ej&        z  ej         dgej        d
gddggfg¦  «        d:„ ¦   «         ¦   «         ¦   «         Z'd!S );ÚTestCubatureProblemsz9
    Tests that `cubature` gives the correct answer.
    ú
dask.arrayz0Dask hangs/takes a long time for some test cases©ÚreasonÚproblemr   rY   ç      Ð?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        ¬¦  «        }	t          ˆfd„|
D ¦   «         ¦  «        }
t          |¦  «        }|dk    r|dk     rt	          j        d¦  «         t          |||	|||g |
¢‰‘R ¬¦  «        }|j        dk    sJ ‚|j        } |||	g|
¢‰‘R Ž }t          ||||d|j
        › d	|j        › �¬
¦  «         d S )Nr®   c              3   óP   •K  — | ] }‰                      |‰j        ¬ ¦  «        V — Œ!dS )r®   N©rH   r·   )rr   Úargr   s     €r   ú	<genexpr>z:TestCubatureProblems.test_scalar_output.<locals>.<genexpr>ó  s5   øè è € ÐGÐG¸3�R—Z’Z ¨2¬:�ZÑ6Ô6ÐGÐGÐGÐGÐGÐGr   r©   r    ú1Genz-Malik cubature does not support 1D integrals©r°   r´   rµ   r±   Ú	convergedúestimate_error=ú, subdivisions=©r´   rµ   Úerr_msg)rH   r·   Útupler   rÈ   Úskipr	   rÃ   r¸   r   ÚerrorrÂ   )r¹   rã   r°   r´   rµ   r   ÚfÚexactrA   rB   r±   r9   r›   ÚestÚ	exact_sols        `         r   Útest_scalar_outputz'TestCubatureProblems.test_scalar_output  sG  ø€ ðl  'Ñˆˆ5�!�Q˜à�JŠJ�q ¤
ˆJÑ+Ô+ˆØ�JŠJ�q ¤
ˆJÑ+Ô+ˆÝÐGÐGÐGÐGÀ$ÐGÑGÔGÑGÔGˆå�q‰zŒzˆà�<ÒÐ D¨1¢H HÝŒKÐKÑLÔLÐLåØØØØØØØ�4�˜��ð
ñ 
ô 
ˆð Œz˜[Ò(Ð(Ð(Ð(àŒlˆØ�E˜!˜QÐ* Ð* rÐ*Ð*Ð*ˆ	åØØØØØR c¤iÐRÐRÀÔ@PÐRÐRð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   r1   )	©r    ©r+   )r,   )r   r    )r   r+   ©r   r,   )r+   r    )r+   r,   r    )r    r   r+   c           
      óò  — t           j                             d¦  «        }|d         }|dk    r|dk     rt          j        d¦  «         |dk    r%|dk    rt          j                             d¦  «         |\  }	}
} ||||¦  «        }|                     dg|z  |j        ¬	¦  «        }|                     dg|z  |j        ¬	¦  «        }t          |	|||||g |¢|‘R ¬
¦  «        }|j
        } |
||g|¢|‘R Ž }t          ||||d|j        › d|j        › �¬¦  «         d|j        › d|j        › d|                     |j
        |z
  ¦  «        › �}|j        dk    s
J |¦   «         ‚|j
        j        |d d…         k    sJ ‚d S )Nr   r   r©   r    rí   r­   ú!Gauss-Kronrod is slow in >= 5 dimr   r®   rî   rð   rñ   rò   ú, subdivisions= ú, true_error=rï   )r   rI   Údefault_rngrÈ   rõ   rÜ   ÚslowrH   r·   r	   r¸   r   rö   rÂ   ÚabsrÃ   r1   )r¹   rã   r°   r1   r´   rµ   r   rJ   r9   r÷   rø   Úrandom_argsr±   rA   rB   r›   rù   rú   ró   s                      r   Útest_array_outputz&TestCubatureProblems.test_array_output  sí  € õ\ Ô×*Ò*¨1Ñ-Ô-ˆØ�RŒyˆà�<ÒÐ D¨1¢H HÝŒKÐKÑLÔLÐLà�<ÒÐ D¨A¢I IÝŒK×ÒÐ@ÑAÔAÐAà 'Ñˆˆ5�+Øˆ{˜3  rÑ*Ô*ˆà�JŠJ˜�s˜T‘z¨¬ˆJÑ4Ô4ˆØ�JŠJ˜�s˜T‘z¨¬ˆJÑ4Ô4ˆåØØØØØØØ�4�˜��ð
ñ 
ô 
ˆð ŒlˆØ�E˜!˜QÐ* Ð* rÐ*Ð*Ð*ˆ	åØØØØØR c¤iÐRÐRÀÔ@PÐRÐRð	
ñ 	
ô 	
ð 	
ðD S¤Yð Dð DØ$'Ô$4ðDð Dà!#§¢¨¬°yÑ(@Ñ!AÔ!AðDð Dˆð Œz˜[Ò(Ð(Ð(¨'Ñ(Ô(Ð(àŒ|Ô! U¨3¨B¨3¤ZÒ/Ð/Ð/Ð/Ð/Ð/r   c                 ó   — | S ©Nr-   ©r   r   s     r   ú<lambda>zTestCubatureProblems.<lambda>m  s   € ˜!€ r   g      I@Nc                 ó2   — |                      | ¦  «        | z  S r	  ©r@   r
  s     r   r  zTestCubatureProblems.<lambda>|  s   € ˜"Ÿ&š& ™)œ) A™+€ r   gB¾sÂvi@g        c                 óF   — |                      | j        d         df¦  «        S ©Nr   r   ©r£   r1   r
  s     r   r  zTestCubatureProblems.<lambda>…  ó   € ˜"Ÿ'š' 1¤7¨1¤:¨q /Ñ2Ô2€ r   g      ð?)r>   r>   r>   c                 óF   — |                      | j        d         df¦  «        S r  r  r
  s     r   r  zTestCubatureProblems.<lambda>Ž  r  r   )rä   rä   rä   c                 óF   — |                      | j        d         df¦  «        S r  r  r
  s     r   r  zTestCubatureProblems.<lambda>˜  r  r   )gš™™™™™¹?rä   r>   c           
      ó¢  ‡— |\  }}}}	}
‰                      |‰j        ¬¦  «        }‰                      |	‰j        ¬¦  «        }	‰                      |‰j        ¬¦  «        }|
�ˆfd„|
D ¦   «         }
t          |¦  «        }|dk    r|dk     rt          j        d¦  «         |dk    r%|dk    rt          j                             d¦  «         t          |||	||||
‰f¬¦  «        }t          |j	        |||d	|j
        › d
|j        › �d¬¦  «         d	|j
        › d|j        › d‰                     |j	        |z
  ¦  «        › �}|j        dk    s
J |¦   «         ‚d S )Nr®   c                 óH   •— g | ]}‰                      |‰j        ¬ ¦  «        ‘ŒS ©r®   rê   ©rr   r¤   r   s     €r   rv   z:TestCubatureProblems.test_break_points.<locals>.<listcomp>«  ó+   ø€ ÐNÐNÐN¸e�b—j’j ¨b¬j�jÑ9Ô9ÐNÐNÐNr   r©   r    rí   r­   r   ©r°   r´   rµ   ru   r±   rð   rñ   F)r´   rµ   ró   Úcheck_dtyper  r  rï   )rH   r·   r   rÈ   rõ   rÜ   r  r	   r   r¸   rö   rÂ   r  rÃ   )r¹   rã   r°   r´   rµ   r   r÷   rø   rA   rB   ru   r9   r›   ró   s        `        r   Útest_break_pointsz&TestCubatureProblems.test_break_pointsj  s²  ø€ ðt ")Ñˆˆ5�!�Q˜à�JŠJ�q ¤
ˆJÑ+Ô+ˆØ�JŠJ�q ¤
ˆJÑ+Ô+ˆØ—
’
˜5¨¬
�
Ñ3Ô3ˆàÐØNÐNÐNÐNÀvÐNÑNÔNˆFå�q‰zŒzˆà�<ÒÐ D¨1¢H HÝŒKÐKÑLÔLÐLà�<ÒÐ D¨A¢I IÝŒK×ÒÐ@ÑAÔAÐAåØØØØØØØØ�ð	
ñ 	
ô 	
ˆõ 	ØŒLØØØØR c¤iÐRÐRÀÔ@PÐRÐRØð	
ñ 	
ô 	
ð 	
ð@ S¤Yð @ð @Ø$'Ô$4ð@ð @à!#§¢¨¬°uÑ(<Ñ!=Ô!=ð@ð @ˆð Œz˜[Ò(Ð(Ð(¨'Ñ(Ô(Ð(Ð(Ð(r   ú	jax.numpy)r   r   )r    r    rþ   c                 ó<   — d|                      | 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                 ó:   — |                      d|j        ¬¦  «        S )NgUUUUUUÅ?r®   rê   )rA   rB   r   s      r   r  zTestCubatureProblems.<lambda>  s   € ˜RŸZšZ¨°2´:˜ZÑ>Ô>€ r   c                 ó   — t          ¦   «         S r	  )rô   ©rJ   r1   r   s      r   r  zTestCubatureProblems.<lambda>  s
   € ¥5¡7¤7€ r   c                 ó@   — |                      g d¢|j        ¬¦  «        fS )N)r   r   r    r+   r,   r®   rê   r   s      r   r  zTestCubatureProblems.<lambda>0  s   € ¨¯
ª
°?°?°?È"Ì*¨
Ñ(UÔ(UÐ'W€ r   )Úmarksc           
      óÀ  — t           j                             d¦  «        }|\  }}}	}
}}|                     ||j        ¬¦  «        }|                     ||j        ¬¦  «        } |	||
|¦  «        }t          |¦  «        }|dk    r|dk     rt          j        d¦  «         |dk    r%|dk    rt          j         	                    d¦  «         |dk    r4|dk    r.t          |¦  «        rt          j                             d¦  «         t          ||||||g |¢|‘R ¬	¦  «        }|j        d
k    sJ ‚t          |j         |||g|¢|‘R Ž ||d|j        › d|j        › �d¬¦  «         d S )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   rI   r  rH   r·   r   rÈ   rõ   rÜ   r  r   Úxslowr	   rÃ   r   r¸   rö   rÂ   )r¹   rã   r°   r´   rµ   r   rJ   r÷   rø   Úrandom_args_funcÚrandom_args_shaperA   rB   r±   r9   r›   s                   r   Útest_infinite_limitsz)TestCubatureProblems.test_infinite_limitsÎ  s­  € õZ Ô×*Ò*¨1Ñ-Ô-ˆØ>EÑ;ˆˆ5Ð"Ð$5°q¸!à�JŠJ�q ¤
ˆJÑ+Ô+ˆØ�JŠJ�q ¤
ˆJÑ+Ô+ˆØÐ Ð%6¸Ñ;Ô;ˆå�q‰zŒzˆà�<ÒÐ D¨1¢H HÝŒKÐKÑLÔLÐLà�<ÒÐ D¨A¢I IÝŒK×ÒÐ=Ñ>Ô>Ð>à�<ÒÐ D¨A¢I IÕ2EÀbÑ2IÔ2I IÝŒK×ÒÐUÑVÔVÐVåØØØØØØØ�4�˜��ð
ñ 
ô 
ˆð Œz˜[Ò(Ð(Ð(Ð(åØŒLØˆE�!�QÐ"˜Ð"˜rÐ"Ð"Ð"ØØØR c¤iÐRÐRÀÔ@PÐRÐRØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó8   — |                      | ¦  «        | z  dz  S )Né   r  r
  s     r   r  zTestCubatureProblems.<lambda>g  s   € ˜2Ÿ6š6 !™9œ9 q™=¨1Ñ,€ r   gßê­Þê­Þ?c                 ó`   — |                      | d d …df         ¦  «        | d d …df         z  dz  S )Nr   r,  r  r
  s     r   r  zTestCubatureProblems.<lambda>v  s2   € ˜2Ÿ6š6 ! A A A q D¤'™?œ?¨Q¨q¨q¨q°!¨t¬WÑ4°qÑ8€ r   c           
      óÜ  ‡— |\  }}}}	}
‰                      |‰j        ¬¦  «        }‰                      |	‰j        ¬¦  «        }	‰                      |‰j        ¬¦  «        }t          |¦  «        }|dk    r|dk     rt          j        d¦  «         |
�ˆfd„|
D ¦   «         }
t          |||	||||
‰f¬¦  «        }|j        dk    sJ ‚t          |j        |||d|j	        › d	|j
        › �d
¬¦  «         d S )Nr®   r©   r    rí   c                 óH   •— g | ]}‰                      |‰j        ¬ ¦  «        ‘ŒS r  rê   r  s     €r   rv   zNTestCubatureProblems.test_infinite_limits_and_break_points.<locals>.<listcomp>‘  r  r   r  rï   r$  rñ   Fr%  )rH   r·   r   rÈ   rõ   r	   rÃ   r   r¸   rö   rÂ   )r¹   rã   r°   r´   rµ   r   r÷   rø   rA   rB   ru   r9   r›   s        `       r   Ú%test_infinite_limits_and_break_pointsz:TestCubatureProblems.test_infinite_limits_and_break_pointsb  s6  ø€ ðF ")Ñˆˆ5�!�Q˜à�JŠJ�q ¤
ˆJÑ+Ô+ˆØ�JŠJ�q ¤
ˆJÑ+Ô+ˆØ—
’
˜5¨¬
�
Ñ3Ô3ˆå�q‰zŒzˆà�<ÒÐ D¨1¢H HÝŒKÐKÑLÔLÐLàÐØNÐNÐNÐNÀvÐNÑNÔNˆFåØØØØØØØØ�ð	
ñ 	
ô 	
ˆð Œz˜[Ò(Ð(Ð(Ð(åØŒLØØØØR c¤iÐRÐRÀÔ@PÐRÐRØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   )(rØ   rÙ   rÚ   rÛ   Úskip_xp_backendsrÈ   rÜ   rÝ   r;   rC   rR   rW   ra   rc   rg   rm   r‚   r‡   rû   rM   r\   re   r€   rŠ   r  r  Úboolean_index_skip_reasonrŒ   r‘   r”   r4   Úinfrô   Úparamrœ   rž   r'  r*  r5   r0  r-   r   r   rß   rß     s[	  € € € € € ðð ð Ð�lØOðQñ Qô Qà„[×Ò˜Yð  ð &ð ˆCð ˆDð Ø�ðð	
ð(  Ø%Ø�ˆFØ�ˆFàØ�A�ðð		
ð  Ø%Ø�ˆFØ�ˆFàØ�A�ðð		
ð  Ø%ØˆIˆIØˆIˆIàØ�	�	ðð		
ð  Ø%ØˆDØˆCà�Ø�ðð		
ð  Ø%à�ˆFØ�ˆHà�Q�Ø�Q�ðð
	
ð  Ø%ØˆIˆIØˆIˆIà�	�	Ø�	�	ðð		
ð  Ø%ØˆIˆIØˆIˆIà�	�	Ø�	�	ðð		
ð  Ø%ØˆLˆLØˆIˆIà�	�	Ø�	�	ðð		
ð  Ø%ØÐÐØˆLˆLà��Ø��ðð		
ð  Ø%ØˆDØˆCà�ðð	
ð  Ø%Ø�ˆGØ�ˆFà�A�ðð	
ð  Ø%ØˆLˆLØˆIˆIà�	�	ðð	
ð  Ø%ØˆCØˆCà�ðð	
ð  Ø%Ø�ˆFØ�ˆFØ�ˆVˆIð	
ð  Ø%ØˆIˆIØˆIˆIØˆYˆYˆLð	
ð  Ø%ØˆDØˆCà�Ø�ðð		
ð  Ø%Ø�ˆHØ�ˆFà�A�Ø�A�ðð		
ð  Ø%Ø�ˆHØ�ˆFà�Q�Ø�A�ðð		
ð  Ø%ØˆLˆLØˆIˆIà�	�	Ø�	�	ðð		
ðQR)ñ Rô Rðf!
ð !
ñgRô RñQô Qðj!
ðF Ð�lØOðQñ Qô Qà„[×Ò˜Yð  ð &ð ,ð		
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð5)ñ ô ð@ „[×Ò˜Wð 
'ð 
'ð 
'ñ 
ô 
ð*0ð *0ñ
ô 
ñAô ñQô QðZ*0ðX „[×Ò˜Yð ˆOð ˆFð ˆCð ˆDð ð	
ð" &Ð%ØÐØˆDØˆCà�ðð	
ð 3Ð2ØˆEØˆIˆIØˆIˆIà��ðð	
ð 3Ð2ØˆEØˆIˆIØˆIˆIà"Ð"Ð"Ø��ðð		
ð 3Ð2ØˆEØˆIˆIØˆIˆIà Ð Ð Ø"Ð"Ð"Ø��ðð
	
ð[8)ñ 8ô 8ðr)2ð )2ñs8ô 8ðr)2ðV „[×!Ò! +Ð6OÐ!ÑPÔPØ„[×!Ò! ,Ð7PÐ!ÑQÔQØ„[×Ò˜Yð ð ð #Øð ŒhˆYˆKØŒXˆJð	
ð  ØØ"ØØŒhˆY˜œ˜	Ð"ØŒX�t”xÐ ð	
ð ØØ"ØØˆCØŒXˆJð	
ð ØØ"ØØŒhˆYˆKØˆCð	
ð ØØ"ØØ�ˆFØŒX�t”xÐ ð	
ð ØØ"ØØ�”�	ˆNØŒX�t”xÐ ð	
ð ØØ"ØØ��D”H�9˜tœx˜iÐ(ØŒX�t”x ¤¨4¬8Ð4ð	
ð ØØ"ØØŒhˆY˜œ˜	 D¤H 9¨t¬x¨iÐ8Ø��4”8˜TœXÐ&ð	
ð 3Ð2ð ?Ð>ð +Ð*ØˆE‰GŒGà�”�	˜1ÐØŒX�r˜4œ8Ð$ð	
ð 	ˆŒð $ð *ð XÐWØ�‘”à�A˜œ�y 4¤8 )Ð,Ø�D”H˜dœh¨¬Ð1ðð ”+Ô#ð!	
ñ 	
ô 	
ðoi)ñ iô iðT&
ð &
ñUiô iñ RÔQñ QÔPðX&
ðP „[×!Ò! +Ð6OÐ!ÑPÔPØ„[×!Ò! ,Ð7PÐ!ÑQÔQØ„[×Ò˜Yð -Ð,ð �t”wÑÐð ŒhˆYˆKØŒXˆJð ˆSˆEð	
ð" 9Ð8ð �d”gÑð ŒhˆY˜ˆNØŒX�qˆMð �ˆXˆJð	
ð!)ñ ô ð@#
ð #
ñAô ñ RÔQñ QÔPðD#
ð #
ð #
r   rß   c                   ó€   — e Zd ZdZej                             dddgddgedfdgdgedfg¦  «        d„ ¦   «         Z	d„ Z
d	S )
Ú	TestRuleszJ
    Tests related to the general Rule interface (currently private).
    rã   r   r   ©é   rü   c                 ó:  — |\  }}}} ||d|iŽ}|                      ||j        ¬¦  «        }|                      ||j        ¬¦  «        }t          j        t          d¬¦  «        5  |                     t          |||f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r®   zincompatible dimensionrÆ   r¼   )rH   r·   rÈ   rÉ   rÊ   r¸   r   )r¹   rã   r   rA   rB   Ú
quadratureÚquadrature_argsr°   s           r   Ú(test_incompatible_dimension_raises_errorz2TestRules.test_incompatible_dimension_raises_error¯  sÿ   € ð" -4Ñ)ˆˆ1ˆj˜/Øˆz˜?Ð2¨rÐ2Ð2ˆà�JŠJ�q ¤
ˆJÑ+Ô+ˆØ�JŠJ�q ¤
ˆJÑ+Ô+ˆåŒ]�9Ð,DÐEÑEÔEð 	@ð 	@Ø�MŠMÕ,¨a°¸"¸ˆMÑ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   Á# BÂBÂBc                 ó<  — |                      dg¦  «        }|                      dg¦  «        }t          ¦   «         t          ¦   «         fD ]R}t          j        t
          ¦  «        5  |                     t          |||f¬¦  «         d d d ¦  «         n# 1 swxY w Y   ŒSd S )Nr   r   r¼   )rH   r   r   rÈ   rÉ   rÊ   r¸   r   )r¹   r   rA   rB   Ú
base_classs        r   Ú+test_estimate_with_base_classes_raise_errorz5TestRules.test_estimate_with_base_classes_raise_errorÉ  så   € Ø�JŠJ˜�s‰OŒOˆØ�JŠJ˜�s‰OŒOˆå™6œ6¥9¡;¤;Ð/ð 	Jð 	JˆJÝ”�yÑ)Ô)ð Jð JØ×#Ò#Õ$6¸¸1ÀBÀ5Ð#ÑIÔIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jøð	Jð 	Js   Á$ BÂB	ÂB	N)rØ   rÙ   rÚ   rÛ   rÈ   rÜ   rÝ   r   r   r<  r?  r-   r   r   r6  r6  ª  sž   € € € € € ðð ð „[×Ò˜Yð �ˆFØ�ˆFØ"Øð	
ð ˆCØˆCØØð	
ð)ñ ô ð @ð @ñ!ô ð @ðJð Jð Jð Jð Jr   r6  c            	       ó  — e Zd ZdZej                             dedfedfedfedfedfg¦  «        d„ ¦   «         Z	ej                             d	eefd
fg¦  «        d„ ¦   «         Z
ej                             deg¦  «        d„ ¦   «         ZdS )ÚTestRulesQuadraturez8
    Tests underlying quadrature rules (ndim == 1).
    )r°   Ú	rule_argsrý   )r­   )rY   )é   r7  c                 ój  ‡‡
—  ||d‰iŽ}‰                      d‰j        ¬¦  «        Š
ˆ
ˆfd„}‰                     dg‰j        ¬¦  «        }‰                     dg‰j        ¬¦  «        }‰                     d‰
dz   z  ‰
dz   z  d¦  «        }|                     |||¦  «        }	t          |	|d	d¬
¦  «         d S )Nr   r­   r®   c                 óf   •— ‰                      | d¦  «        }‰                      ‰d¦  «        }||z  S r   r   )r   r   r   r   r   s      €€r   r÷   z>TestRulesQuadrature.test_base_1d_quadratures_simple.<locals>.fã  s4   ø€ ØŸš A zÑ2Ô2ˆJØŸš A zÑ2Ô2ˆJà˜zÑ)Ð)r   r   r    r   r!   r²   r³   )r¶   r·   rH   r   r¸   r   )r¹   r°   rB  r   r:  r÷   rA   rB   rø   r¸   r   s      `      @r   Útest_base_1d_quadratures_simplez3TestRulesQuadrature.test_base_1d_quadratures_simple×  sê   øø€ ð �T˜9Ð,¨Ð,Ð,ˆ
à�IŠI�a˜rœzˆIÑ*Ô*ˆð	*ð 	*ð 	*ð 	*ð 	*ð 	*ð �JŠJ˜�s "¤*ˆJÑ-Ô-ˆØ�JŠJ˜�s "¤*ˆJÑ-Ô-ˆà—
’
˜1˜q ™s™8 Q q¡S™>¨7Ñ3Ô3ˆØ×&Ò& q¨!¨QÑ/Ô/ˆåØØØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   )Ú	rule_pairÚrule_pair_args)rY   r­   c           	      óº  — |                      d|j        ¬¦  «        }|                     dg|j        ¬¦  «        }|                     dg|j        ¬¦  «        } |d         |d         |¬¦  «        } |d         |d         |¬¦  «        }t          ||¦  «        }	t	          t
          |||	d||f¬¦  «        }
t          |
j        t          ||¦  «        dd¬	¦  «         d S )
Nr­   r®   r   r    ©r   r   r²   )r°   r´   r±   r³   )	r¶   r·   rH   r   r	   r   r   r¸   r#   )r¹   rG  rH  r   r   rA   rB   Ú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ˆIÑ*Ô*ˆØ�JŠJ˜�s "¤*ˆJÑ-Ô-ˆØ�JŠJ˜�s "¤*ˆJÑ-Ô-ˆà�˜1”˜n¨QÔ/°BÐ7Ñ7Ô7ˆØ�	˜!”˜^¨AÔ.°2Ð6Ñ6Ô6ˆå˜v uÑ-Ô-ˆÝÝØˆqØØØ�R�ð
ñ 
ô 
ˆõ 	ØŒLÝ$ Q¨Ñ+Ô+ØØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   r:  c                 ó„   — t          j        t          ¦  «        5   |d|¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rJ  )rÈ   rÉ   rÊ   )r¹   r:  r   s      r   Ú$test_one_point_fixed_quad_impossiblez8TestRulesQuadrature.test_one_point_fixed_quad_impossible  s�   € õ Œ]�9Ñ%Ô%ð 	!ð 	!ØˆJ�q˜RÐ Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   š5µ9¼9N)rØ   rÙ   rÚ   rÛ   rÈ   rÜ   rÝ   r   r   rF  rM  rO  r-   r   r   rA  rA  Ò  sþ   € € € € € ðð ð „[×ÒÐ2Ø	  $Ð'Ø	  $Ð'Ø	  %Ð(Ø	 Ð'Ø	 Ð'ð5ñ ô ð
ð 
ñô ð
ð0 „[×ÒÐ<Ø
!Ð#:Ð	;¸WÐEð?ñ ô ð
ð 
ñô ð
ð2 „[×Ò˜\Øð,ñ ô ð!ð !ñô ð!ð !ð !r   rA  c                   ót   — e Zd ZdZej                             d edd¦  «        ¦  «        d„ ¦   «         Zd„ Z	dS )ÚTestRulesCubaturez6
    Tests underlying cubature rules (ndim >= 2).
    r9   r    é   c                 óˆ   — t          ||¬¦  «        j        \  }}|j        d         d|z  d|dz  z  z   d|z  z   dz   k    sJ ‚dS )z“
        Tests that the number of function evaluations required for Genz-Malik cubature
        matches the number in Genz and Malik 1980.
        rJ  r   r    r   N)r   Únodes_and_weightsr1   )r¹   r9   r   ÚnodesÚ_s        r   Ú test_genz_malik_func_evaluationsz2TestRulesCubature.test_genz_malik_func_evaluations  sY   € õ % T¨bÐ1Ñ1Ô1ÔC‰ˆˆqàŒ{˜1Œ~ ! T¡'¨Q¨t°Q©w©YÑ!6¸¸4¹Ñ!?À!Ñ!CÒCÐCÐCÐCÐCÐCr   c                 ó�   — t          j        t          d¬¦  «        5  t          d|¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzonly defined for ndim >= 2rÆ   r   rJ  )rÈ   rÉ   rÊ   r   )r¹   r   s     r   Útest_genz_malik_1d_raises_errorz1TestRulesCubature.test_genz_malik_1d_raises_error*  s�   € ÝŒ]�9Ð,HÐIÑIÔIð 	(ð 	(Ý˜a BÐ'Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   œ;»?Á?N)
rØ   rÙ   rÚ   rÛ   rÈ   rÜ   rÝ   rz   rW  rY  r-   r   r   rQ  rQ    sh   € € € € € ðð ð „[×Ò˜V U U¨1¨b¡\¤\Ñ2Ô2ðDð Dñ 3Ô2ðDð(ð (ð (ð (ð (r   rQ  r  rá   rà   c                   ó–   — e Zd Zej                             dddej         gdej        ej        gg d¢g d¢gfg¦  «        d„ ¦   «         ZdS )ÚTestTransformations)rA   rB   ru   r   r   rå   )r>   rY   rY   c                 ó”  ‡‡— ˆfd„‰D ¦   «         Št          ˆˆfd„‰                     |‰j        ¬¦  «        ‰                     |‰j        ¬¦  «        ‰¬¦  «        }‰D ]i}|                     ‰                     |d¦  «        ¦  «        }t          j        t          d¬¦  «        5   ||¦  «         ddd¦  «         n# 1 swxY w Y   ŒjdS )	zx
        Test that break points are correctly mapped under the _InfiniteLimitsTransform
        transformation.
        c                 óH   •— g | ]}‰                      |‰j        ¬ ¦  «        ‘ŒS r  rê   )rr   Úpr   s     €r   rv   zMTestTransformations.test_infinite_limits_maintains_points.<locals>.<listcomp>B  s+   ø€ ÐBÐBÐB°a�"—*’*˜Q b¤j�*Ñ1Ô1ÐBÐBÐBr   c                 ó&   •— t          | ‰‰¦  «        S r	  )r¥   )r   ru   r   s    €€r   r  zKTestTransformations.test_infinite_limits_maintains_points.<locals>.<lambda>F  s   ø€ Õ/°°6¸2Ñ>Ô>€ r   r®   rJ  r'   r    rÆ   N)r
   rH   r·   Úinvr   rÈ   rÉ   rÊ   )r¹   rA   rB   ru   r   Úf_transformedr¤   Útransformed_points      ``   r   Ú%test_infinite_limits_maintains_pointsz9TestTransformations.test_infinite_limits_maintains_points2  s*  øø€ ð  CÐBÐBÐB¸6ÐBÑBÔBˆå0à>Ð>Ð>Ð>Ð>Ø�JŠJ�q ¤
ˆJÑ+Ô+Ø�JŠJ�q ¤
ˆJÑ+Ô+Øð
ñ 
ô 
ˆð ð 	1ð 	1ˆEØ -× 1Ò 1°"·*²*¸UÀGÑ2LÔ2LÑ MÔ MÐå”�yÐ0QÐRÑRÔRð 1ð 1Ø�Ð/Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1øð	1ð 	1s   Â$B<Â<C 	ÃC 	N)	rØ   rÙ   rÚ   rÈ   rÜ   rÝ   r4   r3  rc  r-   r   r   r[  r[  /  s€   € € € € € ð „[×ÒÐ1à��D”H�9ÐØ�”˜$œ(Ð#à�	�	Ø��ðð	
ð	4ñ 	ô 	ð1ð 1ñ	ô 	ð1ð 1ð 1r   r[  c                   ó"   — e Zd ZdZdd„Zdd„ZdS )rÁ   zP
    A rule with fake high error so that cubature will keep on subdividing.
    r-   c                 ót   — t          ||¦  «        }t          d|¬¦  «        }|                     ||||¦  «        S )NrY   rJ  )r   r   r¸   )r¹   r÷   rA   rB   r±   r   Ú
underlyings          r   r¸   zBadErrorRule.estimateX  s=   € Ý˜Q Ñ"Ô"ˆÝ,¨R°BÐ7Ñ7Ô7ˆ
à×"Ò" 1 a¨¨DÑ1Ô1Ð1r   c                 óZ   — t          ||¦  «        }|                     d|j        ¬¦  «        S )Ng    €„.Ar®   )r   rH   r·   )r¹   r÷   rA   rB   r±   r   s         r   Úestimate_errorzBadErrorRule.estimate_error^  s)   € Ý˜Q Ñ"Ô"ˆØ�zŠz˜# R¤ZˆzÑ0Ô0Ð0r   N)r-   )rØ   rÙ   rÚ   rÛ   r¸   rh  r-   r   r   rÁ   rÁ   S  sF   € € € € € ðð ð2ð 2ð 2ð 2ð1ð 1ð 1ð 1ð 1ð 1r   rÁ   );r4   r„   rx   rÈ   Úscipy._lib._array_apir   r   r   r   r   r   Úscipy.integrater	   Úscipy.integrate._cubaturer
   Úscipy.integrate._rulesr   r   r   r   r   r   rÜ   r1  r2  r   r#   r)   r.   r;   rC   rM   rR   rW   r\   ra   rc   re   rg   rm   rl   r€   r‚   r‡   rŠ   rŒ   r‘   r”   rœ   rž   r¥   r§   rÝ   rß   r6  rA  rQ  r[  rÁ   r-   r   r   ú<module>rm     sÊ  ðØ €€€Ø €€€Ø Ð Ð Ð à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $Ø >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ”;Ô/Ð ØPÐ ð"ð "ð "ð/ð /ð /ð
Kð Kð Kð0ð 0ð 0ð
Oð Oð Oð"
ð 
ð 
ðð ð ðSð Sð Sð&ð ð ðð ð ð"Að Að Að"ð ð ðð ð ðJð Jð Jð"2ð 2ð 2ðð ð ð&ð ð ðð ð ð0ð ð ð"ð ð ð
Gð 
Gð 
Gðð ð ð,ð ð ð	ð 	ð 	ð*ð *ð *ð#ð #ð #ð Ð�8ÑÔðP*ð P*ð P*ð P*ð P*ñ P*ô P*ñ ÔðP*ðf Ð�8ÑÔØ„×Ò˜ $ Ñ(Ô(Ø„×Ò˜ $ Ñ(Ô(Ø„×Ò˜ð "ð "ð "ñ ô ð
S

ð S

ð S

ð S

ð S

ñ S

ô S

ñô ñ )Ô(ñ )Ô(ñ ÔðS

ðl%Jð %Jð %Jð %Jð %Jñ %Jô %Jð %JðPE!ð E!ð E!ð E!ð E!ñ E!ô E!ð E!ðP(ð (ð (ð (ð (ñ (ô (ð (ð* „×Ò˜kÐ2KÐÑLÔLØ„×Ò˜lÐ3LÐÑMÔMð1ð 1ð 1ð 1ð 1ñ 1ô 1ñ NÔMñ MÔLð1ðD1ð 1ð 1ð 1ð 1�4ñ 1ô 1ð 1ð 1ð 1r   