
    e!h@                        d dl Z d dlZd dlZd dl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 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
 Z"d Z#ddZ$d Z% G d d      Z& G d d      Z' G d d      Z( G d d      Z) G d d      Z*d Z+d Z,d Z-d Z.e	j^                  j`                  d        Z1d Z2d Z3y)     N)xp_assert_equalxp_assert_closeassert_almost_equalassert_array_almost_equal)raises)check_free_memory)RectBivariateSpline)make_splrep)splrepsplevbisplrepbisplevsprootsplprepsplintspaldesplder
splantiderinsertdblint)regrid_smth)dfitpack_intc                     t         j                  j                  t         j                  j                  t         j                  j	                  t
                    d|       S )Ndata)ospathjoinabspathdirname__file__)basenames    l/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_fitpack.py	data_filer#      s8    77<<(AB* *    c                 h    t        j                  t        j                  | j                  |             S N)npsqrtdotT)xs    r"   norm2r,      s    77266!##q>""r$   c                     |dz  dk(  rt        j                  |       S |dz  dk(  rt        j                  |       S |dz  dk(  rt        j                  |        S |dz  dk(  rt        j                  |        S y)z$Derivatives of sin->cos->-sin->-cos.   r            N)r'   sincos)r+   ds     r"   f1r5      so    1uzvvay1uzvvay1uzq	z1uzq	z r$   c           
          t        j                  t        t        j                  t        j
                  |       t        j
                  |                        }|j                  S )z7Helper function to create an array of pairs of x and y.)r'   arraylist	itertoolsproductasarrayr*   )r+   yxys      r"   	makepairsr>   *   s;    	$y((A

1FG	HB44Kr$   c                      e Zd ZdZddddej
                  z  dddfdZddddej
                  z  fdZd	 Ze	j                  j                  d
ddg      e	j                  j                  dddg      d               Ze	j                  j                  dddg      e	j                  j                  d
ddg      d               Ze	j                  j                  dddg      e	j                  j                  d
ddg      d               Zd Ze	j                  j                  dddg      e	j                  j                  dg d      d               Zd Zy)TestSmokeTestszj
    Smoke tests (with a few asserts) for fitpack routines -- mostly
    check that they are runnable
    r   r0   FNc           
         ||}||}dt        j                  ||dz         }|||z
  t        j                  dt              z  t        dz
        z  z   }	t	        |      }
fd}t        dd      D ]  }t        ||
|||      }|r	|d   ||  n|	}t        |dz         D ]K  } |||      }t        t	        ||      t        |||      z
        t        t	        ||            z  }||k  rKJ  |rt        ||
|||      }t        |j                        t        |d         k(  rOt        |j                  |d   d	
       t        |j                  |d   d |j                  j                   d
       |dk(  rJ  y )N   r/   dtypec                 H    dz  }d|d| |z
  z  z  z  }dkD  r|dz  z  }|S )N      ?         ?r   g     j@ )kr4   htolNss       r"   err_estz'TestSmokeTests.check_1.<locals>.err_estB   s;    aAa#qs)n$C1us1uJr$      rN   perrJ   xer   )rJ   rN   xbrS   V瞯<atolvIh%<=rG   )r'   linspacearangefloatr5   ranger   r,   r   r
   lentr   csize)selfrR   rN   abat_nodesrT   rS   r+   x1vrO   rJ   tckttr4   rL   errsplrM   s     `                @r"   check_1zTestSmokeTests.check_15   s|   :B:BKK1a!e$!a%299Q77%A,FFqE	 q! 	"AAqR8C!)Q1"rB1Q3Z !amBr1Ib#q(99:U2b!9=MMSy y! !!Q!qRB?suu:SV,#CEE3q6>#CEE3q6+355::+>UK6M6!	"r$   rB   c           	         ddt         j                  z  dt         j                  z  }}}t        j                  ||dz         }t        j                  |      }	fd}
g }t	        dd      D ];  }t        ||	d|||      }|j                  t        |||      t        ||      g       = d}|D ]:  }d}|d   D ])  } |
||      }t        |t        ||      d|       |dz   }+ |dz   }< y )	Nr   r0   皙?r/   c                 .    dz  }d|d| |z
  z  z  z  }|S )NrF   rG   rH   rI   )rJ   r4   rK   rL   rM   s       r"   rO   z'TestSmokeTests.check_2.<locals>.err_esta   s'    aAa#qs)n$CJr$   rP   rQ   rW   rtol)r'   pirY   r2   r\   r   appendr   r   r   r5   )ra   rR   rM   iaibrb   rc   dxr+   rf   rO   nkrJ   rg   rr4   drrL   s     `               r"   check_2zTestSmokeTests.check_2\   s    ags255yb1KK1ac"FF1I	 q! 	>AAqQ7CIIvb"c*F2sO<=	>  	AAd amBr1IAC@aC !A	r$   c                     | j                  d       | j                  dt        j                  z         | j                  dt        j                  z  dt        j                  z  dd       y )	Ngư>rN         ?)rc   r0   r/   皙?)rc   rS   rR   rN   )rk   r'   rq   ra   s    r"   test_smoke_splrep_splevz&TestSmokeTests.test_smoke_splrep_splevu   sJ    ts255y!s255yQruuW!t<r$   rR   r/   rd   Tc                 *    | j                  ||       y )N)rR   rd   )rk   )ra   rR   rd   s      r"   test_smoke_splrep_splev_2z(TestSmokeTests.test_smoke_splrep_splev_2z   s     	x0r$   rM   2   c                 *    | j                  ||       y )N)rR   rM   )ry   ra   rM   rR   s      r"   test_smoke_splint_spaldez'TestSmokeTests.test_smoke_splint_spalde   s     	"r$   c                 l    | j                  dt        j                  z  t        j                  ||       y )Nrm   )rs   rt   rM   rR   )ry   r'   rq   r   s      r"   test_smoke_splint_spalde_iaibz,TestSmokeTests.test_smoke_splint_spalde_iaib   s$     	BEE	beeqc:r$   c           	         d\  }}t        j                  ||d      }t        j                  |      }dD ]6  }t        ||dd||      }t	        t
              5  t        |       d d d        8 d}t        ||dd      }t        |      }t        t        ||      t        j                  t        |            dd	       t        |t         j                  t        j                  g d
      z  d       y # 1 sw Y   xY w)N)r}      rB   )r/   r0   r.   rG   r   rQ   r1   )rN   rJ   绽|=ro   )r/   r0   r1   r.   gMbP?rp   )r'   rY   r2   r   assert_raises
ValueErrorr   r   r   zerosr]   rq   r7   )ra   rb   rc   r+   rf   rJ   rg   rootss           r"   test_smoke_sprootz TestSmokeTests.test_smoke_sproot   s    1KK1b!FF1I 	AAQ15Cz* s 	
 QQ!$seS)288CJ+?eRWXruurxx'==DI s   C33C<	rJ   r/   r0   r1   r.   rG   c                 X   ddt         j                  z  dt         j                  z  }}}t        j                  |||dz         }t        j                  |      }t	        ||gdd|d      \  }}	t        ||      }
t        |
d   t        j                  |
d         z
        }|dk  sJ t        ||dd|      }t        t        |
d   |      t        j                  |
d         z
        }|dk  sJ |d	k(  r7t	        ||gdd|d      \  }}	t        d|dz         D ]  }t        |||      }
 y y )
Nr          @rm   r/   )rN   rR   rJ   nest{Gz?)rN   rR   rJ   r1   )	r'   rq   rY   r2   r   r   absr   r\   )ra   rM   rJ   rb   rc   ru   r+   rf   tckpuuverr1rg   err2r4   s                  r"   test_smoke_splprep_splrep_splevz.TestSmokeTests.test_smoke_splprep_splrep_splev   s'    bhBEE	b1KK1ac"FF1I1a&A1;a2t_2a5266"Q%=()d{{QQA+5A$rvvbe}45d{{ 6q!fqAB?GD!1ac] (2tQ'( r$   c           	      T   ddt         j                  z  }}ddt         j                  z  }}d\  }}d\  }}d }	t        j                  |||dz         }
t        j                  |||dz         }t        |
|      }t	        |d   |d    |	|d   |d         d||      }|d   ||  |d   ||  g}t        |d   |d         }t        |d   |d   |      } |	|d   |d         }t        |d         t        |d         f|_        t        t        j                  ||z
              dk  sJ y )	Nr   r   r1   r1   )rB   rB   c                 2    t        j                  | |z         S r&   r'   r2   r+   r<   s     r"   f2z6TestSmokeTests.test_smoke_bisplrep_bisplev.<locals>.f2   s    66!A#;r$   r/   rN   kxkyr   )
r'   rq   rY   r>   r   r   r]   shaper,   ravel)ra   rT   rS   ybyer   r   NxNyr   r+   r<   r=   rg   rh   t2v1v2s                     r"   test_smoke_bisplrep_bisplevz*TestSmokeTests.test_smoke_bisplrep_bisplev   s;   BruuHBBruuHBBB	 KKBQ'KKBQ'q!_r!ubeR1r!u%5rbI!fRnc!fRn-r!ube$RUBqE3'1r!ur!u:s2a5z)RXXb2g&'$...r$   )__name__
__module____qualname____doc__r'   rq   rk   ry   r   pytestmarkparametrizer   r   r   r   r   r   rI   r$   r"   r@   r@   0   sc    qA2555D%"N raAbeeG 2=
 [[UQF+[[Z$71 8 ,1 [[S2r(+[[UQF+# , ,# [[S2r(+[[UQF+; , ,;J" [[S2r(+[[S/2( 3 ,((/r$   r@   c                       e Zd Zd Zd Zd Zy)	TestSplevc                     g d}g d}t        ||      }t        dg|      }|j                  dk(  sJ t        d|      }|j                  dk(  sJ y )Nr   r.   rG   rP         r/   )r/   rI   )r   r   r   )ra   r+   r<   rg   zs        r"   test_1d_shapezTestSplev.test_1d_shape   sO    Ql1#sOww$!SMww"}}r$   c                     g d}g d}t        ||      }t        j                  g dg dg      }t        ||      }t        |d   |      }t        |d   |      }t	        |t        j
                  ||f             y )Nr   r   )rF   r|   r         @)      @g      @      @g      @r   r/   )r   r'   r7   r   r   vstack)ra   r+   r<   rg   r^   r   z0z1s           r"   test_2d_shapezTestSplev.test_2d_shape   sr    QlHH**, -!SM1Q41Q4299b"X./r$   c                     g d}g d}t        ||d      }ddgddgd ddgg}d	D ]  }t        t        ddg||
      ||          ! t        t        t        ddg|d
       y )N)r/   r0   r1   )r   r0   r.   r/   )rJ   rP   r   r.   )r   r/   r1   )extr0   )r   r   r   r   r   )ra   r+   r<   rg   rstlr   s         r"   test_extrapolation_modesz"TestSplev.test_extrapolation_modes   sx     QQQ!Q1v. 	NC%eQFCS&A49M	N 	j%!Q!<r$   N)r   r   r   r   r   r   rI   r$   r"   r   r      s    	0=r$   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
TestSplderc                     t        j                  ddd      dz  }t        j                  d|z        }t        ||      | _        t        j
                  t        j                  | j                  d               dkD  sJ y )Nr   r/   d   r1   rB   )r'   rY   r2   r   rj   ptpdiff)ra   r+   r<   s      r"   setup_methodzTestSplder.setup_method   sa    KK1c"A%FF26N!Q< vvbggdhhqk*+a///r$   c                    t        d      D ]s  }t        | j                  |      }t        ||      }t	        | j                  d   |d          t	        | j                  d   |d          | j                  d   |d   k(  rsJ  y )NrG   r   r/   r0   )r\   r   rj   r   r   )ra   nspl2spl3s       r"   test_inversezTestSplder.test_inverse   sv    q 	*Adhh*D$?DDHHQKa1DHHQKa188A;$q')))	*r$   c                 *   t        d      D ]  }t        j                  ddd      }|dk(  r||dk\  |dk  z     }t        || j                  |      }t        | j                  |      }t        ||      }|dk(  rt        ||d	       zt        ||        y )
Nr.   r   r0   i  r1   r   r/   g>r   )r\   r'   rY   r   rj   r   r   )ra   r   xxdyr   dy2s         r"   test_splder_vs_splevzTestSplder.test_splder_vs_splev   s     s 	)ARD)BAv qR1W-.r488Q'B$((A&DD/CAvCd3C(	)r$   c                 <   t        | j                        }t        j                  ddd      }|D ]k  }|D ]d  }t	        ||| j                        }t        ||      t        ||      z
  }t        t        j                  |      t        j                  |             f m y )Nr   r/   rB   )r   rj   r'   rY   r   r   r   r;   )ra   r   r   re   x2y1y2s          r"   test_splantider_vs_splintz$TestSplder.test_splantider_vs_splint  s    $((# [[Ar" 	@B @BDHH-2t_uR6

2

2?@	@r$   c                 D    t        t        t        | j                  d       y )Nr.   )r   r   r   rj   r~   s    r"   test_order0_diffzTestSplder.test_order0_diff!  s    j&$((A6r$   c                 H   t        d| j                  d      }t        |d       t        t        t        |d       t        d| j                  d      }t        |d       t        t        t        |d       t        d| j                  d      }t        t        t        |d       y )N      ?r0   )mr1   r/   r.   )r   rj   r   r   r   )ra   r   s     r"   	test_kinkzTestSplder.test_kink$  sv     c488q)tQj&$2c488q)tQj&$2c488q)j&$2r$   c                 $   t        d      D ]  }| j                  \  }}}t        j                  |||f   }t        j                  ||f      }t        |||f|      }t        ||      }t        ||d          t        ||d          ||d   k(  rJ  y )Nr1   r   r/   r0   )r\   rj   r'   c_dstackr   r   r   )ra   r   r^   r_   rJ   c2r   r   s           r"   test_multidimzTestSplder.test_multidim2  s    q 
	 AhhGAq!q!QwBB8$Bq"aj!,D$?DAtAw'BQ(Q<<
	 r$   N)
r   r   r   r   r   r   r   r   r   r   rI   r$   r"   r   r      s&    0*)&@73 r$   r   c                       e Zd Zd Zy)
TestSplintc           	      4   d\  }}t        j                  |      }|dz  }t        ||d      \  }}}t        |      t        |      cxk(  r|d|dz
  z  z   k(  sJ  J t	        dd|||f      }d}t        ||z
        d	k  sJ |j                         }	t         j                  |	t        |      |z
  dz
  d  t	        dd||	|f      }
t        |
|z
        d	k  sJ t         j                  |	d<   t        j                  t	        dd||	|f            sJ |d t        |      |z
  dz
   }t	        dd|||f      }||z
  d	k  sJ t        t        d
      5  t	        ddt        j                  d      t        j                  d      df       d d d        y # 1 sw Y   y xY w)N)r   r1   r1   r   r{   r0   r/   rP   g     @t@rX   z>=n-k-1)match
   rG   )r'   rZ   r   r]   r   r   copynanisnanr   	Exceptionones)ra   r   rJ   r+   r<   r^   r_   resexpectedc0res0c1res1s                r"   
test_len_czTestSplint.test_len_cB  s   1IIaLqDA#1a 1vQ.1q!A#w;..... QAq!9%3>"U*** VVX ff3q6A:>?aQAJ'4(?#e+++ 1xxq!aQZ0111 A
QaQAJ'x5(((
 9J7 	71a"''"+rwwqz156	7 	7 	7s   7FFN)r   r   r   r   rI   r$   r"   r   r   A  s    !7r$   r   c                   x    e Zd Zd Zd Zej                  j                  ee	j                  k7  d      d        Zy)TestBisplrepc                     ddl m} t        j                  dk(  rd}nd} |t	        j
                  d      |f      }t        t        t        ||||ddddd	       y )
Nr   )
as_stridedr   l    d</i q rI   )r   r/   )wrT   rS   r   r   rN   )	numpy.lib.stride_tricksr  r   itemsizer'   r   r   OverflowErrorr   )ra   r  r`   r+   s       r"   test_overflowzTestBisplrep.test_overflowg  sT    6  A%DD rxx|D73mXq!Q!qQ1	3r$   c           	          t        j                  t        d            5 }|d   }d d d        t        d d df   |d d df   |d d df   dddd       y # 1 sw Y   1xY w)	Nzbug-1310.npzr   r   r/   r0   r1   T)r   r   rN   full_output)r'   loadr#   r   )ra   loaded_datar   s      r"   test_regression_1310z!TestBisplrep.test_regression_1310s  se    WWY~./ 	';v&D	' 	acD1ItAaCyQ1!	#	' 	's   AAzneeds ilp64 fitpack)reasonc                 "   t        d       t        j                  ddd      }t        j                  ddd      }t        j                  ||      \  }}t        j                  |      }t        |||ddd      }t        t        dd|      d       y )	Ni`m  r   r/   i  r1   r   r   rN   r           )r   r'   rY   meshgrid
zeros_liker   r   r   )ra   r+   r<   r   rg   s        r"   test_ilp64_bisplrepz TestBisplrep.test_ilp64_bisplrep  sw    % KK1c"KK1c"{{1a 1MM!q!Q1a0S#.4r$   N)r   r   r   r  r  r   r   skipifr   r'   int64r  rI   r$   r"   r   r   f  s?    
3
# [[09NO5 P5r$   r   c            	         t        j                  dd      } t        j                  dd      }t        j                  | |      \  }}t        | |d|z  |z        }t	        |j
                        }|j                  |j                         t        t        dddd|      dz
        dk  sJ t        t        dddd|      dz
        dk  sJ t        t        dddd|      dz
        dk  sJ t        t        dd	dd	|      dz
        dk  sJ y )
Nr   r/   r.   r   r   g      ?rH   ir   )
r'   rY   r  r	   r8   rg   extenddegreesr   r   )r+   r<   r   yyrectrg   s         r"   test_dblintr    s     	AqA
AqA[[AFBq!QVb[1D
txx.CJJt||vaAq#&*+e333vaaC(4/05888vc1aC(4/05888vdCsC0145===r$   c                     t        j                  g d      t        j                  g d      df} | \  }}}t        j                  g d      }t        t        ||       |d   |d   |d   z
  |z  |d   z  z          t        t        || d      t        j                  |      |d   |d   z
  z  |d   z         t         j
                  j                  d       t        j                  t         j
                  j                  d            }t         j
                  j                  d      }t        ||      \  }}}|d   d	z
  |d
   d	z   g}t        |||f|      }t        t        ||||f|      t        ||             y )N)r  r  r   r   )ggg~'	@r  r  r/   )r   r   r1   r   r0   i     rF   r   )
r'   r7   r   r   	ones_likerandomseedsortr   r   )rg   r^   r_   rJ   r+   r<   tck2s          r"   test_splev_der_kr$    sO   
 88&'8856C GAq!
!A E!SM1Q41Q4!A$;!*;AaD*@#@AE!S!$LLOqtad{3ad:
 IINN4
		  $%A
		AQlGAq!	
1AbEBJA1a)QDE!aAY*E!TN;r$   c                  X   t        j                  ddd      } t        j                  dt         j                  z  | z        }t        j                  dt         j                  z  | z        }t        ||gd      \  }}t        j                  ddd       |d   }t        ||gd|	      \  }}y )
Nr   g?r}   r0   r{   g)\(?r   r   )taskr^   )r'   rZ   r2   rq   r3   r   )r^   r+   r<   rg   r   uknotss         r"   test_splprep_segfaultr(    s     			!S#A
qwqyA
qwqyAaVq!FCIIatVFaV"/FCr$   c                     t         j                  j                  d       t        j                  ddd      } | }t         j                  j	                  dd      j                         }d}d}t        | ||d d d d ||d
      \  }}}}}	}
}|d | |d | |	d ||z
  dz
  ||z
  dz
  z   ||f}t        j                  dg      }t        j                  dg      }t        t        t        ft        |||       y )Nr/   r      r  r  i  ( )r'   r   r!  rY   randnr   r   r   r   RuntimeErrorMemoryErrorr   )r+   r<   r   r   r   nxtxnytyr_   fpierrg   xpyps                  r"   test_bisplev_integer_overflowr6    s    IINN1
Aq"A	A
		B%%'A	
B	
B!,	1atT4B2">BBAr3cr7BsGQ=b1b1 =>B
GC	7)	B	7)	B<-wBDr$   c            	         d} d\  }}d }t        j                  dd|       }t        j                  dd|       }t        ||      }t        |d   |d    ||d   |d         d||	      }d
}t        j                  |      |d<   t        j                  |      dz  |d<   t        j                  d      }	t        j                  d      dz  }
t        j                  t              5  t        |	|
|dd       d d d        y # 1 sw Y   y xY w)N   r   c                 2    t        j                  | |z         S r&   r   r   s     r"   r   ztest_gh_1766.<locals>.f2  s    vvac{r$   r   r   r   i  r/   r   i  r.   r1   )	r'   rY   r>   r   rZ   r   r   r-  r   )r`   r   r   r   r+   r<   r=   rg   
tx_ty_sizett_0tt_1s              r"   test_gh_1766r=    s     DFB 	Ar4 A
BT"A	1aB
2a5"Q%BqE2a5!1Q2"
EC JYYz"CFYYz"Q&CF99R=D99R=1D	{	# 'dCA&' ' 's   $C==Dc                      t        j                  dd      } | dz  }t        | |ddg      }t        t        j                  d      |      }t        j
                  g d      }t        ||       y )Nr   r   r1   rG   )rJ   r^   r/   )rF   r         @r?  )r'   rY   r   r   float64r7   r   )r+   r<   rg   r   dess        r"   test_spalde_scalar_inputrB    sZ    
ArA	1A
Aqc
"C
A
$C
((#
$CS!r$   c                  f   t        j                  g dd      } g d}t        j                  g d      }d}t        | |||f      }t        j                  |      }t        j                  t	        d      D cg c]  }t        | |||f|       c}      }t        ||j                  d	       y c c}w )
N)      $      "                                                                    r  r   rF   r|   r   r   r   r         @r?  r[   rC   )rD  rD  rD  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  r  r   rF   r|   r   r   r   r   rQ  r?  r?  r?  r?  )rF   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1   r.   rU   rV   )r'   r;   r   r   r\   r   r   r*   )r+   r^   r_   rJ   r   nu	res_splevs          r"   test_spalde_ncrT    s     	

 J!	#A	"A 	

 < 	=A	A
Q1I
C
))C.C

eAhGE!aAY3GHIC51 Hs   7B.)r   )4r9   r   numpyr'   scipy._lib._array_apir   r   r   r   r   r   r   scipy._lib._testutilsr   scipy.interpolater	   r
   scipy.interpolate._fitpack_pyr   r   r   r   r   r   r   r   r   r   r   r   scipy.interpolate._dfitpackr   scipy.interpolate._fitpack2r   r#   r,   r5   r>   r@   r   r   r   r   r  r$  r(  r6  r   xslowr=  rB  rT  rI   r$   r"   <module>r]     s     	   +  3 1 )J J J J 3 4*
#	T/ T/n#= #=LQ  Q h"7 "7J!5 !5H> <8
0E& ' ',"2r$   