Ë
    qwj¯�  ã                   óD  — 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,                  ji                  d#d$g«      ej,                  ji                  d%d&g«      ej,                  ji                  d'g d(¢«       G d)„ d*«      «       «       «       «       Z5 G d+„ d,«      Z6 G d-„ d.«      Z7 G d/„ d0«      Z8ej,                  j/                  d1e¬2«      ej,                  j/                  d3e¬2«       G d4„ d5«      «       «       Z9 G d6„ d7e«      Z:y)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                 óT   — |j                  | d«      }|j                  |d«      }||z  S ©N)éÿÿÿÿé   r   )r   r   r   ©Úreshape)ÚxÚnÚxpÚ
x_reshapedÚ
n_reshapeds        úh/var/www/html/newmanjeet/manjet/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)   .   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.   2   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;   7   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   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‘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(   )Úrngr1   r   r6   r7   Ú
difficultyÚnormalisation_factorss          r   Úgenz_malik_1980_f_1_random_argsrM   U   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   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‘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  ¢|‘­«      }d|z  dz  |j	                  |d¬«      z  |j	                  |j                  | |z
  |z  «      |j                  ||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Øð ó 
ñ	
ð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    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€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   r0   r   r%   ©r1   r   r2   Úexpr(   ©r   r7   r   r8   r9   r:   r   s          r   Úgenz_malik_1980_f_3ra   ’   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 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Àˆ'Ó
Cñ	Dðr   c                 óˆ   — |j                  | j                  |«      «      }|j                  |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   ®   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   r0   r   r%   )r1   r   r2   r(   r`   s          r   Úgenz_malik_1980_f_4rg   ·   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 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ÓJˆ
ð �$‰J�r—w‘w˜v¨B�wÓ/Ñ/Ü�n‰n˜TÓ"ñ#à�2—6‘6˜& :Ñ-°B�6Ó7Ñ7ñ9ð	
r   )r   Ú_eval_indefinite_integral)rA   rB   r7   r   rk   r9   s     `` @r   Úgenz_malik_1980_f_4_exactrm   È   s$   ú€ Ü�1‹:€Dö
ô % Q¨¨1¨bÓ1Ð1r   c                 ór  — t        |«      }|j                  ||gd¬«      }d}t        j                  t	        d«      |¬«      D ]k  }|j                  t        |t	        |«      «      D ��	cg c]  \  }}	t        |||	f   «      ‘Œ c}	}«      }
|t        dt        |«      |z   «       | |
«      z  z  }Œm |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ÚrangerH   ÚzipÚfloatrZ   r(   )rk   rA   rB   r   r9   ÚpointsÚoutÚindÚiÚjÚselected_pointss              r   rl   rl   ×   s³   € ô �1‹:€DØ�X‰X�q˜!�f 1ˆXÓ%€Fà
€CÜ× Ñ ¤ q£°$×7ˆØŸ*™*Ü-0°´e¸D³kÔ-BÔCÑ-B¡T Q¨ŒU�6˜!˜Q˜$‘<Õ Ð-BÒCó
ˆð 	Œs�2”s˜3“x $‘Ó'©!¨OÓ*<Ñ<Ñ<‰ð	 8ð €Jùó	 Ds   Á)B3c                 ó˜   — |d   }|j                  | j                  |«      «      }|j                  |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}   ê   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   r0   r   r    r%   r^   rO   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   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‰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%   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Ó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   r0   r   r    r%   r^   r`   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   rs   Úisinfr4   r†   r5   r?   )rA   rB   r7   r   r9   Údouble_infinite_countÚsemi_infinite_country   s           r   Úf_gaussian_exactrŽ   6  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   )rH   rI   )rJ   r1   r   r7   s       r   Úf_gaussian_random_argsr‘   L  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™   V  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      ø?)r4   r5   )rA   rB   r   r   s       r   Úf_modified_gaussian_exactr›   b  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Úonesr1   )r”   rv   r   Úpoints       r   Úf_with_problematic_pointsr¢   j  sC   € ó ˆØ�6‰6�%˜5‘.Õ!ÜÐ>Ó?Ð?ð ð �7‰7�5—;‘;˜q‘>Ó"Ð"r   c                   ó‚   — e Zd ZdZej
                  j                  dg d¢«      d„ «       Z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Ú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™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   c                 óÚ   — t        j                  dt         j                  ¬«      }dg}dg}t        t        |||t         f¬«      }t        |j                  t        |t         «      dd¬«       y )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’  sc   € Ü×Ñ˜Q¤i×&7Ñ&7Ô8ˆØˆCˆØˆCˆäÜØØØ”Y�ô	
ˆô 	Ø�L‰LÜ$ Q¬	Ó2ØØö		
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   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ˆØ�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¹   )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¶  sc   € Ø�J‰J˜˜�u B§J¡JˆJÓ/ˆØ�J‰J˜˜�u B§J¡JˆJÓ/ˆä�]‰]œ9Ð,KÖLÜÔ'¨¨A°R°EÕ:÷ M×LÑLú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¹   )rH   rÅ   rÆ   rÇ   r	   r   rÈ   s       r   Útest_a_and_b_must_be_nonemptyz*TestCubature.test_a_and_b_must_be_nonempty½  sI   € Ø�J‰J�r‹NˆØ�J‰J�r‹Nˆä�]‰]œ9Ð,JÖKÜÔ'¨¨A°R°EÕ:÷ L×KÑKú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´   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™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´   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™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   rH   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¤   x  sT   „ ñð ‡[�[×Ñ˜Zò *ó ñ
óð
ò
ò&-ò";ò;ò
ò(
ó(*r   r¤   r±   g-Cëâ6?r²   gñhãˆµøä>r­   )r¨   r§   r¦   c                   ó„
  — e Zd ZdZ edd¬«      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dd¬«      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j                  j	                  d-e¬«      ej                  j	                  de¬«      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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jB                  e"e#d4„  e «       ddej>                   ej>                   gd
ej>                  ej>                  ej>                  gfej                  jH                  ¬5«      g
«      d6„ «       «       «       Z%ej                  j	                  d-e¬«      ej                  j	                  de¬«      ej                  j                  dd7„ d8ejL                  z  gej>                   gej>                  gdggfd9„ d8ejL                  z  ej>                   dgej>                  d
gddggfg«      d:„ «       «       «       Z'y!);Ú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                  ¬«      }‰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©rH   r´   )Ú.0Úargr   s     €r   Ú	<genexpr>z:TestCubatureProblems.test_scalar_output.<locals>.<genexpr>ó  s#   øè ø€ ÐGÁ$¸3�R—Z‘Z ¨2¯:©:�Z×6Á$ùs   ƒ'*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  sÿ   ø€ ðl  'Ñˆˆ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   r1   )	©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   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Ü�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>m  s   € ™!r   g      I@Nc                 ó*   — |j                  | «      | z  S r  ©r@   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    r1   r  s     r   r	  zTestCubatureProblems.<lambda>…  ó   € ˜"Ÿ'™' 1§7¡7¨1¡:¨q /Ô2r   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í   )rH   r´   r   rÅ   ró   rÙ   r  r	   r   rµ   rô   r¿   r  rÀ   )r¶   rà   r­   r±   r²   r   rõ   rö   rA   rB   rv   r¡   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ˆàÐÙGMÓNÁv¸e�b—j‘j ¨b¯j©j�jÕ9Àvˆ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)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Ò2r   c                 ó<   — |j                  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¤7r   c                 óB   — |j                  g d¢|j                  ¬«      fS )N)r   r   r    r+   r,   r«   rç   r  s      r   r	  zTestCubatureProblems.<lambda>0  s   € ¨¯
©
²?È"Ï*É*¨
Ó(UÑ'Wr   )Ú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   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Î  sZ  € ôZ ×Ñ×*Ñ*¨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>g  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>v  s&   € ˜2Ÿ6™6 !¢A q D¡'›?¨Qªq°!¨t©WÑ4°qÒ8r   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  )rH   r´   r   rÅ   ró   r	   rÀ   r   rµ   rô   r¿   )r¶   rà   r­   r±   r²   r   rõ   rö   rA   rB   rv   r9   r¡   r˜   s                 r   Ú%test_infinite_limits_and_break_pointsz:TestCubatureProblems.test_infinite_limits_and_break_pointsb  s  € ðF ")Ñˆˆ5�!�Q˜à�J‰J�q §
¡
ˆJÓ+ˆØ�J‰J�q §
¡
ˆJÓ+ˆØ—
‘
˜5¨¯
©
�
Ó3ˆä�q‹zˆà�<Ò D¨1¢HÜ�K‰KÐKÔLàÐÙGMÓNÁv¸e�b—j‘j ¨b¯j©j�jÕ9ÀvˆFÐNäØØØØØØØØ�ô	
ˆð �z‰z˜[Ò(Ð(Ð(äØ�L‰LØØØØ% c§i¡i [°À×@PÑ@PÐ?QÐRØö	
ùò Os   Â$D)(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   r)  r-   r   r   rÜ   rÜ     s*  „ ññ �lØOôQà‡[�[×Ñ˜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óQðj!
ñF �lØOôQà‡[�[×Ñ˜Yð  ð &ð ,ð		
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð  Ø%Ø+ð	
ð5)ó ð@ ‡[�[×Ñ˜Wò 
'ó 
ñ*0ó
óAóQðZ*0ðX ‡[�[×Ñ˜Yñ ð ˆFð ˆCð ˆDð ð	
ñ" &ØÐØˆDØˆCà�ðð	
ñ 3ØˆEÚÚâðð	
ñ 3ØˆEÚÚâ"Úðð		
ñ 3ØˆEÚÚâ Ú"Úðð
	
ð[8)ó 8ñr)2ós8ðr)2ðV ‡[�[×!Ñ! +Ð6OÐ!ÓPØ‡[�[×!Ñ! ,Ð7PÐ!ÓQØ‡[�[×Ñ˜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ó Ró QðX&
ðP ‡[�[×!Ñ! +Ð6OÐ!ÓPØ‡[�[×!Ñ! ,Ð7PÐ!ÓQØ‡[�[×Ñ˜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ó Ró QñD#
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¹   )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˜/Ù˜?Ð2¨rÑ2ˆà�J‰J�q §
¡
ˆJÓ+ˆØ�J‰J�q §
¡
ˆJÓ+ˆä�]‰]œ9Ð,DÖEØ�M‰MÔ,¨a°¸"¸ˆMÔ?÷ F×EÑEú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¹   )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É  sh   € Ø�J‰J˜�s‹OˆØ�J‰J˜�s‹Oˆä›6¤9£;Ó/ˆJÜ—‘œyÕ)Ø×#Ñ#Ô$6¸¸1ÀBÀ5Ð#ÔI÷ *Ð)ñ 0ß)Ð)ú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ª   )rY   )é   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´   rH   r   rµ   r   )r¶   r­   r;  r   r3  rõ   rA   rB   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)rY   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´   rH   r   r	   r   r   rµ   r#   )r¶   r@  rA  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™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).
    r9   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_weightsr1   )r¶   r9   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_error*  s(   € Ü�]‰]œ9Ð,HÖIÜ˜a BÕ'÷ J×IÑIús   œ3³<N)
rÕ   rÖ   r×   rØ   rÅ   rÙ   rÚ   rs   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)rA   rB   rv   r   r   râ   )r>   rY   rY   c                 óº  ‡‡— ‰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«   c                 ó   •— t        | ‰‰«      S r  )r¢   )r   rv   r   s    €€r   r	  zKTestTransformations.test_infinite_limits_maintains_points.<locals>.<lambda>F  s   ø€ Ô/°°6¸2Ô>r   rC  r'   r�   rÃ   N)rH   r´   r
   Úinvr   rÅ   rÆ   rÇ   )	r¶   rA   rB   rv   r   ÚpÚf_transformedr¡   Útransformed_points	      ``    r   Ú%test_infinite_limits_maintains_pointsz9TestTransformations.test_infinite_limits_maintains_points2  s¼   ù€ ñ  <BÓB¹6°a�"—*‘*˜Q b§j¡j�*Õ1¸6ÑBˆä0ä>Ø�J‰J�q §
¡
ˆJÓ+Ø�J‰J�q §
¡
ˆJÓ+Øô
ˆó ˆEØ -× 1Ñ 1°"·*±*¸UÀGÓ2LÓ MÐä—‘œyÐ0QÖRÙÐ/Ô0÷ SÐRñ ùò C÷ SÐRús   ‡$CÂ8	CÃC	N)	rÕ   rÖ   r×   rÅ   rÙ   rÚ   r4   r,  r[  r-   r   r   rT  rT  /  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 )NrY   rC  )r   r   rµ   )r¶   rõ   rA   rB   r®   r   Ú
underlyings          r   rµ   zBadErrorRule.estimateX  s1   € Ü˜Q Ó"ˆÜ,¨R°BÔ7ˆ
à×"Ñ" 1 a¨¨DÓ1Ð1r   c                 óT   — t        ||«      }|j                  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ˆzÓ0Ð0r   N)r-   )rÕ   rÖ   r×   rØ   rµ   r`  r-   r   r   r¾   r¾   S  s   „ ñó2ô1r   r¾   );r4   r�   rq   rÅ   Úscipy._lib._array_apir   r   r   r   r   r   Úscipy.integrater	   Úscipy.integrate._cubaturer
   Úscipy.integrate._rulesr   r   r   r   r   r   rÙ   r*  r+  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Ü   r/  r:  rJ  rT  r¾   r-   r   r   Ú<module>re     sã  ðÛ Û Û ã ÷÷ õ %Ý >÷÷ ð —;‘;×/Ñ/Ð ØPÐ ò"ò/ò
Kò0ò
Oò"
òòSò&òò"Aò"òòJò"2òò&òò0ò"ò
Gòò,ò	ò*ò#ñ �8Ó÷P*ð P*ó ðP*ñf �8ÓØ‡�×Ñ˜ $ Ó(Ø‡�×Ñ˜ $ Ó(Ø‡�×Ñ˜ò "ó ÷
S

ð S

óó )ó )ó ðS

÷l%Jñ %J÷PE!ñ E!÷P(ñ (ð* ‡�×Ñ˜kÐ2KÐÓLØ‡�×Ñ˜lÐ3LÐÓM÷1ð 1ó Nó Mð1ôD1�4õ 1r   