
    (ph+@                     J    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      Q/var/www/html/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                   V   \ 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                   \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       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#S$S%5      \	R(                  " S&S'S5      /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                  " S05      /5      S1 5       r\R
                  R                  S,S2S3/5      S4 5       r\R
                  R                  S
\	R                  " SS/5      \	R                  " SS/5      4\	R                  " / S5Q5      \	R                  " / S6Q5      4\	R                  " / S7Q5      \	R                  " / S8Q5      4/5      S9 5       r\R
                  R                  S
\	R                  " SS/5      \	R                  " \	R$                  " S5      S:-  \	R$                  " S5      S:-  /5      4\	R                  " SS/5      \	R                  " \	R$                  " S5      * S:-  \	R$                  " S5      S:-  /5      4/5      \R
                  R                  S;\	R(                  \	R4                  /5      S< 5       5       r\R
                  R                  S"S=/5      S> 5       rS? rS@ r\R
                  R                  SA\	R                  " / SQ5      \	R                  " SS/5      /5      \R
                  R                  S"\	R                  " S5      \	R                  " S/5      \	R                  " S//5      \	R                  " S///5      \	R                  " / 5      \	R(                  " SSS-5      /5      SB 5       5       r\R
                  R                  SC\	R4                  " SDSESF5      5      SG 5       r \R
                  R                  S"SS//SS//////////5      SH 5       r!SIr"gJ)K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_flat9   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_mismatchI   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_least1dZ   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_antipodesg   s    6 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   r&   i   i,  g-C6g-C6?c                     [         R                  " [        SS9   [        [        R
                  " SS/5      [        R
                  " SS/5      US9nS S S 5        g ! , (       d  f       g = f)Nzinterpolation parameterr3   r   r   r#   r7   r8   r9   r   r   arrayr*   r&   _s      r   test_t_values_limits'TestGeometricSlerp.test_t_values_limits   sL     ]]:-FGbhh1v&6$&HHaV$4"#%A HGGs   8A
A)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%   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&   re   )r7   r8   r9   r   r   r]   r'   r*   re   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   ri   )r   r   r]   r'   rj   s      r   test_tol_sign TestGeometricSlerp.test_tol_sign   s@     "((Aq6"2 "!Q 0 kk!Q2 #%r   )zo ?r   r   )r   !?r   )rp   r   r   r   )r   rq   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 )NrZ   i  r   r5   r#   )
r   r   r   maxflipudarangeshufflecopyr   r   )r*   r$   r%   ru   
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   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#   r\   r^   s      r   test_t_values_conversion+TestGeometricSlerp.test_t_values_conversion5  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   r]   sqrtfloat64r   r*   r+   rN   s      r   test_accept_arraylike(TestGeometricSlerp.test_accept_arraylikeB  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   r]   r   r   r(   r   r   s      r   test_scalar_t TestGeometricSlerp.test_scalar_tV  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_input`  s     ::a=!z*e!< +* VVI+Ewwu,H$5qAFF- -5DbDkQON;;."5"5555 +*s   C
Ckir/   r5   c                 j   [         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                  R                  5        nUR                  [        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   gC]r2<r	   gV瞯<)r   pir'   r]   cossintestingsuppress_warningsfilterrM   r   r   r   rw   abs)
r*   r   angletsPQsupresultnormserrors
             r   test_numerical_stability_pi.TestGeometricSlerp.test_numerical_stability_pi}  s    
 	[[As#HH\"HHbffUmRVVE]Aq9: ZZ))+sJJ{#$Q2u5FIINN6N2EFF266%!),-E5= = ,++s   $A6D$$
D2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   r]   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- N)#__name__
__module____qualname____firstlineno__r7   markparametrizer,   r0   r   zerosonesr;   r]   r@   rD   thread_unsaferP   r   rX   r'   r`   rc   rk   rn   rs   logspacer   r   r   r   r   r   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 [[S
CS!
GVR(	#
 %% [[\	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<.	# !	!r   r   )r   r   )	numpyr   numpy.testingr   r7   scipy.spatialr   r   r   r   r   r   <module>r      s"     )  ) N! N!r   