L i-dZddlmZddlZddlmZddlmZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZiZdZgdZe e e ddej0dgej2dddg e eeddej0dgej2dddg eeeddej0dgej2dddg eddddej0dgddddg eddddej0dgddddg eddddej0dgej2 dddg gZeDcgc]}eee|c}ZdZd Zd!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.d0Z/d1Z0d2Z1d3Z2d4Z3d5Z4d6Z5d7Z6d8Z7d9Z8d:Z9d;Z:d<Z;d=ZZ=d?Z>d@Z?dAZ@dBZAejejeDjZFdCZGdDZHdEZIdFZJdGZKdHZLdIZMdJZNdKZOgdZPgeee dejdLz ejgej2ddMdNg e!e"e#ddOdPgej2dLdQdRg e!e"e#ddSdTgej2dUdVdWg e!e"e#ddXdYgej2dZd[d\g e!e"e#dd]d^gej2d_d`dag e!e"e#ddbdcgej2dddedfg e!e"e#ddgdhgej2didjdkg e!e"e#ddldmgej2dndodpg e!e"e#ddqdrgej2dsdtdug e!e"e#ddvdwgej2dxdydzg e!e"e#dd{d|gej2d}d~dg e$e%e&dddgej2dddg e$e%e&dddgej2dddg e$e%e&dddgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddUgej2dddg e'e(e)dddgej2dddg e'e(e)dddgej2dddg e'e(e)dddgej2dddg e'e(e)dddgej2dddg e*e+e,dddgej2dejdz dg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e-e.e/dddgej2dddg e0e1e2dddgej2dddg e0e1e2dddgej2dddg e0e1e2dddgej2dddg e3e4e5dddgej2dddg e3e4e5dddgej2dddg e3e4e5dddgej2dddg e3e4e5dddgej2dddg e3e4e5dddgej2dddg e6e7e8dddgej2dddg e6e7e8dddgej2dddg e6e7e8dddgej2dddg e6e7e8dddgej2dddg e6e7e8dddgej2dddg e6e7e8dddgej2dddg e6e7e8dddgej2dddg e9e:e;dddgej2dddg e9e:e;dddgej2dddg e9e:e;dddgej2dddg e9e:e;dddgej2dddg e9e:e;dddgej2dddg edddgej2dddg edddgej2dddg edddgej2dddg edddgej2ddĐdg e?e@eAdddgej2ddLdg e?e@eAdddgej2dddg e?e@eAdddgej2dd d g e?e@eAdddgej2ddUd g e?e@eAd ddgej2ddd g e?e@eAdddgej2dddg e?e@eAdddgej2dddg e?e@eAdddgej2dddg e?e@eAdddgej2dddg e?e@eAdddgej2dddg e?e@eAdddgej2dd_dg e?e@eAdddgej2ddd g e?e@eAd!ddgej2dd"d#g e?e@eAd$ddgej2dd%d&g e?e@eAd'ddgej2dd(d)g e?e@eAd*ddgej2dd+d,g e?e@eAd-ddgej2dd.d/g e?e@eAd0ddgej2ddd1g e?e@eAd2ddgej2dd3d4g eGeHeIddd gej2ddd5g eJeKeLdd6ejdLz gddd7d8g eJeKeLdd6ejdLz gddd7d9g eJeKeLdd6ejdLz gddd7d:g eJeKeLdd6ejdLz gddd7d;g eJeKeLdd6ejdLz gddd7dg eJeKeLdd6ejdLz gddd7d?g eJeKeLdd6ejdLz gddd7d@g eJeKeLdՐd6ejdLz gddd7dAg eJeKeLdd6ejdLz gddd7dBg eJeKeLdCd6ejdLz gddd7dDg eJeKeLdd6ejdLz gddd7dEg eJeKeLdFd6ejdLz gddd7dGg eJeKeLdd6ejdLz gddd7dHg eJeKeLdId6ejdLz gddd7dJg eJeKeLdd6ejdLz gddd7dKg eJeKeLdLd6ejdLz gddd7dMg eJeKeLdd6ejdLz gddd7dNg eJeKeLdd6ejdLz gddd7dOg eJeKeLd!d6ejdLz gddd7dPg eJeKeLdQd6ejdLz gddd7dRg eJeKeLd$d6ejdLz gddd7dSg eJeKeLdTd6ejdLz gddd7dUg eJeKeLd'd6ejdLz gddd7dVg eJeKeLdWd6ejdLz gddd7dXg eJeKeLd*d6ejdLz gddd7dYg eJeKeLdZd6ejdLz gddd7d[g eJeKeLd-d6ejdLz gddd7d\g eJeKeLd]d6ejdLz gddd7d^g eJeKeLd0d6ejdLz gddd7d_g eJeKeLd`d6ejdLz gddd7dag eJeKeLd2d6ejdLz gddd7dbg eJeKeLdcd6ejdLz gddd7ddg eJeKeLded6ejdLz gddd7dfg eJeKeLdgd6ejdLz gddd7dhg eJeKeLdid6ejdLz gddd7djg eJeKeLdkd6ejdLz gddd7dlg eJeKeLdmd6ejdLz gddd7dng eJeKeLdÐd6ejdLz gddd7dog eMeNeOdd6dpgdddqdrg eMeNeOd!d6dpgdddsdtg eMeNeOdQd6dpgdddudvg eMeNeOd$d6dpgdddwdxg eMeNeOdTd6dpgdddydzg eMeNeOd'd6dpgddd{d|g eMeNeOdWd6dpgddd}d~g eMeNeOd*d6dpgddddg eMeNeOdZd6dpgddddg eMeNeOd-d6dpgddddg eMeNeOd]d6dpgddddg eMeNeOd0d6dpgddddg eMeNeOd`d6dpgddddg eMeNeOd2d6dpgddddg eMeNeOdcd6dpgddddg eMeNeOded6dpgddddg eMeNeOdgd6dpgddddg eMeNeOdid6dpgddddg eMeNeOdkd6dpgddddg eMeNeOdmd6dpgddddg eMeNeOdÐd6dpgddddg eMeNeOdϐd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg eMeNeOdd6dpgddddg ZReRDcgc]}eeeP|c}ZSdZTdZUdZVdZWdZXdZYgdZZeTeUeVdej2ddddg eTeUeVdej2dŐdƐdej0ddLz dzzdg eTeUeVdej2dddej0ddLz dzzdg eTeUeVdej2dUd dLdg eWeXeYdej2dΐdejdzdg eWeXeYdej2dΐdejdzdg gZ[e[Dcgc]}eeeZ|c}Z\dӄZ]e]ee]eSe]e\d dԄZ^ejejejejgZcgdբZde eeeegZegd֢ZfdׄZgdeg_hdلZidei_hdڄZjdej_hdۄZkdLek_hd܄Zldel_hd݄Zmdem_hdބZnden_hd߄Zodeo_hdZpdep_hgdZqgegdLdgegjdgegddZgegjdgegddgegjdgegddgegjd%gegddgegjdgeiddgeijdgeidpdgeijdgeiddgeijdgeiddgeijdgeiddgeijdgejddUgejjd"gejddZgejjd%gejddgejjdgejddgejjdgejddgejjdgekddUgekjd"gekddZgekjd%gekddgekjd3gekddgekjdgekddgekjdgeldd geljd"gelddUgeljdgelddZgeljd%gelddngeljd(gelddgeljddgemddgemjd"gemddgemjdgemddgemjd%gemddgemjd(gemddgemjddgendd genjdgenddUgenjdgenddZgenjdgenddngenjdgenddgenjdgeoddLgeojdgeoddgeojdZgeoddgeojdgeodd+geojdgeoddgeojdgepddgepjdgepddgepjdgepddgepjdZgepdd+gepjdgepddgepjdgZreserDcgc]$\}}||djd |dUzdzgz&c}}ZrerDcgc]}eeeq|c}Zue]euycc}wcc}wcc}wcc}}wcc}w( a  Parameters used in test and benchmark methods. Collections of test cases suitable for testing 1-D root-finders 'original': The original benchmarking functions. Real-valued functions of real-valued inputs on an interval with a zero. f1, .., f3 are continuous and infinitely differentiable f4 has a left- and right- discontinuity at the root f5 has a root at 1 replacing a 1st order pole f6 is randomly positive on one side of the root, randomly negative on the other. f4 - f6 are not continuous at the root. 'aps': The test problems in the 1995 paper TOMS "Algorithm 748: Enclosing Zeros of Continuous Functions" by Alefeld, Potra and Shi. Real-valued functions of real-valued inputs on an interval with a zero. Suitable for methods which start with an enclosing interval, and derivatives up to 2nd order. 'complex': Some complex-valued functions of complex-valued inputs. No enclosing bracket is provided. Suitable for methods which use one or more starting values, and derivatives up to 2nd order. The test cases are provided as a list of dictionaries. The dictionary keys will be a subset of: ["f", "fprime", "fprime2", "args", "bracket", "smoothness", "a", "b", "x0", "x1", "root", "ID"] )randomN) _zeros_py)array_namespacea f2 is a symmetric parabola, x**2 - 1 f3 is a quartic polynomial with large hump in interval f4 is step function with a discontinuity at 1 f5 is a hyperbola with vertical asymptote at 1 f6 has random values positive to left of 1, negative to right Of course, these are not real problems. They just test how the 'good' solvers behave in bad circumstances where bisection is really the best. A good solver should not be much worse than bisection in such circumstance, while being faster for smooth monotone sorts of functions. c||dz zS)z'f1 is a quadratic with roots at 0 and 1?xs ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/optimize/_tstutils.pyf1r As B<cd|zdz SNrr s r f1_fprFs q519r cyNrrr s r f1_fpprJ r c|dzdz S)z$f2 is a symmetric parabola, x**2 - 1rrrr s r f2rN a4!8Or c d|zSrrr s r f2_fprSs q5Lr cyrrr s r f2_fpprWrr c*||dz z|dz z|dz zS)z%A quartic with roots at 0, 1, 2 and 3rg@g@rr s r f3r[s" B<1r6 "a"f --r c6d|dzzd|dzzz d|zzdz S)Nrrr s r f3_fpr&`s+ q!t8b1a4i "q& (1 ,,r c$d|dzzd|zz dzS)N r$r$rr s r f3_fppr*ds 19rAv  ""r c8|dkDrdd|zzS|dkrdd|zzSy)zBPiecewise linear, left- and right- discontinuous at x=1, the root.rr皙?rrr s r f4r.hs/1uR!V|1ub1f} r c|dk7rdd|z z Sy)zY Hyperbola with a pole at x=1, but pole replaced with 0. Not continuous at root. rrrrr s r f5r0qs Avb1f~ r ctj|d}|,|dkDr t}n|dkr t }nd}|t|<|S)Nrr) _f6_cachegetr)r vs r f6r5~sH aAy q5A U AA ! Hr ) ffprimefprime2argsbracket smoothnessx0rootIDr?r"g333333?rzoriginal.01.00zoriginal.02.00zoriginal.03.00zoriginal.04.00zoriginal.05.00c8tj||dz z S)z||ztj||zzS)zRapidly changing at the rootrCexpr abs r aps03_frcs q5266!a%=  r cJ|||zdzztj||zzSNrr^r`s r aps03_fprfs% A ?RVVAE] **r cV||||zdzz|zztj||zzSrer^r`s r aps03_fpprhs/ QUQY!# $rvva!e} 44r c||z|z S)zMedium-degree polynomialrr nras r aps04_frlrr c|||dz zzSrerrjs r aps04_fprn q1q5z>r c$||dz z||dz zzSNrrrrjs r aps04_fpprr A;QU ##r c2tj|dz S)zSimple Trigonometric functionr?rBr s r aps05_frus 66!9w r c,tj|SrKrGr s r aps05_fprw 66!9r c.tj| SrKrBr s r aps05_fpprzrMr czd|ztj| zdtj| |zzz dzS)z0Exponential rapidly changing from -1 to 1 at x=0rrr^r rks r aps06_fr}s8 q52661": BFFA26N 2 2Q 66r ctdtj| zd|ztj| |zzzSrr^r|s r aps06_fprs2 rvvqbz>AEBFFA26N2 22r cFd|z|ztj| |zzSNrPr^r|s r aps06_fpprs# 6A:rAv &&r c6dd|z dzz|zd||zz dzz S)z/Upside down parabola with parametrizable heightrrrr|s r aps07_fr* Q Na 1q1u9q. 00r c6dd|z dzzd|zd||zz zzSrqrr|s r aps07_fprs* Q Na!eq1q5y1 11r cd|z|zSrrr|s r aps07_fpprs 6A:r c||zd|z |zz S)zDegree n polynomialrrr|s r aps08_frs q5AEA: r c*d|z|d|z |dz zzzSrrr|s r aps08_fpr s# q51AQ'' ''r c0d||dz zd|z |dz zzz Srrr|s r aps08_fpprs' qAE{a!eq1u-- --r c6dd|z dzz|zd||zz dzz S)z.Upside down quartic with parametrizable heightrr!rr|s r aps09_frrr c<dd|z dzzd|zd||zz dzzzS)Nrr!r"rr|s r aps09_fprs. Q Na!eq1q5y1n4 44r c$d|zd||zz dzzS)Nirrrr|s r aps09_fpprs 7a!a%i!^ ##r cLtj| |z|dz z||zzS)zExponential plus a polynomialrr^r|s r aps10_fr!s( 661"q&>QU #ad **r cftj| |z| |dz zdzz|||dz zzzSrer^r|s r aps10_fpr&s; 661"q&>aR1q5\A- .QQZ ??r ctj| |z| | |dz zdzz| |zzz||dz z||dz zzzSrqr^r|s r aps10_fppr*s[ FFA26NqbQB!a%L1$45Q> ?1q5kAAJ& '(r c$||zdz |dz |zz S)z8Rational function with a zero at x=1/n and a pole at x=0rrr|s r aps11_fr/s EAI1q5A+ &&r cd|dz z |dzz Srqrr|s r aps11_fpr4s A;A r cd|dz z |dzz S)NrPrr"rr|s r aps11_fppr8s QAqD 266!9 ,,r c`|dkr| dz S|dz |dz tj|zdz zS)z<0 for negative x-values, trigonometric+linear for x positiver4@?rrBr|s r aps14_frks:AvrDy t8q3w*Q. //r cJ|dkry|dz dtj|zzS)NrrgUUUUUU?rGr|s r aps14_fprrs(Av t8y266!9, --r cF|dkry| dz tj|zS)NrrrBr|s r aps14_fpprxs%Av 29q ""r c|dkry|dd|zz kDrtjdz Stj|dz|zdz dzdz S)z6piecewise linear, constant outside of [0, 0.002/(1+n)]rgrh|Mb`?rX9v?rrCer_r|s r aps15_fr~sP1u8q1u tte| 661q5A+/D( )E 11r cd|cxkr dd|zz ksntjdz Stj|dz|zdz dz|dzzdz dzSNrrrrrrrr|s r aps15_fprsY  'XQ' 'tte| 661q5A+/D( )QU 3a 7$ >>r cd|cxkr dd|zz ksntjdz Stj|dz|zdz dz|dzzdz dz|dzzdz dzSrrr|s r aps15_fpprsl  'XQ' 'tte| 661q5A+/D( )QU 3a 7$ >!a% H1 Lt SSr rgS?z aps.01.00g0D?g@g=.@z aps.02.00g .@gh!@rQgƸ)@z aps.02.01g"@gh/@ gxs7z&@z aps.02.02gK0@g}8@g^^W3@z aps.02.03gK9@g?A@g=@z aps.02.04g%B@g?H@%gnD@z aps.02.05g%H@g?O@2g؛[mK@z aps.02.06gP@g?T@Ag%Q@z aps.02.07g@T@gX@RgkYMV@z aps.02.08gY@g?^@egzi[@z aps.02.09)ir@irPz aps.03.00)irPz aps.03.01)i8z aps.03.02)r!皙?g@gllRf?z aps.04.00)r%rg_ x?z aps.04.01)rglTj"+?z aps.04.02)rrg08->?z aps.04.03)r(rg?z aps.04.04)r!rrz aps.04.05)r%rz aps.04.06)rrz aps.04.07)rrz aps.04.08)r(rz aps.04.09gffffffg333333@rz aps.04.10z aps.04.11z aps.04.12)rz aps.04.13g?r%z aps.05.00)rg ?z aps.06.00)rgn?z aps.06.01)r"gs Hda?z aps.06.02)r!gX?z aps.06.03)rQg?gi?z aps.06.04)r,g]?z aps.06.05)(g?g.?z aps.06.06)<g?gTϨ?z aps.06.07)Pg?g.?z aps.06.08)dg{Gz?gͺ},d|?z aps.06.09gz?z aps.07.00)rg3_tF?z aps.07.01gmd?z aps.07.02g?z aps.08.00gΏ$?z aps.08.01g~++`?z aps.08.02)gx5[?z aps.08.03gB!?z aps.08.04g.xz?z aps.09.00g.xz?z aps.09.01gIl?z aps.09.02g:*m?z aps.09.03)rglM:?z aps.09.04gR@>z aps.09.05gKu- >z aps.09.06gG"?z aps.10.00gXbT?z aps.10.01g,C?z aps.10.02g=N?z aps.10.03gaw?z aps.10.04{Gz?z aps.11.00rz aps.11.01g?z aps.11.02z aps.11.03rg?z aps.12.00z aps.12.01r!z aps.12.02z aps.12.03)r%z aps.12.04)rz aps.12.05) rz aps.12.06) rz aps.12.07) rz aps.12.08rz aps.12.09)rz aps.12.10)rz aps.12.11)rOrOz aps.12.12)rz aps.12.13)rz aps.12.14)rz aps.12.15)rz aps.12.16)rz aps.12.17)!rz aps.12.18z aps.13.00igh9?z aps.14.00z aps.14.01z aps.14.02z aps.14.03z aps.14.04z aps.14.05z aps.14.06z aps.14.07z aps.14.08z aps.14.09z aps.14.10)r(z aps.14.11z aps.14.12)rz aps.14.13z aps.14.14)z aps.14.15z aps.14.16)r#z aps.14.17z aps.14.18z aps.14.19z aps.14.20)r$z aps.14.21z aps.14.22)r[z aps.14.23z aps.14.24)rz aps.14.25z aps.14.26)z aps.14.27z aps.14.28)z aps.14.29z aps.14.30) z aps.14.31z aps.14.32)"z aps.14.33)#z aps.14.34)r)z aps.14.35)rz aps.14.36)&z aps.14.37)'z aps.14.38z aps.14.39g-C6?gBi?z aps.15.00gpĵx ?z aps.15.01gD ?z aps.15.02gY ?z aps.15.03gVXl ?z aps.15.04g^ ?z aps.15.05g3Qu?z aps.15.06gq3юL8?z aps.15.07gm۾Rk?z aps.15.08gHt/?z aps.15.09gW ?z aps.15.10g BQ?z aps.15.11gWΥ?z aps.15.12gBN?z aps.15.13g@rp?z aps.15.14g`MW?z aps.15.15g-rc?z aps.15.16g[.?z aps.15.17g?z aps.15.18g5cA?z aps.15.19g\ >z aps.15.20guW>z aps.15.21)g,Y~>z aps.15.22)i,gG>z aps.15.23)ig]4H->z aps.15.24)ig2v>z aps.15.25)iXgwaO>z aps.15.26)igAbE٭>z aps.15.27)i gӥM>z aps.15.28)igݢO>z aps.15.29)rg$lȴ>z aps.15.30c||z|z S)z&z**n-a: Use to find the nth root of arzrkras r cplx01_frrr c|||dz zzSrerrs r cplx01_fprror c$||dz z||dz zzSrqrrs r cplx01_fpprrsr c2tj||z S)z"e**z - a: Use to find the log of ar^rras r cplx02_frs 66!9q=r c,tj|SrKr^rs r cplx02_fprrxr c,tj|SrKr^rs r cplx02_fpprrxr ) r6r7r8r9r;r<x1r=r>)rr@y??y???z complex.01.00)r"ry?y@gz complex.01.01)r"r@z complex.01.02)r"rz complex.01.03)r@y?@z complex.02.00)ry?z complex.02.01ch|D]-}tddg|jdgD] \}}|||< /y)z:Add "a" and "b" keys to each test from the "bracket" valuerarbr:N)zipr3)testsdkr4s r _add_a_br$sC c AEE)R$89 DAqAaD r c|xsd}ttttd}|j |g}||Dcgc] }|d|k\s |}}|Scc}w)aReturn the requested collection of test cases, as an array of dicts with subset-specific keys Allowed values of collection: 'original': The original benchmarking functions. Real-valued functions of real-valued inputs on an interval with a zero. f1, .., f3 are continuous and infinitely differentiable f4 has a single discontinuity at the root f5 has a root at 1 replacing a 1st order pole f6 is randomly positive on one side of the root, randomly negative on the other 'aps': The test problems in the TOMS "Algorithm 748: Enclosing Zeros of Continuous Functions" paper by Alefeld, Potra and Shi. Real-valued functions of real-valued inputs on an interval with a zero. Suitable for methods which start with an enclosing interval, and derivatives up to 2nd order. 'complex': Some complex-valued functions of complex-valued inputs. No enclosing bracket is provided. Suitable for methods which use one or more starting values, and derivatives up to 2nd order. The dictionary keys will be a subset of ["f", "fprime", "fprime2", "args", "bracket", "a", b", "smoothness", "x0", "x1", "root", "ID"] original)apscomplexr chandrupatlar;)_APS_TESTS_DICTS_COMPLEX_TESTS_DICTS_ORIGINAL_TESTS_DICTS_CHANDRUPATLA_TESTS_DICTSr3) collectionr;subsetsrtcs r get_testsr0sc.)zJ&.08:G KK B 'E#Fr,'7:'EFF LGs A A )z cc.bisectz cc.ridderz cc.brenthz cc.brentq)rrr.r0r5c|dzd|zz dz S)Nr"rrQrr s r fun1r\s a4!A#:>r g5@cdd|dzz z Srqrr s r fun2ras qAv:r c|dz dzS)Nr"rr s r fun3rfs aC!8Or cd|dz dzzS)Nr%rrQrr s r fun4rks acAX:r c |dzS)Nrrr s r fun5rps a4Kr c |dzS)Nrrr s r fun6rus b5Lr ctt|}|j|dkrdS||j|dz zS)Ng W8?rrP)rabsr_r xps r fun7r#zs:  Bq F"1:"&&!b'*:(::r ct|}d}dd|z z|j| z |d|z |j| zzz dz d|z zS)Nge-?i rii\rr_)r r"xis r fun8r's\  B B 1R4[ # $bAbD"&&!*+<&< = DtAv MMr g;6b?cdt|}|j|dz d|dzz z d|dzz zS)Nrrg>r"r%r!s r fun9r)s8  B 66!9q=419 $wq!t| 33r gGo?)r6r:r=nfevalr>rgg@g _g _B+g)\(?rr$gư>g.Arg|=)g-q=gmB0ir)g.-76r-g@gg@g$@ggI@g$gY@r#g-C6*?r(Q.)rN)v__doc__rnumpyrCscipy.optimizerccscipy._lib._array_apir descriptionr rrrrrrr&r*r.r0r2r5_ORIGINAL_TESTS_KEYSsqrtinf_ORIGINAL_TESTSdictrr rErIrLrWrYr\rcrfrhrlrnrrrurwrzr}rrrrrrrrrrrrrrrrrrrrlogfinfofloatmaxrrrrrrrrrr_APS_TESTS_KEYSpi _APS_TESTSr rrrrrr_COMPLEX_TESTS_KEYS_COMPLEX_TESTSr rrbisectridderbrenthbrentqmethodsmstrings functionsfstringsrr=rrrrrr#r'r)_CHANDRUPATLA_TESTS_KEYS_CHANDRUPATLA_TESTS enumerate__name__r)testcaseitests000r rWs %R*1      . -#      ,S'"''!*-rvvsCAQRS'"''!*-rvvsCAQRS'"''!*-rvvsCAQRtR#wrwwqz*BS:JKtR#wrwwqz*BS:JKtR#wrwwqz*RVVGS#?OP ?N2:D !8 ,- 9 8 9 ! +5 $ 7 3'1 2 (.1 5$+ @( ' 7 *Frvvhbhhuo))*  &-0. # 2? T(u h 2 255'9266.u h 2(';RVV.u  h 2(';RVV. u h 2)' +/'u* h 2 J'? !;0+u. h 9r2hK/u2 h :BxK3u6 h :BxK7u: h 8aVRVV !;0;u> h 8aVRVV !;0?uB h 8aVRVV !;0CuF h 9q!fbff !;0GuJ h 9q!fbff !;0KuN h 6Aq6266![OuR h 6Aq6266![SuV h 6Aq6266![WuZ h 7QFBFF![[u^ h 7QFBFF![_ub h 6E4="&&![cuf h 7UDM266![guj h 7UDM266![kun h 7UDM266![our h 23x"%%!)["suv h 4!Q !;0wuz h 4!Q !;0{u~ h 4!Q !;0uB h 4!Q !;0CuF h 4!Q !;0GuJ h 51a&"&& !;0KuN h 51a&"&& #[2OuR h 51a&"&& & 5SuV h 51a&"&& %{4WuZ h 6Aq6266 #[2[u^ h 4!Q !;0_ub h 51a&"&& !;0cuf h 51a&"&& !;0guj h 4!Q#{kun h 4!Q !;0our h 51a&"&& !;0suv h 51a&"&& !;0wuz h 51a&"&& !;0{u~ h 4!Q !;0uB h 4!Q !;0CuF h 4!Q !;0GuJ h 4!Q !;0KuN h 4!Q !;0OuR h 51a&"&& !;0SuV h 51a&"&& !;0WuZ h 4!Q !;0[u^ h 4!Q !;0_ub h 51a&"&& !;0cuf h 51a&"&& !;0guj h 51a&"&& !;0kun h 4$BFF G["our h 4$BFF G["suv h 54)RVV Hk#wuz h 54)RVV Hk#{u~ h 4!S266![uB h 4!S266![CuF h 4!S266![GuJ h 4!S266![KuN h 4!S266![OuR h 4!S266![SuV h 4!S266![WuZ h 51c(BFF"k[u^ h 51c(BFF"k_ub h 51c(BFF"kcuf h 51c(BFF"kguj h 51c(BFF"kkun h 51c(BFF"kour h 51c(BFF"ksuv h 51c(BFF"kwuz h 51c(BFF"k{u~ h 51c(BFF"kuB h 51c(BFF"kCuF h 51c(BFF"kGuJ h 2Aw![KuN h 4%);Q.OuR h 4%);Q.SuV h 4%);Q.WuZ h 4%);Q.[u^ h 4%);Q._ub h 4%);Q.cuf h 4%);Q.guj h 4%);Q.kun h 4%);Q.our h 55"%%!)*L19D ( +,    F 99biiBII 6 ? RR )             ;  N  4  D. Aq6499a . Ar7DIIr". As8TYY#. D#; 2& .  E4=$))R( .  C; 1% . D#; 2&. D#; 2&. E4=$))R(. E4=$))R(. Aq6499b!. C9dii$. D#; 2&. D#; 2&. E4=$))R(.  Aq6499b!!." C9dii$#.$ D#; 2&%.& D#; 2&'.( E4=$))R().* B7DIIr"+., B7DIIr"-.. B8TYY#/.0 B8TYY#1.2 C:tyy"%3.4 C9dii$5.6 C9dii$7.8 C:tyy"%9.: C:tyy"%;.< D$<B'=.> B7DIIq!?.@ B7DIIq!A.B B8TYY#C.D B8TYY#E.F C:tyy"%G.H D!9dii#I.J D!9dii$K.L D!9dii$M.N D":tyy"%O.P D":tyy"%Q.R D!9dii#S.T D!9dii#U.V D!9dii$W.X D":tyy"%Y.Z D":tyy"%[.`'00C&DF"1d$q'"2"2!31QqSUG<==F.AB!)"#&>"IJB "#YvUHPFBs'AZ*B7AZ/GAZ4Y)AZ9ZAZ?