
    -iiH                     `    d dl Z d dlZ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      d/var/www/html/bet.cuttalo.com/ml/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                      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                            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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          d)             Zej                            d$d*d+g          d,             Zej                            d	 ej        ddg           ej        ddg          f ej        g d-           ej        g d.          f ej        g d/           ej        g d0          fg          d1             Zej                            d	 ej        ddg           ej         ej        d          d2z   ej        d          d2z  g          f ej        ddg           ej         ej        d           d2z   ej        d          d2z  g          fg          ej                            d3ej        ej        g          d4                         Zej                            d5d6g          d7             Zd8 Zd9 Zej                            d: ej        g d           ej        ddg          g          ej                            d5 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          d;                         Zej                            d< ej        d=d>d?                    d@             Zej                            d5ddggddgggggggggg          dA             Zej                            dBddgddgddd>gfddg ej        d          dz   ej        d          dz  gdCdd>gfddg ej        d          dz   ej        d          dz  gdDd>dgfddg ej        d          dz   ej        d          dz  gd ej        d           dz   ej        d          dz  gfddg ej        d          dz   ej        d          dz  gg dE ej        d           dz   ej        d          dz  gd>dgdd>ggfg d ej        d          dz   ej        d          dz  dgg dE ej        d           dz   ej        d          dz  dgg dFg dGgfddg ej        d          dz   ej        d          dz  gdH ej        d          dz  dgfg          dI             Z ej                            dBg dJg dKdLg dJfg dJg dKd>g dKfg          dM             Z!dNS )O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_flat<   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_mismatchL   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_least1d]   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_antipodesj   s    4 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   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$   _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%   rU   )r4   r5   r6   r   r   arrayr&   r)   rU   rS   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   rY   )r   r   rZ   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   )r_   r   r   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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 )N   i  r   r2   r"   )
r   r   r   maxflipudarangeshufflecopyr   r   )r)   r#   r$   rc   
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   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"   )r4   r5   r6   r   r   rZ   )r)   r%   rS   s      r   test_t_values_conversionz+TestGeometricSlerp.test_t_values_conversion)  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   rZ   sqrtfloat64r   r)   r*   rH   s      r   test_accept_arraylikez(TestGeometricSlerp.test_accept_arraylike6  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   rw   )r   )r   r   rZ   ry   rz   r'   r   r{   s      r   test_scalar_tz TestGeometricSlerp.test_scalar_tJ  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_inputT  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                 J   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          j        d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   ignoregC]r2<r   gV瞯<)r   pir&   rZ   cossinwarningscatch_warningssimplefilterrG   r   r   r   rf   abs)	r)   r   angletsPQresultnormserrors	            r   test_numerical_stability_piz.TestGeometricSlerp.test_numerical_stability_piq  s;   
 	[As##H\\\""HbfUmmRVE]]Aq9:: $&& 	! 	!!(K888$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   rZ   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-zstart, end, t, expectedrM   rW   )r   rW   rM   )r-   r   r   )r   r-   r   gc                 N    t          |||          }t          ||d           d S )Nr"   gؗҬ<rO   )r   r   r)   r#   r$   r%   rH   actual_paths         r   test_extrapolation_basicz+TestGeometricSlerp.test_extrapolation_basic  s>    H &E*-()+ + + 	XE::::::r   )r   r   r
   )r   r   r-   c                     t          j        t          d          5  t          |||          }d d d            n# 1 swxY w Y   t	          ||d           d S )NrE   r0   r"   g}-<rO   )r4   rF   rG   r   r   r   s         r   test_extrapolation_antipodesz/TestGeometricSlerp.test_extrapolation_antipodes  s     \+[999 	E 	E)3!DDDK	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EXG<<<<<<s   ;??N)"__name__
__module____qualname__r4   markparametrizer+   r.   r   zerosonesr8   rZ   r<   r?   rJ   ry   rQ   rT   r\   r^   rb   r&   logspacers   ru   r|   r~   r   r   r   mathr   r    r   r   r   r      sQ        [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 [\	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<.	#  ! !	 !  [6 Q!QQG$ Q)$)A,,q.)$)A,,q.11q"g>
Q)$)A,,q.)$)A,,q.11r1g>
Q)$)A,,q.)$)A,,q.1149Q<<-/949Q<<>	*	, Q
$)A,,q.)$)A,,q.	)	DIaLL=?IDIaLLN
+q'b'
	 

$)A,,q.)$)A,,q.!	,	DIaLL=?IDIaLLNA
.
**
**
	 Q)$)A,,q.)$)A,,q.1Gyty||A~s>STC"9 " "F; ;G" "F; [6 YY


B			* YY


B


+9  = = = = =r   r   )r   r   )r   r   numpyr   numpy.testingr   r4   scipy.spatialr   r   r   r   r   r   <module>r      s          ) ) ) ) ) )  ) ) ) ) ) )       {= {= {= {= {= {= {= {= {= {=r   