
    doiH                     Z    S SK r S SKrS SKrS SKJr  S SKrS SKJr  SS jr	 " S S5      r
g)    N)assert_allclose)geometric_slerpc                     [         R                  R                  S5        [         R                  R                  X4S9nU[         R                  R                  USS9S S 2[         R                  4   -  nUS   US   4$ )N{   )size   axisr   )nprandomseednormallinalgnormnewaxis)ndimn_ptspointss      Z/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/spatial/tests/test_slerp.py_generate_spherical_pointsr      sh    
 IINN3YYE=1F
biinnV!n,Q

];;F!9fQi    c                      \ rS rSr\R
                  R                  S/ SQ5      \R
                  R                  S/ SQ5      S 5       5       r\R
                  R                  S/ SQ5      \R
                  R                  SSS/5      S	 5       5       r\R
                  R                  S
\	R                  " S5      \	R                  " S5      4\	R                  " S5      \	R                  " S5      4\	R                  " S5      \	R                  " S5      4/5      S 5       r\R
                  R                  S
\	R                  " S5      \	R                  " S5      4\	R                  " S5      \	R                  " S5      4\	R                  " / 5      \	R                  " S5      4/5      S 5       r\R
                  R                  S
\	R                  " / 5      \	R                  " / 5      4/5      S 5       r\R
                  R                  S\	R                  " / SQ5      \	R                  " / SQ5      S4\	R                  " / SQ5      \	R                  " / SQ5      S4\	R                  " / SQ5      \	R                  " / SQ5      S4/5      S 5       r\R
                  R                  S\	R                  " SS/5      \	R                  " SS/5      \	R                  " SS/\	R"                  " S5      S-  S/S\	R"                  " S5      S-  /SS//5      4\	R                  " / SQ5      \	R                  " / SQ5      \	R                  " / SQ\	R"                  " S5      S-  SS/S\	R"                  " S5      S-  S// SQ/5      4\	R                  " / SQ5      \	R                  " / S Q5      \	R                  " / SQ\	R"                  " S5      S-  SSSS/S\	R"                  " S5      S-  SSS// S Q/5      4/5      S! 5       r\R
                  R                  S
\	R                  " S/5      \	R                  " S/5      4\	R                  " S/5      \	R                  " S/5      4\	R                  " S"/5      \	R                  " S#/5      4/5      S$ 5       r\R
                  R                  S%S&S'/ S(Q\	R                  " S)5      /5      S* 5       r\R
                  R                  S%S+S,/5      S- 5       r\R
                  R                  S
\	R                  " SS/5      \	R                  " SS/5      4\	R                  " / S.Q5      \	R                  " / S/Q5      4\	R                  " / S0Q5      \	R                  " / S1Q5      4/5      S2 5       r\R
                  R                  S
\	R                  " SS/5      \	R                  " \	R"                  " S5      S3-  \	R"                  " S5      S3-  /5      4\	R                  " SS/5      \	R                  " \	R"                  " S5      * S3-  \	R"                  " S5      S3-  /5      4/5      \R
                  R                  S4\	R.                  \	R0                  /5      S5 5       5       r\R
                  R                  S6S7/5      S8 5       rS9 rS: r\R
                  R                  S;\	R                  " / SQ5      \	R                  " SS/5      /5      \R
                  R                  S6\	R                  " S5      \	R                  " S/5      \	R                  " S//5      \	R                  " S///5      \	R                  " / 5      \	R.                  " SSS&5      /5      S< 5       5       r\R
                  R                  S=\	R0                  " S>S?S@5      5      SA 5       r\R
                  R                  S6SS//SS//////////5      SB 5       r\R
                  R                  SCSS/SS/SSS?/4SS/\ R"                  " S5      S-  \ R"                  " S5      S-  /SDSS?/4SS/\ R"                  " S5      S-  \ R"                  " S5      S-  /SES?S/4SS/\ R"                  " S5      S-  \ R"                  " S5      S-  /S\ R"                  " S5      * S-  \ R"                  " S5      S-  /4SS/\ R"                  " S5      S-  \ R"                  " S5      S-  // SFQ\ R"                  " S5      * S-  \ R"                  " S5      S-  /S?S/SS?//4/ SQ\ R"                  " S5      S-  \ R"                  " S5      S-  S// SFQ\ R"                  " S5      * S-  \ R"                  " S5      S-  S// SGQ/ SHQ/4SS/\ R"                  " S5      S-  \ R"                  " S5      S-  /SI\ R"                  " S5      S-  S/4/5      SJ 5       r!\R
                  R                  SC/ SKQ/ SLQSM/ SKQ4/ SKQ/ SLQS?/ SLQ4/5      SN 5       r"SOr#gP)QTestGeometricSlerp   n_dims)            	   r   )r   r      c           	          [        US5      u  p4[        UU[        R                  " SSU5      S9nUR                  X!4:X  d   eg )Nr   r   r   startendt)r   r   r   linspaceshapeselfr   r   r$   r%   actuals         r   test_shape_property&TestGeometricSlerp.test_shape_property   sG     0:
 u%(#%;;q!U#;= ||...r   r   r!   c           	          [        US5      u  p4[        UU[        R                  " SSU5      S9n[	        US   U5        [	        US   U5        g )Nr   r   r   r#   )r   r   r   r'   r   r)   s         r   test_include_ends$TestGeometricSlerp.test_include_ends'   sO     0:
 u%(#%;;q!U#;= 	q	5)r
C(r   z
start, end)r   r   r   )r   r   c           
          [         R                  " [        SS9   [        UU[        R
                  " SSS5      S9  S S S 5        g ! , (       d  f       g = f)Nzone-dimensionalmatchr   r   
   r#   pytestraises
ValueErrorr   r   r'   r*   r$   r%   s      r   test_input_shape_flat(TestGeometricSlerp.test_input_shape_flat<   s=     ]]:->?% # kk!Q35 @??   "A
Ar   r   c           
          [         R                  " [        SS9   [        UU[        R
                  " SSS5      S9  S S S 5        g ! , (       d  f       g = f)N
dimensionsr3   r   r   r5   r#   r6   r:   s      r   test_input_dim_mismatch*TestGeometricSlerp.test_input_dim_mismatchL   s;     ]]:\:% # kk!Q35 ;::r=   c           
          [         R                  " [        SS9   [        UU[        R
                  " SSS5      S9  S S S 5        g ! , (       d  f       g = f)Nat least two-dimr3   r   r   r5   r#   r6   r:   s      r   test_input_at_least1d(TestGeometricSlerp.test_input_at_least1d]   s=     ]]:-?@% # kk!Q35 A@@r=   zstart, end, expected)r   r         ?)r   r   g      warning)        gԬ3ODgkꚛ?)rH   g{tOgx?successc           
      L   US:X  aD  [         R                  " [        SS9   [        UU[        R
                  " SSS5      S9nS S S 5        O![        UU[        R
                  " SSS5      S9n[        [        R                  R                  WSS9S	5        g ! , (       d  f       N7= f)
NrG   	antipodesr3   r   r   r5   r#   r	   rF   )	r7   warnsUserWarningr   r   r'   r   r   r   )r*   r$   r%   expectedress        r   test_handle_antipodes(TestGeometricSlerp.test_handle_antipodesj   s    4 y k=%E*-(*Aq"(=? >=
 "&)$&KK1b$9;C 			s3S9 >=s   "B
B#r         ?)r   r   r   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   c           	      Z    [        UU[        R                  " SSS5      S9n[        XCSS9  g )Nr   r      r#   缉ؗҜ<atol)r   r   r'   r   )r*   r$   r%   rN   r+   s        r   test_straightforward_examples0TestGeometricSlerp.test_straightforward_examples   s0    D !u%(#%;;q!Q#79 	u5r   g333331g̼d@c           
          [         R                  " [        SS9   [        UU[        R
                  " SSS5      S9nS S S 5        g ! , (       d  f       g = f)NrC   r3   r   r   rT   r#   r6   )r*   r$   r%   _s       r   test_0_sphere_handling)TestGeometricSlerp.test_0_sphere_handling   s?     ]]:-?@e$'"$++aA"68A A@@r=   tolr   7)r      r   g      "@c           
         [         R                  " [        SS9   [        [        R
                  " SS/5      [        R
                  " SS/5      [        R                  " SSS5      US9nS S S 5        g ! , (       d  f       g = f)Nzmust be a floatr3   r   r   r   r$   r%   r&   r^   )r7   r8   r9   r   r   arrayr'   r*   r^   r[   s      r   test_tol_type TestGeometricSlerp.test_tol_type   s\     ]]:->?bhh1v&6$&HHaV$4"$++aA"6$')A @??s   AA22
B gh㈵ԾgƜCc           	          [        [        R                  " SS/5      [        R                  " SS/5      [        R                  " SSS5      US9ng )Nr   r   r   rb   )r   r   rc   r'   rd   s      r   test_tol_sign TestGeometricSlerp.test_tol_sign   s@     "((Aq6"2 "!Q 0 kk!Q2 #%r   )zo ?r   r   )r   !?r   )rj   r   r   r   )r   rk   r   r   c           
          [         R                  " [        SS9   [        UU[        R
                  " SSS5      S9  S S S 5        g ! , (       d  f       g = f)Nzunit n-spherer3   r   r   r   r#   r6   r:   s      r   test_unit_sphere_enforcement/TestGeometricSlerp.test_unit_sphere_enforcement   s;      ]]:_=% # kk!Q24 >==r=   g       @t_funcc                    Sn[         R                  R                  S5        U" SSU5      nXUR                  5       -  n[         R                  " U5      n[         R
                  " U5      n[         R                  R                  U5        UR                  5       U   n[        UUUS9n	[        UUUS9n
[        UUUS9n[        U	[         R                  " U
5      5        [        X   U5        g )N   i  r   r5   r#   )
r   r   r   maxflipudarangeshufflecopyr   r   )r*   r$   r%   ro   
num_t_valsforward_t_valsreverse_t_valsshuffled_indicesscramble_t_valsforward_resultsreverse_resultsscrambled_resultss               r   test_order_handling&TestGeometricSlerp.test_order_handling   s    ( 

		s2z2,,..>299Z0
		*+(--/0@A).1,:< *.1,:< ,%03.=?
 	?)CD9)	+r   r&   z15, 5, 7c                     [         R                  " [        5         [        [        R
                  " S/5      [        R
                  " S/5      US9nS S S 5        g ! , (       d  f       g = f)Nr   r   r#   )r7   r8   r9   r   r   rc   )r*   r&   r[   s      r   test_t_values_conversion+TestGeometricSlerp.test_t_values_conversion)  sB     ]]:&bhhsm$&HHaSM"#%A '&&s   6A
A(c           	      Z   [        SS/SS// SQ5      n[        R                  " SS/[        R                  " S5      S-  S/[        R                  " S5      S-  [        R                  " S5      S-  /S[        R                  " S5      S-  /SS//[        R                  S9n[        XSS	9  g )
Nr   r   )r   gUUUUUU?rR   gUUUUUU?r   r   r   rR   dtyperU   rV   )r   r   rc   sqrtfloat64r   r*   r+   rN   s      r   test_accept_arraylike(TestGeometricSlerp.test_accept_arraylike6  s     !!Q!Q1FG
 88aV ggaj1nc2 ggaj1n ggaj1n.!2771:>2V%
 -/JJ8 	u5r   c                    [        SS/SS/S5      n[        R                  " [        R                  " S5      S-  [        R                  " S5      S-  /[        R                  S9nUR
                  S:X  d   e[        X5        g )Nr   r   rR   r   r   )r   )r   r   rc   r   r   r(   r   r   s      r   test_scalar_t TestGeometricSlerp.test_scalar_tJ  sl     !!Q!Q588RWWQZ!^WWQZ!^-46JJ@||t###)r   r$   c                    [         R                  " U5      R                  S:  a.  [        R                  " [
        5         [        XUS9  S S S 5        g UR                  4UR                  -   n[         R                  " X15      n[        XUS9n[        XT5        [        XS S S2   US9nUR                  UR                  :X  d   eg ! , (       d  f       g = f)Nr   r#   r/   )r   asarrayr   r7   r8   r9   r   r   r(   fullr   )r*   r$   r&   r(   rN   r+   non_degenerates          r   test_degenerate_input(TestGeometricSlerp.test_degenerate_inputT  s     ::a=!z*e!< +* VVI+Ewwu,H$5qAFF- -5DbDkQON;;."5"5555 +*s   C
Ckir/   r5   c                 d   [         R                  U-
  n[         R                  " SSS5      n[         R                  " / SQ5      n[         R                  " [         R                  " U5      [         R
                  " U5      SS/5      n[        R                  " 5          [        R                  " S[        5        [        XEUS5      n[         R                  R                  USS9n[         R                  " [         R                  " US-
  5      5      nUS:  d   e S S S 5        g ! , (       d  f       g = f)	Nr   r   d   )r   r   r   r   ignoregC]r2<r	   gV瞯<)r   pir'   rc   cossinwarningscatch_warningssimplefilterrM   r   r   r   rr   abs)	r*   r   angletsPQresultnormserrors	            r   test_numerical_stability_pi.TestGeometricSlerp.test_numerical_stability_piq  s    
 	[[As#HH\"HHbffUmRVVE]Aq9: $$&!!(K8$Q2u5FIINN6N2EFF266%!),-E5= = '&&s   A<D!!
D/c                 `   [         R                  " SS/5      n[         R                  " SS/5      n[        R                  " [        5         [        UUUS9  S S S 5        [        R                  " [        5         [        UUUS9  S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nr   r   r#   )r   rc   r7   r8   r9   r   )r*   r&   arr1arr2s       r   test_interpolation_param_ndim0TestGeometricSlerp.test_interpolation_param_ndim  s     xxAxxA]]:&$ $! '
 ]]:&$ $! '& '&
 '&s   B9B
B
B-zstart, end, t, expectedrT   r`   )r   r`   rT   )r/   r   r   )r   r/   r   gc                 .    [        UUUS9n[        XTSS9  g )Nr#   gؗҬ<rV   )r   r   r*   r$   r%   r&   rN   actual_paths         r   test_extrapolation_basic+TestGeometricSlerp.test_extrapolation_basic  s#    H &E*-()+ 	E:r   )r   r   r   )r   r   r/   c                     [         R                  " [        SS9   [        XUS9nS S S 5        [	        WUSS9  g ! , (       d  f       N= f)NrK   r3   r#   g}-<rV   )r7   rL   rM   r   r   r   s         r   test_extrapolation_antipodes/TestGeometricSlerp.test_extrapolation_antipodes  s8     \\+[9)!DK :XG< :9s	   9
A N)$__name__
__module____qualname____firstlineno__r7   markparametrizer,   r0   r   zerosonesr;   rc   r@   rD   rP   r   rX   r\   re   rh   rm   r'   logspacer   r   r   r   r   r   r   mathr   r   __static_attributes__r   r   r   r   r      s	    [[X7[[Wj1
/ 2 8
/ [[X7[[Wq"g.) / 8)& [[\	&	2776?+	&	2771:&	!bggfo&,
 55 [[\	!bggaj!	!bggaj!	"rwwqz",
 55 [[\	"rxx|$,
 5	5 [[3 
+	 6	B 
 " 
#$&HH\$:I	G 
 " 
#$&HH\$:I	G%6
 ,:-,:& [[3 
1a&		1a&		Aq6GGAJNC(a(q6 
	 
)		)		9GGAJNC+a+ 
	  
/	"	/	"	?GGAJNCAq1aAq1"$ 
%	&+6 :6;:6 [[\	1#	1#		1#	1#		5'		5'		, 88 [[U	288C=%
 )) [[U%
 %	% [[\ 
1a&	288QF+, 
"	#	"	#	% 
%	&	%	&	(,
 44 [[\	1a&		2771:?771:?$ 
%	& 
1a&		BGGAJ;#771:?$ 
%	&	,
 	 [[X
R[[(" #+#	+B [[S#
 %%6(* [[W

!Q'  [[S

!
1#
A3%

Aq!# 6	6" [[S"++c2r":;! <!$ [[S#hZXJ<.	# !	!  [[6 Q!QQG$ Q$))A,q.$))A,q.11q"g>
Q$))A,q.$))A,q.11r1g>
Q$))A,q.$))A,q.1199Q<-/499Q<>	*	, Q
))A,q.$))A,q.	)	IIaL=?DIIaLN
+q'b'
	 

))A,q.$))A,q.!	,	IIaL=?DIIaLNA
.


	 Q$))A,q.$))A,q.1Gtyy|A~s>STC"9 "F;G"F; [[6 
B	* 
B
+9 ==r   r   )r   r   )r   r   numpyr   numpy.testingr   r7   scipy.spatialr   r   r   r   r   r   <module>r      s(       )  ) {= {=r   