
    bi&                         d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZmZ d Zd Zd	 Zd
 Zd Zy)    N)assert_equalassert_allcloseassert_)assert_func_equal)
ellip_harmellip_harm_2ellip_normal)IntegrationWarningsqrtpic            	        	
 d d 	d 
	
fd} fd}dt        d      dd	t        d
      dddfdt        d      ddt        d      dddfg}t        j                         5  t        j                  ddt               t        j                  ddt               |D ]Q  }t        |      } || } | | \  }}t        ||dd|       t        t        ||z
        dt        |      z  k  |       S 	 d d d        y # 1 sw Y   y xY w)Nc                     t        | dz  |dz  z  |dz  z  ||z  z        }t        | dz  |z
  |dz  |z
  z  ||dz  z
  z  |||z
  z  z        }t        | dz  |z
  ||dz  z
  z  ||dz  z
  z  |||z
  z  z        }|||fS )N   r   )lambda1munuh2k2xyzs           ^/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/special/tests/test_ellip_harm.pychange_coefficientz0test_ellip_potential.<locals>.change_coefficient   s    !BE!"a%'B/0'1*r/BEBJ/b!e<b"r'lKL'1*r/BQJ/b!e<b"r'lKL!Qw    c                 `    t        |||||       t        |||||      z  t        |||||      z  S N)r   r   r   r   npr   r   s          r   solid_int_ellipz-test_ellip_potential.<locals>.solid_int_ellip   s>    2r1a1*RQ22NNBAq"-. 	/r   c                 `    t        |||||       t        |||||      z  t        |||||      z  S r   r   r   r   s          r   solid_int_ellip2z.test_ellip_potential.<locals>.solid_int_ellip2   sC    RQ73RQ2.//9"b!Q/KL 	Mr   c                 8   d}d}	t        d      D ]  }
d}t        dd|
z  dz         D ]D  }|dt        z   ||||
|||       | |||
|||      z  z  t        |||
|      d|
z  dz   z  z  z  }F t        |      d|z  t        |	      z  k  r |	|fS |	|z  }	 |	fS )N:0yE>r         r      g?)ranger   r	   abs)r   mu1nu1lambda2mu2nu2r   r   tolsum1r    xsumr!   r"   r%   s                r   	summationz'test_ellip_potential.<locals>.summation   s    r 	AD1ac!e_ <2wS!QBO&wS!QBG H I!"b!Q/1q9; << 4y3s73t9,,Tz DLD	 Tzr   c                      | ||||      \  }}	}
 |||||      \  }}}t        ||z
  dz  ||	z
  dz  z   ||
z
  dz  z         }d|z  S )Nr   r)   r   )r   r-   r.   r/   r0   r1   r   r   x1y1z1x2y2z2resr   s                  r   	potentialz'test_ellip_potential.<locals>.potential,   sh    'c2rB
B'c2rB
BBGa<27Q,."r'A=>ur   x      r   )               g	@      g333333@r(   ignore The occurrence of roundoff errorz"The maximum number of subdivisionsr   r'   )atolrtolerr_msg
   )	r   warningscatch_warningsfilterwarningsr
   reprr   r   r,   )r5   r>   ptsr!   rL   exactresult	last_termr   r"   r%   s           @@@r   test_ellip_potentialrV      s   /M 
d2h2tBxB3	d2hRb3B7	C
 
	 	 	" F8:L	N:<N	P  	FA1gGqME )1FIE6gNC'"S^*;;WE	FF F Fs   $BC;;Dc                     d } d }d }d }d }d }d }d }d	 }d
 }	d }
d }d }d }d }d }i d| d|d|d|d|d|d|d|d|d|
d|	d|d|d|d|d |fd!t        j                        fd"}t         j                  j                  d#       t         j                  j	                  d$d%&      }|d%t         j                  j	                  d$|j
                  &      z   z  }g }t        d'      D ]j  }t        d%d(|z  d(z         D ]S  }|j                  ||t        j                  |j
                  |      t        j                  |j
                  |      f       U l t        j                  |      }t        j                         5  t        j                  d)d*t               t        t        ||d+,       d d d        y # 1 sw Y   y xY w)-Nc                     dt         z  S )Nr*   r   r   r   s     r   G01ztest_ellip_norm.<locals>.G01G   s    tr   c                 &    dt         z  | z  |z  dz  S Nr*      rY   rZ   s     r   G11ztest_ellip_norm.<locals>.G11J   s    tBwrz!|r   c                 ,    dt         z  | z  || z
  z  dz  S r]   rY   rZ   s     r   G12ztest_ellip_norm.<locals>.G12M       tBwR ""r   c                 ,    dt         z  |z  || z
  z  dz  S r]   rY   rZ   s     r   G13ztest_ellip_norm.<locals>.G13P   rb   r   c                     d| dz  |dz  z   z  d| z  |z  | dz  |dz  z   z  z
  d| dz  z  |dz  z  z   t        | dz  |dz  z   | |z  z
        d| dz  |dz  z   z  d| z  |z  | |z   z  z   z  z   }dt        z  dz  |z  S )Nr   r*      r^   rE     r   r   r   r=   s      r   G22ztest_ellip_norm.<locals>.G22S   s    "a%"a%- 1R47BEBEM#::Qr1uWRU]JRURU]RU"#RQQ%7!B$r'27:K%KLM"uSy}r   c                     d| dz  |dz  z   z  d| z  |z  | dz  |dz  z   z  z
  d| dz  z  |dz  z  z   t        | dz  |dz  z   | |z  z
        d| dz  |dz  z   z  d| z  |z  | |z   z  z
  z  z   }dt        z  dz  |z  S )Nr   r*   rf   r^   rE   rh   r   ri   s      r   G21ztest_ellip_norm.<locals>.G21X   s    "a%"a%- 1R47BEBEM#::Qr1uWRU]J
r1ur1u}r"u$
%q"a%"a%-'81R47BG;L'L
MN"uSy}r   c                 8    dt         z  | dz  z  |z  || z
  z  dz  S Nr*   r   rC   rY   rZ   s     r   G23ztest_ellip_norm.<locals>.G23]   s&    tBEz"}b2g&r))r   c                 8    dt         z  | z  |dz  z  || z
  z  dz  S rn   rY   rZ   s     r   G24ztest_ellip_norm.<locals>.G24`   s&    tBwr1u}b2g&r))r   c                 8    dt         z  | z  |z  || z
  dz  z  dz  S rn   rY   rZ   s     r   G25ztest_ellip_norm.<locals>.G25c   s&    tBwrz27Q,&r))r   c                    d| dz  |dz  z   z  d| z  |z  | dz  |dz  z   z  z
  d| dz  z  |dz  z  z   t        d| dz  |dz  z   z  d| z  |z  z
        d| dz  |dz  z   z  d	| z  |z  | |z   z  z   z  z   }dt        z  d
z  |z  | z  |z  S )NrE   r*   $   r   .      r^   rG   E3  r   ri   s      r   G32ztest_ellip_norm.<locals>.G32f   s    2q52q5=!BrE"Hb!eb!em$<<r"a%xA~M
q"a%"a%- 1R47*
+RQQ-?
2b"r'.  "uU{2~b $$r   c                    d| dz  |dz  z   z  d| z  |z  | dz  |dz  z   z  z
  d| dz  z  |dz  z  z   t        d| dz  |dz  z   z  d| z  |z  z
        d| dz  |dz  z   z  d	| z  |z  | |z   z  z
  z  z   }dt        z  d
z  | z  |z  |z  S )NrE   r*   ru   r   rv   rw      r^   rG   ry   r   ri   s      r   G31ztest_ellip_norm.<locals>.G31l   s    2q52q5=!BrE"Hb!eb!em$<<r"a%xA~M
q"a%"a%- 1R47*
+QAA->
2b"r'.  "uU{2~b $$r   c                 2   d| dz  z  d|dz  z  z   d| dz  z  |z  z
  d| z  |dz  z  z
  d| dz  z  |dz  z  z   t        | dz  d|dz  z  z   | |z  z
        d	| dz  z  d
|dz  z  z
  d| dz  z  |z  z   d| z  |dz  z  z   z  z   }dt        z  dz  | z  || z
  z  |z  S )Nrf   r*   rE      r^      "   r   ir|   	      ry   r   ri   s      r   G34ztest_ellip_norm.<locals>.G34r   s    QwBE!Br1uHRK/"R%A+=2q5QN
r1uqQwB&
'BEAb!eG);aAgbj)H,.rE"a%K*8 99 "uU{2~rBw'++r   c                 2   d| dz  z  d|dz  z  z   d| dz  z  |z  z
  d| z  |dz  z  z
  d| dz  z  |dz  z  z   t        | dz  d|dz  z  z   | |z  z
        d| dz  z  d	|dz  z  z   d
| dz  z  |z  z
  d| z  |dz  z  z
  z  z   }dt        z  dz  | z  || z
  z  |z  S )Nrf   r*   rE   r   r^   r   r   r   r|   r   r   ry   r   ri   s      r   G33ztest_ellip_norm.<locals>.G33x   s    QwBE!Br1uHRK/"R%A+=2q5QN
r1uqQwB&
'2q51RU7):Qr1uWRZ)G
2b!e*  "uU{2~rBw'++r   c                 2   d| dz  z  d|dz  z  z   d| dz  z  |z  z
  d| z  |dz  z  z
  d| dz  z  |dz  z  z   t        d| dz  z  |dz  z   | |z  z
        d	| dz  z  d|dz  z  z
  d
| dz  z  |z  z   d| z  |dz  z  z   z  z   }dt        z  dz  |z  || z
  z  |z  S )NrE   r*   rf   r   r^   r   r   r   rx   r   r   ry   r   ri   s      r   G36ztest_ellip_norm.<locals>.G36~   s    "a%x!BE'!Br1uHRK/"R%A+=2q5QN
qQwQB&
'BEAb!eG);bQhrk)I	"RU
*  "uU{2~rBw'++r   c                 2   d| dz  z  d|dz  z  z   d| dz  z  |z  z
  d| z  |dz  z  z
  d| dz  z  |dz  z  z   t        d| dz  z  |dz  z   | |z  z
        d	| dz  z  d|dz  z  z   d
| dz  z  |z  z
  d| z  |dz  z  z
  z  z   }dt        z  dz  |z  || z
  z  |z  S )NrE   r*   rf   r   r^   r   r   r   r|   r   r   ry   r   ri   s      r   G35ztest_ellip_norm.<locals>.G35   s    "a%x!BE'!Br1uHRK/"R%A+=2q5QN
qQwQB&
'2q51RU7):RAXb[)H	"RU
*  "uU{2~rBw'++r   c                 D    dt         z  | dz  z  |dz  z  || z
  dz  z  dz  S )Nr*   r   i   rY   rZ   s     r   G37ztest_ellip_norm.<locals>.G37   s/    tBEz"a%b1,S00r   r   r)   r)   r)   r)   r   r)   r^   r   r)   r   r   r   r^   r   r*   r      r^   r)   r^   r   r^   r^   r^   r*   r^   r   r^   rf   r^   rw   c                 $    | |f   } |||      S r    )r    r!   r   r   funcknown_funcss        r   _ellip_normz$test_ellip_norm.<locals>._ellip_norm   s    1a4 B|r   c                      ||| |      S r   r   )r   r   r    r!   r   s       r   ellip_normal_knownz+test_ellip_norm.<locals>.ellip_normal_known   s    1aR((r           ?r)   sizer*   r   rH   rI   -q=rK   )np	vectorizerandomseedparetor   r+   appendfullarrayrN   rO   rP   r
   r   r	   )r[   r_   ra   rd   rj   rl   ro   rq   rs   rz   r}   r   r   r   r   r   r   r   r   pointsr    r!   r   r   s                         @@r   test_ellip_normr   E   sD   ##

***%%,,,,1G63 G GVS G&# G3G &G-3SG:@#G3G &G-3SG:@#G 3G !'G .4SG ;A#GK
 ,,{+K) IINN4			#A		&B	q299##Cbgg#66	7BF1X Nq!A#a% 	NAMM2r277277A#68KLM	NN XXfF		 	 	" P8:L	N,(:FOP P Ps   /GGc            
         d } t        j                         5  t        j                  ddt               t	         | ddd      ddt        d      z  z  d	d
       t	        t        ddddd      dd	d
       t	        t        ddddd      dd	d
       t	        t        ddddd      dd	d
       t	        t        ddddd      dd	d
       t	        t        ddddd      dd	d
       d d d        y # 1 sw Y   y xY w)Nc           
          t        | |dd|      dt        | |dd|      z  z  t        | |dd|      dt        | |dd|      z  z  z   t        | |dd|      dt        | |dd|      z  z  z   }|S )Nr)   r^   r   r$   )r   r   sr=   s       r   I1ztest_ellip_harm_2.<locals>.I1   s    BAq!,a*RQ12M.MN
r2q!Q
'ZB1a-H)H
IJRQ1%q:b"aA+F'FGH 
r   rH   rI   r   r|   rM   r)   i$"  gv!>r   )rJ   rK   r   g$;Q?gyoVQ?r^   g<i`Q?r*   gϙar~Q?gTzL۰Q?)rN   rO   rP   r
   r   r   r   )r   s    r   test_ellip_harm_2r      s    
	 	 	" -8:L	N1aaD,A)A&B#!	- 	Q1a46F#!	-Q1a46F#!	-Q1a46F#!	-Q1a46F#!	-Q1a46F#!	-- - -s   CC//C8c                  $   d } d }d }d }d }d }d }d }d	 }d
 }	d }
d }d }d }d }d }t        t        ddddddd      t        ddddd             i d| d|d|d|d|d|d|d|d|d|	d |
d!|d"|d#|d$|d%|g fd&}t        j                  j	                  d'      }|j                  d(d)*      }|d|j                  d(|j                  *      z   z  }|j                  d(|j                  *      }g }t        |j                        D ]H  }t        d+      D ]8  }t        dd|z  dz         D ]!  }|j                  ||   ||   ||||   f       # : J t        j                  |      }t        t        ||d,-       y ).Nc                      y)Nr)   r   r   r   r   s      r   E01ztest_ellip_harm.<locals>.E01   s    r   c                     |S r   r   r   s      r   E11ztest_ellip_harm.<locals>.E11   s    r   c                 6    t        t        ||z  | z
              S r   r   r,   r   s      r   E12ztest_ellip_harm.<locals>.E12       C!bM""r   c                 6    t        t        ||z  |z
              S r   r   r   s      r   E13ztest_ellip_harm.<locals>.E13   r   r   c           
      l    ||z  d| |z   t        t        | |z   | |z   z  d| z  |z  z
              z   z  z
  S NgUUUUUU?r^   r   r   s      r   E21ztest_ellip_harm.<locals>.E21   C    sS27d3R"r'/B1R47/J+K&LLMMMr   c           
      l    ||z  d| |z   t        t        | |z   | |z   z  d| z  |z  z
              z
  z  z
  S r   r   r   s      r   E22ztest_ellip_harm.<locals>.E22   r   r   c                 <    |t        t        ||z  | z
              z  S r   r   r   s      r   E23ztest_ellip_harm.<locals>.E23       4AaC"H&&&r   c                 <    |t        t        ||z  |z
              z  S r   r   r   s      r   E24ztest_ellip_harm.<locals>.E24   r   r   c                 H    t        t        ||z  | z
  ||z  |z
  z              S r   r   r   s      r   E25ztest_ellip_harm.<locals>.E25   s'    C1rAaC"H-.//r   c                 r    ||z  |z  |dz  d| |z   z  t        d| |z   z  | |z   z  d| z  |z  z
        z   z  z
  S Nr   r   r*   rC   r   r   s      r   E31ztest_ellip_harm.<locals>.E31   [    s1u!abkDBGb2g1F
2b2 -    	r   c                 r    ||z  |z  |dz  d| |z   z  t        d| |z   z  | |z   z  d| z  |z  z
        z
  z  z
  S r   r   r   s      r   E32ztest_ellip_harm.<locals>.E32   r   r   c                     t        t        ||z  | z
              ||z  d| d|z  z   t        t        | d|z  z   | d|z  z   z  d| z  |z  z
              z   z  z
  z  S N皙?r   r   r   r   s      r   E33ztest_ellip_harm.<locals>.E33       C!bM"AaC#QrT	T#r	"HAbDyGbDGG$ C% >& 0& +' %' ( 	(r   c                     t        t        ||z  | z
              ||z  d| d|z  z   t        t        | d|z  z   | d|z  z   z  d| z  |z  z
              z
  z  z
  z  S r   r   r   s      r   E34ztest_ellip_harm.<locals>.E34   r   r   c                     t        t        ||z  |z
              ||z  dd| z  |z   t        t        d| z  |z   d| z  |z   z  d| z  |z  z
              z   z  z
  z  S r   r   r   s      r   E35ztest_ellip_harm.<locals>.E35       C!bM"AaC#"r	T#qt
HtbyGbDGG$ C% >& 0& +' %' ( 	(r   c                     t        t        ||z  |z
              ||z  dd| z  |z   t        t        d| z  |z   d| z  |z   z  d| z  |z  z
              z
  z  z
  z  S r   r   r   s      r   E36ztest_ellip_harm.<locals>.E36   r   r   c                 N    |t        t        ||z  | z
  ||z  |z
  z              z  S r   r   r   s      r   E37ztest_ellip_harm.<locals>.E37   s,    4QqS2X!b12333r   r   r|   r)   r   g      @r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c           	          t        | j                        D ]C  }t        ||         t        ||         f   }j                   || |   ||   ||                E S r   )r+   r   intr   )	r   r   r    r!   r   ir   r   	point_refs	          r   ellip_harm_knownz)test_ellip_harm.<locals>.ellip_harm_known  sd    rww 	7AAaD	3qt956DT"Q%A!56	7 r   r   r      r   r*   r   r   )r   r   r   r   RandomStater   r   r+   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rngr   r   r   r   r   r    r!   r   r   s                            @@r   test_ellip_harmr      s7   ##NN''0((((4 Aq!QQ2q!Q3!G63 G GVS G&# G3G &G-3SG:@#G3G &G-3SG:@#G 3G !'G .4SG ;A#GK
 I ))


%C	Cb	!B	QCbgg..	/B

3RWW
%AF277^ :q 	:A1ac!e_ :r!ubeQ1Q489:	:: XXfFj"2FGr   c                  d    d} d| z  dz   }t        dd| |d      }t        j                  |      sJ y )Nr*   r   r   g       @r   )r   r   isnan)r    r!   rT   s      r   test_ellip_harm_invalid_pr     s8    	A	!aAS!Q,F88Fr   )rN   numpyr   numpy.testingr   r   r   scipy.special._testutilsr   scipy.specialr   r   r	   scipy.integrater
   r   r   rV   r   r   r   r   r   r   r   <module>r      sC   
   @ @ 6 @ @ . 3FlbPJ-6RHjr   