
    _Mh+@                     P    d dl Zd dlmZ d dlZd dlmZ d	dZ G d d          ZdS )
    N)assert_allclose)geometric_slerp      c                    t           j                            d           t           j                            || f          }|t           j                            |d          d d t           j        f         z  }|d         |d         fS )N{   )size   axisr   )nprandomseednormallinalgnormnewaxis)ndimn_ptspointss      ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_slerp.py_generate_spherical_pointsr      sr    
 INN3YE4=11F
binnV!n,,QQQ
];;F!9fQi    c                   v   e Zd Zej                            dg d          ej                            dg d          d                         Zej                            dg d          ej                            dddg          d                         Zej                            d	 ej	        d
           ej
        d
          f ej	        d
           ej
        d          f ej	        d           ej
        d          fg          d             Zej                            d	 ej	        d           ej
        d          f ej	        d           ej
        d          f ej        g            ej
        d          fg          d             Zej                            d	 ej        g            ej        g           fg          d             Zej        j        ej                            d ej        g d           ej        g d          df ej        g d           ej        g d          df ej        g d           ej        g d          dfg          d                         Zej                            d ej        ddg           ej        ddg           ej        ddg ej        d          dz  dgd ej        d          dz  gddgg          f ej        g d           ej        g d           ej        g d ej        d          dz  ddgd ej        d          dz  dgg dg          f ej        g d           ej        g d           ej        g d ej        d          dz  ddddgd ej        d          dz  dddgg dg          fg          d              Zej                            d! ej        d"d#d$           ej        d%d&d          g          d'             Zej                            d	 ej        dg           ej        dg          f ej        dg           ej        dg          f ej        d(g           ej        d)g          fg          d*             Zej                            d+d,d-g d. ej        d/          g          d0             Zej                            d+d1d2g          d3             Zej                            d	 ej        ddg           ej        ddg          f ej        g d4           ej        g d5          f ej        g d6           ej        g d7          fg          d8             Zej                            d	 ej        ddg           ej         ej        d          d9z   ej        d          d9z  g          f ej        ddg           ej         ej        d           d9z   ej        d          d9z  g          fg          ej                            d:ej        ej        g          d;                         Zej                            d!d<g          d=             Zd> Zd? Zej                            d@ ej        g d           ej        ddg          g          ej                            d! ej        d           ej        dg           ej        dgg           ej        dggg           ej        g            ej        ddd,          g          dA                         Zej                            dB ej        dCdDdE                    dF             Zej                            d!ddggddgggggggggg          dG             Z dHS )ITestGeometricSlerpn_dims)r   r         	   r   )r   r      c           	          t          |d          \  }}t          ||t          j        dd|                    }|j        ||fk    sJ d S )Nr   r   r
   startendt)r   r   r   linspaceshapeselfr   r   r#   r$   actuals         r   test_shape_propertyz&TestGeometricSlerp.test_shape_property   s`     0::
s u%(#%;q!U#;#;= = = |v......r   r   r    c           	          t          |d          \  }}t          ||t          j        dd|                    }t	          |d         |           t	          |d         |           d S )Nr   r   r
   r"   )r   r   r   r&   r   r(   s         r   test_include_endsz$TestGeometricSlerp.test_include_ends$   sq     0::
s u%(#%;q!U#;#;= = = 	q	5)))r
C(((((r   z
start, end)r
   r   r
   )r   r
   c           
          t          j        t          d          5  t          ||t	          j        ddd                     d d d            d S # 1 swxY w Y   d S )Nzone-dimensionalmatchr   r
   
   r"   pytestraises
ValueErrorr   r   r&   r)   r#   r$   s      r   test_input_shape_flatz(TestGeometricSlerp.test_input_shape_flat9   s     ]:->??? 	5 	5% # k!Q335 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5   'AAAr   r   c           
          t          j        t          d          5  t          ||t	          j        ddd                     d d d            d S # 1 swxY w Y   d S )N
dimensionsr0   r   r
   r2   r"   r3   r7   s      r   test_input_dim_mismatchz*TestGeometricSlerp.test_input_dim_mismatchI   s     ]:\::: 	5 	5% # k!Q335 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r9   c           
          t          j        t          d          5  t          ||t	          j        ddd                     d d d            d S # 1 swxY w Y   d S )Nat least two-dimr0   r   r
   r2   r"   r3   r7   s      r   test_input_at_least1dz(TestGeometricSlerp.test_input_at_least1dZ   s     ]:-?@@@ 	5 	5% # k!Q335 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r9   zstart, end, expected)r   r         ?)r   r   g      warning)        gԬ3ODgkꚛ?)rB   g{tOgx?successc           
      p   |dk    rZt          j        t          d          5  t          ||t	          j        ddd                    }d d d            n# 1 swxY w Y   n&t          ||t	          j        ddd                    }t          t          j                            |d          d	           d S )
NrA   	antipodesr0   r   r
   r2   r"   r   r@   )	r4   warnsUserWarningr   r   r&   r   r   r   )r)   r#   r$   expectedress        r   test_handle_antipodesz(TestGeometricSlerp.test_handle_antipodesg   s    6 y  k=== ? ?%E*-(*Aq"(=(=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
 "&)$&K1b$9$9; ; ;C 		s33S99999s   'AAAr         ?)r
   r   r   )r   r
   r   )r
   r   r   r   r   )r   r
   r   r   r   c           	      v    t          ||t          j        ddd                    }t          ||d           d S )Nr   r
      r"   缉ؗҜ<atol)r   r   r&   r   )r)   r#   r$   rH   r*   s        r   test_straightforward_examplesz0TestGeometricSlerp.test_straightforward_examples   sL    D !u%(#%;q!Q#7#79 9 9 	u555555r   r%   i   i,  g-C6g-C6?c                     t          j        t          d          5  t          t	          j        ddg          t	          j        ddg          |          }d d d            d S # 1 swxY w Y   d S )Nzinterpolation parameterr0   r
   r   r"   r4   r5   r6   r   r   arrayr)   r%   _s      r   test_t_values_limitsz'TestGeometricSlerp.test_t_values_limits   s     ]:-FGGG 	% 	%bh1v&6&6$&HaV$4$4"#% % %A	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   ;A$$A(+A(g333331g̼d@c           
          t          j        t          d          5  t          ||t	          j        ddd                    }d d d            d S # 1 swxY w Y   d S )Nr>   r0   r   r
   rM   r"   r3   )r)   r#   r$   rW   s       r   test_0_sphere_handlingz)TestGeometricSlerp.test_0_sphere_handling   s     ]:-?@@@ 	8 	8e$'"$+aA"6"68 8 8A	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8r9   tolr   7)r      r   g      "@c           
         t          j        t          d          5  t          t	          j        ddg          t	          j        ddg          t	          j        ddd          |          }d d d            d S # 1 swxY w Y   d S )Nzmust be a floatr0   r
   r   r   r#   r$   r%   r[   )r4   r5   r6   r   r   rU   r&   r)   r[   rW   s      r   test_tol_typez TestGeometricSlerp.test_tol_type   s     ]:->??? 	) 	)bh1v&6&6$&HaV$4$4"$+aA"6"6$') ) )A	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AA99A= A=gh㈵ԾgƜCc           	          t          t          j        ddg          t          j        ddg          t          j        ddd          |          }d S )Nr
   r   r   r_   )r   r   rU   r&   r`   s      r   test_tol_signz TestGeometricSlerp.test_tol_sign   sQ     "(Aq6"2"2 "!Q 0 0 k!Q22 #% % %r   )zo ?r   r   )r   !?r   )rd   r   r   r   )r   re   r   r   c           
          t          j        t          d          5  t          ||t	          j        ddd                     d d d            d S # 1 swxY w Y   d S )Nzunit n-spherer0   r   r
   r   r"   r3   r7   s      r   test_unit_sphere_enforcementz/TestGeometricSlerp.test_unit_sphere_enforcement   s      ]:_=== 	4 	4% # k!Q224 4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4r9   g       @t_funcc                 .   d}t           j                            d            |dd|          }||                                z  }t          j        |          }t          j        |          }t           j                            |           |                                |         }t          |||          }	t          |||          }
t          |||          }t          |	t          j        |
                     t          |	|         |           d S )NrR   i  r   r2   r"   )
r   r   r   maxflipudarangeshufflecopyr   r   )r)   r#   r$   rh   
num_t_valsforward_t_valsreverse_t_valsshuffled_indicesscramble_t_valsforward_resultsreverse_resultsscrambled_resultss               r   test_order_handlingz&TestGeometricSlerp.test_order_handling  s/   ( 

	s2z22.,,...>229Z00
	*+++(--//0@A).1,:< < < *.1,:< < < ,%03.=? ? ?
 	?)C)CDDD(89)	+ 	+ 	+ 	+ 	+r   z15, 5, 7c                     t          j        t                    5  t          t	          j        dg          t	          j        dg          |          }d d d            d S # 1 swxY w Y   d S )Nr
   r   r"   rT   rV   s      r   test_t_values_conversionz+TestGeometricSlerp.test_t_values_conversion5  s     ]:&& 	% 	%bhsmm$&HaSMM"#% % %A	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   9A  A$'A$c           	      ^   t          ddgddgg d          }t          j        ddgt          j        d          dz  dgt          j        d          dz  t          j        d          dz  gdt          j        d          dz  gddggt          j                  }t          ||d	           d S )
Nr
   r   )r   gUUUUUU?rK   gUUUUUU?r
   r   r   rK   dtyperN   rO   )r   r   rU   sqrtfloat64r   r)   r*   rH   s      r   test_accept_arraylikez(TestGeometricSlerp.test_accept_arraylikeB  s     !!Q!Q1F1F1FGG
 8aV gajj1nc2 gajj1n gajj1n.!271::>2V%
 -/J8 8 8 	u555555r   c                    t          ddgddgd          }t          j        t          j        d          dz  t          j        d          dz  gt          j                  }|j        dk    sJ t          ||           d S )Nr
   r   rK   r   r{   )r   )r   r   rU   r}   r~   r'   r   r   s      r   test_scalar_tz TestGeometricSlerp.test_scalar_tV  s     !!Q!Q558RWQZZ!^WQZZ!^-46J@ @ @|t####)))))r   r#   c                    t          j        |          j        dk    rFt          j        t
                    5  t          |||           d d d            d S # 1 swxY w Y   d S |j        f|j        z   }t          j	        ||          }t          |||          }t          ||           t          ||d d d         |          }|j        |j        k    sJ d S )Nr
   r"   r-   )r   asarrayr   r4   r5   r6   r   r	   r'   fullr   )r)   r#   r%   r'   rH   r*   non_degenerates          r   test_degenerate_inputz(TestGeometricSlerp.test_degenerate_input`  s&    :a==!!z** = =e!<<<<= = = = = = = = = = = = = = = = = = VI+Ewue,,H$5eqAAAFFH--- -5eDDbDkQOOON;."5555555s   AAAkir-   r2   c                 `   t           j        |z
  }t          j        ddd          }t          j        g d          }t          j        t          j        |          t          j        |          ddg          }t           j                                        5 }|                    t                     t          |||d          }t           j                            |d          }t          j        t          j        |dz
                      }	|	dk     sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r
   d   )r
   r   r   r   gC]r2<r   gV瞯<)r   pir&   rU   cossintestingsuppress_warningsfilterrG   r   r   r   rj   abs)
r)   r   angletsPQsupresultnormserrors
             r   test_numerical_stability_piz.TestGeometricSlerp.test_numerical_stability_pi}  s<   
 	[As##H\\\""HbfUmmRVE]]Aq9:: Z))++ 	!sJJ{###$Q2u55FINN6N22EF26%!),,--E5=====	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   A?D##D'*D'c                 l   t          j        ddg          }t          j        ddg          }t          j        t                    5  t          |||           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||           d d d            d S # 1 swxY w Y   d S )Nr   r
   r"   )r   rU   r4   r5   r6   r   )r)   r%   arr1arr2s       r   test_interpolation_param_ndimz0TestGeometricSlerp.test_interpolation_param_ndim  sC    xAxA]:&& 	! 	!$ $! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
 ]:&& 	! 	!$ $! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s$   A%%A),A)	B))B-0B-N)!__name__
__module____qualname__r4   markparametrizer+   r.   r   zerosonesr8   rU   r<   r?   thread_unsaferJ   r}   rQ   r&   rX   rZ   ra   rc   rg   logspacerw   ry   r   r   r   r   r    r   r   r   r      s
        [X77[Wjjj11
/ 
/ 21 87
/ [X77[Wq"g..) ) /. 87)& [\	&		7276??+	&		7271::&	!gbgfoo&,
  5 5 5 [\	!gbgajj!	!gbgajj!	"wrwqzz",
  5 5 5 [\	"xrx||$,
  5 5	 5 [[3 
+++		 6 6	B 
 " " " 
# 
#$,BH\\\$:$:I	G 
 " " " 
# 
#$,BH\\\$:$:I	G%6
  ,: :-  .:& [3 
1a&			1a&			Aq6BGAJJNC(a(q6 
 
	 
)))			)))			999BGAJJNC+a+99 
 
	  
///	"	"	///	"	"	???BGAJJNCAq1aAq1"??$ 
% 
%	&+6  :6 6; :6 [SCS!!GVR((	#
  % % % [\	1#	1#		1#	1#		5'			5'			,  8 8 8 [U			828C==%
  ) ) ) [U%
  % %	 % [\ 
1a&		828QF++, 
"""	#	#	"""	#	#	% 
%%%	&	&	%%%	&	&	(,
  4 4 4 [\	1a&			7271::?271::?$ 
% 
%	& 
1a&			GBGAJJ;#271::?$ 
% 
%	&	,
 	 	 [X
R[(" # #+ +# #	 	+B [S#
  % % %6 6 6(* * * [W!Q'   [S!1#A3%Aq!#  6 6 	 6" [S+"+c2r":":;;! ! <;!$ [S#hZXJ<.	#  ! !	 ! ! !r   r   )r   r   )	numpyr   numpy.testingr   r4   scipy.spatialr   r   r   r   r   r   <module>r      s        ) ) ) ) ) )  ) ) ) ) ) )       N! N! N! N! N! N! N! N! N! N!r   