ó
    Eñi]D  ã                   óÎ   • S SK rS SKJrJr  S SKJrJrJr  S SK	J
r
  S SKJr  SSKJrJrJrJrJrJrJrJr  SSKJrJr  S	rS
rSrSrS rS rS r " S S\5      r  " S S\5      r!g)é    N)Ú	lu_factorÚlu_solve)ÚissparseÚ
csc_matrixÚeye)Úsplu)Úgroup_columnsé   )Úvalidate_max_stepÚvalidate_tolÚselect_initial_stepÚnormÚEPSÚnum_jacÚvalidate_first_stepÚwarn_extraneous)Ú	OdeSolverÚDenseOutputé   é   gš™™™™™É?é
   c                 ó  • [         R                  " SU S-   5      SS2S4   n[         R                  " SU S-   5      n[         R                  " U S-   U S-   45      nUS-
  X-  -
  U-  USS2SS24'   SUS'   [         R                  " USS9$ )z6Compute the matrix for changing the differences array.r
   Nr   ©Úaxis)ÚnpÚarangeÚzerosÚcumprod)ÚorderÚfactorÚIÚJÚMs        ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/scipy/integrate/_ivp/bdf.pyÚ	compute_Rr%      s‰   € ä
�	Š	�!�U˜Q‘YÓ¢ 4 Ñ(€AÜ
�	Š	�!�U˜Q‘YÓ€AÜ
�Š�%˜!‘)˜U Q™YÐ'Ó(€AØ�Q‘˜™Ñ# qÑ(€A€a�bˆ!‰"€f�IØ€A€a�DÜ�:Š:�a˜aÑ Ð ó    c                 ó®   • [        X5      n[        US5      nUR                  U5      n[        R                  " UR                  U SUS-    5      U SUS-   & g)z<Change differences array in-place when step size is changed.r
   N)r%   Údotr   ÚT)ÚDr   r    ÚRÚUÚRUs         r$   Úchange_Dr.      sM   € ä�%Ó €AÜ�%˜Ó€AØ	
�‰ˆq‹€BÜ—F’F˜2Ÿ4™4  : E¨A¡I Ó/€A€j€uˆq�y�Mr&   c	                 óÂ  • Sn	UR                  5       n
SnSn[        [        5       H¯  nU " X5      n[        R                  " [        R
                  " U5      5      (       d    OwU" XSU-  U-
  U	-
  5      n[        X÷-  5      nUc  SnOUU-  nUb!  US:¼  d  U[        U-
  -  SU-
  -  U-  U:”  a    O*X¯-  n
XŸ-  n	US:X  d  Ub  USU-
  -  U-  U:  a  Sn  OUnM±     UWS-   X©4$ )z5Solve the algebraic system resulting from BDF method.r   NFr
   T)ÚcopyÚrangeÚNEWTON_MAXITERr   ÚallÚisfiniter   )ÚfunÚt_newÚ	y_predictÚcÚpsiÚLUÚsolve_luÚscaleÚtolÚdÚyÚdy_norm_oldÚ	convergedÚkÚfÚdyÚdy_normÚrates                     r$   Úsolve_bdf_systemrG   $   s  € à	€AØ�‰Ó€AØ€KØ€IÜ”>Ö"ˆÙ�‹MˆÜ�vŠv”b—k’k !“n×%Ñ%Ùá�b˜a™% #™+¨™/Ó*ˆÜ�r‘zÓ"ˆàÑØ‰Dà˜[Ñ(ˆDàÑ $¨!£)Øœ¨!Ñ+Ñ,°°D±Ñ9¸GÑCÀcÓIÙà	‰ˆØ	‰ˆà�q‹LØÑ  T¨Q°©XÑ%6¸Ñ%@À3Ó%FØˆIÙàŠñ3 #ð6 �a˜!‘e˜QÐ!Ð!r&   c                   ód   ^ • \ rS rSrSr\R                  SSSSSS4U 4S jjrS rS	 r	S
 r
SrU =r$ )ÚBDFéH   a9  Implicit method based on backward-differentiation formulas.

This is a variable order method with the order varying automatically from
1 to 5. The general framework of the BDF algorithm is described in [1]_.
This class implements a quasi-constant step size as explained in [2]_.
The error estimation strategy for the constant-step BDF is derived in [3]_.
An accuracy enhancement using modified formulas (NDF) [2]_ is also implemented.

Can be applied in the complex domain.

Parameters
----------
fun : callable
    Right-hand side of the system: the time derivative of the state ``y``
    at time ``t``. The calling signature is ``fun(t, y)``, where ``t`` is a
    scalar and ``y`` is an ndarray with ``len(y) = len(y0)``. ``fun`` must
    return an array of the same shape as ``y``. See `vectorized` for more
    information.
t0 : float
    Initial time.
y0 : array_like, shape (n,)
    Initial state.
t_bound : float
    Boundary time - the integration won't continue beyond it. It also
    determines the direction of the integration.
first_step : float or None, optional
    Initial step size. Default is ``None`` which means that the algorithm
    should choose.
max_step : float, optional
    Maximum allowed step size. Default is np.inf, i.e., the step size is not
    bounded and determined solely by the solver.
rtol, atol : float and array_like, optional
    Relative and absolute tolerances. The solver keeps the local error
    estimates less than ``atol + rtol * abs(y)``. Here `rtol` controls a
    relative accuracy (number of correct digits), while `atol` controls
    absolute accuracy (number of correct decimal places). To achieve the
    desired `rtol`, set `atol` to be smaller than the smallest value that
    can be expected from ``rtol * abs(y)`` so that `rtol` dominates the
    allowable error. If `atol` is larger than ``rtol * abs(y)`` the
    number of correct digits is not guaranteed. Conversely, to achieve the
    desired `atol` set `rtol` such that ``rtol * abs(y)`` is always smaller
    than `atol`. If components of y have different scales, it might be
    beneficial to set different `atol` values for different components by
    passing array_like with shape (n,) for `atol`. Default values are
    1e-3 for `rtol` and 1e-6 for `atol`.
jac : {None, array_like, sparse_matrix, callable}, optional
    Jacobian matrix of the right-hand side of the system with respect to y,
    required by this method. The Jacobian matrix has shape (n, n) and its
    element (i, j) is equal to ``d f_i / d y_j``.
    There are three ways to define the Jacobian:

        * If array_like or sparse_matrix, the Jacobian is assumed to
          be constant.
        * If callable, the Jacobian is assumed to depend on both
          t and y; it will be called as ``jac(t, y)`` as necessary.
          For the 'Radau' and 'BDF' methods, the return value might be a
          sparse matrix.
        * If None (default), the Jacobian will be approximated by
          finite differences.

    It is generally recommended to provide the Jacobian rather than
    relying on a finite-difference approximation.
jac_sparsity : {None, array_like, sparse matrix}, optional
    Defines a sparsity structure of the Jacobian matrix for a
    finite-difference approximation. Its shape must be (n, n). This argument
    is ignored if `jac` is not `None`. If the Jacobian has only few non-zero
    elements in *each* row, providing the sparsity structure will greatly
    speed up the computations [4]_. A zero entry means that a corresponding
    element in the Jacobian is always zero. If None (default), the Jacobian
    is assumed to be dense.
vectorized : bool, optional
    Whether `fun` can be called in a vectorized fashion. Default is False.

    If ``vectorized`` is False, `fun` will always be called with ``y`` of
    shape ``(n,)``, where ``n = len(y0)``.

    If ``vectorized`` is True, `fun` may be called with ``y`` of shape
    ``(n, k)``, where ``k`` is an integer. In this case, `fun` must behave
    such that ``fun(t, y)[:, i] == fun(t, y[:, i])`` (i.e. each column of
    the returned array is the time derivative of the state corresponding
    with a column of ``y``).

    Setting ``vectorized=True`` allows for faster finite difference
    approximation of the Jacobian by this method, but may result in slower
    execution overall in some circumstances (e.g. small ``len(y0)``).

Attributes
----------
n : int
    Number of equations.
status : string
    Current status of the solver: 'running', 'finished' or 'failed'.
t_bound : float
    Boundary time.
direction : float
    Integration direction: +1 or -1.
t : float
    Current time.
y : ndarray
    Current state.
t_old : float
    Previous time. None if no steps were made yet.
step_size : float
    Size of the last successful step. None if no steps were made yet.
nfev : int
    Number of evaluations of the right-hand side.
njev : int
    Number of evaluations of the Jacobian.
nlu : int
    Number of LU decompositions.

References
----------
.. [1] G. D. Byrne, A. C. Hindmarsh, "A Polyalgorithm for the Numerical
       Solution of Ordinary Differential Equations", ACM Transactions on
       Mathematical Software, Vol. 1, No. 1, pp. 71-96, March 1975.
.. [2] L. F. Shampine, M. W. Reichelt, "THE MATLAB ODE SUITE", SIAM J. SCI.
       COMPUTE., Vol. 18, No. 1, pp. 1-22, January 1997.
.. [3] E. Hairer, G. Wanner, "Solving Ordinary Differential Equations I:
       Nonstiff Problems", Sec. III.2.
.. [4] A. Curtis, M. J. D. Powell, and J. Reid, "On the estimation of
       sparse Jacobian matrices", Journal of the Institute of Mathematics
       and its Applications, 13, pp. 117-120, 1974.
gü©ñÒMbP?g�íµ ÷Æ°>NFc                 ó*  >^ • [        U5        [        TT ]	  XX4U
SS9  [        U5      T l        [        XgT R                  5      u  T l        T l        T R                  T R                  T R                  5      nUcU  [        T R                  T R                  T R                  XEUT R                  ST R                  T R                  5
      T l        O[        X²U5      T l        S T l        S T l        [%        S[&        -  U-  [)        SUS-  5      5      T l        S T l        T R/                  X‰5      u  T l        T l        [5        T R2                  5      (       a3  U 4S jnS n[7        T R                  S	T R                  R8                  S
9nO<U 4S jnS n[:        R<                  " T R                  T R                  R8                  S9nUT l        UT l         UT l!        [:        RD                  " / SQ5      n[:        RF                  " S[:        RH                  " S[:        RJ                  " S[L        S-   5      -  5      45      T l'        SU-
  T RN                  -  T l(        UT RN                  -  S[:        RJ                  " S[L        S-   5      -  -   T l)        [:        RT                  " [L        S-   T R                  4T R                  R8                  S9nT R                  US'   UT R                  -  T R                  -  US'   UT l+        ST l,        ST l-        S T l.        g )NT)Úsupport_complexr
   r   g¸…ëQ¸ž?ç      à?c                 óD   >• T=R                   S-  sl         [        U 5      $ ©Nr
   )Únlur   ©ÚAÚselfs    €r$   ÚluÚBDF.__init__.<locals>.luÞ   s   ø€ Ø—’˜A‘•Ü˜A“w�r&   c                 ó$   • U R                  U5      $ )N)Úsolve©r:   Úbs     r$   r;   ÚBDF.__init__.<locals>.solve_luâ   s   € Ø—x‘x “{Ð"r&   Úcsc)ÚformatÚdtypec                 óB   >• T=R                   S-  sl         [        U SS9$ )Nr
   T)Úoverwrite_a)rP   r   rQ   s    €r$   rT   rU   ç   s   ø€ Ø—’˜A‘•Ü  °Ñ5Ð5r&   c                 ó   • [        XSS9$ )NT)Úoverwrite_b)r   rX   s     r$   r;   rZ   ë   s   € Ü °4Ñ8Ð8r&   ©r]   )r   g®Gáz®Ç¿gÇqÇq¼¿gýöuàœµ¿gsh‘í|?¥¿r   r   é   é   )/r   ÚsuperÚ__init__r   Úmax_stepr   ÚnÚrtolÚatolr5   Útr?   r   Ú	directionÚh_absr   Ú	h_abs_oldÚerror_norm_oldÚmaxr   ÚminÚ
newton_tolÚ
jac_factorÚ_validate_jacÚjacr"   r   r   r]   r   ÚidentityrT   r;   r!   ÚarrayÚhstackÚcumsumr   Ú	MAX_ORDERÚgammaÚalphaÚerror_constÚemptyr*   r   Ún_equal_stepsr:   )rS   r5   Út0Úy0Út_boundrg   ri   rj   ru   Újac_sparsityÚ
vectorizedÚ
first_stepÚ
extraneousrC   rT   r;   r!   Úkappar*   Ú	__class__s   `                  €r$   rf   ÚBDF.__init__Æ   s_  ù€ ô 	˜
Ô#Ü‰Ñ˜ "¨zØ)-ð 	ñ 	/ä)¨(Ó3ˆŒÜ+¨D¸¿¹Ó?ÑˆŒ	�4”9Ø�H‰H�T—V‘V˜TŸV™VÓ$ˆØÑÜ,¨T¯X©X°t·v±v¸t¿v¹vØ-4ÀØ-1¯^©^¸QØ-1¯Y©Y¸¿	¹	óCˆD�Jô
 -¨Z¸WÓEˆDŒJØˆŒØ"ˆÔä˜b¤3™h¨™o¬s°4¸À¹Ó/EÓFˆŒàˆŒØ×-Ñ-¨cÓ@ÑˆŒ�$”&Ü�D—F‘F×Ñõò#ô �D—F‘F 5°·±·±Ñ=‰Aõ6ò9ô —’˜DŸF™F¨$¯&©&¯,©,Ñ7ˆAàˆŒØ ˆŒØˆŒä—’Ò@ÓAˆÜ—Y’Y ¤2§9¢9¨Q´·²¸1¼iÈ!¹mÓ1LÑ-LÓ#MÐNÓOˆŒ
Ø˜%‘i 4§:¡:Ñ-ˆŒ
Ø  4§:¡:Ñ-°´B·I²I¸aÄÈQÁÓ4OÑ0OÑOˆÔä�HŠH”i !‘m T§V¡VÐ,°D·F±F·L±LÑAˆØ�v‰vˆˆ!‰Ø�4—:‘:‰~ §¡Ñ.ˆˆ!‰ØˆŒàˆŒ
ØˆÔØˆ�r&   c                 ó¾  ^ ^^^• T R                   nT R                  mTc@  Tb*  [        T5      (       a  [        T5      m[	        T5      nTU4mU U4S jnU" UT5      nXV4$ [        T5      (       aÎ  T" UT5      nT =R                  S-  sl        [        U5      (       a  [        UTR                  S9nUU U4S jnO'[        R                  " UTR                  S9nUU U4S jnUR                  T R                  T R                  4:w  a2  [        ST R                  T R                  4 SUR                   S35      e XV4$ [        T5      (       a  [        TTR                  S9nO[        R                  " TTR                  S9nUR                  T R                  T R                  4:w  a2  [        ST R                  T R                  4 SUR                   S35      eS nXV4$ )	Nc           	      óÀ   >• T=R                   S-  sl         TR                  X5      n[        TR                  XUTR                  TR
                  T5      u  nTl        U$ rO   )ÚnjevÚ
fun_singler   Úfun_vectorizedrj   rs   )rk   r?   rC   r"   rS   Úsparsitys       €€r$   Újac_wrappedÚ&BDF._validate_jac.<locals>.jac_wrapped  sR   ø€ Ø—	’	˜Q‘•	Ø—O‘O AÓ)�Ü%,¨T×-@Ñ-@À!ÈØ-1¯Y©Y¸¿¹Ø-5ó&7Ñ"��4”?ð �r&   r
   rb   c                 ób   >• T=R                   S-  sl         [        T" X5      TR                  S9$ ©Nr
   rb   )rŒ   r   r]   ©rk   r?   ru   rS   r�   s     €€€r$   r�   r‘     s%   ø€ Ø—I’I ‘N•IÜ%¡c¨!£i°r·x±xÑ@Ð@r&   c                 óx   >• T=R                   S-  sl         [        R                  " T" X5      TR                  S9$ r“   )rŒ   r   Úasarrayr]   r”   s     €€€r$   r�   r‘   !  s)   ø€ Ø—I’I ‘N•IÜŸ:š:¡c¨!£i°r·x±xÑ@Ð@r&   z `jac` is expected to have shape z, but actually has Ú.)rk   r?   r   r   r	   ÚcallablerŒ   r]   r   r–   Úshaperh   Ú
ValueError)rS   ru   r�   r€   Úgroupsr�   r"   r�   s   ```    @r$   rt   ÚBDF._validate_jac  s¿  û€ Ø�V‰VˆØ�V‰Vˆà‰;ØÑ#Ü˜H×%Ñ%Ü)¨(Ó3�HÜ& xÓ0�Ø$ fÐ-�öñ ˜B Ó#ˆAð> ˆ~Ðô= �c�]‰]Ù�B˜“ˆAØ�IŠI˜‰N�IÜ˜�{‰{Ü˜q¨¯©Ñ1�÷Að Aô —J’J˜q¨¯©Ñ1�÷Að �w‰w˜4Ÿ6™6 4§6¡6Ð*Ó*Ü Ð#CÀTÇVÁVÈTÏVÉVÐDTÐCUð V6Ø67·g±g°Y¸að"Aó Bð Bð +ð ˆ~Ðô ˜�}‰}Ü˜s¨"¯(©(Ñ3‘ä—J’J˜s¨"¯(©(Ñ3�à�w‰w˜4Ÿ6™6 4§6¡6Ð*Ó*Ü Ð#CÀTÇVÁVÈTÏVÉVÐDTÐCUð V6Ø67·g±g°Y¸að"Aó Bð BàˆKàˆ~Ðr&   c                 ó4  • U R                   nU R                  nU R                  nS[        R                  " [        R
                  " XR                  [        R                  -  5      U-
  5      -  nU R                  U:”  a,  Un[        X R                  X0R                  -  5        SU l        OHU R                  U:  a,  Un[        X R                  X@R                  -  5        SU l        OU R                  nU R                  nU R                  nU R                  nU R                  n	U R                  n
U R                   nU R"                  nU R$                  nU R&                  S L nSnU(       GdT  XT:  a  SU R(                  4$ XPR                  -  nUU-   nU R                  UU R*                  -
  -  S:”  a;  U R*                  n[        X([        R                  " UU-
  5      U-  5        SU l        S nUU-
  n[        R                  " U5      n[        R,                  " US US-    SS9nXg[        R                  " U5      -  -   n[        R.                  " USUS-    R0                  U
SUS-    5      X˜   -  nSnUX˜   -  nU(       d‡  Uc!  U R3                  U R4                  UU-  -
  5      n[7        U R8                  UUUUXÐR:                  UU R<                  5	      u  nnnnU(       d  U(       a  OU R'                  UU5      nS nSnU(       d  M‡  U(       d  SnUU-  n[        X(U5        SU l        S nGMÉ  SS	[>        -  S-   -  S	[>        -  W-   -  nXg[        R                  " W5      -  -   nX¸   W-  n[A        UU-  5      nUS:”  a5  [C        [D        UUS
US-   -  -  -  5      nUU-  n[        X(U5        SU l        OSnU(       d  GMT  U =R                  S-  sl        WU l         WU l#        XPl        XÀl        XÐl        WX(S-      -
  X(S	-   '   UX(S-   '   [I        [K        US-   5      5       H  nUU==   UUS-      -  ss'   M     U R                  US-   :  a  gUS:”  a  X¸S-
     X(   -  n[A        UW-  5      n O[        R                  n U[L        :  a  X¸S-      X(S	-      -  n![A        U!W-  5      n"O[        R                  n"[        RN                  " U WU"/5      n#[        RP                  " SS9   U#S
[        RR                  " XˆS-   5      -  -  n$S S S 5        [        RT                  " W$5      S-
  n%UU%-  nX€l
        [W        [X        W[        RB                  " U$5      -  5      nU =R                  U-  sl        [        X(U5        SU l        S U l        g! , (       d  f       N‰= f)Nr   r   Fr
   r   TrM   gÍÌÌÌÌÌì?rc   éÿÿÿÿ)TNÚignore)Údividerd   )-rk   r*   rg   r   ÚabsÚ	nextafterrl   Úinfrm   r.   r   r   rj   ri   r|   r{   r}   r"   r:   ru   ÚTOO_SMALL_STEPr‚   Úsumr(   r)   rT   r!   rG   r5   r;   rr   r2   r   rp   Ú
MIN_FACTORr?   Úreversedr1   rz   rw   Úerrstater   Úargmaxrq   Ú
MAX_FACTOR)&rS   rk   r*   rg   Úmin_steprm   rj   ri   r   r|   r{   r}   r"   r:   Úcurrent_jacÚstep_acceptedÚhr6   r7   r<   r9   rA   r8   Ún_iterÚy_newr>   r    ÚsafetyÚerrorÚ
error_normÚiÚerror_mÚerror_m_normÚerror_pÚerror_p_normÚerror_normsÚfactorsÚdelta_orders&                                         r$   Ú
_step_implÚBDF._step_impl5  s  € Ø�F‰FˆØ�F‰Fˆà—=‘=ˆØœŸšœrŸ|š|¨A¯~©~ÄÇÁÑ/FÓGÈ!ÑKÓLÑLˆØ�:‰:˜Ó ØˆEÜ�QŸ
™
 H¯z©zÑ$9Ô:Ø!"ˆDÕØ�Z‰Z˜(Ó"ØˆEÜ�QŸ
™
 H¯z©zÑ$9Ô:Ø!"ˆDÕà—J‘JˆEà�y‰yˆØ�y‰yˆØ—
‘
ˆà—
‘
ˆØ—
‘
ˆØ×&Ñ&ˆà�F‰FˆØ�W‰WˆØ—h‘h $Ð&ˆàˆßØÓØ˜d×1Ñ1Ð1Ð1àŸ™Ñ&ˆAØ˜‘EˆEà�~‰~ ¨¯©Ñ!5Ñ6¸Ó:ØŸ™�Ü˜¤2§6¢6¨%°!©)Ó#4°uÑ#<Ô=Ø%&�Ô"Ø�à˜‘	ˆAÜ—F’F˜1“IˆEäŸš˜q  %¨!¡)˜}°1Ñ5ˆIà¤"§&¢&¨Ó"3Ñ3Ñ3ˆEÜ—&’&˜˜1˜e a™i˜×*Ñ*¨E°!°U¸Q±YÐ,?Ó@À5Á<ÑOˆCàˆIØ�E‘LÑ ˆAÞØ‘:ØŸ™ §¡¨!¨a©%¡Ó0�Bä.>Ø—H‘H˜e Y°°3¸¿M¹MØ˜4Ÿ?™?ó/,Ñ+�	˜6 5¨!ö !Þ"ØØŸ™ ¨	Ó2�AØ�BØ"&�K÷  �iö Ø�Ø˜‘�Ü˜ 6Ô*Ø%&�Ô"Ø�Úà˜A¤Ñ.°Ñ2Ñ3°q¼>Ñ7IØ9?ñ8@ñ AˆFð ¤"§&¢&¨£-Ñ/Ñ/ˆEØÑ&¨Ñ*ˆEÜ˜e e™mÓ,ˆJà˜A‹~ÜœZØ# j°R¸5À1¹9Ñ5EÑ&FÑFóH�à˜‘�Ü˜ 6Ô*Ø%&�Õ"ð !%�÷}  ‘-ð@ 	×Ò˜aÑÕàˆŒØˆŒàŒ
ØŒØŒð ˜1 Q™Y™<Ñ'ˆ�!‰)‰Øˆ�!‰)‰Üœ% ¨¡	Ó*Ö+ˆAØˆa‹D�A�a˜!‘e‘HÑ�Dñ ,ð ×Ñ ¨¡	Ó)Øà�1‹9Ø!¨!¡)Ñ,¨q©xÑ7ˆGÜ ¨%¡Ó0‰LäŸ6™6ˆLà”9ÓØ!¨!¡)Ñ,¨q¸±©|Ñ;ˆGÜ ¨%¡Ó0‰LäŸ6™6ˆLä—h’h ¨j¸,ÐGÓHˆÜ�[Š[ Ó)Ø! b¬2¯9ª9°UÀA¹IÓ+FÑ&FÑGˆG÷ *ô —i’i Ó(¨1Ñ,ˆØ�ÑˆØŒ
ä”Z ¬"¯&ª&°«/Ñ!9Ó:ˆØ�
Š
�fÑ�
Ü�˜6Ô"ØˆÔØˆŒà÷ *Õ)ús   Ó& V	Ö	
Vc           
      óÚ   • [        U R                  U R                  U R                  U R                  -  U R
                  U R                  S U R
                  S-    R                  5       5      $ rO   )ÚBdfDenseOutputÚt_oldrk   rm   rl   r   r*   r0   )rS   s    r$   Ú_dense_output_implÚBDF._dense_output_implÄ  sQ   € Ü˜dŸj™j¨$¯&©&°$·*±*¸t¿~¹~Ñ2MØ"Ÿj™j¨$¯&©&°°$·*±*¸q±.Ð*A×*FÑ*FÓ*HóJð 	Jr&   )r*   r!   r"   r:   r|   rj   r}   ro   r{   rm   rn   ru   rs   rT   rg   r   rr   r   ri   r;   rk   r?   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r£   rf   rt   r¼   rÁ   Ú__static_attributes__Ú__classcell__©rˆ   s   @r$   rI   rI   H   s@   ø† ñ{ðz 79·f±fØ ¨4¸dØ!¨d÷:òx1òfM÷^Jð Jr&   rI   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )r¿   iÉ  c                 óü   >• [         TU ]  X5        X@l        U R                  U[        R
                  " U R                  5      -  -
  U l        US[        R
                  " U R                  5      -   -  U l        XPl        g rO   )	re   rf   r   rk   r   r   Út_shiftÚdenomr*   )rS   rÀ   rk   r®   r   r*   rˆ   s         €r$   rf   ÚBdfDenseOutput.__init__Ê  sZ   ø€ Ü‰Ñ˜Ô"ØŒ
Ø—v‘v ¤B§I¢I¨d¯j©jÓ$9Ñ 9Ñ9ˆŒØ˜!œbŸiši¨¯
©
Ó3Ñ3Ñ4ˆŒ
Ø�r&   c                 óÔ  • UR                   S:X  a2  XR                  -
  U R                  -  n[        R                  " U5      nO>XR                  S S 2S 4   -
  U R                  S S 2S 4   -  n[        R                  " USS9n[        R
                  " U R                  SS  R                  U5      nUR                   S:X  a  X@R                  S   -  nU$ X@R                  SS S 2S 4   -  nU$ )Nr   r   r
   )ÚndimrÍ   rÎ   r   r   r(   r*   r)   )rS   rk   ÚxÚpr?   s        r$   Ú
_call_implÚBdfDenseOutput._call_implÑ  sÃ   € Ø�6‰6�Q‹;Ø—\‘\Ñ! T§Z¡ZÑ/ˆAÜ—
’
˜1“‰Aà—\‘\¢! T 'Ñ*Ñ*¨d¯j©jº¸D¸Ñ.AÑAˆAÜ—
’
˜1 1Ñ%ˆAä�FŠF�4—6‘6˜!˜"�:—<‘< Ó#ˆØ�6‰6�Q‹;Ø—‘˜‘‰NˆAð ˆð —‘˜š1˜d˜
Ñ#Ñ#ˆAàˆr&   )r*   rÎ   r   rÍ   )rÃ   rÄ   rÅ   rÆ   rf   rÔ   rÈ   rÉ   rÊ   s   @r$   r¿   r¿   É  s   ø† õ÷ð r&   r¿   )"Únumpyr   Úscipy.linalgr   r   Úscipy.sparser   r   r   Úscipy.sparse.linalgr   Úscipy.optimize._numdiffr	   Úcommonr   r   r   r   r   r   r   r   Úbaser   r   rz   r2   r¦   rª   r%   r.   rG   rI   r¿   © r&   r$   Ú<module>rÞ      sn   ðÛ ß ,ß 2Ñ 2Ý $Ý 1÷&÷ &ó &÷ )ð €	Ø€Ø€
Ø€
ò!ò0ò!"ôH~Jˆ)ô ~JôB�[õ r&   