
    _Mh<                         d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dl	m
Z
mZ d dlmZ d dlmc mZ d dlmc mZ d dlZd dlZej        dk     Zd Z G d d	          Z G d
 d          Z G d d          ZdS )    N)suppress_warnings)raises)xp_assert_closeassert_almost_equal)check_free_memoryl        c                     t           j                            t           j                            t           j                            t
                              d|           S )Ndata)ospathjoinabspathdirname__file__)basenames    e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_interpnd.py	data_filer      s=    7<<(A(ABB* * *    c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej        j        ej        j        ej                            ed          d                                     ZdS )TestLinearNDInterpolationc                     t          j        g dt           j                  }t          j        |j        d         t           j                  } t          j        ||          |          }t          ||           d S )Nr   r   )      r   )r         ?)r   r   )      ?333333?dtyper   nparrayfloat64arangeshapeinterpndLinearNDInterpolatorr   selfxyyis       r   test_smoketestz(TestLinearNDInterpolation.test_smoketest   st    HNNN:' ' 'Iagaj
3330X*1a0033Ar"""""r   c                 R   t          j        g dt           j                  }t          j        |j        d         t           j                  } t          j        |d d df         |d d df         f|          |d d df         |d d df                   }t          ||           d S )Nr   r   r      r   r'   s       r   test_smoketest_alternatez2TestLinearNDInterpolation.test_smoketest_alternate#   s    HNNN:' ' 'Iagaj
333?X*AaaacFAaaacF+;Q??!!!A#!!!A#OOAr"""""r   c                    t          j        g dt           j                  }t          j        |j        d         t           j                  }|d|z  z
  } t          j        ||          |          }t          ||           d S Nr   r   r                 @r   r'   s       r   test_complex_smoketestz0TestLinearNDInterpolation.test_complex_smoketest,   s    HNNN:' ' 'Iagaj
3331H0X*1a0033Ar"""""r   c                 N   t          j        g dt           j                  }t          j        |j        d         t           j                  }|d|z  z
  }t          j        |          }t          j        ||          } ||          }t          ||           |j
        |u sJ d S r1   )r    r!   r"   r#   r$   qhullDelaunayr%   r&   r   tri)r(   r)   r*   r7   interpolatorr+   s         r   test_tri_inputz(TestLinearNDInterpolation.test_tri_input6   s    HNNN:' ' 'Iagaj
3331HnQ4S!<<\!__Ar"""3&&&&&&r   c                 \   t          j        g dt           j                  }t          j        g dt           j                  fd}t          j        t          j        ddd          d d d f         t          j        ddd          d d d f                   \  }}|                                }|                                }t          j        ||g          j                                        } t          j	        |          |          }t          | |||                     d S )N)r   r   r.   r.   r.   r.   r   r   g      ?g       @g      g      @c                 &   | |z   dk    }| }| |         }||         }| |         }||         }d| z  }	d         d|z
  |z
  z  	d         |z  z   	d         |z  z   ||<   	d         ||z   dz
  z  	d         d|z
  z  z   	d         d|z
  z  z   ||<   |S )Nr.   r          )
r)   r*   t1t2x1y1x2y2zvaluess
            r   ipz1TestLinearNDInterpolation.test_square.<locals>.ipQ   s    a%1*BB2B2B2B2B!AAYB,ay|$ay|$AbE AYR!,ay!b&)*ay!b&)*AbE Hr   r   r.      r    r!   r"   broadcast_arrayslinspaceravelTcopyr%   r&   r   )r(   pointsrK   xxyyxizirJ   s          @r   test_squarez%TestLinearNDInterpolation.test_squareC   s%    666bjIII+++2:>>>	 	 	 	 	* $R[Ar%:%:111T6%B%'[Ar%:%:46%BD DBXXZZXXZZXr2h!&&((:X*66::2>>B2r

+++++r   c                     t          j        g dt           j                  }t          j        |j        d         t           j                  } t          j        ||d          |          }t          ||           d S )Nr   )r[   )r[      )r\   r\   )g      @r@   r   r   Trescaler   r'   s       r   test_smoketest_rescalez0TestLinearNDInterpolation.test_smoketest_rescalep   sy    HBBB:' ' 'Iagaj
333>X*1a>>>qAAAr"""""r   c                 |   t          j        g dt           j                  }t          j        g dt           j                  }t          j        t          j        ddd          d d d f         t          j        ddd          d d d f                   \  }}|                                }|                                }t          j        ||g          j                                        } t          j	        ||          |          } t          j	        ||d	          |          }t          ||           d S )
N)r   )r   d   )
   ra   )rb   r   r   r>   r   rb   rL   ra   Tr]   rM   )r(   rS   rJ   rT   rU   rV   rW   zi_rescaleds           r   test_square_rescalez-TestLinearNDInterpolation.test_square_rescaley   s0    <<<BJOOO+++2:>>>$R[B%;%;AAAdF%C%'[C%<%<T!!!V%DF FBXXZZXXZZXr2h!&&((:X*66::2>>h3FF   " " 	B,,,,,r   c                    t          j        g dt           j                  }t          j        |j        d         t           j                  }|d|z  z
  }t          j        |          } t          j        |j	        |          |          } t          j        |j	        |d          |          }t          ||           d S NrZ   r   r   r2   Tr]   )r    r!   r"   r#   r$   r5   r6   r%   r&   rS   r   r(   r)   r*   r7   r+   
yi_rescales         r   test_tripoints_input_rescalez6TestLinearNDInterpolation.test_tripoints_input_rescale   s    H???:' ' 'Iagaj
3331HnQ9X*3:q99!<<X23:q  ! !
B
+++++r   c                    t          j        g dt           j                  }t          j        |j        d         t           j                  }|d|z  z
  }t          j        |          }d}t          j        t          |          5   t          j        ||d          |           d d d            d S # 1 swxY w Y   d S 	NrZ   r   r   r2   zORescaling is not supported when passing a Delaunay triangulation as ``points``.)matchTr]   )r    r!   r"   r#   r$   r5   r6   pytestr   
ValueErrorr%   r&   r(   r)   r*   r7   rl   s        r   test_tri_input_rescalez0TestLinearNDInterpolation.test_tri_input_rescale   s   H???:' ' 'Iagaj
3331HnQ9]:U333 	C 	C?H)#q$???BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C   !B55B9<B9c                    t           j                            d           t           j                            dd          }t           j                            d          dt           j                            d          z  z   }t	          j        ||          }t          j        t          j        |                    }t           |dd           |dd                     d S N     rA   y              ?r   )
r    randomseedrandr%   r&   pickleloadsdumpsr   )r(   r)   r*   rK   ip2s        r   test_picklez%TestLinearNDInterpolation.test_pickle   s    
	tINN2q!!INN2BINN2$6$6!66*1a00l6<++,,BBsCLL##c3--88888r   zit fails on 32-bit)reasonc           	      p   t          d           t          j        ddd          }t          j        ddd          }t          j        ||          \  }}d }t          j        |                                |                                f          j        }||z                                  }t          j        ||          }t          j
        ||t          dd          t          dd          f          }	t          j
        ||t          dd          t          dd          f          }
t          j
        ||t          dd          t          dd          f          }t          j
        ||t          dd          t          dd          f          }|	                                 |
                                 |                                 |                                 |	                                 |
                                 |                                 |                                 d S )Ni'  r   ih  rb   c                 N    t           j        ||f         \  }} | ||f          }|S N)r    mgrid)r8   
slice_rows
slice_colsgrid_xgrid_yress         r   	do_interpz;TestLinearNDInterpolation.test_threading.<locals>.do_interp   s0    Xj*&<=NFF,/00CJr   i4  )targetargs)r   r    r#   meshgridvstackrP   rQ   r%   r&   	threadingThreadslicestartr   )r(   r_ticks	phi_ticksr_gridphi_gridr   rS   rJ   r8   worker_thread_1worker_thread_2worker_thread_3worker_thread_4s                r   test_threadingz(TestLinearNDInterpolation.test_threading   s2    	%   )AtR((Iar**	;w	::	 	 	
 FLLNNHNN,<,<=>>@8#**,,4VVDD#*aa?A A A $*dD 1 15D>>BD D D $*adD0A0ABD D D $*dD 1 15t3D3DEG G G 	r   N)__name__
__module____qualname__r,   r/   r3   r9   rX   r_   rd   ri   rp   r}   rm   markslowthread_unsafeskipif	_IS_32BITr   rB   r   r   r   r      s       # # ## # ## # #' ' '+, +, +,Z# # #- - -$, , ,C C C	9 	9 	9 [[[	*>??' ' @?  ' ' 'r   r   c                       e Zd Zd Zd ZdS )TestEstimateGradients2DGlobalc           	         t          j        g dt                    }t          j        |          }d dfd dfd dfd	 d
fg}t          |          D ]\  }\  }} ||d d df         |d d df                   }t          j        ||d          }|j        dk    sJ t          |t          j        |          d d d f         d|z  z   ddd|z             d S )N)r   )r   rA   r=   )r.   rA   r   g      ?g333333?g?r   c                     d| z  dz   S Nr   r.   rB   r)   r*   s     r   <lambda>z>TestEstimateGradients2DGlobal.test_smoketest.<locals>.<lambda>   s    !A#' r   r   c                     d| z   S Nr   rB   r   s     r   r   z>TestEstimateGradients2DGlobal.test_smoketest.<locals>.<lambda>   s
    !a% r   r=   c                     d|z   S NrB   r   s     r   r   z>TestEstimateGradients2DGlobal.test_smoketest.<locals>.<lambda>   s
    "q& r   r;   c                     dd| z  z   d|z  z   S Nr@   L,@rB   r   s     r   r   z>TestEstimateGradients2DGlobal.test_smoketest.<locals>.<lambda>   s    !ac'E!G+ r   )r@   r   r   r.   ư>)tol)   rA   gh㈵>zitem %d)rtolatolerr_msg)
r    r!   floatr5   r6   	enumerater%   estimate_gradients_2d_globalr$   r   )	r(   r)   r7   funcsjfuncgradrI   dzs	            r   r,   z,TestEstimateGradients2DGlobal.test_smoketest   sD   H @ @ @GLN N NnQ
 "!6*(  &)++Z8	
  )// 	I 	IOA|dQqqqsVQqqqsV$$A6sA4HHHB8v%%%%BtAAAv 62 =!%D)a-I I I I I	I 	Ir   c                    t          j        t          d                    }t           j                            |j        d                   }t          j        |          }t                      5 }|	                    t          j        d           t          j        ||d           d d d            d S # 1 swxY w Y   d S )Nzestimate_gradients_hang.npyr   z$Gradient estimation did not converger.   )maxiter)r    loadr   rv   rx   r$   r5   r6   r   filterr%   GradientEstimationWarningr   )r(   rS   rJ   r7   sups        r   test_regression_2359z2TestEstimateGradients2DGlobal.test_regression_2359   s     #@AABBQ00nV$$    	JCJJx9=? ? ?1#vqIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   .8B33B7:B7N)r   r   r   r,   r   rB   r   r   r   r      s:        I I I,J J J J Jr   r   c                       e Zd Z	 	 ddZd Zd Zd Zd Zd	 Ze	j
                            d
          d             Zd Zd Zd ZdS )TestCloughTocher2DInterpolatorNr   Fc           	         t           j                            d          }|t          j        g dt                    }|s7t          j        | ||d d df         |d d df                   d|          }nLt          j        |d d df         |d d df         f ||d d df         |d d df                   d|          }|                    dd	          }	|s ||	          }
n  ||	d d df         |	d d df                   }
 ||	d d df         |	d d df                   }	 t          |
|fi | d S # t          $ r7 t          d
t          |
|z
                       t          d|j                    w xY w)Nrt   )r   r;   r=   r<   r   r   )r   g?r   r   r.   r   )r   r^   2   rA   z_check_accuracy: abs(a-b):zip.grad:)r    rv   RandomStater!   r   r%   CloughTocher2DInterpolatorrx   r   AssertionErrorprintabsr   )r(   r   r)   r   	alternater^   kwrngrK   pabs               r   _check_accuracyz.TestCloughTocher2DInterpolator._check_accuracy  s   i##D))9 & & &  %& & &A
  	P4QQqqqsVQqqqsV8L8L9=wP P PBB 4a!fa!f5E59T!AAAaC&!AAAaC&5I5I9=wP P PB HHROO 	#1AA1QQQqS61QQQqS6""AD111Q3111Q3  	Aq''B''''' 	 	 	.AE

;;;*bg&&&	s   )D9 9AE:c                 4   d d d d g}t          |          D ]}\  }}|                     |dddd|z             |                     |dddd	d
|z             |                     |dddd|z  d	           |                     |dddd	d	d|z             ~d S )Nc                     d| z  dz   S r   rB   r   s     r   r   zFTestCloughTocher2DInterpolator.test_linear_smoketest.<locals>.<lambda>(  s    1q r   c                     d| z   S r   rB   r   s     r   r   zFTestCloughTocher2DInterpolator.test_linear_smoketest.<locals>.<lambda>)  s
    Q r   c                     d|z   S r   rB   r   s     r   r   zFTestCloughTocher2DInterpolator.test_linear_smoketest.<locals>.<lambda>*  s
    a r   c                     dd| z  z   d|z  z   S r   rB   r   s     r   r   zFTestCloughTocher2DInterpolator.test_linear_smoketest.<locals>.<lambda>+  s    QqS57* r   gvIh%<=gHz>Function %dr   r   r   r   TzFunction (alternate) %d)r   r   r   r   r   zFunction (rescaled) %dr   r   r   r   r^   z!Function (alternate, rescaled) %d)r   r   r   r   r^   r   r   r   r(   r   r   r   s       r   test_linear_smoketestz4TestCloughTocher2DInterpolator.test_linear_smoketest%  s    ! **	
 !'' 	R 	RGAt  5t$)6): ! < < <  5t$+/)BQ)F ! H H H   5t$)AA)Et ! U U U  5t$+/)Lq)P ! R R R R	R 	Rr   c           	          d d d d g}t          |          D ]@\  }}|                     |dddd|z  	           |                     |dddd|z  d
           Ad S )Nc                     | dz  S NrA   rB   r   s     r   r   zITestCloughTocher2DInterpolator.test_quadratic_smoketest.<locals>.<lambda>>  
    A r   c                     |dz  S r   rB   r   s     r   r   zITestCloughTocher2DInterpolator.test_quadratic_smoketest.<locals>.<lambda>?  r   r   c                     | dz  |dz  z
  S r   rB   r   s     r   r   zITestCloughTocher2DInterpolator.test_quadratic_smoketest.<locals>.<lambda>@      A1 r   c                     | |z  S r   rB   r   s     r   r   zITestCloughTocher2DInterpolator.test_quadratic_smoketest.<locals>.<lambda>A  
    1 r   &.>g)\(?r   r   r   Tr   r   r   s       r   test_quadratic_smoketestz7TestCloughTocher2DInterpolator.test_quadratic_smoketest;  s     $$	
 !'' 	J 	JGAt  4d)6): ! < < <  4d)6):D ! J J J J	J 	Jr   c                 4   t          j        g dt           j                  }t          j        |j        d         t           j                  }|d|z  z
  }t          j        |          } t          j        ||          |          }t          ||           d S r1   )
r    r!   r"   r#   r$   r5   r6   r%   r   r   )r(   r)   r*   r7   r+   s        r   r9   z-TestCloughTocher2DInterpolator.test_tri_inputJ  s    HNNN:' ' 'Iagaj
3331HnQ8X0a88;;Ar"""""r   c                    t          j        g dt           j                  }t          j        |j        d         t           j                  }|d|z  z
  }t          j        |          }d}t          j        t          |          5   t          j        ||d          |           d d d            d S # 1 swxY w Y   d S rk   )r    r!   r"   r#   r$   r5   r6   rm   r   rn   r%   r   ro   s        r   rp   z5TestCloughTocher2DInterpolator.test_tri_input_rescaleU  s   H???:' ' 'Iagaj
3331HnQ9]:U333 	I 	IEH/QEEEaHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Irq   c                    t          j        g dt           j                  }t          j        |j        d         t           j                  }|d|z  z
  }t          j        |          } t          j        |j	        |          |          } t          j        |j	        |d          |          }t          ||           d S rf   )r    r!   r"   r#   r$   r5   r6   r%   r   rS   r   rg   s         r   ri   z;TestCloughTocher2DInterpolator.test_tripoints_input_rescaleb  s    H???:' ' 'Iagaj
3331HnQ?X0Q??BBUX8QPTUUUVWXX
B
+++++r   r\   c           
         d d d d d g}t           j                            d          }t           j        t          j        g dt
                    |                    d	d
          f         }t          |          D ]B\  }}|                     ||dddd|z             |                     ||dddd|z  d           Cd S )Nc                     | dz  S r   rB   r   s     r   r   z;TestCloughTocher2DInterpolator.test_dense.<locals>.<lambda>r  r   r   c                     |dz  S r   rB   r   s     r   r   z;TestCloughTocher2DInterpolator.test_dense.<locals>.<lambda>s  r   r   c                     | dz  |dz  z
  S r   rB   r   s     r   r   z;TestCloughTocher2DInterpolator.test_dense.<locals>.<lambda>t  r   r   c                     | |z  S r   rB   r   s     r   r   z;TestCloughTocher2DInterpolator.test_dense.<locals>.<lambda>u  r   r   c                     t          j        dt           j        z  | z            t          j        dt           j        z  |z            z  S r   )r    cospisinr   s     r   r   z;TestCloughTocher2DInterpolator.test_dense.<locals>.<lambda>v  s3    "%	**26!BE'!)+<+<< r   i  )r   r;   r=   r<   r   i  rA   r   g{Gzt?g{Gz?r   )r)   r   r   r   r   T)r)   r   r   r   r   r^   )	r    rv   r   r_r!   r   rx   r   r   )r(   r   r   gridr   r   s         r   
test_densez)TestCloughTocher2DInterpolator.test_densen  s    $$<<
 i##D))uRX:::%HHHXXeQ''( ) !'' 	J 	JGAt  4d)6): ! < < <  4d)6):D ! J J J J	J 	Jr   c                     t           j                            dd          }t           j                            d          }t          t          t
          j        ||           d S )Nru   r@   )r    rv   randnassert_raisesrn   r%   r   )r(   r)   r*   s      r   test_wrong_ndimz.TestCloughTocher2DInterpolator.test_wrong_ndim  sG    IOOB""IOOBj("Eq!LLLLLr   c                    t           j                            d          }|                    dd          }|                    d          d|                    d          z  z   }t	          j        ||          }t          j        t          j        |                    }t           |dd           |dd                     d S rs   )
r    rv   r   rx   r%   r   ry   rz   r{   r   )r(   r   r)   r*   rK   r|   s         r   r}   z*TestCloughTocher2DInterpolator.test_pickle  s    i##D))HHROOHHRLL2chhrll?*0A66l6<++,,BBsCLL##c3--88888r   c                 R   t          j        dddt          j        d          dz  fg          }t          j        g d          }t          j        ||          }d|j        d<   d	}t          j        dt          j        |          z  dt          j        |          z  g          }t          j        dt          j        t           j        dz  |z
            z  dt          j        t           j        dz  |z
            z  g          } ||          } ||          }t          ||           t           j
                            d
          }	|	                    dd          }
|	                    d          }|
                    |j                  j        |d d d f         z   }|
                    |          |z   }|
                    |          |z   }t          j        ||          }d|j        d<    ||          } ||          }t          ||           t          ||           d S )Nr   r=   r   r@   rA   )r.   r   r   r   .r   r.   )r    r!   sqrtr%   r   r   r   r   r   r   rv   r   r   dotrQ   )r(   rS   rJ   rK   alphap1p2v1v2r   Ar   w1w2s                 r   test_boundary_tri_symmetryz9TestCloughTocher2DInterpolator.test_boundary_tri_symmetry  s   
 66CA+>?@@)))$$0@@  XsRVE]]*C"&--,?@AAXsRVBE!GeO444cBF257U?<S<S6STUURVVRVVB i##A&&IIaOOIIaLLvx"QtAAAvY.UU2YY]UU2YY]0@@RVVRVVBBr   )Nr   FF)r   r   r   r   r   r   r9   rp   ri   rm   r   	fail_slowr   r   r}   r  rB   r   r   r   r     s        @E %   BR R R,J J J	# 	# 	#I I I
, 
, 
, [1J J J(M M M
	9 	9 	9%  %  %  %  % r   r   )r
   sysnumpyr    numpy.testingr   rm   r   r   scipy._lib._array_apir   r   scipy._lib._testutilsr   scipy.interpolate._interpndinterpolate	_interpndr%   scipy.spatial._qhullspatial_qhullr5   ry   r   maxsizer   r   r   r   r   rB   r   r   <module>r     s~   				 



     + + + + + + * * * * * *  F F F F F F F F 3 3 3 3 3 3 . . . . . . . . . $ $ $ $ $ $ $ $ $     [5 	* * *
A A A A A A A AH"J "J "J "J "J "J "J "JJv  v  v  v  v  v  v  v  v  v r   