o
    4Bi                     @   s   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dlm
Z d dlmZmZmZmZmZ d dlmZ d dlmZ ejdejZG dd	 d	ZG d
d dZG dd dZdS )    N)assert_allcloseassert_equalassert_warnsassert_array_almost_equalassert_array_equal)raises)RegularGridInterpolatorinterpnRectBivariateSplineNearestNDInterpolatorLinearNDInterpolator)matrix)ComplexWarningmethodc                   @   s  e Zd Zdd Zdd Zdd Zdd Zed	d
 Ze	j
dg ddd Ze	j
deeg dg dg dgfeeg dfgdd Zdd Zedd Zdd Zdd Zdd Ze	j
d eg d!d"feg d#d$feg d%d$feg d&d'feg d(d)fgd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Ze	j
dd<d=gd>d? Zd@dA ZdBdC Z dDdE Z!e	j
dFdGej"ej#ge	j
dd=d<gdHdI Z$e	j
dd<d=gdJdK Z%e	j
dd<d=gdLdM Z&ee	j
dNdOdPdQ fdRdSdQ fdTdUdQ fdVdWdQ fgdXdY Z'dZd[ Z(ed\d] Z)ed^d_ Z*ee	j
d`dadbgdcdd Z+dedf Z,e	j
dgej-ej.ej/ej0ge	j
dhej-ej.gdidj Z1dkdl Z2dGS )mTestRegularGridInterpolatorc                 C      dgd }t g d}|d d t jt jt jf }|t jd d t jt jf }|t jt jd d t jf }|t jt jt jd d f }||d  |d  |d  }||fS )N              ?      ?   
   d     npasarraynewaxisselfpointsvaluesvalues0values1values2values3 r&   `/var/www/html/Trade-python/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_rgi.py_get_sample_4d      
z*TestRegularGridInterpolator._get_sample_4dc                 C      dgd dgd  }t g d}|d d t jt jt jf }|t jd d t jt jf }|t jt jd d t jf }|t jt jt jd d f }||d  |d  |d  }||fS Nr      )r         @      $@r   r   r   r   r   r&   r&   r'   _get_sample_4d_2"   s   z,TestRegularGridInterpolator._get_sample_4d_2c                 C   r   )Nr   r   r         ?       @      @      @r   r   r   r   r   r   r&   r&   r'   _get_sample_4d_3-   r)   z,TestRegularGridInterpolator._get_sample_4d_3c                 C   s   dgd }t ddg}|d d t jt jt jf }|t jd d t jt jf }|t jt jd d t jf }|t jt jt jd d f }||d  |d  |d  }||fS )N)r   r   r   r   r   r   r   r   r   r   r&   r&   r'   _get_sample_4d_48   r)   z,TestRegularGridInterpolator._get_sample_4d_4c                 C   sj   |   \}}tg dg dg dg}t|| |d}|| }t|||d}||}t|| d S )N皙?r8   r   ?皙?r8   g?g?r   r   r   r   r   )r5   r   r   r   tolistr   )r   r   r    r!   sampleinterpv1v2r&   r&   r'   test_list_inputC   s   z+TestRegularGridInterpolator.test_list_inputr   )cubicquinticpchipc                 C   s   |   \}}d}tjt|d t|||d W d    n1 s!w   Y  t||}tg dg dg dg}tjt|d |||d W d    d S 1 sRw   Y  d S )Nzpoints in dimensionmatchr=   r7   r:   r<   )r6   pytestr   
ValueErrorr   r   r   )r   r   r    r!   rH   r@   r?   r&   r&   r'   test_spline_dim_errorT   s   
"z1TestRegularGridInterpolator.test_spline_dim_errorzpoints_values, sampler7   r:   r<   r8   r8   r.         "@c                 C   sF   || \}}t ||dd}||}t ||dd}||}t|| d S )Nlinearr=   slinear)r   r   )r   points_valuesr?   r    r!   r@   rA   rB   r&   r&   r'   test_linear_and_slinear_closed   s   z9TestRegularGridInterpolator.test_linear_and_slinear_closec                 C   s   |   \}}tg dg dg dg}t||dd}tt ||dd W d    n1 s0w   Y  t||ddg d	d
d t||ddg dd
d t||ddg ddd d S )Nr7   r:   r<   rO   r=      )nu)rR   r   r   r   )rR   rR   rR   V瞯<atol)r   rR   r   r   )r   r   r   )r   rR   rR   r   )r   r   r   g-=)r(   r   arrayr   assert_raisesrJ   r   )r   r    r!   r?   r@   r&   r&   r'   test_derivativesz   s$   


z,TestRegularGridInterpolator.test_derivativesc           
      C   s   |dkr	t d |  \}}|d|  }tg dg dg dg}t|||d}t||j|d}t||j|d}||}||d||  }	t||	 d S )	NrF   *pchip does not make sense for complex data               @r7   r:   r<   r=                 ?)	rI   skipr5   r   r   r   realimagr   )
r   r   r    r!   r?   r@   rinterpiinterprA   rB   r&   r&   r'   test_complex   s   
z(TestRegularGridInterpolator.test_complexc           
      C   s   g dg d}}t j||dd\}}dd ||}t||f|dd}t||f|dd}|d	d
g}|d	d
g}	t j||	dddrCJ d S )N)rR   r,      r   ij)indexingc                 S   s   | d |d  S )Nr   r&   xyr&   r&   r'   <lambda>       zATestRegularGridInterpolator.test_cubic_vs_pchip.<locals>.<lambda>rD   r=   rF   r1   r,   +=r   rV   rtol)r   meshgridr   allclose)
r   rg   rh   xgygr!   rD   rF   
vals_cubic
vals_pchipr&   r&   r'   test_cubic_vs_pchip   s   z/TestRegularGridInterpolator.test_cubic_vs_pchipc                 C   s:   |   \}}t||}tg d}d}t||| d S )NrL   H@r/   r   r   r   r   r   r    r!   r@   r?   wantedr&   r&   r'   test_linear_xi1d   s
   
z,TestRegularGridInterpolator.test_linear_xi1dc                 C   sR   |   \}}t||}tg dg dg dg}tg d}t||| d S )Nr7   r:   r<   ru   gq@g     \@r(   r   r   r   r   rw   r&   r&   r'   test_linear_xi3d   s   
z,TestRegularGridInterpolator.test_linear_xi3dzsample, wanted)r8   r8   r9   r9   g     0@)r8   r8   r8   r8   r   r   r   r   r   r   r   r   r        \@)r8   皙?g333333?r9   g     |@c                 C   s,   |   \}}t||dd}t||| d S )Nnearestr=   )r(   r   r   )r   r?   rx   r    r!   r@   r&   r&   r'   test_nearest   s   z(TestRegularGridInterpolator.test_nearestc                 C   sL   |   \}}t||}tg dg dg}tddg}t||| d S )Nr}   r~   r   r   r{   rw   r&   r&   r'   test_linear_edges   s
   
z-TestRegularGridInterpolator.test_linear_edgesc                 C   s   ddg}t g d}|d d t jf }|t jd d f }||d  }ttt|| ddg}ttt|| ddg}ttt|| g d}ttt|| ddg}ttt||dd d S )	Nr   )r   r   r   r   )r   )r   r   g      ?r   )r   r   r   undefmethodr=   )r   r   r   rX   rJ   r   )r   r    r!   r"   r#   r&   r&   r'   test_valid_create   s    

z-TestRegularGridInterpolator.test_valid_createc                 C   s   |   \}}t||}tg dg dg}tt||d tg dg dg}tt|| tg dg dg}tt|| d S )Nr}   r~   r   )r   r   r   )r   r   r   )r   r   r   皙?)r(   r   r   r   rX   rJ   )r   r    r!   r@   r?   r&   r&   r'   test_valid_call   s   
z+TestRegularGridInterpolator.test_valid_callc                 C      |   \}}t||dd d}tg dg dg dg dg}tg d}t||dd	| tg d
}t||dd	| d S )NFbounds_error
fill_value皙r   r   r   r   r   r   r       @皙ir   r   r   r   )r   r         &@r   r   r=   )gfffff[gfffff@g     grN   r{   rw   r&   r&   r'   test_out_of_bounds_extrap      z5TestRegularGridInterpolator.test_out_of_bounds_extrapc                 C   r   )NFr   r   r   r   r   )r   r   r   r   r   r=   )g333333(g33333`@g     gyXrN   rv   rw   r&   r&   r'   test_out_of_bounds_extrap2   r   z6TestRegularGridInterpolator.test_out_of_bounds_extrap2c                 C   s   |   \}}t||dtjd}tg dg dg dg}ttjtjtjg}t||dd| t||dd| tg d	g d
g dg}tg d}t||| d S )NFr   r   r   r   r   r=   rN   r7   r:   r<   rz   )r(   r   r   nanr   r   rw   r&   r&   r'   test_out_of_bounds_fill  s   z3TestRegularGridInterpolator.test_out_of_bounds_fillc                 C   s   |   \}}t||dd}tj| }dd |D }t|}|d}t||}tg dg dg dg}t|||| d S )	Nr   r=   c                 S      g | ]}|qS r&   r&   .0pr&   r&   r'   
<listcomp>  rj   zJTestRegularGridInterpolator.test_nearest_compare_qhull.<locals>.<listcomp>r7   r:   r<   )	r(   r   	itertoolsproductr   r   reshaper   r   r   r    r!   r@   points_qhullvalues_qhullinterp_qhullr?   r&   r&   r'   test_nearest_compare_qhull  s   



z6TestRegularGridInterpolator.test_nearest_compare_qhullc                 C   s~   |   \}}t||}tj| }dd |D }t|}|d}t||}tg dg dg dg}t|||| d S )Nc                 S   r   r&   r&   r   r&   r&   r'   r      rj   zITestRegularGridInterpolator.test_linear_compare_qhull.<locals>.<listcomp>r   r7   r:   r<   )	r(   r   r   r   r   r   r   r   r   r   r&   r&   r'   test_linear_compare_qhull  s   




z5TestRegularGridInterpolator.test_linear_compare_qhullr   rN   c                 C   sp   t ddd}t ddd}td}t||f||d}|dd	g}t||f|j|d}|dd	g}t|| d S )
Nr   r,      rR      r   r   r=   r   ffffff?)r   linspaceMyValuer   _vr   )r   r   rg   rh   r!   r@   rA   rB   r&   r&   r'   test_duck_typed_values(  s   z2TestRegularGridInterpolator.test_duck_typed_valuesc                 C   sb   t jd t ddd}t ddd}t jdd}t||f|dd ttt||f|dd d S )	N  r   r,   r   rR   r   r   y      ?       @)r   randomseedr   randr   rX   rJ   )r   rg   rh   r!   r&   r&   r'   test_invalid_fill_value6  s   

z3TestRegularGridInterpolator.test_invalid_fill_valuec                 C   s:   t jddd}dd |jD }t|| t||dd d S )Nr         z>f4dtypec                 S   s   g | ]}t |qS r&   )r   arange)r   nr&   r&   r'   r   F  s    zCTestRegularGridInterpolator.test_fillvalue_type.<locals>.<listcomp>r   r   )r   onesshaper   )r   r!   r    r&   r&   r'   test_fillvalue_typeC  s   
z/TestRegularGridInterpolator.test_fillvalue_typec                 C   sP  dd }t ddd}t ddd}|t j||ddd }t||f|dd	d
d}t|t ddgddgddggg ddd t|t ddgddgddggg ddd t|t ddg|jdd d |_t|ddgddggddgdd t|ddgddggddgdd t||f|dd	d d}t|ddgddggd d!gdd d S )"Nc                 S   s   | | S Nr&   rf   r&   r&   r'   fO     z;TestRegularGridInterpolator.test_length_one_axis.<locals>.frR   r   rd   Tre   sparserN   Fe   r   r   r   r   )r,         rk   rU   gffffff?333333@)333333@333333@r   r   r   333333?g      '@g?g      )@rT   r1   gffffff?r   g?gffffff@rc   r   )r   r   rn   r   r   rW   r   )r   r   rg   rh   datar@   r&   r&   r'   test_length_one_axisK  sB     
z0TestRegularGridInterpolator.test_length_one_axisr   Nc                 C   s   |d|d}t ddt j d}t |}t|f|d d  fi |}t|dgf|d d d f fi |}t ddt j d d}||}	t d}
|t ||
gj}t||	 t 	d}
|t ||
gj}|d u rst||	 d S t|| d S )	NFr   r   r   r   r,   r   r   rR   r   )
r   r   pisinr   zerosvstackTr   r   )r   r   r   optionsrg   zfafbx1azay1bzbr&   r&   r'   test_length_one_axis2v  s"   
$


z1TestRegularGridInterpolator.test_length_one_axis2c           	      C   s(  t g dfg ddd|d}t|tjgsJ tjd}|jddd	 }|jddd
k}tj||< tjdd ||}W d    n1 sIw   Y  t|| tj t||  |||   g d}dg}td}t ||f|dd|d}t|tjdgsJ t|dtjgsJ d S )N)rR   r,   rc   r   rR   Fr      lJ r   sizer   r   ignoreinvalid)rc   rR   )	r   r   isnanr   r   default_rngerrstater   r   )	r   r   r   rngrg   iresrh   r   r&   r&   r'   test_nan_x_1d  s*   


z)TestRegularGridInterpolator.test_nan_x_1dc                 C   s  t g dt g d}}dd }t j||ddd\}}|||}t||f||dd	}t jd
d |dt jgddgg}	W d    n1 sIw   Y  t|	d ddd t |	d s`J t j	d}
|
jddd d }|
jddd }|
jdddk}|
jdddk}||B }t j||< t j||< t ||gj
}t jd
d ||}	W d    n1 sw   Y  t|	| t j t|	|  |||   d S )N)r   rR   r,   )rR   rc   r   c                 S   s   | d |d  S Nr,   r&   rf   r&   r&   r'   r     s   z4TestRegularGridInterpolator.test_nan_x_2d.<locals>.frd   Tr   Fr   r   r   r   r1   rR   r,   rk   rU   r   r   r   r   r      r   )r   rW   rn   r   r   r   r   r   r   r   r   r   )r   r   rg   rh   r   rp   rq   r   r@   r   r   i1i2r   r   r&   r&   r'   test_nan_x_2d  s4   




z)TestRegularGridInterpolator.test_nan_x_2d)ndimsfuncr,   c                 C      d| d  d|d   S Nr,   rc   r&   rf   r&   r&   r'   ri         z$TestRegularGridInterpolator.<lambda>rc   c                 C   s   d| d  d|d   | S r   r&   )rg   rh   r   r&   r&   r'   ri     s    r   c                 C   s    d| d  d|d   | | S r   r&   rg   rh   r   ar&   r&   r'   ri     s     r   c                 C   s$   d| d  d|d   | ||  S r   r&   )rg   rh   r   r   br&   r&   r'   ri     s   $ c                    s   |dkr|dv rt d tjd}dd |j d|fd} fdd	t|D }|tj|d
dd }t|||d}||}	dd	 |D }
|tj|
d
dd }t|
||d}||}t	|	| d S )Nr   >   rD   rE   z-too slow; OOM (quintic); or nearly so (cubic)*   rR   r,   r   c                    s   g | ]	}t  d qS )   )r   r   )r   _sample_high
sample_lowr&   r'   r     s    zITestRegularGridInterpolator.test_descending_points_nd.<locals>.<listcomp>rd   Tr   r=   c                 S   s   g | ]	}|d d d qS )Nr   r&   )r   xir&   r&   r'   r     s    )
rI   r]   r   r   r   uniformrangern   r   r   )r   r   r   r   r   test_pointsascending_pointsascending_valuesascending_interpascending_resultdescending_pointsdescending_valuesdescending_interpdescending_resultr&   r   r'   test_descending_points_nd  s:   	


z5TestRegularGridInterpolator.test_descending_points_ndc                 C   s   dd }t g d}t g d}||f}|t j|ddd }d}tjt|d	 t|| W d    d S 1 s;w   Y  d S )
Nc                 S   r   r   r&   rf   r&   r&   r'   val_func_2d     zJTestRegularGridInterpolator.test_invalid_points_order.<locals>.val_func_2dr   r2   r         @      @r   r2   r4   r  r  rd   Tr   (must be strictly ascending or descendingrG   )r   rW   rn   rI   r   rJ   r   )r   r  rg   rh   r    r!   rH   r&   r&   r'   test_invalid_points_order  s   

"z5TestRegularGridInterpolator.test_invalid_points_orderc                 C   s6   t tdgtd|dd}t|dgsJ d S )Nr   Fr   r   )r   r   r   r   r   )r   r   r@   r&   r&   r'   test_fill_value  s   z+TestRegularGridInterpolator.test_fill_valuec                 C   s   |dkr	t d dgd dgd  }tjd}|d}|d}t|||d	d
}||}t|jd|d g }tdD ]}	t||d|	f |d	d
}|	|| q=t
|ddd}
t||
d|d d S )NrE   Way too slow.r   r   r   r1   r2   r3   r,   r   r-   r.         .@r         9@r   r   r   r   r   r   r   rc   r   Fr   r   rc   r   err_msgr   .rR   r   rk   rV   r   )rI   r]   r   r   r   r   r   r   r  appendrW   	transposer   )r   r   r    r   r!   r?   r@   vvsjrB   r&   r&   r'   test_nonscalar_values  s0   


z1TestRegularGridInterpolator.test_nonscalar_valuesflip_pointsFTc                 C   s  |dv r	t d g d}|rdd |D }tjd}d}|dd	d
dg|R }|d}t|||dd}||}	|	jdg|R ksFJ t|jdd  }
t|jd D ]#}t|jd D ]}t||d||f |dd}||	 |
||f< q`qWtj
|
dd}t|	|d|d d S )N>   rD   rE   r  r  r0   )r   r-   r.   r  r   r       A@      B@)	r   r-   r.   r  r   r  r*  r+  /   c                 S   s   g | ]}t t|qS r&   )tuplereversedr   r&   r&   r'   r   ?  r   zGTestRegularGridInterpolator.test_nonscalar_values_2.<locals>.<listcomp>r   rc   r,   r   r   r   	   r   Fr   rR   r   .r   axisrk   r!  )rI   r]   r   r   r   r   r   emptyr  itemexpand_dimsr   )r   r   r(  r    r   trailing_pointsr!   r?   r@   r$  r%  r   r&  rB   r&   r&   r'   test_nonscalar_values_2/  s2   

z3TestRegularGridInterpolator.test_nonscalar_values_2c                 C   s   d}ddg}t jd}d}|ddg|R }|d}t|||d	d
}||}|jdg|R ks4J t |jdd  }	t|jd D ]#}
t|jd D ]}t||d|
|f |d	d
}|| |	|
|f< qNqEt j|	dd}t	||d|d d S )NrN   r  r0   r   )rc   r   r   r   r,   Fr   rR   r1  r   .r   r2  rk   r!  )
r   r   r   r   r   r4  r  r5  r6  r   )r   r   r    r   r7  r!   r?   r@   r$  r%  r   r&  rB   r&   r&   r'   test_nonscalar_values_linear_2DZ  s0   
z;TestRegularGridInterpolator.test_nonscalar_values_linear_2Dr   xi_dtypec                 C   s   dd }t ddd}t ddd}t j||dd	d
\}}|||}||}t||f|}	t jddgddgg|d}
t|	|
ddgdd d S )Nc                 S   r   r   r&   rf   r&   r&   r'   r     r  z:TestRegularGridInterpolator.test_float32_values.<locals>.frR   r   r   r      rd   Tr   r   g@ffffff
@g@r   g Y`@g{,c@gHz>rU   )r   r   rn   astyper   rW   r   )r   r   r:  r   rg   rh   rp   rq   r   r@   ptsr&   r&   r'   test_float32_valuesy  s   


z/TestRegularGridInterpolator.test_float32_valuesc                 C   s@  t ddd}t ddd}t j||ddd\}}|| }tt t||f|dd d	 W d    n1 s7w   Y  tt t||f|d
dd d W d    n1 sWw   Y  tt t||f|d
dd dd W d    n1 sxw   Y  tt t||f|d
ddid W d    d S 1 sw   Y  d S )Nr   rc   r   rd   Tr   c                 S      | S r   r&   rg   r&   r&   r'   ri         z=TestRegularGridInterpolator.test_bad_solver.<locals>.<lambda>)solverrO   c                 S   r@  r   r&   rA  r&   r&   r'   ri     rB  )r   rC  c                 S   r@  r   r&   rA  r&   r&   r'   ri     rB  woof)r   rC  rD  r   )r   solver_args)r   r   rn   rX   rJ   r   	TypeError)r   rg   rh   rp   rq   r   r&   r&   r'   test_bad_solver  s,   



"z+TestRegularGridInterpolator.test_bad_solver)3__name__
__module____qualname__r(   r/   r5   r6   parametrize_rgi_interp_methodsrC   rI   markparametrizerK   r   r   rQ   rY   rb   rt   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r'  r8  r9  float32float64	complex64
complex128r?  rG  r&   r&   r&   r'   r      s    







+

$



!

)r   c                   @   s2   e Zd ZdZdd Zdd Zdd Zdd	d
ZdS )r   z"
    Minimal indexable object
    c                 C   s(   d| _ || _tt||| _d S r   )ndimr   r   r   prodr   r   )r   r   r&   r&   r'   __init__  s   zMyValue.__init__c                 C   s
   | j | S r   )r   )r   idxr&   r&   r'   __getitem__  s   
zMyValue.__getitem__c                 C   s   d S r   r&   )r   r&   r&   r'   __array_interface__  s   zMyValue.__array_interface__Nc                 C   s   t d)NzNo array representation)RuntimeError)r   r   copyr&   r&   r'   	__array__  r   zMyValue.__array__)NN)rH  rI  rJ  __doc__rT  rV  rW  rZ  r&   r&   r&   r'   r     s    r   c                   @   s(  e Zd Zdd Zdd Zedd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zedd Zedd Zedd Zdd Zedd  Zd!d" Zd#d$ Zejd%d&d'gd(d) Zed*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z d8d9 Z!ejd:d;d<gd=d> Z"d?S )@TestInterpNc              	   C   sT   t g d}t g d}t g dg dg dg dg dg dg}|||fS )N)r   r2   r4   r  r  g      @)rR   r,   rR   r,   rR   rR   )rR   r,   rc   r,   rR   rR   )rR   r,   r,   r,   rR   rR   )r   rW   )r   rg   rh   r   r&   r&   r'   _sample_2d_data  s   

zTestInterpN._sample_2d_datac                 C   sp   |   \}}}t|||}tg dg dgj}tt||f||dd||d d df |d d df  d S )NrR   ffffff@r   r   r<  333333?rc   rR   r<  r`  r  r-   r   rc   	splinef2dr=   r   rR   )r]  r
   r   rW   r   r   r	   ev)r   rg   rh   r   lutr  r&   r&   r'   test_spline_2d  s   
"zTestInterpN.test_spline_2dc                 C   sp   |   \}}}tg dg dgj}t||f|||d}t| | f| | |d}t|||d d S )Nr^  ra  r=   r  )r]  r   rW   r   r	   r>   r   )r   r   rg   rh   r   r  rA   rB   r&   r&   r'   rC     s   
zTestInterpN.test_list_inputc              
   C   s   t g d}t g d}t g dg dg dg dg dg}t|||}t g dg dgj}t||f||ddd	d
}||d d df |d d df }d	|dd< t|| ttt||f||ddd d
 d S )Nr  rR   r,   rR   r,   rR   rR   r,   rc   r,   rR   rR   r,   r,   r,   rR   rR   r_  r   r   r<  r`  rc   rR   r<  r`  g      r-   r   rc   rb  FR?@r   r   rR   r,   r   )	r   rW   r
   r   r	   rc  r   rX   rJ   )r   rg   rh   r   rd  r  actualexpectedr&   r&   r'   test_spline_2d_outofbounds  s(   
$

z&TestInterpN.test_spline_2d_outofboundsc                 C   r*   r+   r   r   r&   r&   r'   _sample_4d_data  s   zTestInterpN._sample_4d_datac                 C   sH   |   \}}t||}tg dg}t|||dd}t||| d S )NrL   rN   r=   ro  r   r   r   r	   r   r   r    r!   	interp_rgr?   rx   r&   r&   r'   test_linear_4d  s
   
zTestInterpN.test_linear_4dc                 C   B   |   \}}tg dg}d}t|||dddd}t|| d S )Nr8   r   g333333$@rM   rk  rN   Fr   ro  r   r   r	   r   r   r    r!   r?   rx   rl  r&   r&   r'   test_4d_linear_outofbounds     
z&TestInterpN.test_4d_linear_outofboundsc                 C   sL   |   \}}t||dd}tg dg}t|||dd}t||| d S )Nr   r=   rL   rp  rq  r&   r&   r'   test_nearest_4d  s
   zTestInterpN.test_nearest_4dc                 C   rt  )Nru  rk  r   Fr   rv  rw  r&   r&   r'   test_4d_nearest_outofbounds   ry  z'TestInterpN.test_4d_nearest_outofboundsc                 C   sT   |   \}}tg d}t|||dd}t|||d d d f dd}t|| d S )NrL   F)r   )ro  r   r   r	   r   r   r    r!   r?   rA   rB   r&   r&   r'   
test_xi_1d)  s
   zTestInterpN.test_xi_1dc                 C   sv   |   \}}tjd tjddd}t|||ddd}t|jd t|||d	dddd}t	|||j d S )
Nr   r,   rc   r   r   Fr   r,   rc   r   )
ro  r   r   r   r   r	   r   r   r   r   r|  r&   r&   r'   
test_xi_nd1  s   
zTestInterpN.test_xi_ndc                 C   s   |   \}}}||f}tddd}tddd}|d d d f |d d d f f}t||||dd}	t|	jd t||\}
}tj|
j	 |j	 f }t||||dd}t
|	||	j d S )Nr   rR   r,   rc   Fr   r~  )r]  r   r   r	   r   r   rn   c_r   ravelr   r   )r   r   rg   rh   r!   r    r  yir?   rA   xxyyrB   r&   r&   r'   test_xi_broadcast@  s    zTestInterpN.test_xi_broadcastc                    s    dkr	t d dgd dgd  tjd}|d|dt d	d
}t|jd d  fddtdD }t	|
ddd}t||d d d S )NrE   r  r  r,   r  r   r  r  Fr   r  r  c              	      s&   g | ]}t d |f  ddqS .Fr   r	   )r   r&  r   r    r?   r!   r&   r'   r   g  s
    
z5TestInterpN.test_nonscalar_values.<locals>.<listcomp>r   rR   r   rk   r!  )rI   r]   r   r   r   r	   r   r   r  rW   r#  r   )r   r   r   r$  r%  rB   r&   r  r'   r'  T  s&   



z!TestInterpN.test_nonscalar_valuesc                    s    dv r	t d g dtjd}d}|dddd	g|R |d
t dd}|jdg|R ks:J  fddtjd D }t|t	|j
d d d S )N>   rD   rE   r  r)  r   r/  r   r   r   r0  r   Fr   rR   c                    s0   g | ]  fd dt jd D qS )c              	      s(   g | ]}t d | f ddqS r  r  )r   r   )r&  r   r    r?   r!   r&   r'   r     s    zBTestInterpN.test_nonscalar_values_2.<locals>.<listcomp>.<listcomp>r1  )r  r   )r   r  )r&  r'   r     s
    
z7TestInterpN.test_nonscalar_values_2.<locals>.<listcomp>r   rk   r!  )rI   r]   r   r   r   r	   r   r  r   r   r   )r   r   r   r7  r$  r%  r&   r  r'   r8  m  s   

z#TestInterpN.test_nonscalar_values_2c                 C   sT   |   \}}tjd tjddddd}tjddd}ttt|||dd d S )	Nr   rc   r   r   r   r   rb  r=   )ro  r   r   r   r   rX   rJ   r	   )r   r    r!   r?   r&   r&   r'    test_non_scalar_values_splinef2d  s   
z,TestInterpN.test_non_scalar_values_splinef2dc                 C   s   |dkr	t d |  \}}}||f}|d|  }tg dg dgj}t||||d}t||j||d}t||j||d}	|d|	  }
t	||
 d S )NrF   rZ   r[   r^  ra  r=   r\   )
rI   r]   r]  r   rW   r   r	   r^   r_   r   )r   r   rg   rh   r!   r    r?   rA   v2rv2irB   r&   r&   r'   rb     s   

zTestInterpN.test_complexc                 C   s|   |   \}}}||f}|d|  }tg dg dgj}tjdd t|||dd W d    d S 1 s7w   Y  d S )Nr[   r^  ra  complexrG   rF   r=   )r]  r   rW   r   rI   deprecated_callr	   r   rg   rh   r!   r    r?   r&   r&   r'   test_complex_pchip  s   
"zTestInterpN.test_complex_pchipc                 C   sx   |   \}}}||f}|d|  }tg dg dgj}tt t|||dd W d    d S 1 s5w   Y  d S )Nr[   r^  ra  rb  r=   )r]  r   rW   r   r   r   r	   r  r&   r&   r'   test_complex_spline2fd  s   

"z"TestInterpN.test_complex_spline2fdr   rN   r   c                 C   sd   t ddd}t ddd}td}t||f|ddg|d	}t||f|jddg|d	}t|| d S )
Nr   r,   r   rR   r   r   r   r   r=   )r   r   r   r	   r   r   )r   r   rg   rh   r!   rA   rB   r&   r&   r'   r     s   z"TestInterpN.test_duck_typed_valuesc                 C   s   t ddd}t ddd}tt jdd}t jddd}t||f|||d}t||ft |||d}|dkrDt||d	d
d d S t|| d S )Nr   r,   r   rR   r   rc   r=   rE   g-C6
?g>rl   )r   r   r   r   r   r	   r   r   )r   r   rg   rh   r!   r?   rA   rB   r&   r&   r'   test_matrix_input  s   zTestInterpN.test_matrix_inputc                 C   s   t g dg}t ddgddgddgg}tdgg df||}g d}t||dd	 t d
dgddgddgg}tdgg df||dd d}t||dd	 d S )N)r8   rR   r   rR   g@g	@gffffff@)r,   rc   r   )gQ?gffffff@gffffff @rT   rU   r   r1   gffffffFr   )r   rW   r	   r   )r   r!   r  r   rx   r&   r&   r'   r     s   z TestInterpN.test_length_one_axisc              	   C   s  dd }t g d}t g d}t g d}t g d}||||f}|t j|ddd }d	d
t t dddt dd
df}t|||}	|d d d }
|d d d }|d d d }|d d d }|
|||f}|t j|ddd }t|||}t|	| d S )Nc                 S   s    d| d  d|d   | | S r   r&   r   r&   r&   r'   value_func_4d  s    z9TestInterpN.test_descending_points.<locals>.value_func_4d)r   rR   r,   rc   )r   r   r   r   )r   r8   r;   r   rd   Tr   r8   r   r   r   r   r   )r   rW   rn   r#  r   r	   r   )r   r  x1x2x3x4r    r!   r>  correct_result
x1_descend
x2_descend
x3_descend
x4_descendpoints_shuffledvalues_shuffledtest_resultr&   r&   r'   test_descending_points  s.   z"TestInterpN.test_descending_pointsc                 C   s   t g d}t g d}t g dg dg dg dg dg}t g dg dgj}d}tjt|d	 t||f|| W d    d S 1 sKw   Y  d S )
Nr  r  rf  rg  rh  ri  rj  r  rG   )r   rW   r   rI   r   rJ   r	   )r   rg   rh   r   r  rH   r&   r&   r'   r    s   
"z%TestInterpN.test_invalid_points_orderc                 C   sZ   dg}ddg}t d}d}tt|d t||| W d    d S 1 s&w   Y  d S )N)r   rR   r   rR   )rR   rR   rc   zaThe requested sample points xi have dimension 3, but this RegularGridInterpolator has dimension 1rG   )r   r   rX   rJ   r	   )r   r    r!   r  msgr&   r&   r'   test_invalid_xi_dimensions  s   
"z&TestInterpN.test_invalid_xi_dimensionsc                 C   s   t ddd}t ddd}t ddd}|||f}t d}t g d}|D ]}d|j_q(d|j_d|j_t||| t||| d S )	Nr   r   r   r   r   r   r   r   Gz@(\@gffffff?Fr   r   r   rW   flags	writeabler	   r   )r   rg   rh   r   r    r!   pointdr&   r&   r'   test_readonly_grid&  s   


zTestInterpN.test_readonly_gridc                 C   s|   t ddd}t ddd}||f}t d}t ddg}|D ]}d|j_q d|j_d|j_t||| t||| d S )	Nr   r   r   r   r   r   r  r  Fr  )r   rg   rh   r    r!   r  r  r&   r&   r'   test_2d_readonly_grid5  s   

z!TestInterpN.test_2d_readonly_gridc                 C   s   t ddd}t |t |fj d d df }|jjr J t ddd}t ddd}|||f}t d}t 	g d}t
||| t||| d S )Nr   r   r   r   r   r  r  )r   r   r   
empty_liker   rY  r  c_contiguousr   rW   r	   r   )r   rg   rh   r   r    r!   r  r&   r&   r'   test_non_c_contiguous_gridD  s   &

z&TestInterpN.test_non_c_contiguous_gridr   z>f8z<f8c                 C   sj   t jddd|d}t jddd|d}||f}t jd|d}t jddg|d}t||| t||| d S )	Nr   r   r   r   r   r  r  r  )r   r   r   rW   r	   r   )r   r   rg   rh   r    r!   r  r&   r&   r'   test_endiannessQ  s   zTestInterpN.test_endiannessN)#rH  rI  rJ  r]  re  rK  rC   rn  ro  rs  rx  rz  r{  r}  r  r  r'  r8  r  rb   r  r  rI   rL  rM  r   r  r   r  r  r  r  r  r  r  r&   r&   r&   r'   r\    sP    	


		


 





r\  )r   rI   numpyr   numpy.testingr   r   r   r   r   r   rX   scipy.interpolater   r	   r
   r   r   scipy.sparse._sputilsr   scipy._lib._utilr   rL  rM  _ALL_METHODSrK  r   r   r\  r&   r&   r&   r'   <module>   s&         !