K iAddlmZddlmZddlmZddlmZmZmZm Z ddl m Z ddl m Z mZddlmZmZmZmZmZddlmZdd lmZdd lmZmZmZmZmZmZdd l m!Z!dd l"m#Z#dd l$m%Z%ddl&m'Z'ddl(m)Z)ddlm*Z*ddl+Z+ddl,m-Z-m.Z.ed\Z/Z0Z1Z2edZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZd Z?d!Z@d"ZAd#ZBd$ZCed%ZDd&ZEd'ZFed(ZGy)))slow)diff)expand)EIRationalpi)S)Symbolsymbols)Abs conjugateimresign)log)sqrt)acosasincossinatan2atan) integrate)Matrix)simplify)trigsimp) Quaternion)raisesN) permutationsproductzw:zphic ttttt}||ztdtzdtzdtzdtzk(sJtj t ddz t ddz t ddz fttddz}|ttjtjtjtjk(sJttttt dgttttdggdg}ttj |}|tt dt ttdzzdz ddt ddttzz t#ttzdz k(sJt%ddt't(fd y) Nrrrr'ncF commutativec8ttttSN)rwxz)r(sj/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/algebras/tests/test_quaternion.pyz.test_quaternion_construction..&sz!QA6)rr-r.yr/from_axis_anglerr rr Halfrrr"rrfrom_rotation_matrixrr r ValueError)qq2Mq3r(s @r0test_quaternion_constructionr<sw1aAA q5JqsAaC1ac2 22 2  # #T!WQYQ 4719$E$&x1~$5 7B AFFAFFFFAFF, ,, , SCH9a(3s8SXq*A9MNA *11!4 5B  QSX\""1$aDQs3xZ,@c#h,OPQ,QS SS S % (B :67r2cttd}ttttt }t ||zjdz|jdz|jdzzz dk(sJttttt d}||zj|jk(sJy)Na:dr$rr')norm)rr r-r.r3r/rr?)q1r9r;s r0!test_quaternion_construction_normrA)s WU^ $B Aq!Q B 2b5,,.!#rwwy!|bggil'BC D II I Aq!QQ 'B G>> rwwy (( (r2ctdddd}tjddtjzdz }|j }||z|z}||z j dksJy)Nr'rr'r'r'r%g|=)rr4mathr inverser?)pr8qitests r0test_issue_25254rJ3sc 1aAA""9a$''k!mttttt}tj |j }tj |j d}||z jsJ|j|z jsJy)NT) rr-r.r3r/ from_Matrix to_Matrixis_zero_quaternion vector_part)r8q_fullq_vects r0test_to_and_from_MatrixrR=st1aAA  # #AKKM 2F  # #AKK$5 6F J * * ,, , MMOf $ 8 8 :: :r2cttttt}tt d}||zj |j|j zk(sJ||zj |j|j zk(sJ|j|jjzddddf}t|j|jdzz}||k(sJy)Nr>r'r$) rr-r.r3r/r rMproduct_matrix_leftproduct_matrix_rightTrto_rotation_matrixr?)r@r9R1R2s r0test_product_matricesrZEs Aq!Q B gen &B G   B$:$:R\\^$K KK K G   B$;$;blln$L LL L 2#:#:#<#< .t q1ur2czSr,rsrtsr0r1z7test_quaternion_complex_real_addition..urur2czSr,rsrtsr0r1z7test_quaternion_complex_real_addition..vrur2r%rDr$rrf real_fieldi &) r rr-r.r3r/rrrrr7)rgrhr@r9q0rir8s @@r0%test_quaternion_complex_real_additionrisT"A$A'A1aAA q5Jq2a5y!be)Q: :: : q5Jq1uaA. .. . q5Jq!a%A. .. . q5Jq1uaA. .. . :}% :}% :}% 2QBQB+ ++ + A!GQ1WaQqSu EB Aq!Q B QqS>ZAaCQqS!Q1WE EE E QqS>Z1a3 33 3 QqS>AaC!ac'"Q1Wq1Q3w$7Q1Wq1Q3wZRR8 88 8 Aq!Q B Aq!Q B 7b== 7b== 7b==r2ctjdt}|jtdtddddk(sJy)Nr&rr')rr4r"subsr8s r0test_quaternion_subsrs7""9c2A 66#q>Z1a3 33 3r2c ttdddtdjttdjddtdjk(sJtdtdz dddtdz jtdtdz jdddtdz jk(sJy)Nr$rr%r')rrevalfrsr2r0test_quaternion_evalfrs tAw1d1g . 4 4 6 tAw}}1d1gmmo > ?@ ? qay!Q$q' 2 8 8 : $q' ((*Aq1T!W92C2C2E F GH Gr2c2 ttttt}tddddtddddt |ttt t t k(sJ|j ttdztdzztdzztdzzk(sJ|jtttttttdztdzztdzztdzzz k(sJ|jttt t t tdztdzztdzztdzzz k(sJ|j|jdk(sJttfd|jdttdztdzz tdzz tdzz dtztzdtztzdtztzk(sJ|dzttdztdzz tdzz tdzz dtztzdtztzdtztzk(sJjdttd d tdd tdd tdd k(sJdzttd d tdd tdd tdd k(sJjd tk(sJttfd j!tt"t%tdzdtdzt"zt'tdzdz dtdzt"zt'tdzdz dtdzt"zt'tdzdz k(sJj)tt)tddtdzt+tddz zdz dtdzt+tddz zdz dtdzt+tddz zdz k(sJj-dtdt%dt+tddz zzdtdzt'dt+tddz zzdz dtdzt'dt+tddz zzdz dtdzt'dt+tddz zzdz k(sJt/tttttttddddk(sJt1ttttttttdzdz tdzdz tdzdz tdzdz k(sJtdttdztdzj1ttttdzdz tdzdz tdzdz k(sJtt'tt%tt'dtzt%dtzj1ttt%t t'tt%dtz dz t'dtzdz k(sJttdztdztdzttztzj1ttttdztzdz ttdzzdz ttztdzztdztdzztzdz k(sJtj2dt4j6dz dt5ddz fk(sJt9dttfdt9ddttfdtddddj;dk(sJtttttj;tk(sJtddddj=tddddk(sJtttttj=tdtttk(sJj?tddtdzdz dtdzdz dtdzdz k(sJj?jdtddddk(sJj?j;dk(sJ|j?tdtttdztdzztdzzz tttdztdzztdzzz tttdztdzztdzzz k(sJjAdusJjAdusJtddddjAdusJtddd djAdusJttdd djAJjCdtEtdzk(sJ|jCdtGttdztdzztdzztzk(sJtjHtddd!ddusJtjHtddd"d#dusJtjHtddd$d%dusJtjHtdddddusJtjHttdd!ddusJtjHtdddddusJtjHtttttJttfd&tjJtddd$d%tddd!dtdddddusJtjJtddddtddd!dtdddddusJtjJtdddd!tddd!d!tdddddusJtjJtddddtddtd!tdd!dd Jttfd'tddddjMtdddd!dusJtddddjMtdddd!dusJtddddjMttttd!Jttfd(tddddjOtdddddusJtddddjOtdddd!dusJtddddjOttttd!Jttfd)jQtddtd*zdz dtd*zdz dtd*zdz k(sJtddd+djQtddd+dk(sJtddd+djSt)td,k(sJtddddjSt)tdk(sJjUdusJjUdusJttdddjUJy)-Nr'r$r%rDrc$jSr,rFrsr0r1z+test_quaternion_functions..s rzz|r2icdzS)Nrrs)r@sr0r1z+test_quaternion_functions..s b4jr2<ZxrCrxrfnczSr,rsrr@sr0r1z+test_quaternion_functions.. b!er2T)integerczSr,rsrsr0r1z+test_quaternion_functions..rr27ryF  c0tjSr,)r arc_coplanarrr@sr0r1z+test_quaternion_functions..sz66r2>r2c JtjtddddS)NrrDrry)rvector_coplanarrsr0r1z+test_quaternion_functions..s%""2z!Q1'=rBr2c&jSr,)parallelrsr0r1z+test_quaternion_functions..sr{{2r2c&jSr,) orthogonalrsr0r1z+test_quaternion_functions..sr}}R0r2if z)+rr-r.r3r/rr?r normalizerFpowrr7rNotImplemented TypeErrorexprrrrr pow_cos_sinrr rotate_pointr Oner scalar_partrOr`is_purerarrrrrr index_vectormensorrN)r8rrr@s @@@r0test_quaternion_functionsrs 1aAA Aq!Q B Aq!Q B Q<:a!aR!4 44 4 668tAqD1a4K!Q$.A56 66 6 ;;=Jq!Q2T!Q$A+1:LqRSt:S5TT TT T 99;*QQB3q!tad{QT7IAqD7PQ QQ Q 99;!%%) ## # :+, 558z!Q$A+1"4q!t";QqSUAaCE1Q3q5Q QQ Q q6Z1q!t ad 2QT 91Q3q5!A#a%1QO OO O 66":S8B,hr3.?"cART TT T 8zS8B,hr3.?"cART TT T 66$<> )) ) 9() 668q3tBx= 48|a#d2h-/"448|a#d2h-/"448|a#d2h-/"46 66 6 668s48}48|d48B;//"448|d48B;//"448|d48B;//"46 66 6 >>! rCDb"--..DH}s1tDHRK'8#899B>DH}s1tDHRK'8#899B>T"X~AT"Xb[(9$9 ::R?A AA A  1aA& *jAq!.D DD D Z1a+Q /q!taxA1a4!8QTAX6 77 7 aAqD!Q$ ' 1 1! 4q!Q$q&!Q$q&!Q$q&) ** * c!fc!fc!A#hAaC 9 C CA FAwAQqS ! S1XaZ8 99 9 adAqD!Q$!A . 8 8A >q!tAvax1a41Q3q!t8QT!Q$Yq[]; << <  " "9b 1aeeaiAaD1H5M MM Ms A 9m$sD!A 9m$ b"b! $ 0 0 2b 88 8 aAq ! - - /1 44 4 b"b! $ 0 0 2jBA6N NN N aAq ! - - /:aAq3I II I 779 1aRjmQtBxZ]Ad2hJrMR RR R 779== z"aA6 66 6 779 "a '' ' FFH 1#$T!Q$A+1*<%=#=#$T!Q$A+1*<%=#=#$T!Q$A+1*<%=#=? ?@ ? ::<4   ::<5  aAq ! ) ) +t 33 3 aB " * * , 44 4 aB " * * , 44 4 88:4R>) )) ) 779%QTAqD[1a4%7 8!<< << <  " "2z!Q1'= >$ FF F  " "2z!RR'@ AT II I  " "2z!QB'? @D HH H  " "2z!Q1'= >$ FF F  " "2z!Q1'= >$ FF F  " "2z!Q1'= >% GG G  " "2z!Q1'= > FF F :>?  % %1aR 1aA1aA $( (( (  % %1aA 1aA 6 1aA8N PSW XX X  % %1aA 1aA 6 1aA8N PSX YY Y  % %1aA1aA1aA $( (( ( :CD aAq ! * *:aAq+A Bd JJ J aAq ! * *:aAq+A Be KK K aAq ! * *:aAq+A B JJ J :./ aAq ! , ,Z2q!-D E MM M aAq ! , ,Z1a-C D MM M aAq ! , ,Z1a-C D LL L :01 ??   1T#Y;r> $s) B $s) B!   aAq ! . . 0Jq!Q4J JJ J aAq ! ( ( *c$s)n << < aAq ! ( ( *c$r(m ;; ; "d ** * "e ++ + aAq ! 4 4 6 >> >r2c tdddd}|jdtdzdz dtdzdz dtdzdz fdttddz zfk(sJ|j t t ddt ddt d dgt ddt d dt ddgt ddt d dt ddggk(sJ|j d t t ddt ddt d dt dd gt ddt d dt ddtjgt ddt d dt ddt dd gtjtjtjtjggk(sJtdd}tt|dz ddt|dz }t|j t t|t| dgt|t|dggdgk(sJ|jddt|dz tt|dz z fdtt|dz zfk(sJt|j d t t|t| dt|t|z dzgt|t|dt| t|z dzggdgdgk(sJy)Nr'r$r%rDrrrr|rrerCrxthetaTrprr&r]r^)r to_axis_anglerrrWrrr Zerorr rrrr )r@rr9s r0test_quaternion_conversionsrs Aq!Q B   1tBx<?#$tBx<?#$tBx<?#4$%tDHRK'8#8": :: :  ! ! # Xb!_hq"oxB7GHa^Xb!_hq!nEa^Xb"%5x2GI J JK J  ! !) , "a(1b/8B3CXaQR^T!Q"a(1a.!&&I!Q"b!18Ar?HRQROT/ 1 2 23 2 G$ 'E CaL!QE!G 5B B))+ ,03E SZK/K03E SZ/K/K8M1N NN N    1aU1Wc#eAg,6G)G"H#$T#eAg,%7#7"9 99 9 B)))4 5E SZKCJU,Ca,GHE SZSZK#e*,Dq,HI// A1:2 22 2r2cttttt}|j d|j dzz}t|j d|j dzz}||k(sJy)NT) homogeneousr$F)rr-r.r3r/rWr?r)r8rXrYs r0 test_rotation_matrix_homogeneousr;sf1aAA  $  /!&&(A+ =B !&&5&9AFFHaKG HB 8O8r2c .tttdz ttdz dd}t |j t gddtttt gdttttggk(sJy)a3 There was a sign mistake in the definition, of the rotation matrix. This tests that particular sign mistake. See issue 1593 for reference. See wikipedia https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Quaternion-derived_rotation_matrix for the correct definition r$rr\N)rrr"rrrWrrs r0 test_quaternion_rotation_iss1593rBsy 3s1u:s3q5z1a0A A((* +v(CHs3xi(CHs3x(7*0+ +, +r2c Xtddtzzddtzzdddtzzd }td ddd}td d d t}tjt dtj dk(sJtjt d|td d tzzdd tzzdddtzzk(sJ|j dtddddk(sJ|j |tdtzdz dtzdz ddtzz tdzk(sJ|j |||zk(sJtdd}tt|t|dd}ttdd}||z||zk(sJ||z||zk(sJy)Nr%rDr$rxrrfryFrzr'rr rrr~rr/Trnzq:4rp) rrr3 _generic_mulr rmulr rr)r@r9r;r/z_quatr8s r0test_quaternion_multiplicationrRs A!GQ1WaQqSu EB Aq!Q B Aq!Q B  " "1Q4 /1 44 4  # #AaD" - rBqDy!bd(ArBqDy 9 :; : 66!9 1aB/ // / 66":BqD1HacAgq1Q3wAF FF F 66":B  T"A 1r!ua +FGE-.A q5FQJ   q5AJ  r2ctddddttfdtdddd}|j\}}tjd||ft j dz dt d dz fk(sJtd ddd}td dz td dz td dz f}dtzdz }||f|jk(sJy) Nrcdz S)Nr'rsrsr0r1z"test_issue_16318..is qtr2r'r$r%rDrCrxrfr) rrr7rrr rrr )r8r`rars @r0test_issue_16318rfs Aq!Q B :|$1aAAOO%MT5  " "9tUm <AqQRtVWx@X XX X2q!QA !WHQJa T!WHQJ /D bDFE %=AOO- -- -r2c0ttttt}|j }gd}||Dcgc]}|j c}z }|D]9}|j|}ttj||}||k(r9Jycc}w)N)zxyzyxzyzzxz) rr-r.r3r/rupperto_eulerr from_euler)r8 q_normalizedseqsseq euler_from_qq_backs r0 test_to_eulerrus1aAA;;=L 'DD )SSYY[ ))D&zz# *// cBC%%%& *sBctjtddfd}t|j ddtddfk(sJy)z_ There was a mistake in the degenerate case testing See issue 24504 for reference. rrTrN)rrr"rrrs r0test_to_euler_iss24504rs@ sAqk51A AJJu%t 4a CC Cr2cd}|tdz ddfd|tdz ddfd|tdz tdfd|tdz tdfd|tdz tdz dfd|tdz t dz dfd|tdz tdz dfd|tdz t dz dfdy)Nc\tj||}|j||k(sJyr,)rrr)anglesrr8s r0 test_one_casez.test_one_cases*  ! !&# .zz#&(((r2r$rrZYZrZYX)r )rs r0%test_to_euler_numerical_singilaritiesrs) 2a4!Q-'2a4!Q-'2a4"a.%(2a4"a.%(2a4"Q$"E*2a42#a%#U+2a4"Q$"E*2a42#a%#U+r2c fd}dD]}t|D]o}dD]h}|rdj|d|d|dgndj|tgdd D]#}t|}|j r||%jqy) Nct|jdd}t|jdd}t||z j}|D]#}|tzdtzztz }|dkr#Jy)NTFr$gư>)rrrrr )r8angles1angles2 angle_errors angle_errorrs r0rz,test_to_euler_options..test_one_cases}Ct45C670668 ' 'K&+B7"r s%$&33"/OO69XX/'#,0' + U^ 1a en8$)';P$4B4 H}?~#2L , ( . & &D,&))r2