+
    LV-j§E  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^RI	H
t
 ^ RIHu Ht ^ RIHt ^ RIHtHt ^RIHtHt R.tR	 t]! R
RR.R7       ! R R4      4       tR t]P6                  3R ltRR]P6                  /R lltR# )é    N)Úprod)ÚGenericAlias)Ú_dierckx)Ú	csr_array)Úarray_namespaceÚxp_capabilities)Ú_not_a_knotÚBSplineÚ	NdBSplinec                ó˜   € \         P                  ! V \         P                  4      '       d   \         P                  # \         P                  # )z>Return np.complex128 for complex dtypes, np.float64 otherwise.)ÚnpÚ
issubdtypeÚcomplexfloatingÚ
complex128Úfloat64©Údtypes   &Úm/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/scipy/interpolate/_ndbspline.pyÚ
_get_dtyper      s-   € ä	‡}‚}�UœB×.Ñ.×/Ò/Ü�}‰}Ðä�z‰zÐó    TF)Úcpu_onlyÚjax_jitÚskip_backendsc                   ó¨   a € ] tR t^t o Rt]! ]4      tRR/R lt]	R 4       t
]	R 4       t]	R 4       tRRRR/R	 lt]RR
 l4       tRR ltR tRtV tR# )r   a  Tensor product spline object.

The value at point ``xp = (x1, x2, ..., xN)`` is evaluated as a linear
combination of products of one-dimensional b-splines in each of the ``N``
dimensions::

   c[i1, i2, ..., iN] * B(x1; i1, t1) * B(x2; i2, t2) * ... * B(xN; iN, tN)


Here ``B(x; i, t)`` is the ``i``-th b-spline defined by the knot vector
``t`` evaluated at ``x``.

Parameters
----------
t : tuple of 1D ndarrays
    knot vectors in directions 1, 2, ... N,
    ``len(t[i]) == n[i] + k + 1``
c : ndarray, shape (n1, n2, ..., nN, ...)
    b-spline coefficients
k : int or length-d tuple of integers
    spline degrees.
    A single integer is interpreted as having this degree for
    all dimensions.
extrapolate : bool, optional
    Whether to extrapolate out-of-bounds inputs, or return `nan`.
    Default is to extrapolate.

Attributes
----------
t : tuple of ndarrays
    Knots vectors.
c : ndarray
    Coefficients of the tensor-product spline.
k : tuple of integers
    Degrees for each dimension.
extrapolate : bool, optional
    Whether to extrapolate or return nans for out-of-bounds inputs.
    Defaults to true.

Methods
-------
__call__
derivative
design_matrix

See Also
--------
BSpline : a one-dimensional B-spline object
NdPPoly : an N-dimensional piecewise tensor product polynomial

ÚextrapolateNc               óz  € \        W14      w  V n        V n        w  V n        V n        \        V.VO5!  P                  V n        Vf   Rp\        V4      V n	        \        P                  ! V4      V n        V P                  P                  ^ ,          pV P                  P                  V8  d   \        RV R24      h\        V4       F«  pV P                   V,          pV P"                  V,          pVP                  ^ ,          V,
          ^,
          p	V P                  P                  V,          V	8w  g   Kn  \        RV RV P                  P                  V,           R\%        V4       RV	 RV R	24      h	  \'        V P                  P(                  4      p
\        P*                  ! V P                  V
R
7      V n        R # )NTzCoefficients must be at least z-dimensional.z,Knots, coefficients and degree in dimension z are inconsistent: got z coefficients for z knots, need at least z for k=Ú.r   )Ú_preprocess_inputsÚ_kÚ_indices_k1dÚ_tÚ_len_tr   ÚasarrayÚ_asarrayÚboolr   r   Ú_cÚshapeÚndimÚ
ValueErrorÚrangeÚtÚkÚlenr   r   Úascontiguousarray)Úselfr+   Úcr,   r   r(   ÚdÚtdÚkdÚnÚdts   &&&&$      r   Ú__init__ÚNdBSpline.__init__[   sm  € Ü=OÐPQÓ=UÑ:ˆŒ�Ô"Ñ$: T¤W¨d¬kä'¨Ð.¨AÓ.×6Ñ6ˆŒàÒØˆKÜ Ó,ˆÔä—*’*˜Q“-ˆŒà�w‰w�}‰}˜QÕˆØ�7‰7�<‰<˜$ÔÜÐ=¸d¸VÀ=ÐQÓRÐRä�t–ˆAØ—‘˜•ˆBØ—‘˜•ˆBØ—‘˜•˜bÕ  1Õ$ˆAà�w‰w�}‰}˜QÕ 1Ö$Ü ð $%Ø%& Cð ()Ø)-¯©¯©°qÕ)9Ð(:ð ;%Ü%(¨£W IÐ-CÀAÀ3ð G'Ø'( c¨ð	",ó -ð -ñ ô ˜Ÿ™Ÿ™Ó&ˆÜ×&Ò& t§w¡w°bÔ9ˆŽr   c                ó,   € \        V P                  4      # ©N)Útupler   ©r/   s   &r   r,   ÚNdBSpline.ky   s   € ä�T—W‘W‹~Ðr   c                óø   a € \         ;QJ d;    . V 3R  l\        S P                  P                  ^ ,          4       4       F  NK  	  5# ! V 3R  l\        S P                  P                  ^ ,          4       4       4      # )c              3   ó’   <"  € T F<  pSP                  SP                  VR SP                  V,          13,          4      x € K>  	  R # 5ir9   )r$   r!   r"   )Ú.0r1   r/   s   & €r   Ú	<genexpr>ÚNdBSpline.t.<locals>.<genexpr>€   s;   øé € ð 
Ù@W¸1ˆD�M‰M˜$Ÿ'™' ! _ d§k¡k°!¥n _Ð"4Õ5×6Ð6Ó@Wùs   ƒAA)r:   r*   r!   r'   r;   s   fr   r+   ÚNdBSpline.t}   s]   ø€ ÷ Œuô 
Ü@EÀdÇgÁgÇmÁmÐTUÕFVÔ@Wó
�uð 	
ˆuô 
Ü@EÀdÇgÁgÇmÁmÐTUÕFVÔ@Wó
ó 
ð 	
r   c                ó8   € V P                  V P                  4      # r9   )r$   r&   r;   s   &r   r0   ÚNdBSpline.c„   s   € à�}‰}˜TŸW™WÓ%Ð%r   Únuc               ó†  € V P                   P                  ^ ,          pVf   V P                  p\        V4      pVf)   \        P
                  ! V3\        P                  R7      pM˜\        P                  ! V\        P                  R7      pVP                  ^8w  g   VP                  ^ ,          V8w  d'   \        RV: R\        V P                  4       R24      h\        V^ 8  4      '       d   \        RV: 24      h\        P                  ! V\        R7      pVP                  pVP                  R
VR
,          4      p\        P                  ! V4      pVR
,          V8w  d   \        RV RV 24      hV P                   P"                  P$                  R	8H  pV P                   pV'       d/   V P                   P                  V8X  d   V P                   R,          pVP'                  \        4      pVP                  VP                  RV R,           4      pVP)                  4       p	\        P                  ! VP*                   U
u. uF  p
W¨P"                  P,                  ,          NK!  	  up
\        P                  R7      pVP                  R
,          p\.        P0                  ! VV P                   V P2                  V P4                  VVV	VVV P6                  4
      pVP'                  V P                   P"                  4      pVP                  VRR
 V P                   P                  VR ,           4      pV P9                  V4      # u up
i )aº  Evaluate the tensor product b-spline at ``xi``.

Parameters
----------
xi : array_like, shape(..., ndim)
    The coordinates to evaluate the interpolator at.
    This can be a list or tuple of ndim-dimensional points
    or an array with the shape (num_points, ndim).
nu : sequence of length ``ndim``, optional
    Orders of derivatives to evaluate. Each must be non-negative.
    Defaults to the zeroth derivivative.
extrapolate : bool, optional
    Whether to exrapolate based on first and last intervals in each
    dimension, or return `nan`. Default is to ``self.extrapolate``.

Returns
-------
values : ndarray, shape ``xi.shape[:-1] + self.c.shape[ndim:]``
    Interpolated values at ``xi``
Nr   ú)invalid number of derivative orders nu = ú for ndim = r   z'derivatives must be positive, got nu = zShapes: xi.shape=z
 and ndim=r0   éÿÿÿÿ).N)rI   )r!   r'   r   r%   r   ÚzerosÚint64r#   r(   r)   r-   r+   ÚanyÚfloatÚreshaper.   r&   r   ÚkindÚviewÚravelÚstridesÚitemsizer   Úevaluate_ndbspliner"   r   r    r$   )r/   ÚxirE   r   r(   Úxi_shapeÚwas_complexÚccÚc1Úc1rÚsÚ_strides_c1Únum_c_trÚouts   &&$$          r   Ú__call__ÚNdBSpline.__call__ˆ   s“  € ð* �w‰w�}‰}˜QÕˆàÒØ×*Ñ*ˆKÜ˜;Ó'ˆàŠ:Ü—’˜4˜'¬¯©Ô2‰Bä—’˜B¤b§h¡hÔ/ˆBØ�w‰w˜!Œ|˜rŸx™x¨�{¨dÔ2Ü Ø@¸2¹'ð BÜ! $§&¡&›k˜]¨!ð-ó.ð .ô �2˜‘6�{Š{Ü Ð#KÀbÁWÐ!MÓNÐNô �ZŠZ˜¤%Ô(ˆØ—8‘8ˆØ�Z‰Z˜˜H R�LÓ)ˆÜ×!Ò! "Ó%ˆà�B�<˜4ÔÜÐ0°°
¸*ÀTÀFÐKÓLÐLð —g‘g—m‘m×(Ñ(¨CÑ/ˆØ�W‰Wˆß˜4Ÿ7™7Ÿ<™<¨4Ô/ð —‘˜Õ#ˆBØ�W‰W”U‹^ˆð �Z‰Z˜Ÿ™  $˜¨%Õ/Ó0ˆØ�h‰h‹jˆô —j’jØ+-¯:ª:ó"7Ù+5 að #$§x¡x×'8Ñ'8×"8Ð"8Ù+5ñ"7Ü>@¿h¹hôHˆð —8‘8˜B•<ˆÜ×)Ò)¨"Ø!%§¡Ø!%§¡Ø!%§¡Ø!#Ø!,Ø!$Ø!)Ø!,Ø!%×!2Ñ!2ó

ˆð �h‰h�t—w‘w—}‘}Ó%ˆØ�k‰k˜( 3 B˜-¨$¯'©'¯-©-¸¸Ð*>Õ>Ó?ˆØ�}‰}˜SÓ!Ð!ùò#"7s   É %L>c                ór  aa€ \         P                  ! V\        R7      pVP                  R,          p\	        V4      V8w  d   \        R\	        V4       RV: R24      h\        SV4      w  opw  po\        ;QJ d!    . VV3R l\        V4       4       F  NK  	  5M! VV3R l\        V4       4       4      pVR,          R	,           p	\         P                  ! V	RRR1,          \         P                  R7      RRR1,          P                  4       p
\        P                  ! VVSSWj4      w  r¼p\        W¼V34      # )
a|  Construct the design matrix as a CSR format sparse array.

Parameters
----------
xvals :  ndarray, shape(npts, ndim)
    Data points. ``xvals[j, :]`` gives the ``j``-th data point as an
    ``ndim``-dimensional array.
t : tuple of 1D ndarrays, length-ndim
    Knot vectors in directions 1, 2, ... ndim,
k : int
    B-spline degree.
extrapolate : bool, optional
    Whether to extrapolate out-of-bounds values of raise a `ValueError`

Returns
-------
design_matrix : a CSR array
    Each row of the design matrix corresponds to a value in `xvals` and
    contains values of b-spline basis elements which are non-zero
    at this value.

r   z*Data and knots are inconsistent: len(t) = z for  ndim = r   c              3   ó`   <"  € T F#  pSV,          SV,          ,
          ^,
          x € K%  	  R# 5i©é   N© )r?   r1   r,   Úlen_ts   & €€r   r@   Ú*NdBSpline.design_matrix.<locals>.<genexpr>þ   s%   øé € ÐA±[°˜˜a� 1 Q¥4�¨!×+Ò+³[ùs   ƒ+.ºrd   NNNrI   ©rd   )r   r#   rM   r'   r-   r)   r   r:   r*   ÚcumprodrK   Úcopyr   Ú	_coloc_ndr   )ÚclsÚxvalsr+   r,   r   r(   r    r!   Úc_shapeÚcsÚcstridesÚdataÚindicesÚindptrrf   s   &&&f&         @r   Údesign_matrixÚNdBSpline.design_matrixØ   s
  ù€ ô0 —
’
˜5¬Ô.ˆØ�{‰{˜2�ˆÜˆq‹6�TŒ>ÜØ<¼SÀ»V¸Hð EØ‘9˜Aðóð ô (:¸!¸QÓ'?Ñ$ˆˆ<™˜"˜e÷
 ”%ÕA´U¸4´[ÓA—%‘%ÕA´U¸4´[ÓAÓAˆð �R�[˜4ÕˆÜ—:’:˜b¡ 2 �h¬b¯h©hÔ7¹¸"¸Õ=×BÑBÓDˆô !)× 2Ò 2°5Ø�E˜1˜ló!6Ñˆ�vô ˜$¨Ð0Ó1Ð1r   c           	     ó^  € \         P                  ! W^ 4      pVP                  ^ ,          pVP                  R,          pVP                  VR4      p. p	Rp
\	        VP                  ^,          4       Fá  pW58¼  dr   \
        P                  ! W(RV3,          V4      pVP                  V4      pVP                  R\        VP                  4      VP                  ,
          ^,
           Vn        M<\
        P                  ! V\         P                  ! \        V4      ^,
          4      ^ 4      pV
f   VP                  p
V	P                  VP                  4       Kã  	  \         P                  ! V	^R7      P                  \        V	^ ,          4      3V,           4      p\         P                  ! V^ V4      pWê3# )r   rh   NºNNN)ÚaxisrI   )r   Úmoveaxisr'   rN   r*   r
   Úconstruct_fastÚ
derivativer0   r-   r+   r,   rJ   ÚappendÚstack)r/   r0   r+   r,   ry   rE   r4   Útrailing_shapeÚc_flatÚ
new_c_listÚnew_tÚiÚbÚdbÚnew_cs   &&&&&&         r   Ú_bspline_derivative_along_axisÚ(NdBSpline._bspline_derivative_along_axis  sC  € ä�KŠK˜ Ó#ˆØ�G‰G�A�JˆØŸ™ �ˆØ—‘˜1˜bÓ!ˆàˆ
Øˆä�v—|‘| A•Ö'ˆAØŒwÜ×*Ò*¨1°Q¸°T­l¸AÓ>�Ø—\‘\ "Ó%�à—t‘tÐ1œS §¡›Y¨¯©Õ-°Õ1Ð2�•ä×+Ò+¨A¬r¯xªx¼¸A»À½
Ó/CÀQÓG�àŠ}ØŸ™�à×Ñ˜bŸd™dÖ#ñ (ô —’˜¨!Ô,×4Ñ4Ü�˜A•ÓÐ! NÕ2ó4ˆä—’˜E 1 dÓ+ˆàˆ|Ðr   c           	     óú  a € \         P                  ! V\         P                  R7      p\        S P                  4      pVP
                  ^8w  g   VP                  ^ ,          V8w  d'   \        RV: R\        S P                  4       R24      h\        V^ 8  4      '       d   \        RV: 24      h\        S P                  P                  ^ ,          4       Uu. uF+  pS P                  VRS P                  V,          13,          NK-  	  pp\        S P                  4      pS P                  P                  4       p\!        V4       FO  w  r‰V	^ 8X  d   K  S P#                  WuV,          Wh,          W‰R7      w  quV&   \%        Wh,          V	,
          ^ 4      Wh&   KQ  	  \'        \(        ;QJ d    . V 3R lV 4       F  NK  	  5M! V 3R lV 4       4      S P+                  V4      \)        V4      S P,                  R	7      # u upi )
a+  
Construct a new NdBSpline representing the partial derivative.

Parameters
----------
nu : array_like of shape (ndim,)
    Orders of the partial derivatives to compute along each dimension.

Returns
-------
NdBSpline
    A new NdBSpline representing the partial derivative of the original spline.

r   rG   rH   r   z-derivative orders must be positive, got nu = N)rE   c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir9   )r$   )r?   r+   r/   s   & €r   r@   Ú'NdBSpline.derivative.<locals>.<genexpr>Q  s   øé € Ð?¹°A˜tŸ}™}¨Q×/Ð/»ùs   ƒ!)r   )r   r#   rK   r-   r+   r(   r'   r)   rL   r*   r!   r"   Úlistr,   r&   rk   Ú	enumerater‡   Úmaxr   r:   r$   r   )
r/   rE   Únu_arrr(   r1   Út_newÚk_newÚc_newry   r4   s
   f&        r   r|   ÚNdBSpline.derivative)  sš  ø€ ô —’˜B¤b§h¡hÔ/ˆÜ�4—6‘6‹{ˆà�;‰;˜!Ô˜vŸ|™|¨A�°$Ô6ÜØ<°r±gð >Ü˜dŸf™f›+˜ að)ó*ð *ô ˆv˜‰z�?Š?ÜÐMÈÁwÐOÓPÐPô 7<¸D¿G¹G¿M¹MÈ!Õ<LÔ6MÓNÑ6M°�—‘˜˜O˜TŸ[™[¨�^˜OÐ+×,Ð,Ñ6MˆÐNÜ�T—V‘V“ˆØ—‘—‘“ˆä  Ö(‰GˆDØ�AŒvÙà!%×!DÑ!DØ˜T•{ E¥K°ð "Eó "ÑˆE˜‘;ô ˜e�k¨A�o¨qÓ1ˆE‹Kñ )ô ŸœÔ?¹Ó?Ÿ™Ô?¹Ó?Ó?ØŸ™ uÓ-Ü˜u›Ø%)×%5Ñ%5ô
ð 	
ùò Os   Ã1G8)r$   r&   r    r   r"   r!   r   )Tri   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úclassmethodr   Ú__class_getitem__r6   Úpropertyr,   r+   r0   r_   ru   r‡   r|   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s›   ø‡ € ñ2ñj $ LÓ1Ðð:¨tô :ð< ñó ðð ñ
ó ð
ð ñ&ó ð&ðN" ð N"°4ô N"ð` ó02ó ð02ôd÷<,
ð ,
r   c           
     óÔ  € \        V\        4      '       g   \        RV R24      h\        V4      p \        V 4       \
        P                  ! V  Uu. uF  p\        P                  ! V4      NK  	  up\
        P                  R7      p \        V 4      V8w  d&   \        R\        V4       R\        V 4      : R24      h\        V4      p\        V4       EF`  p\
        P                  ! W,          4      pW,          pVP                  ^ ,          V,
          ^,
          pV^ 8  d   \        RV R24      hVP                  ^8w  d   \        R	V R
24      hWv^,           8  d$   \        R^V,          ^,            RV RV R24      h\
        P                  ! V4      ^ 8  P                  4       '       d   \        RV R24      h\        \
        P                  ! WVV^,            4      4      ^8  d   \        RV R24      h\
        P                   ! V4      P#                  4       '       d   EKT  \        RV R24      h	  \        ;QJ d    . R V  4       F  NK  	  5M! R V  4       4      p\
        P$                  ! \
        P&                  ! \)        V4      4      V4      p	\
        P                  ! V	\
        P                  R7      P*                  P-                  4       p
V Uu. uF  p\
        P                  ! V4      NK  	  pp\        V4      pV Uu. uF  p\        V4      NK  	  pp\
        P.                  ! V\1        V4      3\2        R7      pVP5                  \
        P6                  4       \        V4       F   pW,          WäR\        W,          4      13&   K"  	  \
        P                  ! V\
        P                  R7      pW
Wí33#   \         d    T 3T,          p  ELši ; iu upi u upi u upi )z“Helpers: validate and preprocess NdBSpline inputs.

Parameters
----------
k : int or tuple
   Spline orders
t_tpl : tuple or array-likes
   Knots.
z-Expect `t` to be a tuple of array-likes. Got z	 instead.r   z	len(t) = z != len(k) = r   zSpline degree in dimension z cannot be negative.zKnot vector in dimension z must be one-dimensional.zNeed at least z knots for degree z in dimension zKnots in dimension z# must be in a non-decreasing order.z.Need at least two internal knots in dimension z should not have nans or infs.c              3   ó2   "  € T F  q^,           x € K  	  R# 5irc   re   )r?   r3   s   & r   r@   Ú%_preprocess_inputs.<locals>.<genexpr>�  s   é € Ð%¡1˜R�q—&’&£1ùs   ‚N)Ú
isinstancer:   r)   r-   Ú	TypeErrorr   r#   ÚoperatorÚindexrK   r*   r'   r(   ÚdiffrL   ÚuniqueÚisfiniteÚallÚunravel_indexÚaranger   ÚTrk   ÚemptyrŽ   rM   ÚfillÚnan)r,   Út_tplr(   Úkir1   r2   r3   r4   r'   rs   r    r+   Útirf   r!   s   &&             r   r   r   W  sV  € ô �eœU×#Ò#Üð  Ø %˜w ið1ó 
ð 	
ô
 ˆu‹:€DðÜˆAŒô
 	�
Š
±Ó3±¨2”H—N’N 2Ö&±Ñ3¼2¿8¹8ÔD€Aä
ˆ1ƒv�„~Ü˜9¤S¨£Z L°´S¸³V±K¸qÐAÓBÐBô ˆu‹:€DÜ�4�[ˆÜ�ZŠZ˜�Ó!ˆØ�TˆØ�H‰H�Q�K˜"Õ˜qÕ ˆØ�Œ6ÜÐ:¸1¸#ð >*ð +ó ,ð ,à�7‰7�aŒ<ÜÐ8¸¸ð <1ð 2ó 3ð 3à�A�vŒ:Ü˜~¨a°­d°Q­h¨Zð 8!Ø!#  N°1°#°Qð8ó 9ð 9ä�GŠG�B‹K˜!‰O× Ñ ×"Ò"ÜÐ2°1°#ð 66ð 7ó 8ð 8äŒr�yŠy˜˜q 1�u˜Ó&Ó'¨!Ô+Üð  +Ø+,¨#¨Qð0ó 1ð 1ä�{Š{˜2‹×"Ñ"×$Õ$ÜÐ2°1°#ð 6.ð /ó 0ð 0ñ) ÷2 ŒEÑ%¡1Ó%�E‰EÑ%¡1Ó%Ó%€EÜ×ÒœrŸyšy¬¨e«Ó5°uÓ=€GÜ—:’:˜g¬R¯X©XÔ6×8Ñ8×=Ñ=Ó?€Lñ %*Ó*¡E˜qŒR�ZŠZ˜Ž]¡E€EÐ*Üˆu‹:€DÙ$Ó%™u˜ŒS�ŽW™u€EÐ%Ü	�Š�4œ˜U›Ð$¬EÔ	2€BØ‡G�GŒB�F‰F„OÜ�4Ž[ˆØ %¥ˆˆnŒs�5•8‹}ˆnÐÓñ ä�JŠJ�u¤B§H¡HÔ-€Eà˜R˜KÐ'Ð'øôm ô àˆD��I‹ðüò 4ùòR +ùâ%s#   ²N? ÁOËO Ì	O%Î?OÏOc           
      óp  € \         P                  ! VP                  \         P                  4      '       d?   \	        WP
                  V3/ VB p\	        WP                  V3/ VB pVR V,          ,           # VP                  ^8X  dŒ   VP                  ^,          ^8w  dt   \         P                  ! V4      p\        VP                  ^,          4       F;  pV! WRV3,          3/ VB w  VRV3&   pV^ 8w  g   K&  \        RV: RV: RV R24      h	  V# V! W3/ VB w  rhV^ 8w  d   \        RV: RV: R24      hV# )y              ð?rx   z	solver = z returns info =z for column r   z returns info = )r   r   r   r   Ú_iter_solveÚrealÚimagr(   r'   Ú
empty_liker*   r)   )	Úar„   ÚsolverÚsolver_argsrµ   r¶   ÚresÚjÚinfos	   &&&,     r   r´   r´   ¤  s  € ô
 
‡}‚}�Q—W‘Wœb×0Ñ0×1Ò1Ü˜1Ÿf™f fÑ<°Ñ<ˆÜ˜1Ÿf™f fÑ<°Ñ<ˆØ�b˜•g�~Ðà‡v�v�„{�q—w‘w˜q•z A”~Ü�mŠm˜AÓˆÜ�q—w‘w˜q•zÖ"ˆAÙ$ Q¨!¨Q¨$­Ñ?°;Ñ?‰OˆC��1�‰I�tØ�qŽyÜ  I F¡;Ð.>¸±x¸|ÈAÈ3ÈaÐ!PÓQÐQñ #ð ˆ
á˜1Ñ/ ;Ñ/‰	ˆØ�1Œ9Ü 	 ™{Ð*;°D±9¸AÐ>Ó?Ð?Øˆ
r   r¹   c               ód  a a€ \        S 4      p\        ;QJ d    . R S  4       F  NK  	  5M! R S  4       4      p \        S4       \        S 4       F_  w  rx\        \        P
                  ! V4      4      p	V	SV,          8:  g   K4  \        RV	 RV RSV,           RSV,          ^,            R2	4      h	  \        ;QJ d!    . VV 3R l\        V4       4       F  NK  	  5M! VV 3R l\        V4       4       4      p
\        P                  ! \        P                  ! S !   Uu. uF  q»NK  	  up\        R7      p\        P                  WÊS4      pS^ ,          ^8¼  d   VP                  4        VP                  p\!        VR	V 4      \!        WåR	 4      3pVP#                  V4      pV\$        P&                  8w  d)   \(        P*                  ! \,        VR
7      pRV9  d   RVR&   V! VV3/ VB pVP#                  WnVR	 ,           4      p\        V
VS4      #   \         d    S3T,          o ELãi ; iu upi )a+  Construct an interpolating NdBspline.

Parameters
----------
points : tuple of ndarrays of float, with shapes (m1,), ... (mN,)
    The points defining the regular grid in N dimensions. The points in
    each dimension (i.e. every element of the `points` tuple) must be
    strictly ascending or descending.
values : ndarray of float, shape (m1, ..., mN, ...)
    The data on the regular grid in n dimensions.
k : int, optional
    The spline degree. Must be odd. Default is cubic, k=3
solver : a `scipy.sparse.linalg` solver (iterative or direct), optional.
    An iterative solver from `scipy.sparse.linalg` or a direct one,
    `sparse.sparse.linalg.spsolve`.
    Used to solve the sparse linear system
    ``design_matrix @ coefficients = rhs`` for the coefficients.
    Default is `scipy.sparse.linalg.gcrotmk`
solver_args : dict, optional
    Additional arguments for the solver. The call signature is
    ``solver(csr_array, rhs_vector, **solver_args)``

Returns
-------
spl : NdBSpline object

Notes
-----
Boundary conditions are not-a-knot in all dimensions.
c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir9   )r-   )r?   Úxs   & r   r@   Úmake_ndbspl.<locals>.<genexpr>Ü  s   é € Ð,¡V ”S˜—V�V£Vùs   ‚z
There are z points in dimension z, but order z requires at least  z points per dimension.c              3   óŒ   <"  € T F9  p\        \        P                  ! SV,          \        R 7      SV,          4      x € K;  	  R# 5i)r   N)r	   r   r#   rM   )r?   r1   r,   Úpointss   & €€r   r@   rÁ   ë  s5   øé € ð $Ù"�!ô œ"Ÿ*š* V¨A¥Y´eÔ<¸aÀ½d×CÐCÛ"ùs   ƒAAr   N)r¹   Úatolg�íµ ÷Æ°>)r-   r:   r£   r�   r   Ú
atleast_1dr)   r*   r#   Ú	itertoolsÚproductrM   r   ru   Úeliminate_zerosr'   r   rN   ÚsslÚspsolveÚ	functoolsÚpartialr´   )rÃ   Úvaluesr,   r¹   rº   r(   rV   r1   ÚpointÚnumptsr+   Úxvrn   ÚmatrÚv_shapeÚ
vals_shapeÚvalsÚcoefs   f&f$,             r   Úmake_ndbsplrÖ   ¼  sü  ù€ ô> ˆv‹;€DßŒuÑ,¡VÓ,�u‰uÑ,¡VÓ,Ó,€HðÜˆAŒô
 ˜fÖ%‰ˆÜ”R—]’] 5Ó)Ó*ˆØ�Q�q•TŽ>Ü˜z¨&¨Ð1FÀqÀcð J+Ø+,¨Q­4¨&ð 1!Ø!" 1¥ a¥ Ð(>ð@ó Að Añ &÷ 	Œõ $Ü˜T”{ó$�‰õ $Ü˜T”{ó$ó 	$€Aä�JŠJ¤Y×%6Ò%6¸Ò%?Ó@Ñ%?˜ršÑ%?Ñ@ÌÔN€Eô ×"Ñ" 5¨QÓ/€Dð 	ˆ…tˆq„yØ×ÑÔð
 �l‰l€GÜ�w˜u �~Ó&¬¨W°U¨^Ó(<Ð=€JØ�>‰>˜*Ó%€Dà”—‘ÔÜ×"Ò"¤;°vÔ>ˆØ˜Ô$à"&ˆK˜Ñá�$˜Ñ, Ñ,€DØ�<‰<˜¨4¨5 >Õ1Ó2€DÜ�Q˜˜aÓ Ð øôM ô àˆD��I‹ðüò As   »H Ä 
H-ÈH*È)H*)z
dask.arrayz7https://github.com/data-apis/array-api-extra/issues/488)é   )rÆ   rË   r¤   Únumpyr   Úmathr   Útypesr   Ú r   Úscipy.sparse.linalgÚsparseÚlinalgrÉ   Úscipy.sparser   Úscipy._lib._array_apir   r   Ú	_bsplinesr	   r
   Ú__all__r   r   r   Úgcrotmkr´   rÖ   re   r   r   Ú<module>rä      sŽ   ðÛ Û Û Û å Ý å ç !Ð !Ý "ß Bç +àˆ-€òñ Ø˜5ð	Dðô÷r
ð r
óðr
òh	J(ðZ !Ÿ[™[ô ñ0J!¨s¯{©{÷ J!r   