L iEddlZddlZddlZddlmZmZmZmZm Z ddl m Z ddl m Z mZmZmZmZmZGddZGddZGd d ZGd d ZGd dZGddZdZddddZddddZddddZddddZddddZddddZddddZ ddddZ!ddddZ"ddddZ#ddddZ$dddd Z%dddd!Z&dddd"Z'dddd#Z(dddd$Z)dddd%Z*dddd&Z+dddd'Z,dddd(Z-dddd)Z.dddd*Z/dddd+Z0dddd,Z1dddd-Z2d{d.Z3dddd/Z4dddd0Z5dddd1Z6dddd2Z7dddd3Z8dddd4Z9dddd5Z:dddd6Z;dddd7Zdddd:Z?dddd;Z@dddd<ZAdddd=ZBdddd>ZCdddd?ZDdddd@ZEddddAZFddddBZGddddCZHddddDZIddddEZJddddFZKddddGZLdHZMdIZNdJZOdKZPdLZQdMZRdNZSdOZTdPZUdQZVdRZWdSZXdTZYdUZZdVZ[dWZ\dXZ]dYZ^dZZ_d[Z`d\Zad]Zbd^Zcd_Zdd`ZedaZfdbZgdcZhddZideZjdfZkdgZldhZmdiZndjZodkZpdlZqdmZrdnZsdoZtdpZudqZvdrZwdsZxdtZyduZzdvZ{dwZ|dxZ}dyZ~dzZy)|N) assert_equalassert_almost_equalassert_array_almost_equalassert_allclosesuppress_warnings)special) legendre_plegendre_p_allassoc_legendre_passoc_legendre_p_allsph_legendre_psph_legendre_p_allceZdZdZej j dgdej j dgdej j dgddZy ) TestLegendrectjd}tjd}tjd}tjd}tjd}tjd}t|jdgt|jddgt |jt j gddz d t |jt j gd dz t |jt j gd d z t |jt j gdd z y)Nr)rrg@ )decimal)rrr)#rirrg @)?rirr)rlegendrercrnparray)selfleg0leg1leg2leg3leg4leg5s g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/special/tests/test_legendre.py test_legendrezTestLegendre.test_legendres""""""TVVaS!TVVaU#DFFBHHX$6s$:BGDFFBHHZ$8$<=DFFBHH^$$?$CDn)rrrrrzr)g?g{ɚ)@gue#gbLd?g7f?zi)go^#@g"1?g7ܘ~ @g^26g6n"c4t5}|jttj|||dzz}tj d|||dzz}dddt dddt |d|ddy#1swY4xYw)Ncategory?rr)rfilterDeprecationWarningrlpnclpmnr)r"r,r-r.supreslpnresclpmns r)test_lpn_against_clpmnz#TestLegendre.test_lpn_against_clpmn%s   5C JJ 2J 3[[BBJ/F}}Q2be84H 5 q 8A;q>2q 8A;q>2  5 5s ABBN)__name__ __module__ __qualname__r*pytestmark parametrizer:r+r)rrsi E [[S/2 [[T$:; [[T$0131;3 3r+rceZdZejj dgddZejj dgdejj dgddZdZy ) TestLegendrePshape r rrctjjd}|jdd|}|j dd|}t ||d\}}}|j |k(sJ|j |j k(sJ|j |j k(sJd||zz |zd|z|zz ||dzz|zz}tjj|dd y) Nrdrrrdiff_n绽|=atol) r random default_rngintegersuniformr rDtestingr) r"rDrngr,xpp_jacp_hesserrs r)test_odezTestLegendreP.test_ode4sii##D) LLC ' KKAu %%a155&ww%{{agg%%%||u{{***1q5yF"QUU]2Q!a%[1_D ""3"6r+n_maxrrr x_shapec jtjjd}|jdd|}t ||d\}}}tj |dz}tj |ttd|jdz}|jt|f|jzk(sJ|j|jk(sJ|j|jk(sJd||zz |zd|z|zz ||dzz|zz} tjj| dd y) NrMrrrrOaxisrrQrR)r rTrUrWr arange expand_dimstuplerangendimrDlenrXr) r"r`rerYrZr[r\r]r,r^s r) test_all_odezTestLegendreP.test_all_odeDs ii##D) KKAw ')%1=5& IIeai  NN1U5AFFQJ+?%@ Aww3q6)agg----{{agg%%%||u{{***1q5yF"QUU]2Q!a%[1_D ""3"6r+ct5}|jttjdd\}}dddt gddt gddy#1swY(xYw)Nr0r?)?rqr)rrg?)rr3r4rr5r)r"r7r[pds r) test_legacyzTestLegendreP.test_legacyVs^   (C JJ 2J 3KK3'EAr ( "!%A1E!"&A1E  ( (s 0A""A+N) r;r<r=r>r?r@r_rorvrAr+r)rCrC3sn [[W&@A 7B 7 [[W&:; [[Y(BC7D<7 Fr+rCceZdZejj dgdejj dddgejj dddgd Zejj dgdejj d d d gd Zejj dgddZejj dgdejj d d d gdZ ejj ddgejj ddgejj dddgdZ ejj dgdejj ddgdZ y)TestAssocLegendrePrDrFrH)rrrKrGm_maxrrr`rKrGc 8tjjd}|jdd|}t |||d\}}}tj |dz} tj | ttd|jdz} tjtj |dztj | dg} tj | d ttd|jdzz} tj |d }t| | |d\} } } tjj| |tjj| |tjj| |y) NrMGzGz?rrOrrgrrrr)r rTrUrWr rirjrkrlrm concatenater rXr)r"rDr`rzrYrZp_all p_all_jac p_all_hessr,mr[r\r]s r) test_lpmnzTestAssocLegendreP.test_lpmn_s4ii##D) KKtU + q ; %y* IIeai  NN1U5AFFQJ+?%@ A NNBIIeai0"))UFA2FG H NN1TE%166A:2F,G%G H NN1V ,+Aq!A>5& ""1e, ""5)4 ""6:6r+normTFc tjjd}|jdd|}|jdd|}|j dd|}t ||||d\}}} |j |k(sJ|j |j k(sJ| j |j k(sJtjjd||zz | zd|z|z||dzz||zd||zz z z |zz d d y) NrMrrGrrrrrPh㈵>:0yE>rtolrS) r rTrUrVrWr rDrXr) r"rDrrYr,rrZr[r\r]s r)r_zTestAssocLegendreP.test_odevsii##D) LLB & LLb% ( KKAu %+Aq!$qI5&ww%{{agg%%%||u{{*** ""AAI#7 EEMQ!a%[1q5AAI+>>!C CU # $r+rEc tjjd}d}d}|jdd|}t |||d\}}}tj tj |dztj | dg} tj |dz} tj| ttd|jdz } tj| d ttd|jdzz } tjjd||zz |zd|z|z| | dzz| | zd||zz z z |zz d d y)NrMr|r}rrOrrrgr~rrr) r rTrUrWr rrirjrkrlrmrXr) r"rDrYr`rzrZr[r\r]rr,s r)test_allzTestAssocLegendreP.test_alls3ii##D) KKtU +/uaJ5& NNBIIeai0"))UFA2FG H IIeai  NN1U5AFFQJ+?%@ A NN1TE%166A:2F,G%G H ""AAI#7 EEMQ!a%[1q5AAI+>>!C CU # $r+c0tjjd}|jdd|}t dd||d\}}tj j |dt||tj j |d d tj j |d d tj j |d d tj j |d d tj j |dd tj j |dd tj j |dd tj j |dt||tj j |dt||tj j |dd tj j |dd tj j |dd tj j |dd tj j |dd tj j |dd tj j |dt||tj j |dt||tj j |dt||tj j |dt||tj j |dd tj j |dd tj j |dd tj j |d d tj j |d!t||tj j |d"t||tj j |d#t!||tj j |d$t#||tj j |d%t%||tj j |d&t'||tj j |d'd tj j |d(d tj j |d)t)||tj j |d*t+||tj j |d+t-||tj j |d,t/||tj j |d-t1||tj j |d.t3||tj j |d/t5||tj j |d0t7||tj j |d1t9||tj j |d2t;||tj j |d3t=||tj j |d4t?||tj j |dtA||tj j |d d tj j |d d tj j |d d tj j |d d tj j |d5d tj j |dd tj j |dd tj j |dd tj j |dtC||tj j |dtE||tj j |dd tj j |dd tj j |dd tj j |dd tj j |dd tj j |dd tj j |dtG||tj j |dtI||tj j |dtK||tj j |dtM||tj j |dd tj j |dd tj j |dd tj j |d d tj j |d!tO||tj j |d"tQ||tj j |d#tS||tj j |d$tU||tj j |d%tW||tj j |d&tY||tj j |d'd tj j |d(d tj j |d)t[||tj j |d*t]||tj j |d+t_||tj j |d,ta||tj j |d-tc||tj j |d.te||tj j |d/tg||tj j |d0ti||tj j |d1tk||tj j |d2tm||tj j |d3to||tj j |d4tq||y)6NrMr|r}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)9r rTrUrWr rXrassoc_legendre_p_0_0assoc_legendre_p_1_0assoc_legendre_p_1_1assoc_legendre_p_1_m1assoc_legendre_p_2_0assoc_legendre_p_2_1assoc_legendre_p_2_2assoc_legendre_p_2_m2assoc_legendre_p_2_m1assoc_legendre_p_3_0assoc_legendre_p_3_1assoc_legendre_p_3_2assoc_legendre_p_3_3assoc_legendre_p_3_m3assoc_legendre_p_3_m2assoc_legendre_p_3_m1assoc_legendre_p_4_0assoc_legendre_p_4_1assoc_legendre_p_4_2assoc_legendre_p_4_3assoc_legendre_p_4_4assoc_legendre_p_4_m4assoc_legendre_p_4_m3assoc_legendre_p_4_m2assoc_legendre_p_4_m1assoc_legendre_p_0_0_jacassoc_legendre_p_1_0_jacassoc_legendre_p_1_1_jacassoc_legendre_p_1_m1_jacassoc_legendre_p_2_0_jacassoc_legendre_p_2_1_jacassoc_legendre_p_2_2_jacassoc_legendre_p_2_m2_jacassoc_legendre_p_2_m1_jacassoc_legendre_p_3_0_jacassoc_legendre_p_3_1_jacassoc_legendre_p_3_2_jacassoc_legendre_p_3_3_jacassoc_legendre_p_3_m3_jacassoc_legendre_p_3_m2_jacassoc_legendre_p_3_m1_jacassoc_legendre_p_4_0_jacassoc_legendre_p_4_1_jacassoc_legendre_p_4_2_jacassoc_legendre_p_4_3_jacassoc_legendre_p_4_4_jacassoc_legendre_p_4_m4_jacassoc_legendre_p_4_m3_jacassoc_legendre_p_4_m2_jacassoc_legendre_p_4_m1_jac)r"rDrrYrZr[r\s r) test_specificz TestAssocLegendreP.test_specifics ii##D) KKtU +'1ad1E5 ""1T7  . 0 ""1T7A. ""1T7A. ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8Q/ ""1T7  . 0 ""1T7  . 0 ""1T7A. ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8Q/ ""1U8 !!$ / 1 ""1T7  . 0 ""1T7  . 0 ""1T7  . 0 ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8 !!$ / 1 ""1U8 !!$ / 1 ""1T7  . 0 ""1T7  . 0 ""1T7  . 0 ""1T7  . 0 ""1T7A. ""1U8Q/ ""1U8 !!$ / 1 ""1U8 !!$ / 1 ""1U8 !!$ / 1 ""1T7  . 0 ""1T7  . 0 ""1T7  . 0 ""1T7  . 0 ""1T7  . 0 ""1U8 !!$ / 1 ""1U8 !!$ / 1 ""1U8 !!$ / 1 ""1U8 !!$ / 1 ""5; $QT 2 4 ""5;2 ""5;2 ""5;2 ""5;2 ""5<3 ""5<3 ""5<3 ""5<3 ""5; $QT 2 4 ""5; $QT 2 4 ""5;2 ""5;2 ""5;2 ""5<3 ""5<3 ""5<3 ""5< %ad 3 5 ""5; $QT 2 4 ""5; $QT 2 4 ""5; $QT 2 4 ""5;2 ""5;2 ""5<3 ""5<3 ""5< %ad 3 5 ""5< %ad 3 5 ""5; $QT 2 4 ""5; $QT 2 4 ""5; $QT 2 4 ""5; $QT 2 4 ""5;2 ""5<3 ""5< %ad 3 5 ""5< %ad 3 5 ""5< %ad 3 5 ""5; $QT 2 4 ""5; $QT 2 4 ""5; $QT 2 4 ""5; $QT 2 4 ""5; $QT 2 4 ""5< %ad 3 5 ""5< %ad 3 5 ""5< %ad 3 5 ""5< %ad 3 5r+rZrrc rt|||d\}}tj|dz}tjj |dddft ||dz|z|dzzdz tjj |dddftj |dk\t ||tjzdtjj |dddftj |dk\t ||dz |dzz|dzz|z|dz zdz dtjj |dddftj |dk\t ||dz dz dtjj |dddftj |dk\t || tjzdtd|dzD]Q}tjj |dd|fdtjj |dd| fdSy) NrrOrrrrrr) r r rirXrpowwhereinfrl)r"rzr`rZr[r\r,rs r)test_all_limitsz"TestAssocLegendreP.test_all_limits;s(uaB5 IIeai  ""5A; 1q5MA Q '! + - ""5A; HHQ!VSAY/ 3 5 ""5A; HHQ!Vc!QUm^q1u5Q?!Cq1uMPQQST U W ""5B< HHQ!Vc!QUm^a/ 3 5 ""5B< HHQ!Vc!QiZ"&&0! 4 6q%!)$ 8A JJ & &uQT{A 6 JJ & &uQU|Q 7 8r+)rrrGcd}t|||d\}}t5}|jtt j |||\}}t |dzD],} tjj|| |dd| f.t j | ||\}}t |dzD]-} tjj|| |dd| f/ dddy#1swYyxYw)NrqrrOr0) r rr3r4rlpmnrlr rXr) r"rzr`rZr[r\r7p_legacy p_jac_legacyrs r)rvzTestAssocLegendreP.test_legacyRs 'uaB5  BC JJ 2J 3%,\\%%B "Hl519% A **8A;!Q$@ A&-\\5&%%C "Hl519% B **8A;!aR%A B B B Bs CC00C9N) r;r<r=r>r?r@rr_rrrrvrAr+r)rxrx^s [[W&DE [[Wq!f- [[Wq"g.7/.F7( [[W&DE [[VdE]3$4F$" [[W&@A$B$& [[W&@A [[VdE]3Z54BZ5x [[Wqc* [[Wrd+ [[S1b'*8+,+8( [[Wj1 [[Wrd+ B,2 Br+rxceZdZejj dgdejj dddgejj dgdejj dd d gd Zy ) TestMultiAssocLegendrePrD))irHrJ branch_cutrrz z_min, z_max))y$$y$@$@)rr)y$y$@rTFcZtjjd}|j|j|j|d|j|j |j |zz}t dd|||d\}} tjj|dt|||tjj|dd tjj|d d tjj|d d tjj|d d tjj|d d tjj|dd tjj|dd tjj|dd tjj|dt|||tjj|dt|||tjj|dd tjj|dd tjj|dd tjj|dd tjj|dd tjj|dd tjj|dt|||tjj|dt|||tjj|dt|||tjj|dt|||tjj|dd tjj|dd tjj|dd tjj|d d tjj|d!t!|||tjj|d"t#|||tjj|d#t%|||tjj|d$t'|||tjj|d%t)|||tjj|d&t+|||tjj|d'd tjj|d(d tjj|d)t-|||tjj|d*t/|||tjj|d+t1|||tjj|d,t3|||tjj|d-t5|||tjj|d.t7|||tjj|d/t9|||tjj|d0t;|||tjj|d1t=|||tjj|d2t?|||tjj|d3tA|||tjj|d4tC|||tjj| dtE|||tjj| dd tjj| d d tjj| d d tjj| d d tjj| d d tjj| dd tjj| dd tjj| dd tjj| dtG|||tjj| dtI|||tjj| dd tjj| dd tjj| dd tjj| dd tjj| dd tjj| dd tjj| dtK|||tjj| dtM|||tjj| dtO|||tjj| dtQ|||tjj| dd tjj| dd tjj| dd tjj| d d tjj| d!tS|||tjj| d"tU|||tjj| d#tW|||tjj| d$tY|||tjj| d%t[|||tjj| d&t]|||tjj| d'd tjj| d(d tjj| d)t_|||tjj| d*ta|||tjj| d+tc|||tjj| d,te|||tjj| d-tg|||tjj| d.ti|||tjj| d/tk|||tjj| d0tm|||tjj| d1to|||tjj| d2tq|||tjj| d3ts|||tjj| d4tu|||y)5NrMr2rr)rrrPrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr);r rTrUrWrealimagr rXrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr) r"rDrz_minz_maxrrYzr[r\s r)rz%TestMultiAssocLegendreP.test_specificds{ ii##D) KK EJJ 6 UZZU; ; <(1 *4;5 ""1T7 z E G ""1T7A. ""1T7A. ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8Q/ ""1U8Q/ ""1T7 z E G ""1T7 z E G ""1T7A. ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8Q/ ""1U8 !!  F H ""1T7 z E G ""1T7 z E G ""1T7 z E G ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8 !!  F H ""1U8 !!  F H ""1T7 z E G ""1T7 z E G ""1T7 z E G ""1T7 z E G ""1T7A. ""1U8Q/ ""1U8 !!  F H ""1U8 !!  F H ""1U8 !!  F H ""1T7 z E G ""1T7 z E G ""1T7 z E G ""1T7 z E G ""1T7 z E G ""1U8 !!  F H ""1U8 !!  F H ""1U8 !!  F H ""1U8 !!  F H ""5; $Q:D I K ""5;2 ""5;2 ""5;2 ""5;2 ""5<3 ""5<3 ""5<3 ""5<3 ""5; $Q:D I K ""5; $Q:D I K ""5;2 ""5;2 ""5;2 ""5<3 ""5<3 ""5<3 ""5< %aJT J L ""5; $Q:D I K ""5; $Q:D I K ""5; $Q:D I K ""5;2 ""5;2 ""5<3 ""5<3 ""5< %aJT J L ""5< %aJT J L ""5; $Q:D I K ""5; $Q:D I K ""5; $Q:D I K ""5; $Q:D I K ""5;2 ""5<3 ""5< %aJT J L ""5< %aJT J L ""5< %aJT J L ""5; $Q:D I K ""5; $Q:D I K ""5; $Q:D I K ""5; $Q:D I K ""5; $Q:D I K ""5< %aJT J L ""5< %aJT J L ""5< %aJT J L ""5< %aJT J Lr+N)r;r<r=r>r?r@rrAr+r)rrcs [[W&BC [[\Aq62 [[^. [[VdE]3]L43D ]Lr+rceZdZejj dgddZejj dgddZy)TestSphLegendrePrDrEcZtjjd}|jtj tj|}t dd|d\}}tj j|dt|tj j|ddtj j|ddtj j|d dtj j|d dtj j|d dtj j|d dtj j|d dtj j|dt|tj j|dt|tj j|ddtj j|ddtj j|ddtj j|ddtj j|ddtj j|ddtj j|dt|tj j|dt|tj j|dt|tj j|dt|tj j|ddtj j|ddtj j|ddtj j|ddtj j|dt|tj j|dt!|tj j|d t#|tj j|d!t%|tj j|d"t'|tj j|d#t)|tj j|d$dtj j|d%dtj j|d&t+|tj j|d't-|tj j|d(t/|tj j|d)t1|tj j|d*t3|tj j|d+t5|tj j|d,t7|tj j|d-t9|tj j|d.t;|tj j|d/t=|tj j|d0t?|tj j|d1tA|tj j|dtC|tj j|ddtj j|ddtj j|d dtj j|d dtj j|d dtj j|d dtj j|d dtj j|dtE|tj j|dtG|tj j|ddtj j|ddtj j|ddtj j|ddtj j|ddtj j|ddtj j|dtI|tj j|dtK|tj j|dtM|tj j|dtO|tj j|ddtj j|ddtj j|ddtj j|ddtj j|dtQ|tj j|dtS|tj j|d tU|tj j|d!tW|tj j|d"tY|tj j|d#t[|tj j|d$dtj j|d%dtj j|d&t]|tj j|d't_|tj j|d(ta|tj j|d)tc|tj j|d*te|tj j|d+tg|tj j|d,ti|tj j|d-tk|tj j|d.tm|tj j|d/to|tj j|d0tq|tj j|d1ts|y)2NrMrrrOrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr):r rTrUrWpirrXrsph_legendre_p_0_0sph_legendre_p_1_0sph_legendre_p_1_1sph_legendre_p_1_m1sph_legendre_p_2_0sph_legendre_p_2_1sph_legendre_p_2_2sph_legendre_p_2_m2sph_legendre_p_2_m1sph_legendre_p_3_0sph_legendre_p_3_1sph_legendre_p_3_2sph_legendre_p_3_3sph_legendre_p_3_m3sph_legendre_p_3_m2sph_legendre_p_3_m1sph_legendre_p_4_0sph_legendre_p_4_1sph_legendre_p_4_2sph_legendre_p_4_3sph_legendre_p_4_4sph_legendre_p_4_m4sph_legendre_p_4_m3sph_legendre_p_4_m2sph_legendre_p_4_m1sph_legendre_p_0_0_jacsph_legendre_p_1_0_jacsph_legendre_p_1_1_jacsph_legendre_p_1_m1_jacsph_legendre_p_2_0_jacsph_legendre_p_2_1_jacsph_legendre_p_2_2_jacsph_legendre_p_2_m2_jacsph_legendre_p_2_m1_jacsph_legendre_p_3_0_jacsph_legendre_p_3_1_jacsph_legendre_p_3_2_jacsph_legendre_p_3_3_jacsph_legendre_p_3_m3_jacsph_legendre_p_3_m2_jacsph_legendre_p_3_m1_jacsph_legendre_p_4_0_jacsph_legendre_p_4_1_jacsph_legendre_p_4_2_jacsph_legendre_p_4_3_jacsph_legendre_p_4_4_jacsph_legendre_p_4_m4_jacsph_legendre_p_4_m3_jacsph_legendre_p_4_m2_jacsph_legendre_p_4_m1_jac)r"rDrYthetar[r\s r)rzTestSphLegendreP.test_specific s$ ii##D) RUUFBEE51%aE!<5 ""1T7 u % ' ""1T7A. ""1T7A. ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8Q/ ""1T7 u % ' ""1T7 u % ' ""1T7A. ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8Q/ ""1U8  & ( ""1T7 u % ' ""1T7 u % ' ""1T7 u % ' ""1T7A. ""1T7A. ""1U8Q/ ""1U8Q/ ""1U8  & ( ""1U8  & ( ""1T7 u % ' ""1T7 u % ' ""1T7 u % ' ""1T7 u % ' ""1T7A. ""1U8Q/ ""1U8  & ( ""1U8  & ( ""1U8  & ( ""1T7 u % ' ""1T7 u % ' ""1T7 u % ' ""1T7 u % ' ""1T7 u % ' ""1U8  & ( ""1U8  & ( ""1U8  & ( ""1U8  & ( ""5; "5 ) + ""5;2 ""5;2 ""5;2 ""5;2 ""5<3 ""5<3 ""5<3 ""5; "5 ) + ""5; "5 ) + ""5;2 ""5;2 ""5;2 ""5<3 ""5<3 ""5<3 ""5< #E * , ""5; "5 ) + ""5; "5 ) + ""5; "5 ) + ""5;2 ""5;2 ""5<3 ""5<3 ""5< #E * , ""5< #E * , ""5; "5 ) + ""5; "5 ) + ""5; "5 ) + ""5; "5 ) + ""5;2 ""5<3 ""5< #E * , ""5< #E * , ""5< #E * , ""5; "5 ) + ""5; "5 ) + ""5; "5 ) + ""5; "5 ) + ""5; "5 ) + ""5< #E * , ""5< #E * , ""5< #E * , ""5< #E * ,r+ryc tjjd}|jdd|}|jdd|}|j tj tj |}t |||d\}}}|j|k(sJ|j|jk(sJ|j|jk(sJtjjtj||ztj| |z||dzztj|z||ztj|z z |zz dd y) NrMrrGrrrOrrrr) r rTrUrVrWr r rDrXrsincos) r"rDrYr,rr=r[r\r]s r)r_zTestSphLegendreP.test_odes ii##D) LLB & LLb% ( RUUFBEE51)!Qa@5&ww%{{agg%%%||u{{*** ""266%=6#9BFF5M>E;QAE{RVVE]*QURVVE]-BBaGr?r@rr_rAr+r)rrsQ [[W&@AY,BY,v [[W&DE$F$r+rc eZdZdZdZdZdZdZdZ dZ dZ d Z d Z d Z ejj!d ej$ej&gejj!d gdejj!dddgejj!dddgejj!dgddZejj!d ej*gejj!dgdejj!dddgejj!dgddZejj!d ej.ej*gejj!dgdejj!dgddZy)TestLegendreFunctionscjd}t5}|jttjdd|d}dddt t jd|dd|z|zdz zgdt j||zdz d|zt j||zdz zgddd||zdz zggt jddd|zgd|t j||zdz z dd|z|zdz zt j||zdz z gddd |zggfd y#1swYxYw) Ny?333333?r0rrrrrqrrtrK) rr3r4rr6rr r!sqrt)r"rr7clps r) test_clpmnz TestLegendreFunctions.test_clpmnsB    ,C JJ 2J 3--1a+C , "#HHvq#qs1uQw-8"BGGAaCENAaC!A4FG"FAqs1uI689HHvvqs3"Abggac!en$4a1Qqk"''!A#a%.6PQ"FAaC0234    , ,s /D))D2c d}d}d}d}t5}|jttj|||d|zzdd||f}tj|||d|zz dd||f}dddt t jgt jtj|||tj|||gd y#1swYkxYw) NrQrrrqr0r2rrrK) rr3r4rr6rr r!lpmvr"epsrr,rZr7clp_plus clp_minuss r)test_clpmn_close_to_real_2z0TestLegendreFunctions.test_clpmn_close_to_real_2s      BC JJ 2J 3}}Q1RV8Q7:1a4@H aAbfHa8;AqDAI B ""((Hi+@"A"$((GLLAq,A)0aA)>,@#A"# %  B Bs A#C  C)c d}d}d}d}t5}|jttj|||d|zzdd||f}tj|||d|zz dd||f}dddt t jgt jtj|||t jd|zt jzztj|||t jd |zt jzzgd y#1swYxYw) NrQrrrqr0r2ry?rK) rr3r4rr6rr r!rIexpr rJs r)test_clpmn_close_to_real_3z0TestLegendreFunctions.test_clpmn_close_to_real_3s       BC JJ 2J 3}}Q1RV8Q7:1a4@H aAbfHa8;AqDAI B ""((Hi+@"A"$((GLLAq,A"&&qQSQVQVBW,W)0aA)>rvvd1fRUUl?S)S,U#V"# %  B Bs A#D44D=c 8d}d}d}d}t5}|jtdD]W}tt j |||d|zz|d||ft j |||d|zz |d||fdY dddy#1swYyxYw)NgHz>rr2r0rrrD)rr3r4rrr6)r"rKrr,rZr7types r)test_clpmn_across_unit_circlez3TestLegendreFunctions.test_clpmn_across_unit_circles      QC JJ 2J 3 Q#GMM!Q"S&$$G$J1a4$P ' aAbfHd CA Fq!t LaQ Q Q Q Qs A3BBc t5}|jtdD]}tdD]}td|D]}t j |||}t j|ddddfjsJt j|||}t j|ddddfjrJ dddy#1swYyxYw)Nr0rrr) rr3r4rlrr6r isinfallr)r"r7rr,rlps r)test_infzTestLegendreFunctions.test_infs   ;C JJ 2J 3 ;q;A"1a[;$]]1a3!xx1ad 488:::$\\!Q2!xx1ad 488::: ;; ; ; ; ;sCC C  C)c gd}d}d}t5}|jtdD]}}|D]v}dD]o}tj|||d|zz|dtj|||d|zz |dz |z }t tj||||d |d qx dddy#1swYyxYw) N)y??y?yy?y??y?yy?rrr0r)MbP?yMbP?rqrrg-C6?)r)rr3r4rr6r) r"zvalsrr,r7rTrhapprox_derivatives r)test_deriv_clpmnz&TestLegendreFunctions.test_deriv_clpmns+    3C JJ 2J 3 33A*3-4]]1a3q5$-OPQ-R.5mmAq!CE'4.PQR.S.TUV-W)' aAt(DQ(G(9-1333 3 3 3 3s BB66B?cRtjddd}t|ddtjddd}t|ddtjd 5tjd d d}ddd|dk7stj |sJyy#1swY'xYw) NrrrqrsrK(r\gI?ignore)rXr)rrIrr errstateisnan)r"rYs r) test_lpmvzTestLegendreFunctions.test_lpmv*s \\!Ab !Bva( \\!Bt $B1!4[[X & *bD)B *Qw"((2,&&,w * *s BB&ctjddd}tjdd}t|dd|ddt|dd|ddy)Nrrrqrr)rlqmnlqnr)r"lqmnflqfs r) test_lqmnzTestLegendreFunctions.test_lqmn6sT Qq$kk!B!%(1+c!fQ7!%(1+c!fQ7r+cd}d}||z ||zfD]6}tjdd|dd}d||zdz z }t||8y)znalgorithm for real arguments changes at 1.0001 test against analytical result for m=2, n=1 gqh?gh㈵>rrr)rrN)rrhr)r"x0deltarZlqexpecteds r) test_lqmn_gt1z#TestLegendreFunctions.test_lqmn_gt1<saU(BuH% .AaA&q)&1B!A#a%yH H - .r+ctjddd\}}t|jdt|jdtjddd\}}t|jdt|jdy)Nrg?)rrr)rr)rrhrrD)r"abs r)test_lqmn_shapez%TestLegendreFunctions.test_lqmn_shapeGsf||Aq#&1QWWf%QWWf%||Aq#&1QWWf%QWWf%r+ctjdd}t|tjgdtjgdfdy)Nrrq)gk+ݓ?g=yX5g†W2)g|a2U?g~jt?gڊer)rrirr r!)r"rks r)test_lqnzTestLegendreFunctions.test_lqnPs?kk!B!#rxx0J'K')xx0H'I'KKL Nr+functionr,ra z_complexFT z_inexact input_shape)rArrrrrrrr)rrrctjjd}|r|jdd|}n|j dd|}|r d|zd|zz}t 5}|j t |||\} } d d d  j|dzf|zk(sJ j|dzf|zk(sJy #1swY:xYw) z Tests for correct output shapes.rMrrsizerrr2rPr0N) r rTrUrVrWrr3r4rD) r"ryr,rzr{r|rYrr7P_zP_d_zs r)test_array_inputs_lxnz+TestLegendreFunctions.test_array_inputs_lxnUsii##D)  R 5A B 4A Q!A   (C JJ 2J 3!!QJC (yyQUI 3333{{q1ui+5555  ( (s "#B>>Czm,n)rrr)rrb) rc)rd)rAr}r~rrrrc"tjjd}|r|jdd|}n|j dd|}||||\}} |j |dz|dzf|zk(sJ| j |dz|dzf|zk(sJy)+Tests for correct output shapes and dtypes.rMrrrrrN)r rTrUrVrWrD) r"ryrr,r{r|rYrrrs r)test_array_inputs_lxmnz,TestLegendreFunctions.test_array_inputs_lxmnpsii##D)  R 5A B 4AaA& UyyQUAEN[8888{{q1ua!en{::::r+cttjjd}|jdd|}d|zd|zz}t 5}|j t ||||\}} dddj|dz|dzf|zk(sJ j|dz|dzf|zk(sJy#1swYBxYw) rrMrrrr2rPr0N)r rTrUrWrr3r4rD) r"ryrr,r|rYrr7rrs r)test_array_inputs_clxmnz-TestLegendreFunctions.test_array_inputs_clxmnsii##D) KKAKK 0 FTAX    +C JJ 2J 3!!Q*JC +yyQUAEN[8888{{q1ua!en{::::  + +s $B..B7N)r;r<r=rGrNrRrUrZr`rfrlrrrvrxr>r?r@rr5rirrhrr6rrAr+r)rBrBs % % Q ;3$2 '8 .&N  [[Z'++w{{)CD [[S"67 [[[5$-8 [[[5$-8 [[  6 998E6" [[Z',,8 [[ < [[[5$-8 [[  ; 9 9 ; [[Z'--)FG [[ < [[  ;  H ;r+rBc|rPtjd|zdztj||z zdtj||zzz Sy)Nrr)mathrE factorial)r,rrs r)assoc_legendre_factorrsW  1q519 NN1q5 !"%&A)>%>@A B r+rFrcHtdd|}tj||SNrrr full_likerrrfacs r)rr! 1d +C <<3 r+c&tdd|}||zSNrrrrs r)rrs 1d +C 7Nr+c tj|dk(tjtjtj|ddd}tj|dk(dd}t dd|}tj tj|dk(||zdz d||zz }||z|z|zSNrrr)r rsignbitrrrE)rrr branch_signbranch_cut_signrws r)rrs((:?BHHRZZ 5KQPR,SUWXKhhzQA6O 1d +C q!a%!)QQY?@A [ (3 . 22r+c~tj|dk(dd}tdd|}| |zt||zdz SNrrrrrr rrrrrrrrs r)rrsMhhzQA6O 2t ,C  s "Q:6 79: ;tdd|}|d|z|zdz zdz SNrrrrrrs r)rrs, 1d +C !a%!)a- 1 $$r+cHtdd|}d|z|zt||zSNrrrrrrrs r)rrs/ 1d +C GaKQ:6 78r+crtj|dk(dd}tdd|}d|z|zd||zz zS)Nrrrrr rrrs r)rrsChhzQA6O 1d +C   $AE 22r+crtj|dk(dd}tdd|}||zd||zz zdz S)Nrrrrrrbrrs r)rrsChhzQA6O 2t ,C S AAI . 22r+ctj|dk(dd}tdd|}| |z|zt||zdz SNrrrrrrrs r)rrsRhhzQA6O 2t ,C  s "Q &Q:6 79: ; 1d +C Gq1uqy1} %&qZ@ ABr+cftj|dk(dd}tdd|}d|z|z|zS)Nrrrrirrs r)rres;hhzQA6O 1d +C  # % ))r+ctj|dk(dd}tdd|}||zdd|z|zz zt||zdz Srrrs r)rrks^hhzQA6O 2t ,C c !QQ] 3&qZ@ ACD EFr+chtj|dk(dd}tdd|}| |z|zdz S)Nrrrrrrrrs r)rrrs>hhzQA6O 2t ,C  c !A % ))r+cDtdd|}d|zd|z|zdz zdz S)Nrrrrrrrs r)rrxs0 1d +C s7a!eai!m $q ((r+cftdd|}d|zd|z|zdz z|zt||zdz S)Nrrrrrrrrs r)rr}sL 1d +C GrAvzB '! +&qZ@ ACD EFr+cxtj|dk(dd}tdd|}d|z|zdd|z|zz zSrrrs r)rrsGhhzQA6O 1d +C  # %QUQY 77r+ctj|dk(dd}tdd|}d|z|zd||zz z|zt||zS)Nrrr-rrrs r)rrs[hhzQA6O 1d +C  3 &!a!e) 4q 8&qZ@ ABr+cZtdd|}|||zdz z|zt||zdz S)Nrrrrrcrrs r)rrsD 2t ,C 1q519  !&qZ@ ACE FGr+cxtj|dk(dd}tdd|}||zdd|z|zz zdz Srrrs r)rrsGhhzQA6O 2t ,C S AA M 2Q 66r+ctj|dk(dd}tdd|}||zdd|z|zz z|zt||zdz S)Nrrrrrrrbrrs r)rrschhzQA6O 2t ,C c !R"q&1*_ 5 9&qZ@ ACD EFr+cJtdd|}d|zd|z|zdz z|zdz S)NrrrrKrrrrs r)rrs5 1d +C s7a!eai!m $q (1 ,,r+crtdd|}d|zd|z|zdz |z|zdzzt||zdz S) Nrrrrrrrrs r)rrsV 1d +C GQ R1,q014 5&qZ@ ACD EFr+c~tj|dk(dd}tdd|}d|z|zdd|z|zz z|zS)NrrrrrrrKrrs r)rrsLhhzQA6O 1d +C  # %QUQY 7! ;;r+ctj|dk(dd}tdd|}d|z|zdd|z|zz |z|zdz zt||zS)Nrrrrrrrrrs r)rrsihhzQA6O 1d +C / !C 'AA MQ+>+BQ+F G&qZ@ ABr+c>tdd|}d|z||zdz z|zS)Nrirrrs r)rrs, 1d +C 9A "Q &&r+c>tdd|}|||zdz z|zdz SNrrr`rrs r)rrs- 2t ,C !a%!) q 2 %%r+cltdd|}|d|z|zdz |z|zdzzt||zdz S)Nrrrrrrrrs r)rrsR 2t ,C AEAIMQ&*Q. /&qZ@ ACE FGr+c~tj|dk(dd}tdd|}||zdd|z|zz z|zdz S)NrrrrrrK rrs r)rrsLhhzQA6O 2t ,C S AA M 2Q 6 ;;r+ctj|dk(dd}tdd|}||zdd|z|zz |z|zdz zt||zdz S) Nrrrrrrrrbrrs r)rrsmhhzQA6O 2t ,C c !b26A:o%:Q%>%B C&qZ@ ACD EFr+clt||dtjdtjzz S)NTrr)rr rEr )r,rs r)sph_legendre_factorrs' AD 1BGGAI4F FFr+cFtdd}tj||Sr)rr rr=rs r)r r s a #C <<s ##r+cJtdd}|tj|zSr)rr r@rs r)r r s! a #C  r+crtdd}| tjtj|zS)Nrrr absr?rs r)r r s, a #C 4"&&' ''r+cvtdd}|tjtj|zdz SNrrrrrs r)rrs/ a $C u & & **r+ctdd}|dtjtj|zdz zdz Srrr rr@rs r)rrs9 a #C !biiu ..2 3a 77r+ctdd}d|ztjtj|ztj|zS)Nrrrrr rr?r@rs r)rrs; a #C 8bffRVVE]+ +bffUm ;;r+c|tdd}d|zdtjtj|z zS)Nrrrrrs r)rrs3 a #C s7a"))BFF5M22 33r+c|tdd}|dtjtj|z zdz S)Nrrrrbrrs r)rrs4 a $C !biiu .. /! 33r+ctdd}|tj|ztjtj|zdz S)Nrr)rr r@rr?rs r)rrs< a $C  u !6 6 ::r+ctdd}|dtjtj|zdz ztj|zdz Srrrs r)rrsN a #C 1ryy//!3 4 u   r+ctdd}d|zdtjtj|zdz ztjtj |zdz S)Nrrrrrrr rr@rr?rs r)rrs[ a #C HBIIbffUm44q8 9 rvve}  ! "#r+ctdd}d|ztjtj|dz ztj|zS)Nrrrrrs r)rrsE a #C #I266%=1A5 6 u  r+ctdd}d|ztjtjtj|dzS)Nrrrr powerrr?rs r)rrs9 a #C 9rxxrvve} 5q9 99r+ctdd}|tjtjtj|dzdz S)Nrrrr rs r)rrs: a $C "&&/3 3b 88r+ctdd}| tjtj|dz ztj|zdz SNrrrrbrrs r)rr$sK a $C DBIIbffUm,q0 1 u   r+ctdd}|dtjtj|zdz ztjtj |zdz S)Nrrrrrbrrs r)rr*sW a $C 1ryy//!3 4 rvve}  ! "#r+c tdd}|dtjtjtj|zdtjtj|zz dzzdz Srrrs r)rr0sj a #C 2 "))BFF5M":;; RYYrvve} %%&()* +-. /0r+ctdd}d|zdtjtj|zdz ztj|ztjtj |zdz S)NrrrKrrrrs r)rr6sk a #C HBIIbffUm44q8 9 u  rvve}- .01 23r+ctdd}d|zdtjtj|zdz ztjtj|dz zdz S)NrrrrKrrrs r)rr<s` a #C #IRYYrvve}559 : 266%= !A % ')* +,r+ctdd}d|ztjtjtj|dztj |zS)Nrrrr r rr?r@rs r)rrBsF a #C #:u !6: :RVVE] JJr+ctdd}d|ztjtjtj|dz zSrrrs r)rrGs< a #C 9ryy266%=!9A!=> >>r+ctdd}|tjtjtj|dz zdz Srrrs r)r r Ls= a $C 299RVVE]3a78 83 >>r+ctdd}|tjtjtj|dztj |zdz S)Nrrrrrrs r)r!r!QsO a $C "((266"&&-0!4 4 u   r+ctdd}| dtjtj|zdz ztjtj|dz zdz S)NrrrKrrrrs r)r"r"Ws^ a $C DA "&&-0014 5 266%= !A % ')+ ,-r+ctdd}|dtjtj|zdz ztj|ztjtj |zdz S)NrrrKrrbrrs r)r#r#]sg a $C 1ryy//!3 4 u  rvve}- .01 23r+c,tj|Srr)r=s r)r$r$cs == r+cLtdd}| tj|zSr)rr r?rs r)r%r%fs# a #C 4"&&- r+ctdd}| tj|zdtjtj|dzdz zS)Nrrrr r@ heavisider?rs r)r&r&ksE a #C 4"&&- 1r||BFF5M1'E#E#I JJr+ctdd}|tj|zdtjtj|dzdz zdz Srrrs r)r'r'psH a $C  !bll266%=!&D"Dq"H IA MMr+c|tdd}d|ztj|ztj|zS)Nrrr)rr r@r?rs r)r(r(us2 a #C 8bffUm #bffUm 33r+cVtdd}d|ztjtj| dtjtj |dzdz ztj tj |tj |zzzS)Nrrrrr rr@rr?rrs r)r)r)zs a #C G "&&-00 R\\"&&- + +a /1 rvve}u -. /0r+c|tdd}d|ztj|ztj|zS)NrrDrr r?r@rs r)r*r*s2 a #C s7RVVE] "RVVE] 22r+c|tdd}|tj|ztj|zdz S)Nrrrr%rs r)r+r+s3 a $C   . 22r+cXtdd}| tjtj| dtjtj |dzdz ztj tj |tj |zzzdz S)Nrrrr#rs r)r,r,s a $C DRYYrvve}-- R\\"&&- + +a /1 rvve}u -. /12 34r+ctdd}d|zddtjtj|zz ztj|zdz S)Nrrrrrrr rr@r?rs r)r-r-sJ a #C s7a!biiu 666 7"&&- G! KKr+ctdd}d|zddtjtj|zz ztj|zdtjtj |dzdz zdz S)Nrrrrrrr rr@rr?rs r)r.r.st a #C GrB266%=!999 :RVVE] J R\\"&&- + +a / 134 56r+ctdd}d|zdtjtj|zdz ztj|zS)Nrrrrr)rs r)r/r/sE a #C 8q299RVVE]33a7 8266%= HHr+ctdd}d|ztjtj|ztj|ztj|zS)Nrirrs r)r0r0sH a #C 9rvvbffUm, ,rvve} numpy.testingrrrrrscipyr scipy.specialr r r r r rrrCrxrrrBrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<rAr+r)r>s  ((>>33:)F)FVCBCBJcLcLJm$m$^e;e;N +,% +,% +,%3,-5<+,%% +,%8 +,%3 ,-53 ,-5<+,%) +,%< +,%8 +,%8,-5= ,-57 ,-5<+,%5 +,%; +,%J +,%8+,%, ,-5, ,-5= ,-5F ,-5</0e/0e /0eB 01uF/0e /0eB /0e* 01uF01u* /0e) /0eF /0e8 /0eB01uG 01u7 01uF/0e- /0eF /0e< /0eB/0e' 01u& 01uG 01u< 01uFG$  ( + 8 < 4 4 ;  #  : 9  # 0 3 , K ? ?  - 3   K N 4 03 3 4L 6 I M L H 6+ 6' / ' , 4  6r+