
    e!h                     B   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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Zg dZd Zd	 Z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( G d d      Z)y)    N)xp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equal)raises)KroghInterpolatorkrogh_interpolateBarycentricInterpolatorbarycentric_interpolateapproximate_taylor_polynomialCubicHermiteSplinepchipPchipInterpolatorpchip_interpolateAkima1DInterpolatorCubicSplinemake_interp_spline)_run_concurrent_barrierc                    |i }t         j                  j                  d      }g d}t        t	        dt        |      dz               }|j                  |t        |      dz   z  d        |j                  d|z    j                  |      }	t        j                  |      }
| t        u r5 |j                  d|z    j                  |      }  | ||	|fd|i||
      }n  | ||	fd|i||
      }|xs d|	j                  d | z   |z   |	j                  |d  dd  z   }|j                  |k(  sJ |r||	j                  dkD  rm| t        u r8  | t        |      t        |	      t              fd|i|t        |
             n-  | t        |      t        |	      fd|i|t        |
             |
j                  dkD  r||	j                  d | dt        |      z  z   |	j                  |d  dd  z   }|	t        d       f||	j                  z  z  dz      }|j                  |      }t        j                   ||      \  }}	t#        ||	       y y y )	N  )r               r   r      axis r   )nprandomRandomStatelistrangeleninsertrand	transposezerosr   shapesizeslicendimreshapebroadcast_arraysr   )interpolator_clsx_shapey_shapederiv_shaper   
extra_argsrngxsyxidydxyitarget_shapebs_shapeyvs                   l/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_polyint.pycheck_shaperA      s[   

))


%CAU1c'l1n%&AHHTS\!^$a(4'>#--a0A	'	B--sxx$.*44Q7BaDBtBzB2F<a<<<R@ &B!''%4.8 !qr 23L88|### 166A:11+T!Wd1gtDz + +)++/85+T!Wd1g +D +)++/85 
ww{{*775D>DW$55qr8JJt/478ZZ!##B+AA +{    )r   r   r    )r   r      c                  2   d } t         t        t        t        t        t
        | fD ]p  }t        D ]e  }t        D ]Z  }t        t        |       t        |            D ]6  }|t
        k7  rt        |||d |       dD ]  }d|i}t        |||d ||        8 \ g r y )Nc                     t        | ||      S Nr   )r   r7   r9   r   s      r@   
spl_interpztest_shapes.<locals>.spl_interpB   s    !!QT22rB   )naturalclampedbc_type)
r   r
   r   r   r   r   SHAPESr%   r&   rA   )rJ   ips1s2r   bcextras          r@   test_shapesrT   @   s    3 !"9;M);
D 
G 	GB G!3r7(CG4 GD[(#BBd;"8 GB%.OE'BD$FG	GG	G
GrB   c                      t         t        fD ]Q  dfd	} t        D ]@  }t        D ]5  }t        t	        |       t	        |            D ]  }t        | ||d|        7 B S y )Nc                 ,     | ||      j                   S N)derivatives)r7   r9   r   rO   s      r@   interpolator_derivsz/test_derivs_shapes.<locals>.interpolator_derivsS   s    aD>---rB   r   rC   )r   r
   rN   r%   r&   rA   )rY   rP   rQ   r   rO   s       @r@   test_derivs_shapesrZ   Q   sv     "9: I	.  	IB I!3r7(CG4 ID 3RT4HII	I	IrB   c                  &   dd} dd}dd}dd}dd}dd}dd}dd}dd	}dd
}	dd}
dd}dd}| |||||||||	|
||fD ]K  }t         D ]@  }t         D ]5  }t        t        |       t        |            D ]  }t        |||d|        7 B M y )Nc                 0    t        | ||      j                  S rW   )r   
derivativerI   s      r@   krogh_derivz&test_deriv_shapes.<locals>.krogh_deriv]   s     At,777rB   c                 0    t        | ||      j                  S rW   )r
   r]   rI   s      r@   
bary_derivz%test_deriv_shapes.<locals>.bary_deriv`   s    &q!T2===rB   c                 8    t        | ||      j                         S rW   r   r]   rI   s      r@   pchip_derivz&test_deriv_shapes.<locals>.pchip_derivc   s    Q4 ++--rB   c                 :    t        | ||      j                  d      S Nr   rb   rI   s      r@   pchip_deriv2z'test_deriv_shapes.<locals>.pchip_deriv2f   s    Q4 ++A..rB   c                 8    t        | ||      j                         S rW   r   antiderivativerI   s      r@   pchip_antiderivz*test_deriv_shapes.<locals>.pchip_antiderivi   s    Q4 //11rB   c                 :    t        | ||      j                  d      S re   rh   rI   s      r@   pchip_antideriv2z+test_deriv_shapes.<locals>.pchip_antideriv2l   s    Q4 //22rB   c                 4     G d dt               } || ||      S )Nc                       e Zd Zd Zy)9test_deriv_shapes.<locals>.pchip_deriv_inplace.<locals>.Pc                 0    t        j                  | |d      S )Nr   )r   __call__)selfr7   s     r@   rq   zBtest_deriv_shapes.<locals>.pchip_deriv_inplace.<locals>.P.__call__q   s    (11$1==rB   N)__name__
__module____qualname__rq   r   rB   r@   Pro   p   s
    >rB   rv   )r   )r7   r9   r   rv   s       r@   pchip_deriv_inplacez.test_deriv_shapes.<locals>.pchip_deriv_inplaceo   s    	! 	 At}rB   c                 8    t        | ||      j                         S rW   )r   r]   rI   s      r@   akima_derivz&test_deriv_shapes.<locals>.akima_derivv   s    "1a.99;;rB   c                 8    t        | ||      j                         S rW   )r   ri   rI   s      r@   akima_antiderivz*test_deriv_shapes.<locals>.akima_antiderivy   s    "1a.==??rB   c                 8    t        | ||      j                         S rW   )r   r]   rI   s      r@   cspline_derivz(test_deriv_shapes.<locals>.cspline_deriv|   s    1a&1133rB   c                 8    t        | ||      j                         S rW   )r   ri   rI   s      r@   cspline_antiderivz,test_deriv_shapes.<locals>.cspline_antideriv   s    1a&5577rB   c                 :    t        | ||      j                         S rG   )r   r]   rI   s      r@   
bspl_derivz%test_deriv_shapes.<locals>.bspl_deriv   s    !!QT2==??rB   c                 :    t        | ||      j                         S rG   )r   ri   rI   s      r@   bspl_antiderivz)test_deriv_shapes.<locals>.bspl_antideriv   s    !!QT2AACCrB   r   rC   )rN   r%   r&   rA   )r^   r`   rc   rf   rj   rl   rw   ry   r{   r}   r   r   r   rO   rP   rQ   r   s                    r@   test_deriv_shapesr   \   s    8>./23<@48@D J\CV 0+/^M 6  	6B 6!3r7(CG4 6DBB566	66rB   c                  T   g d} g d}t         t        t        fD ]0  } || |      }t         ||       t	        j
                  |             2 g d}t        | ||      }t         ||       t	        j
                  |             t         || d      t	        j
                  |             y )Nr   r   r   r   )r   r                 ?r   )r   y             r   y              @r   )r   r
   r   r   r!   asarrayr   )r7   r9   rO   pr;   s        r@   test_complexr      s    AA "9;G -q!H!bjjm,- D1a&AAaD"**Q-(AaGRZZ-.rB   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej0                  j2                  d        Zej0                  j2                  d        Zy)	TestKroghc                     t         j                  j                  g d      | _        t        j                  ddd      | _        t        j                  ddd      | _        | j                  | j                        | _        y N)rD   r   r   r   r   d   rD   r!   
polynomial
Polynomial	true_polylinspacetest_xsxsysrr   s    r@   setup_methodzTestKrogh.setup_method   sU    112CD{{2a,++b1%..)rB   c                     t        | j                  | j                        }t        | j	                  | j
                         || j
                               y rW   r   r   r   r   r   r   rr   rv   s     r@   test_lagrangezTestKrogh.test_lagrange   5    dggdgg.DNN4<<84<<IrB   c                    t        | j                  | j                        }t        | j	                  d       |d      d       t        | j	                  t        j                  d             |t        j                  d            d       y )N   Fcheck_0d)r   r   r   r   r   r!   arrayr   s     r@   test_scalarzTestKrogh.test_scalar   sY    dggdgg.DNN1-qteDDNN288A;7288A;RWXrB   c                 $   t        | j                  | j                        }|j                  | j                        }t        |j                  d         D ]:  }t         | j                  j                  |      | j                        ||          < y Nr   )
r   r   r   rX   r   r%   r+   r   r   derivrr   rv   Dis       r@   test_derivativeszTestKrogh.test_derivatives   sp    dggdgg.MM$,,'qwwqz" 	&A 7 4 4Q 7 E !!&	&rB   c                 R   t        | j                  | j                        }|j                  | j                  t        | j                        dz         }t        |j                  d         D ]:  }t         | j                  j                  |      | j                        ||          < y )Nr   r   )r   r   r   rX   r   r&   r%   r+   r   r   r   r   s       r@   test_low_derivativeszTestKrogh.test_low_derivatives   s~    dggdgg.MM$,,s477|A~6qwwqz" 	&A 7 4 4Q 7 E !!&	&rB   c                     t        | j                  | j                        }d}|j                  | j                  |      }t        |      D ]+  }t        |j                  | j                  |      ||          - y N
   )r   r   r   rX   r   r%   r   r]   rr   rv   mrr   s        r@   test_derivativezTestKrogh.test_derivative   sa    dggdgg.MM$,,q)q 	CAT\\! <QqTB	CrB   c           	      P   t        | j                  | j                        }t        t	        | j                        dt	        | j                        z        D ]N  }t        |j                  | j                  |      t        j                  t	        | j                                     P y re   )
r   r   r   r%   r&   r   r]   r   r!   r*   rr   rv   r   s      r@   test_high_derivativezTestKrogh.test_high_derivative   sn    dggdgg.s477|Qs477|^4 	=AT\\! < "T\\): ;=	=rB   c                    | j                   }t        j                  j                  g d      }t        j                  j                  g d      }t        j                   || j
                         || j
                         || j
                        fd      }t        | j
                  |d      }|j                  | j                        }t        |j                  d         D ]  }t        ||   t        j                   |j                  |      | j                         |j                  |      | j                         |j                  |      | j                        fd              y Nr   rD   r   r      r   r   r   rH   r   )r   r!   r   r   stackr   r   rX   r   r%   r+   r   r   rr   poly1poly2poly3r   rv   r   r   s           r@   test_ndim_derivativeszTestKrogh.test_ndim_derivatives   s	   ((8(();<XXuTWW~uTWW~uTWW~FRPdggr2MM$,,'qwwqz" 	/AAaDHHnekk!nT\\&B&4ekk!nT\\&B&4ekk!nT\\&B&D +-./	/rB   c                    | j                   }t        j                  j                  g d      }t        j                  j                  g d      }t        j                   || j
                         || j
                         || j
                        fd      }t        | j
                  |d      }t        |j                        D ]  }t        |j                  | j                  |      t        j                   |j                  |      | j                         |j                  |      | j                         |j                  |      | j                        fd              y r   )r   r!   r   r   r   r   r   r%   nr   r]   r   r   rr   r   r   r   r   rv   r   s          r@   test_ndim_derivativezTestKrogh.test_ndim_derivative   s    ((8(();<XXuTWW~uTWW~uTWW~FRPdggr2qss 	/AALLq9HHnekk!nT\\&B&4ekk!nT\\&B&4ekk!nT\\&B&D +-./	/rB   c                     t        | j                  | j                        }t        | j	                  | j
                         || j
                               y rW   r   r   s     r@   test_hermitezTestKrogh.test_hermite   r   rB   c                 \   g d}t        j                  ddgddgddgg      }t        ||      }t        |j                  d         D cg c]  }t        ||d d |f          }}t        j
                  ddd      }t         ||      t        j                  |D cg c]
  } ||       c}      j                         t        |j                  |      t        j                  t        j                  |D cg c]  }|j                  |       c}      d             y c c}w c c}w c c}w )	Nr   r   r   r   r   r   r   r   r   )r   r   r   )r!   r   r   r%   r+   r   r   r   TrX   r)   )rr   r   r   rv   r   Pir   r   s           r@   test_vectorzTestKrogh.test_vector   s    XX!uaUAa5)*b$5:288A;5GH2ac7+HH++b3'AgJJJB'?q'
'?@BB	DAMM'2RZZ(LAw)?(LM		 I (@(Ls   	DD$6D)c                     t        | j                  | j                        }t         |g       t	        j
                  g              y rW   )r   r   r   r   r!   r   r   s     r@   
test_emptyzTestKrogh.test_empty   s,    dggdgg."rzz"~.rB   c                 p   t        | j                  | j                        }t        j                   |d            dk(  sJ t        j                   |t        j
                  d                  dk(  sJ t        j                   |dg            dk(  sJ t        j                   |ddg            dk(  sJ y Nr   r   r    r   )r   )r   r   r   r!   r+   r   r   s     r@   test_shapes_scalarvaluez!TestKrogh.test_shapes_scalarvalue   s    dggdgg.xx!~###xx"((1+'2---xx1#4'''xx1Q%!T)))rB   c                    t        | j                  | j                        }|j                  }t	        j
                  |j                  d            |fk(  sJ t	        j
                  |j                  t	        j                  d                  |fk(  sJ t	        j
                  |j                  dg            |dfk(  sJ t	        j
                  |j                  ddg            |dfk(  sJ y Nr   r   r   )r   r   r   r   r!   r+   rX   r   rr   rv   r   s      r@   "test_shapes_scalarvalue_derivativez,TestKrogh.test_shapes_scalarvalue_derivative  s    dggdgg.CCxxa()aT111xxbhhqk23t;;;xxqc*+1v555xxq!f-.1a&888rB   c           	      X   t        | j                  t        j                  | j                  t        j
                  d                  }t        j                   |d            dk(  sJ t        j                   |dg            dk(  sJ t        j                   |ddg            dk(  sJ y Nr   r   )r   )r   r   r   )r   r   )r   r   r!   outerr   aranger+   r   s     r@   test_shapes_vectorvaluez!TestKrogh.test_shapes_vectorvalue
  s    dggbhhtwwryy|&DExx!~%%%xx1#6)))xx1a&	"f,,,rB   c                 4   t        | j                  t        j                  | j                  dg            }t        j
                   |d            dk(  sJ t        j
                   |dg            dk(  sJ t        j
                   |ddg            dk(  sJ y Nr   r   r    )r   r   )r   r   )r   r   r!   r   r   r+   r   s     r@   test_shapes_1d_vectorvaluez$TestKrogh.test_shapes_1d_vectorvalue  sy    dggbhhtwws&;<xx!~%%%xx1#6)))xx1Q%!V+++rB   c           	         t        | j                  t        j                  | j                  t        j
                  d                  }|j                  }t        j                  |j                  d            |dfk(  sJ t        j                  |j                  dg            |ddfk(  sJ t        j                  |j                  ddg            |ddfk(  sJ y Nr   r   r   r   )	r   r   r!   r   r   r   r   r+   rX   r   s      r@   "test_shapes_vectorvalue_derivativez,TestKrogh.test_shapes_vectorvalue_derivative  s    dggbhhtwwryy|&DECCxxa()aV333xxqc*+1ay888xxqe,-!Q:::rB   c           
         t        | j                  | j                        }t        }t	         || j
                         || j                  | j                  | j
                               t	        |j                  | j
                  d       || j                  | j                  | j
                  d             t	        |j                  | j
                  d       || j                  | j                  | j
                  ddg             y )Nr   derr   r   )r   r   r   r	   r   r   r]   rX   )rr   rv   kis      r@   test_wrapperzTestKrogh.test_wrapper  s    dggtww/AdllOR$,,-OPALLq9tww1E	GAMM$,,:twwAq6J	LrB   c           	          g d}t        j                  g d      }t        ||      }t        t	         ||      |z
  |j                  |d      z        t        j                  |      d       y )N)r      i  i  i  i  i|  i$	  i  i  i   i03  i`  )gffffffg닥ąg䑉g!p$ЀgV0޿gx*ZֿgDпg2]g H.g9Cg6D.gG/g?r   g|=atol)r!   r   r   r   absr]   
zeros_like)rr   r7   
offset_cdffs       r@   test_int_inputszTestKrogh.test_int_inputs&  sa    XX ? @
 a,QqTJ.!,,q!2DDEj1	?rB   c                 R   t        j                  g d      t        j                  g d      }}t        ||      }|j                  d      }t        ||j                        j                  d      dt        ||j
                        j                  d      z  z   }t        ||d       y )N)r   r   r   r   r   )r   r   r   r   r   r   r   V瞯<r   )r!   r   r   rX   realimagr   )rr   r7   r9   funccmplxcmplx2s         r@   test_derivatives_complexz"TestKrogh.test_derivatives_complex3  s    xx)*BHH5K,L1 A&  ##Aqvv.::1=&q!&&1==a@@AvE2rB   c                     t        j                  t        d      5  t        t	        j
                  d      t	        j                  d             d d d        y # 1 sw Y   y xY w)Nz40 degrees provided,match(   )pytestwarnsUserWarningr   r!   r   onesr   s    r@   test_high_degree_warningz"TestKrogh.test_high_degree_warning=  s@    \\+-CD 	:biimRWWR[9	: 	: 	:s   3AA!c                 j     t         j                   j                        } fd}t        d||       y )Nc                 *     |j                          y rW   r   _interprr   s     r@   	worker_fnz-TestKrogh.test_concurrency.<locals>.worker_fnF      477OrB   r   )r   r   r   r   rr   rv   r  s   `  r@   test_concurrencyzTestKrogh.test_concurrencyB  s*    dggtww/	 	 Iq1rB   N)rs   rt   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markthread_unsafer  r  r   rB   r@   r   r      s    *JY
&&C=//J
/*9-,;L?3 [[: : [[2 2rB   r   c                       e Zd Zd Zy)
TestTaylorc                     d}t        t        j                  d|dd      }t        |dz         D ]$  }t	         |d      d       |j                         }& t	         |d      d       y )NrD   r   r      )r   r!   expr%   r   r   )rr   degreer   r   s       r@   test_exponentialzTestTaylor.test_exponentialM  s]    )"&&!VQCvax 	A!Q'	A	 	AaD#rB   N)rs   rt   ru   r  r   rB   r@   r  r  L  s    $rB   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej2                  j4                  d        Zej2                  j4                  d        Zy)TestBarycentricc                     t         j                  j                  g d      | _        t        j                  ddd      | _        t        j                  ddd      | _        | j                  | j                        | _        y r   r   r   s    r@   r   zTestBarycentric.setup_methodW  sU    112CD{{2q#.++b!Q'..)rB   c                     t        | j                  | j                  d      }t         || j                        | j                  | j                               y )Nr   )random_state)r
   r   r   r   r   r   r   s     r@   r   zTestBarycentric.test_lagrange]  s7    #DGGTWW1E$,,)EFrB   c                     t        | j                  | j                  d      }t         |d      | j	                  d      d       t         |t        j                  d            | j	                  t        j                  d            d       y )Nr   r6   r   Fr   )r
   r   r   r   r   r!   r   r   s     r@   r   zTestBarycentric.test_scalarb  sZ    #DGGTWW!<!dnnQ/%@"((1+rxx{(CeTrB   c                 $   t        | j                  | j                        }|j                  | j                        }t        |j                  d         D ]:  }t         | j                  j                  |      | j                        ||          < y r   )
r
   r   r   rX   r   r%   r+   r   r   r   r   s       r@   r   z TestBarycentric.test_derivativesg  so    #DGGTWW5MM$,,'qwwqz" 	IA3DNN003DLLA1Q4H	IrB   c                 V   t        | j                  | j                        }|j                  | j                  t        | j                        dz         }t        |j                  d         D ]<  }t         | j                  j                  |      | j                        ||   d       > y )Nr   r   -q=r   )r
   r   r   rX   r   r&   r%   r+   r   r   r   r   s       r@   r   z$TestBarycentric.test_low_derivativesm  s    #DGGTWW5MM$,,DGGQ7qwwqz" 	(A3DNN003DLLAaD!&(	(rB   c                     t        | j                  | j                        }d}|j                  | j                  |      }t        |      D ]+  }t        |j                  | j                  |      ||          - y r   )r
   r   r   rX   r   r%   r   r]   r   s        r@   r   zTestBarycentric.test_derivativeu  sa    #DGGTWW5MM$,,*q 	AAALLq91Q4@	ArB   c           	      P   t        | j                  | j                        }t        t	        | j                        dt	        | j                        z        D ]N  }t        |j                  | j                  |      t        j                  t	        | j                                     P y )NrD   )
r
   r   r   r%   r&   r   r]   r   r!   r*   r   s      r@   r   z$TestBarycentric.test_high_derivative|  sn    #DGGTWW5s477|Qs477|^4 	9AALLq9HHS%679	9rB   c                    | j                   }t        j                  j                  g d      }t        j                  j                  g d      }t        j                   || j
                         || j
                         || j
                        fd      }t        | j
                  |d      }|j                  | j                        }t        |j                  d         D ]  }t        ||   t        j                   |j                  |      | j                         |j                  |      | j                         |j                  |      | j                        fd      d        y Nr   r   r   rH   r   r!  r   )r   r!   r   r   r   r   r
   rX   r   r%   r+   r   r   r   s           r@   r   z%TestBarycentric.test_ndim_derivatives  s   ((8(();<XXuTWW~uTWW~uTWW~FRP#DGGRa8MM$,,'qwwqz" 	(AAaDHHnekk!nT\\&B&4ekk!nT\\&B&4ekk!nT\\&B&D +-. "'(	(rB   c                    | j                   }t        j                  j                  g d      }t        j                  j                  g d      }t        j                   || j
                         || j
                         || j
                        fd      }t        | j
                  |d      }t        |j                        D ]  }t        |j                  | j                  |      t        j                   |j                  |      | j                         |j                  |      | j                         |j                  |      | j                        fd      d        y r%  )r   r!   r   r   r   r   r
   r%   r   r   r]   r   r   r   s          r@   r   z$TestBarycentric.test_ndim_derivative  s   ((8(();<XXuTWW~uTWW~uTWW~FRP#DGGRa8qss 	(AALLq9HHnekk!nT\\&B&4ekk!nT\\&B&4ekk!nT\\&B&D +-. "'(	(rB   c                     t        | j                        }|j                  | j                         t	        | j                  | j                         || j                               y rW   )r
   r   set_yir   r   r   r   r   s     r@   test_delayedzTestBarycentric.test_delayed  s?    #DGG,	DNN4<<8!DLL/JrB   c                    t        | j                  d d | j                  d d       }|j                  | j                  dd  | j                  dd         t	        | j                  | j                         || j                               y )Nr   )r
   r   r   add_xir   r   r   r   s     r@   test_appendzTestBarycentric.test_append  sc    #DGGBQK!=	dggabk*DNN4<<8!DLL/JrB   c                    g d}t        j                  ddgddgddgg      }t        } |||      }t        |j                  d         D cg c]  } |||d d |f          }}t        j
                  ddd      }t         ||      t        j                  |D cg c]
  } ||       c}      j                         y c c}w c c}w )Nr   r   r   r   r   r   r   )	r!   r   r
   r%   r+   r   r   r   r   )	rr   r   r   BIrv   r   r   r   r   s	            r@   r   zTestBarycentric.test_vector  s    XX1v1v1v./$r2J(-bhhqk(:;1bR1X;;++b!S)AgJJJB'?q'
'?@BB	D < (@s   C Cc                 p   t        | j                  | j                        }t        j                   |d            dk(  sJ t        j                   |t        j
                  d                  dk(  sJ t        j                   |dg            dk(  sJ t        j                   |ddg            dk(  sJ y r   )r
   r   r   r!   r+   r   r   s     r@   r   z'TestBarycentric.test_shapes_scalarvalue  s    #DGGTWW5xx!~###xx"((1+'2---xx1#4'''xx1a&	"d***rB   c                    t        | j                  | j                        }|j                  }t	        j
                  |j                  d            |fk(  sJ t	        j
                  |j                  t	        j                  d                  |fk(  sJ t	        j
                  |j                  dg            |dfk(  sJ t	        j
                  |j                  ddg            |dfk(  sJ y r   )r
   r   r   r   r!   r+   rX   r   r   s      r@   r   z2TestBarycentric.test_shapes_scalarvalue_derivative  s    #DGGDGG4CCxxa()aT111xxbhhqk23t;;;xxqc*+!u444xxqe,-!A666rB   c           	      X   t        | j                  t        j                  | j                  t        j
                  d                  }t        j                   |d            dk(  sJ t        j                   |dg            dk(  sJ t        j                   |ddg            dk(  sJ y r   )r
   r   r!   r   r   r   r+   r   s     r@   r   z'TestBarycentric.test_shapes_vectorvalue  s    #DGGRXXdggryy|-LMxx!~%%%xx1#6)))xx1a&	"f,,,rB   c                 4   t        | j                  t        j                  | j                  dg            }t        j
                   |d            dk(  sJ t        j
                   |dg            dk(  sJ t        j
                   |ddg            dk(  sJ y r   )r
   r   r!   r   r   r+   r   s     r@   r   z*TestBarycentric.test_shapes_1d_vectorvalue  sy    #DGGRXXdggs-CDxx!~%%%xx1#6)))xx1a&	"f,,,rB   c           	         t        | j                  t        j                  | j                  t        j
                  d                  }|j                  }t        j                  |j                  d            |dfk(  sJ t        j                  |j                  dg            |ddfk(  sJ t        j                  |j                  ddg            |ddfk(  sJ y r   )	r
   r   r!   r   r   r   r   r+   rX   r   s      r@   r   z2TestBarycentric.test_shapes_vectorvalue_derivative  s    #DGGBHHTWWRYYq\,JKCCxxa()aV333xxqc*+1ay888xxq!f-.1a);;;rB   c           
         t        | j                  | j                  d      }t        }t	         || j
                         || j                  | j                  | j
                  d             t	        |j                  | j
                  d       || j                  | j                  | j
                  dd             t	        |j                  | j
                  d       || j                  | j                  | j
                  ddgd             y )Nr   r  r   )r   r6   r   )r
   r   r   r   r   r   r]   rX   )rr   rv   bis      r@   r   zTestBarycentric.test_wrapper  s    #DGGTWW!<$$,,DGGTWWdllPQ)RST\\15477DGGT\\qaH	JdllA6477DGGT\\1v1M	OrB   c                     dt        j                  dd      z  }t        j                  dd      }t        ||d      }t        |t        j                  d             y )Ni  r      g     @g      #@)r!   r   r   r   r   )rr   r7   r9   values       r@   test_int_inputzTestBarycentric.test_int_input  sG    299Q##IIa'1j9E2::c?3rB   c                 n   d}t        j                  |dz         j                  t         j                        }t        j                  |t         j
                  z  |z        }d|z  }|dxx   dz  cc<   |dxx   dz  cc<   t        |      }|j                  d   }t        |j                  d|z  z  |       y )NiL  r   r   r         ?r   )	r!   r   astypefloat64cospir
   wir   )rr   r   jr7   wrv   factors          r@   test_large_chebyshevz$TestBarycentric.test_large_chebyshev  s     IIa!e##BJJ/FF1ruu9q=! AI	!	"#A& aADDAJ/3rB   c                     t        ddgddg      }t        j                  d      5   ||j                        }d d d        t	        |j
                  j                                y # 1 sw Y   .xY w)Nr   r   r   raise)divide)r
   r!   errstater:   r   r<   ravel)rr   rv   r<   s      r@   test_warningzTestBarycentric.test_warning  s\     $QFQF3[[( 	144B	
 	B

-	 	s   A''A0c                     t        j                  g d      }t        j                  g d      }t        j                  t        d      5  t        ||       d d d        y # 1 sw Y   y xY w)N)皙?r;  ?r;  r   z)Interpolation points xi must be distinct.r   )r!   r   r   r   
ValueErrorr
   )rr   xisr   s      r@   test_repeated_nodez"TestBarycentric.test_repeated_node
  sR     hh+,XXl#]]:!LN 	-#C,	- 	- 	-s   
A  A)c                 j     t         j                   j                        } fd}t        d||       y )Nc                 *     |j                          y rW   r  r  s     r@   r  z3TestBarycentric.test_concurrency.<locals>.worker_fn  r  rB   r   )r
   r   r   r   r  s   `  r@   r  z TestBarycentric.test_concurrency  s*    #DGGTWW5	 	 Iq1rB   N)rs   rt   ru   r   r   r   r   r   r   r   r   r   r)  r,  r   r   r   r   r   r   r   r9  rD  rJ  r   r  r  rP  r  r   rB   r@   r  r  V  s    *G
U
I(A9( (K
K
D+7--<O442	. [[- - [[2 2rB   r  c                   |    e Zd ZddZd Zd Zd Zd Zd Ze	j                  j                  d        Zd Zd	 Zd
 Zy)	TestPCHIPc                     t         j                  j                  d      }t        j                  |j                  |            }|j                  |      }t	        ||      ||fS )Nr   )r!   r"   r#   sortr   )rr   nptsr6   r:   r<   s        r@   _make_randomzTestPCHIP._make_random  sN    ii##D)WWSZZ%&ZZR}b"$$rB   c                 *   | j                         \  }}}t        t        |      dz
        D ]e  }||   ||dz      }}||   ||dz      }}||kD  r||}}t        j                  ||d      }	 ||	      }
||
dz   k  |
|dz   k  z  j                         reJ  y )Nr   r   r   rX  r%   r&   r!   r   allrr   r   r:   r<   r   x1x2y1y2xpyps              r@   test_overshootzTestPCHIP.test_overshoot%  s    %%'	2rs2wqy! 	CAUBqsGBUBqsGBBwRBRR(B2B2:%"U
*:;@@BBB	CrB   c                    | j                         \  }}}t        t        |      dz
        D ]_  }||   ||dz      }}||   ||dz      }}t        j                  ||d      }	 ||	      }
||z
  |
dd  |
d d z
  z  dkD  j                         r_J  y )Nr   r   r   rZ  r\  s              r@   test_monotonezTestPCHIP.test_monotone1  s    %%'	2rs2wqy! 	;AUBqsGBUBqsGBRR(B2BUr!"v2A/!388:::	;rB   c                     t        j                  g dg dg      }t        j                  d      } t        |d   |d         |      }|dz  } t        |d   |d         |      }t	        ||dd       y )	N)
r   r   r      /   <   O   W   c   r   )
rm  ir   r      &   -   5   7   r   r   r         ?+=)r   rtol)r!   r   r   r   r   )rr   dataxxcurvedata1curve1s         r@   	test_castzTestPCHIP.test_cast;  sw    xx@DF GYYs^'d1gtAw'+s
*uQxq*2.vE>rB   c                 &   d}t        j                  t        j                  |            }t	        |d d df   |d d df         }d}t        j                  t        j                  |            }t        |d d df    ||d d df         dd       y )Na  
          7.99   0.00000E+0
          8.09   0.27643E-4
          8.19   0.43750E-1
          8.70   0.16918E+0
          9.20   0.46943E+0
         10.00   0.94374E+0
         12.00   0.99864E+0
         15.00   0.99992E+0
         20.00   0.99999E+0
        r   r   a^  
           7.9900       0.0000
           9.1910       0.4640
          10.3920       0.9645
          11.5930       0.9965
          12.7940       0.9992
          13.9950       0.9998
          15.1960       0.9999
          16.3970       1.0000
          17.5980       1.0000
          18.7990       1.0000
          20.0000       1.0000
                g-C6
?ru  r   )r!   loadtxtioStringIOr   r   )rr   dataStrrv  pch	resultStrresults         r@   test_nagzTestPCHIP.test_nagG  s    

 zz"++g./D1ItAaCy)	 BKK	23qsS!%5BTJrB   c                    t        j                  g d      }t        j                  g d      }t        j                  g d      }t        ||      t        ||      fD ]  }|d   |d   fD ]  } ||d      dk7  rJ  ! y )N)r}  rL  g      ?gffffff?)皙uq@g     @@     @@     @)r  r  g     p@r  r   r   r   )r!   r   r   )rr   r7   r_  r`  ppts         r@   test_endslopeszTestPCHIP.test_endslopesj  s~     HH+,XX34XX45B<q". 	%BdAbE] %!Qx1}$}%	%rB   c                 F   t        j                  d      }t        j                  |      }t        j                         5  t        j
                  d       t        ||      }d d d        t        j                  ddd      }t         |      dk(        sJ y # 1 sw Y   7xY w)Nr   errorr   	   e   r}  )	r!   r   r   warningscatch_warningsfilterwarningsr   r   r[  )rr   r7   r9   r  rw  s        r@   test_all_zeroszTestPCHIP.test_all_zerost  s    IIbMMM! $$& 	##G,1+C	 [[As#3r7b=!!!	 	s   "BB c                     t        j                  ddd      }t        ddgddg      }t         ||      d|z  d       y )Nr   r   r7  r   r   r   )r!   r   r   r   )rr   r7   r   s      r@   test_two_pointszTestPCHIP.test_two_points  s>    
 KK1b!1a&1a&!!ac.rB   c                 `   t        t        g dg ddgd      t        j                  dg             t        t        g dg ddgd      t        j                  dg             t        t        j                  t        g dg ddgddg            t        j                  dgdgg             y )	Nr   r   r   )r   rD   r   r;  r   r   rs  r   g      @)r   r   r!   r   r   s    r@   test_pchip_interpolatez TestPCHIP.test_pchip_interpolate  s    !iSEqAJJt	 	"iSEqAJJu	 	"JJ(Iu1a&QRJJs|$	&rB   c                     t        ddgddg      }|j                         }t        |t        j                  dg             y )Nr   r   r   r;  )r   rootsr   r!   r   )rr   r   r   s      r@   
test_rootszTestPCHIP.test_roots  s6    1a&2q'"GGI2::se,-rB   N)   )rs   rt   ru   rX  rc  re  r{  r  r  r   r  r  r  r  r  r  r   rB   r@   rT  rT    sP    %
C;
?!KF% [[
" 
"/&.rB   rT  c                   ^    e Zd Ze	 	 dd       Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)TestCubicSplinec           	      &   | j                   }| j                  }t        j                  |      }|j	                  |j
                  d   gdg|j                  dz
  z  z         }|dd }t        |dddf   |dddf   |dz  z  |dddf   |dz  z  z   |dddf   |z  z   |dddf   z   ||       t        |dddf   d|dddf   z  |dz  z  d|dddf   z  |z  z   |dddf   z   ||       t        |dddf   d|dddf   z  |z  |dddf   z   ||       |j                  dk(  r3|dk(  r.|dk(  r)t        |d   t        j                  |d         ||       y|d	k(  rjt         | |d   d       | |d   d      ||       t         | |d   d       | |d   d      ||       t         | |d   d       | |d   d      ||       y|dk(  rq|j                  dk(  rL | |d          | |d         z
  |d   z  }t        j                  |      }t         | |d   d      |||       nt        |d
   |d   ||       n|dk(  r7t         | |d   d      t        j                   | |d   d            ||       nm|dk(  r7t         | |d   d      t        j                   | |d   d            ||       n1|\  }	}
t         | |d   |	      t        j                  |
      ||       |dk(  rq|j                  dk(  rL | |d          | |d         z
  |d   z  }t        j                  |      }t         | |d   d      |||       yt        |d   |d   ||       y|dk(  r7t         | |d   d      t        j                   | |d   d            ||       y|dk(  r=t         | |d   d      t        j                   | |d   d            d|z  d|z         y|\  }	}
t         | |d   |	      t        j                  |
      ||       y)zVCheck that spline coefficients satisfy the continuity and boundary
        conditions.r   r   r   Nr   r   r~  
not-a-knotperiodic)r   r   )r   r   rL   rK   )r   r   )r   r   )r7   cr!   diffr/   r+   r.   r   r,   r   r   )Sbc_startbc_endtolr7   r  dxdxislopeorderr8  s              r@   check_correctnessz!TestCubicSpline.check_correctness  sJ   
 CCCCWWQZZZ!qvvz(::;"g 	!QR%!AssF)c1f"4qCRCy367I"I!SbS&	C#(*+AssF)#4:=C	I!QR%!a3B3i-#q&"8Aa"fI+#,./3B3i#8>A	M!QR%!a3B3i-#"5!SbS&	"A s	, 66Q;8|3,8NAaD"--!"5CcJ z!AadAJ!B%#CHAadAJ!B%#CHAadAJ!B%#CH |#vv{1Q41QqT7*be3

5)!A$
E#F$4sE"!A$
BMM!AaD!*5CcK"!A$
BMM!AaD!*5CcK $LE5AadENBJJu,=CcR\!vv{1Q41QqT7*be3

5)!A$
E#F%!E(3Gy AaeQKq2{)C!$30y AaeQKq2{)C!"3QsU4 "LE5AaeUORZZ->SsSrB   c           	         t        |j                        }||= t        j                  |      }|j	                  d       t        j                  |      }|j	                  d       dddd|fd|fg}|d d D ]$  }t        ||||      }	| j                  |	||       & |D ]/  }
|D ](  }t        ||||
|f      }	| j                  |	|
|d	
       * 1 y )Nr   r   r  rK   rL   r   r   r   rM   g+=r  )r$   r+   r!   emptyfillr   r  )rr   r7   r9   r   r4   first_derivsecond_derivbc_allrR   r  r  r  s               r@   check_all_bczTestCubicSpline.check_all_bc  s    177mhh{+xx,"
 !* 	.BAqtR8A""1b"-	.  	GH  G14(F9KL&&q(F&FG	GrB   c                    t        j                  g d      }t        j                  g d      }dd|j                  fD ]  }| j                  |d | |d | d       t        j                  d|df      }|d | |dd d df<   |d | dz
  |dd d df<   |d | dz   |dd d df<   |d | dz   |dd d df<   | j                  |d | |d        y )N)r   r   r;  r   r   g      @g      @r  )r   g      r   r   g      @r   r   r;  r   r   r   r   )r!   r   r,   r  r  )rr   r7   r9   r   Ys        r@   test_generalzTestCubicSpline.test_general  s    HH45HH45Q 	+AaeQrUA.!Q#A2AAaAgJ2AAaAgJ2AAaAgJ2AAaAgJaeQ*	+rB   c                    dD ]  }t        j                  ddt         j                  z  |      }t        j                  |      }t	        ||d      }| j                  |dd       t        j                  d|df      }||dd d df<   |dz   |dd d df<   |dz
  |dd d df<   |dz   |dd d df<   t	        ||dd      }| j                  |dd        y )	N)r   r   rD   r   r   r  rM   r   rD   r  )r!   r   r?  r>  r   r  r  )rr   r   r7   r9   r  r  s         r@   test_periodiczTestCubicSpline.test_periodic  s     	>AAq255y!,Aq	AAq*5A""1j*=!Q#AAaAgJQAaAgJQAaAgJQAaAgJAqq*=A""1j*=	>rB   c                     t        j                  ddt         j                  z  d      }t        j                  |      }t	        ||d      }t         |d       |ddt         j                  z  z         d       y )	Nr   r   r   r  r  r   r  )decimal)r!   r   r?  r>  r   r   rr   r7   r9   r  s       r@   test_periodic_evalz"TestCubicSpline.test_periodic_eval  sX    KK1ruu9b)FF1I1j1AaD!ABEE	M"2B?rB   c                     t        j                  g d      }t        j                  g d      }t        ||dd      }| j                  |dd       y )N)rM  ?gffffff? @@      @g333333@g@g@g      @g      @g      @g       @gffffff"@g      %@g&@g333333'@g      (@g333333)@g      *@g*@)r  g      ?g?r  r  g@g333333@g333333@gffffff @r        @gffffff@r  g333333?gffffff?rM  gffffff?g333333?r;  g?r  r  )rM   extrapolate)r!   r   r   r  r  s       r@   *test_second_derivative_continuity_gh_11758z:TestCubicSpline.test_second_derivative_continuity_gh_11758  sN    HH O PHH P Q1jjIq*j9rB   c                    t        j                  g d      }t        j                  g d      }t        ||d      }| j                  |dd       t	         |j                  d      |      t        j                  g d             y )N)rs  g      @r  )rs  g      .@rs  r  r  r   )      Hr  r  )r!   r   r   r  r   r]   r  s       r@   test_three_pointsz!TestCubicSpline.test_three_points#  se     HH%&HH%&1j1q*j9Q*BHH5J,KLrB   c                    t        j                  g d      }t        j                  ddgddgddgg      }t        ||d      }| j                  |dd       t        ||d d df   d      }t        ||d d df   d      }t        j                  ddd	      }t         ||      d d df    ||             t         ||      d d df    ||             y )
N)r}  rs  r  r}  rs  r  r  r   r   r   rD   )r!   r   r   r  r   r   )rr   r7   r9   r  S0S1qs          r@   #test_periodic_three_points_multidimz3TestCubicSpline.test_periodic_three_points_multidim/  s     HH_%HHsCj3*sCj9:1j1q*j9AadGZ8AadGZ8KK1a !QT
BqE*!QT
BqE*rB   c                    t        j                  g dt              }t        j                  g dt              }t        ||      }| j	                  |       t        j                  g d      }t        ||      }| j	                  |       t        ||dz  d      }| j	                  |dd	       t        j                  g d      }t        ||d
dg      }| j	                  |d
d       y )N)r   r   r   r   )dtype)r   r   r   r   )y            ?r}  y      ?      y      ?      r   )rK   r   y               @r  rK   r  )r   y       @      ?)r   y      ?      )r!   r   intr   r  r  s       r@   test_dtypeszTestCubicSpline.test_dtypes<  s    HH\-HH]#.1q!HH121q!16+?@q)W5HH]#1}m&DEq-?rB   c                     t         j                  j                  d      }t        j                  |j	                  d            }d|j	                  d      z   }t        ||      }| j                  |d       y )Nr   r   )r,   g     @gvIh%<=r  )r!   r"   r#   rV  uniformr   r  )rr   r6   r7   r9   r  s        r@   test_small_dxzTestCubicSpline.test_small_dxM  sc    ii##A&GGCKKSK)*#++3+''1qe,rB   c           
      *   t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  t         j                  dddg      }t        j                  g d      }t        j                  t         j                  dddg      }g d}dg}dg}	t        t        t
        ||       t        t        t
        ||       t        t        t
        ||       t        t        t
        ||       t        t        t
        ||       t        t        t
        |d d t         j                  f   |       t        t        t
        ||	       g d	}
|
D ]  }t        t        t
        ||d
|d        t         j                  ||f   }d}ddg dff}ddd
d
ggff}t        t        t
        ||d
|d       t        t        t
        ||d
|d       t        t        t
        ||d
|d       t        t        t
        ||d
dd       y )Nr   )y      ?      ?r   r   r   r   r   r   )r   r   r   r   r  r   ))r  rL   ))r   r   )r   r   )r   r   )r}  r}  z
not-a-typor   T)rL   r  rL   )r   r   r   r  )r!   r   nanassert_raisesrN  r   newaxisc_)rr   r7   r9   xcxnxoyny3r]  r_  wrong_bcrM   r  bc1bc2bc3s                   r@   test_incorrect_inputsz%TestCubicSpline.test_incorrect_inputsT  s   HH\"HH\"XX'(XXrvvq!Q'(XXl#XXrvvq!Q'(SSj+r15j+r15j+q"5j+r15j+q"5j+qBJJ/?Cj+r26"   	KG*k1aGTJ	K EE!Q$K!1i.)11vh-(j+q!QTBj+q!QTBj+q!QTB 	j+q!Q
DIrB   N)r  r  rt  )rs   rt   ru   staticmethodr  r  r  r  r  r  r  r  r  r  r  r   rB   r@   r  r    sT    ;G#?T ?TBG.+>@:
M+@"-&JrB   r  c                      g d} g d}g d}t        | ||      }t         ||       |ddd       t         || d      |ddd       y )N)r   r   r   )r   r   r   )r   r   r   Fr   )rA   check_dtyperu  r   )r   r   )r7   r9   r;   r8   s       r@   #test_CubicHermiteSpline_correctnessr  }  sI    AAD1a&AAaD!ENAaGTu%eTrB   c                      g d} g d}g d}t        t        t        | ||       ddt        j                  g}t        t        t        | ||       y )Nr  )r   r   rD   )r   r   r   r   r   r   )r  rN  r   r!   r  )r7   r9   r;   dydx_with_nans       r@   &test_CubicHermiteSpline_error_handlingr    sB    AAD*0!Q=266NM*0!QFrB   c                  *   t        j                  ddg      } t        j                  ddg      }t        j                  ddg      }t        | ||      }|j                  d      }|j                  j
                  d	   d	k(  sJ |j                  d
k(  sJ y )NgMbP?gMb`?gBܻ>gdJ>g/"g%"T)r  r   r   )r!   r   r   r  r  r+   r,   )r7   r9   dyr   r   s        r@   test_roots_extrapolate_gh_11185r    s    
% A
..12A	;	*	+B1a$A 	
D!A3399Q<166Q;;rB   c                   f   e Zd Zej                  j                  d ej                  d       ej                  d      g      ej                  j                  dg d      ej                  j                  dg d      ej                  j                  dee	g      d	                             Z
ej                  j                  d ej                  d       ej                  d      g      ej                  j                  dg d      ej                  j                  deeg      d
                      Zy)TestZeroSizeArraysr9   )r   r   rD   )r   rD   r   rM   )r  r  rK   rL   r   r   clsc                     t        j                  d      }t        j                  d      } ||||      } ||      j                  dk(  sJ  ||      j                  |j                  |j                  dd  z   k(  sJ t        j                  |d|      } |||||      }|j                  d | |j                  fz   |j                  |dz   d  z   }	 ||      j                  dk(  sJ  ||      j                  |	k(  sJ y )Nr   r   r  r   r   )rM   r   r!   r   r,   r+   moveaxis)
rr   r  r9   rM   r   r7   xvalobjytshs
             r@   test_zero_sizez!TestZeroSizeArrays.test_zero_size  s     IIbMyy|!Q(4y~~"""4y$**qwwqr{":::: [[At$!Rt4XXet_		},rxxQ/@@4y~~"""4y"$$$rB   c                    t        j                  d      }t        j                  d      } |||      } ||      j                  dk(  sJ  ||      j                  |j                  |j                  dd  z   k(  sJ t        j                  |d|      } ||||      }|j                  d | |j                  fz   |j                  |dz   d  z   } ||      j                  dk(  sJ  ||      j                  |k(  sJ y )Nr   r   r   r   rH   r  )	rr   r  r9   r   r7   r  r  r  r  s	            r@   test_zero_size_2z#TestZeroSizeArrays.test_zero_size_2  s    
 IIbMyy|!Qi4y~~"""4y$**qwwqr{":::: [[At$!Rd#XXet_		},rxxQ/@@4y~~"""4y"$$$rB   N)rs   rt   ru   r   r  parametrizer!   r*   r   r   r  r   r   r   r   rB   r@   r  r    s    [[S8288J#7#+288J#7#9 :[[YMO[[VY/[[U%7$EF% G 0O:%  [[S8288J#7#+288J#7#9 :[[VY/[[U%68K$LM% N 0:%rB   r  )Nr   N)*r  r  numpyr!   scipy._lib._array_apir   r   r   r   r   r   r  scipy.interpolater   r	   r
   r   r   r   r   r   r   r   r   r   scipy._lib._testutilsr   rA   rN   rT   rZ   r   r   r   r  r  rT  r  r  r  r  r  r   rB   r@   <module>r     s     	   +     : LM&R 
%G"I26j/j2 j2Z$ $E2 E2P}. }.@\J \J~UG
/% /%rB   