K ig|ddlmZddlmZmZmZddlmZddlm Z ddl m Z m Z ddl mZddlmZddlmZdd lmZdd lmZdd lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"dd l#m$Z$m%Z%dd l&m'Z'ddl(m)Z)ddlm*Z*dZ+dZ,e%dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5e%dZ6dZ7dZ8dZ9dZ:d Z;d!Zy$)%)expand)Rationaloopi)Eq)S)Symbolsymbols)Abs)sqrt)sec) Segment2D)Point2D) CircleEllipse GeometryErrorLinePointPolygonRayRegularPolygonSegmentTriangle intersection)raisesslow) integrate) elliptic_e)MaxcLddlm}m}tt dddd}t |j dt | |zdzdzdz ||zdz dzdz zdz k(sJtt ddd d}t |j dt | |zdzdz ||zdzd z zdz k(sJtt dd d d}t |j dt d |z|zdz dzdz |d|zzdz dzdz zdz k(sJy)Nrxy)_slope  ) sympy.abcr"r#rrstrequation)r"r#e1e2e3s g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/geometry/tests/test_ellipse.py!test_ellipse_equation_using_sloper9s7 q!a #B r{{!{$ %qb1fqj1_Q->!a%!)aPRAR-RUV-V)W WW W q!a #B r{{!{$ %qb1fq[]a!eaZ]-JQ-N)O OO O q!a #B r{{!{$ %bdQhlQ->r-AQ1Wr\TUDUVYDY-Y\]-])^ ^^ ^c ddlmmmmm}m}m}tdzdzzdzzdzzdz tttddz dtd dz k(sJtdzdzzd zzdzzd zttdd dk(sJtdzdzzd zzdzzd zd dttdd dk(sJtdzdzzd z ttdddk(sJtdzdzzttdddk(sJtdzdzzd dttdddk(sJtdzdzzd zzdzttdddk(sJtdzdzzd zzdzttdddk(sJtdz dzdzzdz ttdddk(sJtd dzzd dzzzd zzdzzd z tttddtdddtdzd z k(sJttdzdzzd d ttdddk(sJttfdttfdttfdttfdttfdtt fdt#dd\dzzdzzz|zz|zz|z}t%t|j'z|k(sJy)Nr)r"r#abcder&r%r*r(r.9r-r<r=r!r,r$ cJtdzdzzdzzdzzdzS)Nr&r%r*rr!sr8z+test_object_from_equation...s/&A1qs):QqS)@2)E"Fr:c2tdzdzzdzS)Nr&rCrJr!sr8rKz+test_object_from_equation../s&A1r)9":r:c8tdzdzzdzddS)Nr&rCr<r=r!rJr<r=sr8rKz+test_object_from_equation..0s!&A1r)9SC"Hr:c2tdzdzzdzS)Nr&r-r(rJr!sr8rKz+test_object_from_equation..1s&A!a"8r:cVtddzzddzzzdzzdzzdzS)Nr-r&r*r(rCrJr!sr8rKz+test_object_from_equation..2s8&AFaAh)>1)Dqs)JR)O"Pr:cJtdzdzzdzzdzzdz S)Nr&r%r*r(rJrNsr8rKz+test_object_from_equation..3s/vadQTkAaC&7!A#&=&ABr:zx yTreal)r2r"r#r<r=r>r?r@rrrr rrrr ValueErrorr rr4)r>r?r@eqr<r=r"r#s @@@@r8test_object_from_equationrV!sy--- !Q$A+!#ac)A- .&2B9OQUVXQY\]Q]2^ ^^ ^ !Q$A+!#ac)B. /6'"b/13M MM M !Q$A+!#ac)B.# =PRTVYZA[ [[ [ !Q$A+" #vgamQ'? ?? ? !Q$A+ &A": :: : !Q$A+ ,wq!}a0H HH H !Q$A+!#a' (F72q>1,E EE E !Q$A+!#a' (F71b>1,E EE E 1q51*q!t#a' (F71a=!,D DD D !QT(Q1X%!+ac1B6 76'(SUWX/[cdfhi[jBkmnostuovmvwxmx;y yy y "QTAqD["% 2fWQ]A6N NN N =FG =:; =HI =89 =PQ :BC 5t $DAq 1a4!AqD&1Q3 1 $q (B &*%%') *b 00 0r:c;*+,-.tdd-tdd.tdd}tdd}tj}tdd}tdd}tdd}t |dd}t ||d+t |||}t |d}t |d} t tt d t d d} t||} td |zd d |z} } t tddtd dtdd t | | k(sJt tddtddtd d ttddtd d k(sJttd ttdttdttdt dddjtddk(sJ||k(sJ|+k7sJ|| k7sJ||vsJ||vsJ++vsJd+vsJ|+vsJ|jtk(sJ+jtd z k(sJ|jt|zt!|zk(sJ|j|jk(sJ|j"|j"k(sJ|j"d tz|zk(sJ|j%+j%cxk(r|t tgk(sJJ|j%-+j%-cxk(r-t tgk(sJJ|j&dk(sJ|j(dk(sJ|j*dk(sJ|j,dk(sJt dddtddk(sJt dddt/tddtd dk(sJt dddt/tddtdd k(sJt1|t1t tddtddtddk(sJ||vsJt|||vdusJ|j3|dk(sJ|j3tdddkDsJ|j5t/tddtdddusJ|j5t||dusJ|j5t7||dusJ|j5|dusJ|j5t9tddtddtdddusJ|j5t;|dd dusJ|j5t;|d d dusJ|j5t;|d d dusJ+j=+vsJtt-.fdtt ddtt d d}}t tddd d }|j>||f||ffvsJt d d z }t||}|t|dz}|tddz}|jA||jA|k(sJ+jA|tttCd d dttCd d tjgk(sJ+jA|ttdd ttCd d d gk(sJ|jA|t|tdt d gk7sJ|jA|gk(sJ+jEt||t|dzsJ+jEt||t|dzsJ|jEt|tdt d sJ|jEttddtdddusJ|jE|dusJ|jEt td ddddusJ|jEt9tddtddtd ddusJ|jEt9tddtddtd ddusJt td d d jEt tdd ddusJt td d d djAtddttddttCddtCddttddttCdd tCdd gk(sJt td d d djAtd d ttd d td d ttd d td d gk(sJt td d d jAtd d ttd d td d ttd d td d gk(sJt td d d jAtd d t d zz d ttd d t d zz d td t d z d t d z ttd d t d zz d td t d z d t d zgk(sJt td d d jAtd dttd dttCddtCd dttd dtd dgk(sJt td d d jAtddttddtdd ttddttCd dtCd!dgk(sJd",,fd#}t tddd d**jGtddttddtddttddtddgk(sJ*jGtddttddtddgk(sJ*jGd$ttddtddgk(sJ|*jGtddd tttCd%d&tCdd ttCd'd&tCd(d)tttCd*d+tCd,d-ttCd.d+tCd/d gd sJtt d tj}|*vsJ|*jG|d tttCd0d1tCddttCd2d1tCd d3tttCd&d4tCdd ttCd5d4tCd6d&gd sJt d7d d t d zd z *|*jGdd tttCd8dtCd9d:ttCd;dtCd dttddtd d<gd sJt d7-d**jG-dzdfttddtddgk(sJttH*-fd=d }d}t |||}|jJt |d z|d zz k(sJ|jJ|z }|jL|k(sJ|jN|d|z zk(sJ|jP|d|zzk(sJ|jR|d|d zz zk(sJt |||}|jJt |d z|d zz k(sJ|jJ|z }|jL|k(sJ|jN|d|z zk(sJ|jP|d|zzk(sJttdd>tdd } ttd>dtd d}ttddtdd}ttd?dtdd@}tt d d z t d d z tt d  d z t d  d z g}tU+|gk(sJtU|tddtddgk(sJtU|| tddgk(sJtU||tddgk(sJtU||||d|dgfvsJtU|| tddtddgk(sJtU|| tt d d z t d d z gk(sJ|jU| tddgk(sJ+jU|gk(sJ|jUt tdd dtddgk(sJ|jUt td ddgk(sJ|jUt td dddtddgk(sJ|jUt td dddgk(sJ|jUtd dgk(sJ|jU||k(sJtUt tddd dt td ddd td dgk(sJtUt tddd t td ddtd dgk(sJtUt tddd t td ddgk(sJtUt tddd d(t td dddAtdBddCgk(sJtUt tddd d(t td ddDdAgk(sJt d7tjjUtWdEdFd$ttCdd dttjdgk(sJttX+fdGttX+fdHttX+fdIt |d }t |d } t td d d}!|jU| gk(sJ|jU|!gk(sJ|jU||k(sJt d }tWtd|td| t|d}"tU|"|}#t[|#d k(sJtdd|#vsJtdd|#vsJt|d z |d z |#vsJt|d z | d z |#vsJt tddd }$t tddd dJ}%tU|$|%td dtd>dgtd>dtd dgfvsJ|%jAtddgk(sJt tddd d }%|%jAtd dttd dtd dKgk(sJt tddd d@}t td dd d-+tCdLd(}&d t dMzd(z }'t|&|'d-z z |&d z |'zt|&|'d-z z|&d z |'z g}(|jU+|(k(sJt t-.d d-+t dM}'t|' dNz |&z|'tCd d(z|&d z zt|'dNz |&z|'tCdOd(z|&d z zg}(|jU+Dcgc]}|j]-d .dic}|(k(sJ|jE|jA|t|dzdsJt dPd d **jAtd@dttd@dtddttd@dttCdQd tCdRd gk(sJt d7dd **j_*jsJ*j_*jtd*j,tCdd@z zsJ*j_*jt*j*tCdd@z dzsJ*j_*jt*j*dzdusJ*j_*jt*j*tCdd@zdzdusJt d7d d**j_*jsJ*j_*jtd*j,tCdd@z zsJ*j_*jt*j*tCdd@z dzsJ*j_*jt*j*dzdusJ*j_*jt*j*tCdd@zdzdusJ|j_tdddusJ|j_tdSdTdusJ*jad d t d7d d k(sJ*jad dt d7ddk(sJ*jct*k(sJ*jctdPt td d d dk(sJttH*fdUt tddd})|)jctd z t tdddk(sJ|)jctd z t ttjt d d z dk(sJ|)jctd z tddt tdddk(sJ|)jctd z tddt ttjt d d z ztjt d d z zdk(sJycc}w)VNr"TrRr#ty1rr$r&r%r,r*ctddddSNr$rr:r8rKz#test_ellipse_geom..RswtT4;r:ctSNr\r]r:r8rKz#test_ellipse_geom..Sswyr:c,ttddSNrrrr]r:r8rKz#test_ellipse_geom..Ts&q!"5r:cBttdtdzS)Nr"r#)rr r]r:r8rKz#test_ellipse_geom..Us&VC[)@"Ar:r$r$rFFg?cRttddjdS)Nr$r") parameter)rrarbitrary_pointr!sr8rKz#test_ellipse_geom..s%wuQ{Aq9IITWIXr: MrC!( r-rGZct|j|jz d| zkxr)t|j|jz d| zkS)zF tests whether l1 and 12 are within 10**(-prec) of each other )absp1p2)l1l2precs r8 lines_closez&test_ellipse_geom..lines_closesG255255=!B$K/TC 4Fte4TTr:cDtfdt||DS)Nc38K|]\}}||ywr_r]).0rvrwryrxs r8 z=test_ellipse_geom..line_list_close..sIR;r2t,Is)allzip)ll1ll2rxrys `r8line_list_closez*test_ellipse_geom..line_list_closesI3sC=IIIr:rr$irIiSr(rBiiV@)irriGirDc0jdzdfSr[) normal_lines)r@r"sr8rKz#test_ellipse_geom..sAqz(Br:rrg?g@evaluateg+?)rFrr$rc0ttddS)N)rrr)rrr$)rrr6sr8rKz#test_ellipse_geom..sl2tIy/IJr:c.ttdS)Nri)rrrsr8rKz#test_ellipse_geom..sl2x|<r:c0tjdSr[)rrrsr8rKz#test_ellipse_geom.. sg222q9r:r/5iDr.r$r&r)g333333?g?c4jtdz S)Nr%)rotater)r@sr8rKz#test_ellipse_geom..PsAr:)2r rHalfrrrr rrrrrTrcenterarearrs circumference plot_intervalminormajorhradiusvradiusrhash__cmp__enclosesrrrrhfoci tangent_linesr is_tangentrNotImplementedErrorfocus_distance eccentricity periapsisapoapsissemilatus_rectumrr TypeErrorlensubsencloses_pointscaler)/rXrYhalfrtrup4r5r7c1c2c3rvcenradf1f2efvp1_1p1_2p1_3rprre4eccrwl3l4 pts_c1_l3csmallcbigcoutt1pointscircelipr<r>anscirr@r6ryr"r#s/ @@@@@r8test_ellipse_geomr:stsAsAsA 4 B 66D q!B q!B q!B Q B T1 B R B AB AB d1gtAw' +B b"BQtVQ4C %1+uQ{E!QK 8F3Q   ::eAqk "Q && & ;;wuT40%S/B Ct KK K ;;tB| $ -- - ;;s2r{ #u ,, , ;;r?e ## # ;;dD!5s#3U3_E GJN OO O ;;~b#q1 2d :: : ;;~b!Q/ 0E 99 9 ;;~b!Q/ 0E 99 9   2 %% % :XY48Q Ry!!4B q!a #B 77Bx"b* ** * Q! A A;D dA D a D  B 2#3#3B#7 77 7  D !d5!Q+CU8TUWX>[\[a[aEb&c%d dd d  D !d5A;hq!na8P&Q%R RR R  D !d4q$q'1B&C%D DD D  B 2 %% % ==dBtQ$78 99 9 ==dBtQ$78 99 9 ==dE!T!W$56 77 7 ==eAqk5A;7 8E AA A ==  $$ $ ==q!a3 4 << < ==a U1b\5A;7 9? A AA A 5A;1 % 3 3E!QK @ eAqk5A; 'eAqk5A;)GH II I %1+q ! / /a < eAqk5A; 'eAqk5A;)GH II I %1+q ! / /a!DG)mQ0G H eA$q' M1%uQa[!d1g+'F G %Ad1gI q !5T!Wa$q'k#BC G GG G %1+q ! / /a < eAqk5"b!18Ar?C D %1+uQ{# % %% % %1+q ! / /a < eAqk5A; ' U1a[%B"b1ABC E EE E UJ a Q"A >>%1+ & eAqk5A; 'eAqk5A;)GH II I >>%1+ & eAqk5A; '( )) ) >>& ! eAqk5A; '( )) ) 1>>%1+q9 U8C$hr1o 6hsB>OQYZ\^`Qa8bc U8B#Xb!_ 5uXb"=MxXZ\]7_`>!Q/ U8D#&R(8 95$PSATV^_`bdVe;fg U8B#Xb!_ 5uXb"=MxX[]_O`7ab2def hh h 1T!W9Q;'A 1>>&!4 U8C$hsB&7 8%b@QS[\]_aSb:cd U1b\5B<(7*+, .. . 1A >>1q5!* %$uQ{E!QK*H)I II I  BC E E UE "B  UAXq%8 9 99 9  e #C ??c !! ! <<5!c'? ** * ;;%S/ )) )  %SAX"6 66 6 UE "B  UAXq%8 9 99 9  e #C ??c !! ! <<5!c'? ** * ;;%S/ )) ) eArlE!QK (B eBmU1b\ *B eBmU1a[ )B eCmU1b\ *BtAwqy$q'!),eT!WHQJa .KLI B 2 %% % E!QK (U1a[M 99 9 B E!QK= 00 0 B E!RL> 11 1 B I ! il/K#L LL L B E!QKq!#= == = B E$q'!)T!WQY$?#@ @@ @ ??2 5A;- // / ??2 " $$ $ ??6%1+q1 2uQ{m CC C ??6%1+q1 2b 88 8 ??75A;15 65A;- GG G ??75A;15 6" << < ??5A; '2 -- - ??2 " $$ $ a Q2GE!QKA4N OTYZ[]^T_S` `` ` uQ{A.uQ{A0F GERSUVK= XX X uQ{A.uQ{A0F G2 MM M a Q3WU1a[!S5Q CU+ , -- - a Q3WU1a[%QT5U VZ\ \\ \ &!&& ! . .&&) + hr1oq!5#3/5 55 5 9JK 9<= 99: B]F "a=D %1+q !D   t $ ** *   t $ ** *   v && 00 0 QA %1+uQ|U1a[ 9B "b !F v;!   A;&  B<6 !! ! 1ac?f $$ $ 1qbd v %% % %1+q !D 5A;2 &D d # 1+uR| $uR|U1a[&AB CC C   eAqk *b 00 0 5A;1 %D   eAqk * eAqk5C= )* ++ + q!a $B q!a #BRA $t* RA QqS!A#' "E!ac'1Q37$; B BB B ::bdE!QK (F5A;,B BB B ::bdE!QK (F5$q'!)9KQVVVZ[\V]^_V_M_3`bc,d dd dQ >sb7Aw:c^tddd}|jtddz k(sJtddtddz }|jdk(sJtddtddz }|jdk(sJtt dddd}|jdk(sJt tdt tdt td tddddjdk(sJt td t td t td y) Nr&r$)rrrr%rrrcJttdddtddz SNr%r$r&r)rrrr]r:r8rKz#test_construction..ks"'%1+qQRSTQUVWQW"Xr:cDttdddtdS)Nr%r$r,r)rrr r]r:r8rKz#test_construction..ls'%1+qsSTv"Vr:cfttdddtjtdz Sr)rrrPir]r:r8rKz#test_construction..ms$'%1+qqttTUVWTXy"Yr:c tddddS)Nr$)rr\r]r:r8rKz#test_construction..ss'$a"Jr:c2ttddddS)Nr%r$rArrrr]r:r8rKz#test_construction..vs'%1+qQS"Tr:c2ttddddS)Nr%r$rerrr]r:r8rKz#test_construction..ws'%1+qQU"Vr:) rrr rrrrrlength)r5r6r7rs r8test_constructionr[s AD 9B ??d1gai '' ' DtAwqy AB ::?? qtAwqy AB ::?? q!aa 8B ::?? =XY =VW =YZ 4D! $ + +q 00 0 =JK =TU =VWr:ctdd}ttdd||}tdtd}}tddD]Z}|j }|j ||j t||f|jjdrZJ|j d }|j ||j t||f|jjdsJy) NrYTrRrrxryr,r$)seed) r rrrange random_pointr4rrargsequals)rYr7rrindrs r8test_ellipse_random_pointrys 4 B q!b" %B D\6$<BQ{I OO {{2r"''RHaff(=>EEaHHHI QA ;;r2  # #CR!&&$9 : A A! DD Dr:c8ttdddk(sJy)Nrr&zCircle(Point2D(0, 1), 2))reprrr]r:r8 test_reprrs vq! "&@ @@ @r:ctdd}|jdtddk(sJ|jdtddk(sJ|jdtdddk(sJtd dd jdd d ttd d ddk(sJtd djdd d ttd d ddk(sJtd dd jd d d ttdd ddk(sJtd djd d d ttdd dk(sJttdd djt dd t dd d td dk(sJtd dj ddtd dk(sJtd djd d td dk(sJy)Nrdr&rF)rFr$)r#)r$rF)r&r$r*rr%)r*r,rDrrEr-ir$r,)rrrrr translate)r>s r8test_transformrsvqA 772;&!, ,, , 77R7=F7A. .. . 771:A. .. . 61a & &q!V 4b#1% && & &!  " "1a 0b#1% && & 61a & &q!V 4b#1% && & &!  " "1a 0uR~q! "" " %C.! $ * *8Aq>8Aq>6 Rvq   &!  & &q! ,vq   &!  " "1a (vq  r:cjttdddd}ttdddd}ttddd}ttddtddtdd}|jdk(sJ|jdk(sJ|jdk(sJ|jd k(sJy) Nrr%r,r&r.rG)rArr%r,)rrrEr,)r.r.r&r&)rrrbounds)r5r6rrs r8 test_boundsrs q!a #B q"q! $B a a B b! eAqk5A; 7B 99 && & 99 && & 99 && & 99 && &r:c`td}tdtd|f}tddd}|j|j |j k(sJt ddd jj tddj k(sJjj tdt j k(sJttfd td dj tdd ttddd k(sJy)Nr=mrsloperr)r&r%r$r&c<jtdS)Nrr)reflectr)r@rsr8rKztest_reflect..s $vQ2G(Hr:rrdrF) r rrrrrrrrrr)r=lrr@rs @@r8 test_reflectrss As A aV1A &&& )B 77rzz!}))) )) )1A 66aiiV1 56;;; ;; ; 66aiiV2 67<<< << <  HI &!  $ $T&&%9 :fWQPQ]TV>W WW Wr:c ttddddttddd}jtdddusJjtdddusJjdusJjtd d ddusJjtd dddusJ|jtd dd dusJ|jtd ddusJ|jtd ddusJ|jt dddusJ|jt dddusJ|jt dddusJ|jt dddusJ|jt dddusJ|jt dddusJjt dddusJjt d ddusJ|jt d ddusJjt dddusJjt dddusJjt dddusJjt dddusJjt dd dusJjt d d!dusJjt dd"dusJjt dd#dusJjtd d$d%dusJjtd&d'd(dusJjtddd)dusJjtddd*dusJjtdd+dd*dusJjtd,ddd-dusJ|jtd,ddd-dusJjtd dd.d*dusJjtd/d0d1dusJjtd/d0d+d*dusJjtdd2d3dusJ|jt d ddusJjt dddusJjt dddusJjtd d$d%dusJjtd&d'd(dusJjtd,ddd-dusJ|jtd,ddd-dusJjtd/d0d+d*dusJjtdd2d3dusJttfd4ttfd5y)6Nrr%r,r&r.rGFTrr$)r&r.)r0r.)rGr.)rr.)ir)rAr.)rAi)rr/)rEr/)rEr)r&r,)rEr,r&r&)rrGrr%r)riri)rAr)rAr,)r%r,)rrr)rrrrrd)gQgMbP)rAr$)r,r,)r,r)ii)ii)iir)rr,)rr)rAr)r%r)rGrG)r%ri)r%r)r-r,)r,rG)r-rc<jtdddSra)rrr5sr8rKz!test_is_tangent..sbmmE!QN;r:c8jtdS)Nr,)rrrsr8rKz!test_is_tangent..sbmmHQK8r:) rrrrrrrrrr)rr5s @r8test_is_tangentr s q!a #B a a B ==q! % .. . ==q! % .. . ==  $$ $ ==A. /5 88 8 ==A. /4 77 7 ==!Q/ 0D 88 8 ==!, - 55 5 ==+ , 44 4 ==Xz2 3u << < ==Xz2 3u << < ==Y1 2e ;; ; ==Wh/ 0D 88 8 ==VV, - 55 5 ==0 1T 99 9 ==1 2e ;; ; ==0 1U :: : ==2 3u << < ==2 3u << < ==62 3u << < ==&1 2e ;; ; ==&1 2d :: : ==gx0 1U :: : ==ff- .% 77 7 ==g7 8E AA A ==gw/ 0D 88 8 ==9 :e CC C ==k:F G5 PP P ==&&9 :e CC C ==&&9 :e CC C =='66B Cu LL L ==7FGD E MM M ==7FGD E NN N ==@ AU JJ J ==(F; < EE E ==(GVD E NN N ==9 :e CC C ==2 3u << < ==&1 2e ;; ; ==&1 2d :: : ==9 :e CC C ==k:F G5 PP P ==7FGD E MM M ==7FGD E NN N ==(GVD E NN N ==9 :e CC C 9;< 989r:ctdttddddjddik(sJt t fdy)NrXrr%r,rc(jdS)N)r*r)parameter_valuer@rXsr8rKz&test_parameter_value..sq00;r:)r rrr rrTrs@@r8test_parameter_valuersJs Aa Q"A  VQ 'Aq6 11 1 :;r<r=r@s r84test_section_modulus_and_polar_second_moment_of_arearssT"AvqA ( ( *d2g 55 5   3r63r6"2 22 2vqsA ( ( *bAgc!fnR.?"Q$s1vqy.QSBS.S SS S   2ad71R5="QT'!B%-"@ @@ @ 6D )DAq1A   2a419QqT>2ad719QqT>"B BB B ( ( *bAgai!nr!tAqDy1~.M MM M AA   2ad719QqT>2a419QqT>"B BB B ( ( *bAgai!nr!tAqDy1~.M MM MA1A   2b5!B$- // / ( ( *c"f 44 4a Q"A   1R42, .. .  U1a[ )adAbD\ 99 9  V $2qt 44 4r:ctd}td}ttdd||jd|zt |dz|dzz |dzz zk(sJttddddjdt t dd z zk(sJtdd ddjdt zk(sJttddd jjd dz dksJy)NMrrr*r&r,r/rErCr$r%)rrrgRe9@g|=) r rrrrrrrsevalf)r!rs r8test_circumferencer#ss As A 5A;1 % 3 3q1uz1PQ6TUYZTZ?^_ab^bJb?c7c cc c 5A;1 % 3 3rJqtbyus r8test_issue_15797_equalsr.1s B 1B a#$Ar2A <<*1- .$ 66 6 88:: ! !! ! 88:: ! !! ! 88   r2&A 88::    88::    88   r:ctd\}}}}t||f||}|jt||ft ||k(sJtddjtddk(sJy)Nx y a br%r*r()r rauxiliary_circlerrr"r#r<r=r@s r8test_auxiliary_circler4@ss#JAq!QA1A   61a&#a)#< << < &!  - - /6&!3D DD Dr:c td\}}}}t||f||}|jt||ft |dz|dzzk(sJtddjtddt dzk(sJy)Nr0r&r1r()r rdirector_circlerr r3s r8test_director_circler7Is#JAq!QA1A   &!QadQTk1B"C CC C &!  , , .&472K KK Kr:ctdd\}}}}td\}}tt||||}|j||jj z zt ddz}|j||jjz zt ddz}||z|jdz|jdzz t ddzz } |j| k(sJttdddd}d|dz zt ddz}d|dz zt ddz}||zd t ddzz } |j| k(sJy) Nzx y h kTrRza br&r%r$r-) r rrrrr"rrr#evolute) r"r#hkr<r=r@rrEs r8 test_evoluter>Rs4$/JAq!Q 5>DAqa Q"A ))Q^ $x1~ 5B ))Q^ $x1~ 5B R199a)rr_svgrs r8test_svgrAcs< q!a #B 771i %{ {{ {r:N)? sympy.corersympy.core.numbersrrrsympy.core.relationalrsympy.core.singletonrsympy.core.symbolr r $sympy.functions.elementary.complexesr (sympy.functions.elementary.miscellaneousr (sympy.functions.elementary.trigonometricr sympy.geometry.linersympy.geometry.pointrsympy.geometryrrrrrrrrrrrsympy.testing.pytestrrsympy.integrals.integralsr*sympy.functions.special.elliptic_integralsrrr9rVrrrrrrrr rrrr#r%r.r4r7r>rAr]r:r8rPs11$"/498)(4444./A8 _12]e]e@ X< EA,' X1:h=   56 h, EL"{r: