o
    tBh1?                     @   sp  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
Z
d dlmZ d dlmZmZmZmZmZ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!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) d d	l*m+Z+ d
d Z,dd Z-d&ddZ.d'ddZ/dd Z0dd Z1G dd dZ2G dd dZ3G dd dZ4G dd dZ5dd Z6d d! Z7d"d# Z8d$d% Z9dS )(    N)assert_equalassert_allcloseassert_assert_almost_equalassert_array_almost_equal)raises)check_free_memory)
arrayasarraypisincosarangedotravelsqrtround)interpolate)splrepsplevbisplrepbisplevsprootsplprepsplintspaldesplder
splantiderinsertdblint)regrid_smth)dfitpack_intc                 C   s    t jt jt jtd| S )Ndata)ospathjoinabspathdirname__file__)basename r*   {/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_fitpack.py	data_file   s   r,   c                 C   s   t t| j| S )N)r   r   T)xr*   r*   r+   norm2   s   r/   c                 C   sp   |d u rdS | d u rdS |d dkrt | S |d dkr t| S |d dkr+t |  S |d dkr6t|  S d S )Nr   zsin(x)   r            r   r   )r.   dr*   r*   r+   f1   s   

r6   c                 C   s|   | d u rdS || }|d dkrt | | S |d dkr"t| | S |d dkr/t | |  S |d dkr<t| |  S d S )Nzsin(x+y)r0   r   r1   r2   r3   r4   )r.   ydxdyr5   r*   r*   r+   f2+   s   r:   c                 C   s"   t ttt| t|}|jS )z7Helper function to create an array of pairs of x and y.)r	   list	itertoolsproductr
   r-   )r.   r7   xyr*   r*   r+   	makepairs9   s   r?   c                  G   s<   ddl }t|jd dr|jdtt| d  dS dS )z(Produce some output if file run directlyr   N__main____put_prints 
)syshasattrmodulesstderrwriter%   mapstr)arD   r*   r*   r+   put?   s    rL   c                   @   s  e Zd ZdZedddde ddddf	ddZedddde ddddde de fd	d
Zedddde ddddde de fddZedddde ddddde de fddZ	e
dddde dde dddf
ddZdd Zdd Zdd Zdd Zdd ZdS )TestSmokeTestszj
    Smoke tests (with a few asserts) for fitpack routines -- mostly
    check that they are runnable
    r   r2      Nc
              
      s  |d u r|}|	d u r|}	||| t  d td t   }
||| t d td t d   }||
}g } fdd}tddD ]U}t|
||||	d}|r[|d ||  }n|}g }t|d D ]-}|||}t|||t||| t||| }t||k ||||f |||f qe|| qCtd|d t	t
|d	t	t
|	d	t	t
|d	t	t
|d	f  |rd
}nd}td|t	|f  td d}|D ]}td|  |D ]}td|  qtd |d }qd S )Nr1   dtypec                    8   dt   }d|d| |    }dkr|d 7 }|S N      ?         ?r   g     j@floatkr5   htolNsr*   r+   err_estV   
   z'TestSmokeTests.check_1.<locals>.err_est   r^   perrY   xer   /
f = %s  s=S_k(x;t,c)  x in [%s, %s] > [%s, %s]r3   zat knotszat the middle of nodesz per=%d s=%s Evaluation %sz6 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''z %d : z %.1e  %.1erC   )r   rW   ranger   r/   r   r   appendrL   reprr   )selffrc   r^   rK   br]   atxbrd   r.   x1vnkr_   rY   tcktndr5   r[   errrJ   lrr*   r\   r+   check_1L   sL   $&
(

zTestSmokeTests.check_1皙?c                    s  |d u r|}|d u r|}||| t  d td t   }||} fdd}g }tddD ]}t|||||d}|t|	|
|t||g q0td|d tt	|dtt	|dtt	|dtt	|df  td	|t tt	|	dtt	|
dtt	|df  td
 d}|D ]_}|d dk rd}nd}td||t
|d t
|d ||
d||	d  f  d}|d D ]'}t
d||||  }|||}t||k ||f td||f  |d }qtd |d }qd S )Nr1   rO   c                    rQ   rR   rV   rX   r\   r*   r+   r_      r`   z'TestSmokeTests.check_2.<locals>.err_estra   rb   re   r3   z* per=%d s=%s N=%d [a, b] = [%s, %s]  dx=%szC k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., kr   - z %d   %s%.8f   %.1e z
 %.1e %.1erC   )r   rW   rf   r   rg   r   r   rL   rh   r   absr   )ri   rj   rc   r^   rK   rk   r]   rm   rd   iaibr8   r.   ro   r_   rp   rY   rq   rv   srr5   drrt   r[   r*   r\   r+   check_2|   sF   $
:


zTestSmokeTests.check_2c              	   C   s   |d u r|}|d u r|}||| t |d td t|  }||}td|d tt|dtt|df  tddD ]?}t||||||d}|dkrut|}tt	||dddd	 t|t
tg d
 dd td|t| f  q<ttt| q<d S )Nr1   rO   z1  k  :     Roots of s(x) approx %s  x in [%s,%s]:r3   ra   rb   r   g|=)atolrtol)r1   r2   r3   r0   gMbP?r   z
  %d  : %s)r   rW   rL   rh   r   rf   r   r   r   r   r   r	   tolistassert_raises
ValueError)ri   rj   rc   r^   rK   rk   r]   rm   rd   r}   r~   r8   r.   ro   rY   rq   rootsr*   r*   r+   check_3   s$   $ zTestSmokeTests.check_3c                 C   s  |d u r|}|d u r|}||| t |d td t|  }||| t d|td t|d   }||||}}tdtt|d|f  td|dd   tddD ]U}t||g|||dd	\}}t|||||d
}t||}t	|d ||d  }t	t|d |||d  }t
|dk  t
|dk  td|tdd |D ||f  qUtd d}t||g|||dd	\}}td|d D ]}t|||}tdt|d   qd S )Nr1   rO   z u = %s   N = %dr3   z<  k  :  [x(u), %s(x(u))]  Error of splprep  Error of splrep r   ra   r{   )r^   rc   rY   nest)r^   rc   rY   {Gz?z"  %d  :  %s    %.1e           %.1ec                 S   s   g | ]}t |d qS )r3   )r   ).0zr*   r*   r+   
<listcomp>   s    z*TestSmokeTests.check_4.<locals>.<listcomp>z=Derivatives of parametric cubic spline at u (first function):z %s )r   rW   rL   rh   r   rf   r   r   r   r|   r   )ri   rj   rc   r^   rK   rk   r]   rm   rd   r}   r~   r8   r.   rn   ro   _rY   tckpurq   uverr1err2r5   r*   r*   r+   check_4   s<   $&
zTestSmokeTests.check_4r3   c                 C   s  ||| t |d td t|  }||| t |	d td t|	  }t||}t|d |d ||d |d |
||d}|d ||  |d ||  g}t|d |d }t|d |d |}t|d |d }t|d t|d f|_tt	|| }t
|dk | t| d S )Nr1   rO   r   )r^   kxkyr   )r   rW   r?   r   r   r:   lenshaper/   r   r   rL   )ri   rj   r   r   rm   rd   ybyeNxNyr^   r.   r7   r>   rq   ttt2v1v2rt   r*   r*   r+   check_5   s   $$
*$zTestSmokeTests.check_5c                 C   sp   t d | jdd |   | jdd | jdd | jddd | jdt d	 | jdt d
t ddd d S )Nz***************** splrep/splevgư>r^   r1   )rl   rc   )rc   rl         ?)rk   r2   皙?)rk   rd   rc   r^   )rL   rw   r   ri   r*   r*   r+   test_smoke_splrep_splev   s   z&TestSmokeTests.test_smoke_splrep_splevc                 C   sF   t d |   | jdd | jdt td | jdt tdd d S )Nz***************** splint/spalder1   r   rx   )r}   r~   2   )r}   r~   r]   )rL   r   r   r   r*   r*   r+   test_smoke_splint_spalde   s
   z'TestSmokeTests.test_smoke_splint_spaldec                 C   s   t d | jddd d S )Nz***************** sprootr      )rK   rk   )rL   r   r   r*   r*   r+   test_smoke_sproot   s   z TestSmokeTests.test_smoke_sprootc                 C   s    t d |   | jdd d S )Nz&***************** splprep/splrep/splevr   )r]   )rL   r   r   r*   r*   r+   test_smoke_splprep_splrep_splev   s   z.TestSmokeTests.test_smoke_splprep_splrep_splevc                 C   s   t d |   d S )Nz***************** bisplev)rL   r   r   r*   r*   r+   test_smoke_bisplrep_bisplev  s   z*TestSmokeTests.test_smoke_bisplrep_bisplev)__name__
__module____qualname____doc__r6   r   rw   r   r   r   r:   r   r   r   r   r   r   r*   r*   r*   r+   rM   F   s$     0
,

&
rM   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	TestSplevc                 C   sL   g d}g d}t ||}tdg|}t|jd td|}t|jd d S )Nr1   r2   r3   r0   rT   r0   rT   ra         r1   )r1   r*   )r   r   r   r   )ri   r.   r7   rq   r   r*   r*   r+   test_1d_shape  s   

zTestSplev.test_1d_shapec                 C   sn   g d}g d}t ||}tg dg dg}t||}t|d |}t|d |}t|t||f d S )Nr   r   )rS   r   g       @      @)g      @g      @g      @g      @r   r1   )r   npr	   r   r   	row_stack)ri   r.   r7   rq   rr   r   z0z1r*   r*   r+   test_2d_shape  s   


zTestSplev.test_2d_shapec                 C   sv   g d}g d}t ||dd}ddgddgd ddgg}d	D ]}ttddg||d
||  qtttddg|dd
 d S )N)r1   r2   r3   )r   r2   r0   r1   )rY   ra   r   r0   )r   r1   r3   )extr2   )r   r   r   r   r   )ri   r.   r7   rq   rstlr   r*   r*   r+   test_extrapolation_modes  s   z"TestSplev.test_extrapolation_modesN)r   r   r   r   r   r   r*   r*   r*   r+   r     s    	r   c                   @   sD   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S )
TestSplderc                 C   sL   t dddd }t d| }t||| _tt | jd  dk d S )Nr   r1   d   r3   rN   )r   linspacer   r   splr   diffptp)ri   r.   r7   r*   r*   r+   setup_method.  s    zTestSplder.setup_methodc                 C   sd   t dD ]+}t| j|}t||}t| jd |d  t| jd |d  t| jd |d  qd S )NrT   r   r1   r2   )rf   r   r   r   r   r   )ri   nspl2spl3r*   r*   r+   test_inverse7  s   
zTestSplder.test_inversec                 C   s   t dD ]:}tddd}|dkr||dk|dk@  }t|| j|}t| j|}t||}|dkr9t||dd	 qt|| qd S )
Nr0   r{   r2   i  r3   r   r1   g>r   )rf   r   r   r   r   r   r   )ri   r   xxr9   r   dy2r*   r*   r+   test_splder_vs_splev@  s   
zTestSplder.test_splder_vs_splevc                 C   s\   t | j}tddd}|D ]}|D ]}t||| j}t||t|| }t|| qqd S )Nr   r1   rN   )r   r   r   r   r   r   r   )ri   r   r   rn   x2y1y2r*   r*   r+   test_splantider_vs_splintS  s   
z$TestSplder.test_splantider_vs_splintc                 C   s   t tt| jd d S )Nr0   )r   r   r   r   r   r*   r*   r+   test_order0_diffa  s   zTestSplder.test_order0_diffc                 C   sr   t d| jdd}t|d ttt|d t d| jdd}t|d ttt|d t d| jdd}ttt|d d S )N      ?r2   )mr3   r1   r0   )r   r   r   r   r   )ri   r   r*   r*   r+   	test_kinkd  s   

zTestSplder.test_kinkc                 C   s   t dD ]9}| j\}}}tj|||f }t||f}t|||f|}t||}t||d  t||d  t||d  qd S )Nr3   r   r1   r2   )	rf   r   r   c_dstackr   r   r   r   )ri   r   rr   crY   c2r   r   r*   r*   r+   test_multidimr  s   
zTestSplder.test_multidimN)
r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r+   r   -  s    		r   c                   @   s:   e Zd Zdd Zdd Zejjee	j
kdddd Zd	S )
TestBisplrepc                 C   sV   ddl m} tjdkrd}nd}|td|fd}ttt||||dddddd	 d S )
Nr   )
as_stridedr   l    d</i q r*   )r   r1   )wrm   rd   r   r   r^   )	numpy.lib.stride_tricksr   r!   itemsizer   zerosr   OverflowErrorr   )ri   r   sizer.   r*   r*   r+   test_overflow  s   


zTestBisplrep.test_overflowc              	   C   sP   t tdd }t|d d df |d d df |d d df ddddd d S )	Nzbug-1310.npzr"   r   r1   r2   r3   T)r   r   r^   full_output)r   loadr,   r   )ri   r"   r*   r*   r+   test_regression_1310  s   2
z!TestBisplrep.test_regression_1310zneeds ilp64 fitpack)reasonc                 C   sh   t d tddd}tddd}t||\}}t|}t|||dddd}ttdd|d d S )	Ni`m  r   r1   i  r3   r   r   r^   r           )r   r   r   meshgrid
zeros_liker   r   r   )ri   r.   r7   r   rq   r*   r*   r+   test_ilp64_bisplrep  s   
z TestBisplrep.test_ilp64_bisplrepN)r   r   r   r   r   pytestmarkskipifr!   r   int64r   r*   r*   r*   r+   r     s
    r   c                  C   s   t dd} t dd}t | |\}}t| |d| | }t|j}||j t	t
dddd|d t	t
dddd|d t	t
dddd|d t	t
dddd|d d S )	Nr   r1   r0   r   g      ?rU   ir   )r   r   r   r   RectBivariateSpliner;   rq   extenddegreesr   r   )r.   r7   r   yyrectrq   r*   r*   r+   test_dblint  s   
r   c                  C   s  t g dt g ddf} | \}}}t g d}tt|| |d |d |d  | |d    tt|| d|d |d  |d   t jd t t jd}t jd}t||\}}}|d d	 |d
 d	 g}t|||f|}tt||||f|t|| d S )N)r   r   r   r   )ggg~'	@r   r   r1   )r   r   r3   r   r2   i     rS   r{   )	r   r	   r   r   randomseedsortr   r   )rq   rr   r   rY   r.   r7   tck2r*   r*   r+   test_splev_der_k  s   
0&"r   c                  C   s~   t ddd} t dt j |  }t dt j |  }tj||gdd\}}t ddd}|d }tj||gd|d	\}}d S )
Nr   g?r   r2   r   g)\(?r   r{   )taskrr   )r   r   r   r   r   r   r   )rr   r.   r7   rq   r   unewuknotsr*   r*   r+   test_splprep_segfault  s   r  c                  C   s   t jd t ddd} | }t jdd }d}d}t| ||d d d d ||dd
\}}}}}	}
}|d | |d | |	d || d || d   ||f}t dg}t dg}tt	t
ft||| d S )Nr1   r      r   r   i  ( )r   r   r   r   randnr   r    r   r   RuntimeErrorMemoryErrorr   )r.   r7   r   r   r   nxtxnytyr   fpierrq   xpypr*   r*   r+   test_bisplev_integer_overflow  s   :r  )r   )r   r   r   ):r<   r#   numpyr   numpy.testingr   r   r   r   r   r   r   r   scipy._lib._testutilsr   r	   r
   r   r   r   r   r   r   r   r   scipyr   scipy.interpolate._fitpack_pyr   r   r   r   r   r   r   r   r   r   r   r   scipy.interpolate.dfitpackr    scipy.interpolate._fitpack2r!   r,   r/   r6   r:   r?   rL   rM   r   r   r   r   r   r  r  r*   r*   r*   r+   <module>   s6    08

 B&T#