o
    5ήcN                     @   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mZ d dlm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CloughTocher2DInterpolator)matrixc                   @   sZ  e Z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
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d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zejd3d4ej ej!gejd5d6d7gd8d9 Z"ejd5d7d6gd:d; Z#ejd5d7d6gd<d= Z$d>d? Z%d@dA Z&dBdC Z'dDdE Z(d4S )F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%   G/tmp/pip-target-vg8gfxp4/lib/python/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         ?       @g      @      @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_44   r(   z,TestRegularGridInterpolator._get_sample_4d_4c                 C   st   |   \}}tg dg dg dg}dD ]!}t|| |d}|| }t|||d}||}t|| qd S )N皙?r5   r   ?皙?r5   g?g?r   r   r   r   linearnearestslinearcubicquinticmethod)r2   r   r   r   tolistr   )r   r   r    samplerA   interpv1v2r%   r%   r&   test_list_input?   s"   z+TestRegularGridInterpolator.test_list_inputc              	   C   s   |   \}}d}dD ] }tjt|d t|||d W d    n1 s%w   Y  q
t||}tg dg dg dg}dD ]}tjt|d |||d W d    n1 sZw   Y  q@d S )Nzpoints in dimension)r>   r?   matchr@   r4   r7   r9   )r3   pytestr   
ValueErrorr   r   r   )r   r   r    rI   rA   rD   rC   r%   r%   r&   test_spline_dim_errorP   s"   
z1TestRegularGridInterpolator.test_spline_dim_errorc                 C   s:   |   \}}tg dg dg dg}| ||| d S )Nr4   r7   r9   )r'   r   r    _assert_linear_and_slinear_closer   r   r    rC   r%   r%   r&   test_linear_and_slinear_close_1a   s
   z;TestRegularGridInterpolator.test_linear_and_slinear_close_1c                 C   s,   |   \}}tg d}| ||| d S )Nr5   r5   r-         "@)r.   r   r   rM   rN   r%   r%   r&   test_linear_and_slinear_close_2g   s   z;TestRegularGridInterpolator.test_linear_and_slinear_close_2c                 C   s:   t ||dd}||}t ||dd}||}t|| d S )Nr;   r@   r=   )r   r   )r   r   rC   r    rD   rE   rF   r%   r%   r&   rM   l   s
   z<TestRegularGridInterpolator._assert_linear_and_slinear_closec           
      C   s   |   \}}|d|  }tg dg dg dg}dD ],}t|||d}t||j|d}t||j|d}||}||d||  }	t||	 qd S )N               @r4   r7   r9   r:   r@                 ?)r2   r   r   r   realimagr   )
r   r   r    rC   rA   rD   rinterpiinterprE   rF   r%   r%   r&   test_complexs   s&   z(TestRegularGridInterpolator.test_complexc                 C   s:   |   \}}t||}tg d}d}t||| d S )NrP   H@r.   r   r   r   r   r   r   r    rD   rC   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 )Nr4   r7   r9   rZ   gq@g     \@r'   r   r   r   r   r\   r%   r%   r&   test_linear_xi3d   s   
z,TestRegularGridInterpolator.test_linear_xi3dc                 C   s   |   \}}t||dd}tg d}d}t||| tg d}d}t||| tg d}d}t||| tg d}d	}t||| tg d
}d}t||| d S )Nr<   r@   )r5   r5   r6   r6   g     0@)r5   r5   r5   r5   r   r   r   r   r   r   r   r   r        \@)r5   皙?g333333?r6   g     |@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 )Nrb   rc   r   rd   r`   r\   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   assert_raisesrK   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 )Nrb   rc   rh   )r   r   r   )r   r   r   )r   r   r   皙?)r'   r   r   r   ri   rK   )r   r   r    rD   rC   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皙rr   rr   rr   rk   rk   rk   rk       @皙irv   rv   rw   rw   )r   rd         &@ry   r<   r@   )gfffff[gfffff@g     gr;   r`   r\   r%   r%   r&   test_out_of_bounds_extrap      z5TestRegularGridInterpolator.test_out_of_bounds_extrapc                 C   rm   )NFrn   rq   rs   rt   rx   )r   ry   ry   ry   r<   r@   )g333333(g33333`@g     gyXr;   r[   r\   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 )NFrn   rq   rs   rx   r<   r@   r;   r4   r7   r9   r_   )r'   r   r   nanr   r   r\   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>       zJTestRegularGridInterpolator.test_nearest_compare_qhull.<locals>.<listcomp>r4   r7   r9   )	r'   r   	itertoolsproductr   r   reshaper   r   r   r   r    rD   points_qhullvalues_qhullinterp_qhullrC   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      r   zITestRegularGridInterpolator.test_linear_compare_qhull.<locals>.<listcomp>r   r4   r7   r9   )	r'   r   r   r   r   r   r   r   r   r   r%   r%   r&   test_linear_compare_qhull   s   




z5TestRegularGridInterpolator.test_linear_compare_qhullc                 C   sz   t ddd}t ddd}td}dD ]&}t||f||d}|d	d
g}t||f|j|d}|d	d
g}t|| qd S )Nr   r+            r   r   r<   r;   r@   re   ffffff?)r   linspaceMyValuer   _vr   )r   xyr    rA   rD   rE   rF   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   r   r   rp   y      ?       @)r   randomseedr   randr   ri   rK   )r   r   r   r    r%   r%   r&   test_invalid_fill_value  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   &  s    zCTestRegularGridInterpolator.test_fillvalue_type.<locals>.<listcomp>r   r   )r   onesshaper   )r   r    r   r%   r%   r&   test_fillvalue_type#  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%   r   r   r%   r%   r&   f/     z;TestRegularGridInterpolator.test_length_one_axis.<locals>.fr   r   ijTindexingsparser;   Fe   rA   ro   rp   r   )r+         +=atolgffffff?333333@)333333@333333@r   rk   r   333333?g      '@g?g      )@V瞯<r/   gffffff?r<   g?gffffff@   r   )r   r   meshgridr   r   arrayrp   )r   r   r   r   datarD   r%   r%   r&   test_length_one_axis+  sB     
z0TestRegularGridInterpolator.test_length_one_axisrp   NrA   r;   r<   c                 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rp   ro   rA   r   r+   r   r   r   r   )
r   r   pisinr   zerosvstackTr   r   )r   rp   rA   optionsr   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||  |||   d S )N)r   r+   r   r   r   Fr      lJ r   sizer   r   ignoreinvalid)r   r   isnanr}   r   default_rngerrstater   )r   rA   r   rngr   iresr%   r%   r&   test_nan_x_1dr  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   r   r+   )r   r   r   c                 S   s   | d |d  S Nr+   r%   r   r%   r%   r&   r     s   z4TestRegularGridInterpolator.test_nan_x_2d.<locals>.fr   Tr   FrA   ro   r   r   r/   r   r+   r   r   r   r   r   r   r      r   )r   r   r   r   r   r}   r   r   r   r   r   r   )r   rA   r   r   r   xgygr   rD   r   r   i1i2r   r   r%   r%   r&   test_nan_x_2d  s4   




z)TestRegularGridInterpolator.test_nan_x_2dc                 C   s  t jd t jd}t jd}t ||}t t|t|}t t|t|}t ||\}}t |	 |	 fj
}tttfD ]D}|tt|||}||}	|||f}
||df}|||}||d}t|	j|
j  ko|j  ko|j  ko|jkn  d qEd S )Nr   r   r   T)r   r   r   hypotr   minmaxr   r   ravelr   r   r   r   listzipr   r   )r   r   r   r   XYXYinterpolatorrD   interp_points0interp_points1interp_points2interp_points3interp_points4r%   r%   r&   test_broadcastable_input  s:   

z4TestRegularGridInterpolator.test_broadcastable_inputc                 C   s   t jd t jd}|d d df |d d df }}t ||}t jd}|jdd |jdd |jdd tttfD ]}|||}|| q@d S )Nr   )r   r+   r   )2   r+   F)write)r   r   r   r   setflagsr   r   r   )r   xyr   r   r   r   r   rD   r%   r%   r&   test_read_only  s   "

z*TestRegularGridInterpolator.test_read_onlyc                 C   s   dd }t ddd}t ddd}t ddd	}|||f}|t j|d
dd }t||}t g dg dg}||}	|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 Nr+   r   r%   )r   r   r   r%   r%   r&   val_func_3d  s   zGTestRegularGridInterpolator.test_descending_points.<locals>.val_func_3dr   r   r   r      	   !   r   Tr   )rv   g@g @)ffffff
@g@gffffff@r   )r   r   r   r   r   r   )r   r   r   r   r   r   r    my_interpolating_functionptscorrect_resultx_descendingy_descendingz_descendingpoints_shuffledvalues_shuffledtest_resultr%   r%   r&   test_descending_points  s2   

z2TestRegularGridInterpolator.test_descending_pointsc                 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   s   d| d  d|d   S r   r%   r   r%   r%   r&   val_func_2d  s   zJTestRegularGridInterpolator.test_invalid_points_order.<locals>.val_func_2dr   r0   r         @      @r   r0   r1   r  r  r   Tr   (must be strictly ascending or descendingrH   )r   r   r   rJ   r   rK   r   )r   r  r   r   r   r    rI   r%   r%   r&   test_invalid_points_order  s   

"z5TestRegularGridInterpolator.test_invalid_points_order))__name__
__module____qualname__r'   r.   r2   r3   rG   rL   rO   rR   rM   rY   r^   ra   rf   rg   rj   rl   rz   r|   r~   r   r   r   r   r   r   rJ   markparametrizer   r}   r   r   r   r   r   r   r  r  r%   r%   r%   r&   r      sJ    
+

$r   c                   @   s0   e Zd ZdZdd Zdd Zdd Z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__c                 C   s   t d)NzNo array representation)RuntimeErrorr  r%   r%   r&   	__array__  r   zMyValue.__array__N)r  r  r  __doc__r  r  r  r!  r%   r%   r%   r&   r   	  s    r   c                   @   s   e Z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
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d#d$ Zd%d& Zd'd( Zd)S )*TestInterpNc                 C   sf   t dd}t g d}t dd}t g d}t g dg dg dg dg dg}|||fS )Nr   r   r  r   r+   r   r+   r   r   r+   r   r+   r   r   r+   r+   r+   r   )r   r   r   )r   r   r   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r   ffffff@r   r   r  333333?r   r   r  r*  r  r,   r   r   	splinef2dr@   r   r   )r'  r
   r   r   r   r   r	   ev)r   r   r   r   lutxir%   r%   r&   test_spline_2d'  s   
"zTestInterpN.test_spline_2dc                 C   sz   |   \}}}tg dg dgj}dD ]%}t||f|||d}t| | f| | |d}t|||d qd S )Nr(  r+  r<   r;   r,  r@   err_msg)r'  r   r   r   r	   rB   r   )r   r   r   r   r/  rA   rE   rF   r%   r%   r&   rG   0  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  r$  r%  r&  r   r)  r   r   r  r*  r   r   r  r*  g      r,   r   r   r,  FR?@r   r   r   r+   r   )	r   r   r
   r   r	   r-  r   ri   rK   )r   r   r   r   r.  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_dataN  s   zTestInterpN._sample_4d_datac                 C   sH   |   \}}t||}tg dg}t|||dd}t||| d S )NrP   r;   r@   r:  r   r   r   r	   r   r   r   r    	interp_rgrC   r]   r%   r%   r&   test_linear_4dX  s
   
zTestInterpN.test_linear_4dc                 C   B   |   \}}tg dg}d}t|||dddd}t|| d S )Nr5   rr   g333333$@rQ   r6  r;   Fr   r:  r   r   r	   r   r   r   r    rC   r]   r7  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@   rP   r;  r<  r%   r%   r&   test_nearest_4di  s
   zTestInterpN.test_nearest_4dc                 C   r?  )Nr@  r6  r<   Fr   rA  rB  r%   r%   r&   test_4d_nearest_outofboundsq  rD  z'TestInterpN.test_4d_nearest_outofboundsc                 C   sT   |   \}}tg d}t|||dd}t|||d d d f dd}t|| d S )NrP   F)ro   )r:  r   r   r	   r   r   r   r    rC   rE   rF   r%   r%   r&   
test_xi_1dz  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+   r   r   r<   Fr   r+   r   r   )
r:  r   r   r   r   r	   r   r   r   r   rG  r%   r%   r&   
test_xi_nd  s   
zTestInterpN.test_xi_ndc                 C   s   |   \}}}||f}tddd}tddd}dD ]H}|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 qd S )	Nr   r   r+   r   r1  Fr   rI  )r'  r   r   r	   r   r   r   c_r   r   r   r   )r   r   r   r    r   r/  yirA   rC   rE   xxyyrF   r%   r%   r&   test_xi_broadcast  s"    
zTestInterpN.test_xi_broadcastc                    s   |   \tjd tjdddddtjddddD ]2 t dd	}t|jd
 d  fddtdD }t	|
ddd}t|| d q tttdd d S )Nr   r   r   r   r   r   r   Fr   )r   r   r   r2  c              	      s&   g | ]}t d |f  ddqS ).Fr   )r	   )r   jrA   r   rC   r    r%   r&   r     s
    
z5TestInterpN.test_nonscalar_values.<locals>.<listcomp>r   r+   r   r,  r@   )r:  r   r   r   r   r	   r   r   ranger   	transposer   ri   rK   )r   vvsrF   r%   rQ  r&   test_nonscalar_values  s"   

z!TestInterpN.test_nonscalar_valuesc                 C   s   |   \}}}||f}|d|  }tg dg dgj}dD ]'}t||||d}t||j||d}t||j||d}	|d|	  }
t||
 qttj	t|||dd d S )NrS   r(  r+  )r;   r<   r@   rT   r,  )
r'  r   r   r   r	   rU   rV   r   r   ComplexWarning)r   r   r   r    r   rC   rA   rE   v2rv2irF   r%   r%   r&   rY     s"   

zTestInterpN.test_complexc                 C   sn   t ddd}t ddd}td}dD ] }t||f|dd	g|d
}t||f|jdd	g|d
}t|| qd S )Nr   r+   r   r   r   r   r   re   r   r@   )r   r   r   r	   r   r   )r   r   r   r    rA   rE   rF   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}dD ]}t||f|||d}t||ft |||d}t|| q!d S )	Nr   r+   r   r   r   r   r1  r@   )r   r   r   r   r   r	   r   r   )r   r   r   r    rC   rA   rE   rF   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)r5   r   r   r   g@g	@gffffff@)r+   r   r   )gQ?gffffff@gffffff @r   r   rk   r/   gffffffFrn   )r   r   r	   r   )r   r    r/  r   r]   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   ar%   r%   r&   value_func_4d   s    z9TestInterpN.test_descending_points.<locals>.value_func_4d)r   r   r+   r   )r   r   r   r   )r   r5   r8   r   r   Tr   r5   r   r   r   r   r   )r   r   r   rS  r   r	   r   )r   r\  x1x2x3x4r   r    r  r  
x1_descend
x2_descend
x3_descend
x4_descendr	  r
  r  r%   r%   r&   r    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  r$  r%  r&  r4  r5  r  rH   )r   r   r   rJ   r   rK   r	   )r   r   r   r   r/  rI   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   r   r   r   )r   r   r   zaThe requested sample points xi have dimension 3, but this RegularGridInterpolator has dimension 1rH   )r   r   ri   rK   r	   )r   r   r    r/  msgr%   r%   r&   test_invalid_xi_dimensions%  s   
"z&TestInterpN.test_invalid_xi_dimensionsN)r  r  r  r'  r0  rG   r9  r:  r>  rC  rE  rF  rH  rJ  rO  rV  rY   r   rZ  r   r  r  rf  r%   r%   r%   r&   r#    s*    		
		r#  )r   rJ   numpyr   numpy.testingr   r   r   r   r   r   ri   scipy.interpolater   r	   r
   r   r   r   scipy.sparse._sputilsr   r   r   r#  r%   r%   r%   r&   <module>   s        z