Ë
    âQ(h]D  ã                   óÎ   — d dl Zd dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZ d	Zd
ZdZdZd„ Zd„ Zd„ Z G d„ de«      Z  G d„ de«      Z!y)é    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                 ó  — t        j                  d| dz   «      dd…df   }t        j                  d| dz   «      }t        j                  | dz   | dz   f«      }|dz
  ||z  z
  |z  |dd…dd…f<   d|d<   t        j                  |d¬«      S )z6Compute the matrix for changing the differences array.r
   Nr   ©Úaxis)ÚnpÚarangeÚzerosÚcumprod)ÚorderÚfactorÚIÚJÚMs        úV/var/www/skyplay_api_hub/venv/lib/python3.12/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                 ó®   — t        ||«      }t        |d«      }|j                  |«      }t        j                  |j                  | d|dz    «      | d|dz    y)z<Change differences array in-place when step size is changed.r
   N)r%   Údotr   ÚT)ÚDr   r    ÚRÚUÚRUs         r$   Úchange_Dr.      sO   € ä�%˜Ó €AÜ�%˜Ó€AØ	
�‰ˆq‹€BÜ—F‘F˜2Ÿ4™4  : E¨A¡I Ó/€A€j€uˆq�y�Mr&   c	                 ó®  — d}	|j                  «       }
d}d}t        t        «      D ]¥  } | ||
«      }t        j                  t        j
                  |«      «      s nr ||||z  |z
  |	z
  «      }t        ||z  «      }|€d}n||z  }|�|dk\  s|t        |z
  z  d|z
  z  |z  |kD  r n'|
|z  }
|	|z  }	|dk(  s|�|d|z
  z  |z  |k  rd} n|}Œ§ |dz   |
|	fS )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Ü”>Ó"ò ˆÙ��q‹MˆÜ�v‰v”b—k‘k !“nÔ%Ùá�b˜!˜a™% #™+¨™/Ó*ˆÜ�r˜E‘zÓ"ˆàÐØ‰Dà˜[Ñ(ˆDàÐ $¨!¢)Øœ¨!Ñ+Ñ,°°D±Ñ9¸GÑCÀcÒIÙà	ˆR‰ˆØ	ˆR‰ˆà�qŠLØÐ  T¨Q°©XÑ%6¸Ñ%@À3Ò%FØˆIÙà‰ð3ð6 �a˜!‘e˜Q Ð!Ð!r&   c                   óX   ‡ — e Zd ZdZej
                  ddddddfˆ fd„	Zd„ Zd„ Zd	„ Z	ˆ xZ
S )
ÚBDFaý  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                 ó0  •‡ — t        |«       t        ‰‰ �	  |||||
d¬«       t        |«      ‰ _        t        ||‰ j                  «      \  ‰ _        ‰ _        ‰ j                  ‰ j                  ‰ j                  «      }|€Vt        ‰ j                  ‰ j                  ‰ j                  |||‰ j                  d‰ j                  ‰ j                  «
      ‰ _        nt        |||«      ‰ _        d ‰ _        d ‰ _        t%        dt&        z  |z  t)        d|dz  «      «      ‰ _        d ‰ _        ‰ j/                  ||	«      \  ‰ _        ‰ _        t5        ‰ j2                  «      r5ˆ fd„}d„ }t7        ‰ j                  d	‰ j                  j8                  ¬
«      }n=ˆ fd„}d„ }t;        j<                  ‰ j                  ‰ j                  j8                  ¬«      }|‰ _        |‰ _         |‰ _!        t;        jD                  g d¢«      }t;        jF                  dt;        jH                  dt;        jJ                  dtL        dz   «      z  «      f«      ‰ _'        d|z
  ‰ jN                  z  ‰ _(        |‰ jN                  z  dt;        jJ                  dtL        dz   «      z  z   ‰ _)        t;        jT                  tL        dz   ‰ j                  f‰ j                  j8                  ¬«      }‰ j                  |d<   |‰ j                  z  ‰ j                  z  |d<   |‰ _+        d‰ _,        d‰ _-        d ‰ _.        y )NT)Úsupport_complexr
   r   g¸…ëQ¸ž?ç      à?c                 óD   •— ‰xj                   dz  c_         t        | «      S ©Nr
   )Únlur   ©ÚAÚselfs    €r$   ÚluzBDF.__init__.<locals>.luÝ   s   ø€ Ø—’˜A‘•Ü˜A“w�r&   c                 ó$   — | j                  |«      S )N)Úsolve©r:   Úbs     r$   r;   zBDF.__init__.<locals>.solve_luá   s   € Ø—x‘x “{Ð"r&   Úcsc)ÚformatÚdtypec                 óH   •— ‰xj                   dz  c_         t        | d¬«      S )Nr
   T)Úoverwrite_a)rO   r   rP   s    €r$   rS   zBDF.__init__.<locals>.luæ   s   ø€ Ø—’˜A‘•Ü  °Ô5Ð5r&   c                 ó   — t        | |d¬«      S )NT)Úoverwrite_b)r   rV   s     r$   r;   zBDF.__init__.<locals>.solve_luê   s   € Ü  A°4Ô8Ð8r&   ©rZ   )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   rZ   r   ÚidentityrS   r;   r!   ÚarrayÚhstackÚcumsumr   Ú	MAX_ORDERÚgammaÚalphaÚerror_constÚemptyr*   r   Ún_equal_stepsr:   )rR   r5   Út0Úy0Út_boundrd   rf   rg   rr   Újac_sparsityÚ
vectorizedÚ
first_stepÚ
extraneousrC   rS   r;   r!   Úkappar*   Ú	__class__s   `                  €r$   rc   zBDF.__init__Å   sh  ù€ ô 	˜
Ô#Ü‰Ñ˜˜b " g¨zØ)-ð 	ô 	/ä)¨(Ó3ˆŒÜ+¨D°$¸¿¹Ó?ÑˆŒ	�4”9Ø�H‰H�T—V‘V˜TŸV™VÓ$ˆØÐÜ,¨T¯X©X°t·v±v¸t¿v¹vØ-4°hÀØ-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                 ó   ‡ ‡‡‡— ‰ j                   }‰ j                  Š‰€:‰�%t        ‰«      rt        ‰«      Št	        ‰«      }‰|fŠˆ ˆfd„} ||‰«      }||fS t        ‰«      rË ‰|‰«      }‰ xj                  dz  c_        t        |«      rt        |‰j                  ¬«      }ˆˆ ˆfd„}n(t        j                  |‰j                  ¬«      }ˆˆ ˆfd„}|j                  ‰ j                  ‰ j                  fk7  r2t        d‰ j                  ‰ j                  f› d|j                  › d�«      ‚||fS t        ‰«      rt        ‰‰j                  ¬«      }n!t        j                  ‰‰j                  ¬«      }|j                  ‰ j                  ‰ j                  fk7  r2t        d‰ j                  ‰ j                  f› d|j                  › d�«      ‚d }||fS )	Nc           	      óÄ   •— ‰xj                   dz  c_         ‰j                  | |«      }t        ‰j                  | ||‰j                  ‰j
                  ‰«      \  }‰_        |S rN   )ÚnjevÚ
fun_singler   Úfun_vectorizedrg   rp   )rh   r?   rC   r"   rR   Úsparsitys       €€r$   Újac_wrappedz&BDF._validate_jac.<locals>.jac_wrapped  sV   ø€ Ø—	’	˜Q‘•	Ø—O‘O A qÓ)�Ü%,¨T×-@Ñ-@À!ÀQÈØ-1¯Y©Y¸¿¹Ø-5ó&7Ñ"��4”?ð �r&   r
   r_   c                 ój   •— ‰xj                   dz  c_         t         ‰| |«      ‰j                  ¬«      S ©Nr
   r_   )rˆ   r   rZ   ©rh   r?   rr   rR   r~   s     €€€r$   rŒ   z&BDF._validate_jac.<locals>.jac_wrapped  s'   ø€ Ø—I’I ‘N•IÜ%¡c¨!¨Q£i°r·x±xÔ@Ð@r&   c                 ó~   •— ‰xj                   dz  c_         t        j                   ‰| |«      ‰j                  ¬«      S rŽ   )rˆ   r   ÚasarrayrZ   r�   s     €€€r$   rŒ   z&BDF._validate_jac.<locals>.jac_wrapped   s+   ø€ Ø—I’I ‘N•IÜŸ:™:¡c¨!¨Q£i°r·x±xÔ@Ð@r&   z `jac` is expected to have shape z, but actually has ú.)rh   r?   r   r   r	   Úcallablerˆ   rZ   r   r‘   Úshapere   Ú
ValueError)rR   rr   r‹   r}   ÚgroupsrŒ   r"   r~   s   ```    @r$   rq   zBDF._validate_jac  s±  û€ Ø�V‰VˆØ�V‰Vˆàˆ;ØÐ#Ü˜HÔ%Ü)¨(Ó3�HÜ& xÓ0�Ø$ fÐ-�õñ ˜B Ó#ˆAð> ˜Aˆ~Ðô= �cŒ]Ù�B˜“ˆAØ�IŠI˜‰N�IÜ˜Œ{Ü˜q¨¯©Ô1�÷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ð ˜Aˆ~Ðô ˜Œ}Ü˜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à˜Aˆ~Ðr&   c                 óô
  — | j                   }| j                  }| j                  }dt        j                  t        j
                  || j                  t        j                  z  «      |z
  «      z  }| j                  |kD  r.|}t        || j                  || j                  z  «       d| _        nI| j                  |k  r.|}t        || j                  || j                  z  «       d| _        n| j                  }| j                  }| j                  }| j                  }| j                  }	| j                  }
| j                   }| j"                  }| j$                  }| j&                  d u }d}|�s7||k  rd| j(                  fS || j                  z  }||z   }| j                  || j*                  z
  z  dkD  r;| j*                  }t        ||t        j                  ||z
  «      |z  «       d| _        d }||z
  }t        j                  |«      }t        j,                  |d |dz    d¬«      }||t        j                  |«      z  z   }t        j.                  |d|dz    j0                  |
d|dz    «      |	|   z  }d}||	|   z  }|sw|€!| j3                  | j4                  ||z  z
  «      }t7        | j8                  |||||| j:                  || j<                  «	      \  }}}}|s|rn| j'                  ||«      }d }d}|sŒw|sd}||z  }t        |||«       d| _        d }�Œ¬dd	t>        z  dz   z  d	t>        z  z   z  }||t        j                  «      z  z   }||   z  }tA        ||z  «      }|dkD  r6tC        tD        ||d
|dz   z  z  z  «      }||z  }t        |||«       d| _        nd}|s�Œ7| xj                  dz  c_        | _         | _#        || _        || _        || _        ||dz      z
  ||d	z   <   |||dz   <   tI        tK        |dz   «      «      D ]  }||xx   ||dz      z  cc<   Œ | j                  |dz   k  ry|dkD  r||dz
     ||   z  }tA        |z  «      } nt        j                  } |tL        k  r ||dz      ||d	z      z  }!tA        |!z  «      }"nt        j                  }"t        jN                  | |"g«      }#t        jP                  d¬«      5  |#d
t        jR                  ||dz   «      z  z  }$d d d «       t        jT                  $«      dz
  }%||%z  }|| _
        tW        tX        t        jB                  |$«      z  «      }| xj                  |z  c_        t        |||«       d| _        d | _        y# 1 sw Y   Œ„xY w)Nr   r   Fr
   r   TrL   gÍÌÌÌÌÌì?r`   éÿÿÿÿ)TNÚignore)Údividera   )-rh   r*   rd   r   ÚabsÚ	nextafterri   Úinfrj   r.   r   r|   rg   rf   ry   rx   rz   r"   r:   rr   ÚTOO_SMALL_STEPr   Úsumr(   r)   rS   r!   rG   r5   r;   ro   r2   r   rm   Ú
MIN_FACTORr?   Úreversedr1   rw   rt   Úerrstater   Úargmaxrn   Ú
MAX_FACTOR)&rR   rh   r*   rd   Úmin_steprj   rg   rf   r   ry   rx   rz   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_implzBDF._step_impl4  se  € Ø�F‰FˆØ�F‰Fˆà—=‘=ˆØœŸ™œrŸ|™|¨A¨t¯~©~ÄÇÁÑ/FÓGÈ!ÑKÓLÑLˆØ�:‰:˜Ò ØˆEÜ�Q˜Ÿ
™
 H¨t¯z©zÑ$9Ô:Ø!"ˆDÕØ�Z‰Z˜(Ò"ØˆEÜ�Q˜Ÿ
™
 H¨t¯z©zÑ$9Ô:Ø!"ˆDÕà—J‘JˆEà�y‰yˆØ�y‰yˆØ—
‘
ˆà—
‘
ˆØ—
‘
ˆØ×&Ñ&ˆà�F‰FˆØ�W‰WˆØ—h‘h $Ð&ˆàˆÚØ�xÒØ˜d×1Ñ1Ð1Ð1à˜Ÿ™Ñ&ˆAØ˜‘EˆEà�~‰~ ¨¯©Ñ!5Ñ6¸Ò:ØŸ™�Ü˜˜E¤2§6¡6¨%°!©)Ó#4°uÑ#<Ô=Ø%&�Ô"Ø�à˜‘	ˆAÜ—F‘F˜1“IˆEäŸ™˜q  %¨!¡)˜}°1Ô5ˆIà˜4¤"§&¡&¨Ó"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¸¸D¿M¹MØ˜4Ÿ?™?ó/,Ñ+�	˜6 5¨!ñ !Ù"ØØŸ™ ¨	Ó2�AØ�BØ"&�Kò  ñ Ø�Ø˜‘�Ü˜˜E 6Ô*Ø%&�Ô"Ø�Ùà˜A¤Ñ.°Ñ2Ñ3°q¼>Ñ7IØ9?ñ8@ñ AˆFð ˜4¤"§&¡&¨£-Ñ/Ñ/ˆEØ Ñ&¨Ñ*ˆEÜ˜e e™mÓ,ˆJà˜AŠ~ÜœZØ# j°R¸5À1¹9Ñ5EÑ&FÑFóH�à˜‘�Ü˜˜E 6Ô*Ø%&�Õ"ð !%�ó}  ð@ 	×Ò˜aÑÕàˆŒØˆŒàˆŒ
ØˆŒØˆŒð ˜1˜U 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ˆÜ�[‰[ Ô)ñ 	HØ! b¬2¯9©9°U¸EÀA¹IÓ+FÑ&FÑGˆG÷	Hô —i‘i Ó(¨1Ñ,ˆØ�ÑˆØˆŒ
ä”Z ¬"¯&©&°«/Ñ!9Ó:ˆØ�
Š
�fÑ�
Ü��E˜6Ô"ØˆÔØˆŒà÷	Hð 	Hús   Ó U.Õ.U7c           
      óÚ   — t        | j                  | j                  | j                  | j                  z  | j
                  | j                  d | j
                  dz    j                  «       «      S rN   )ÚBdfDenseOutputÚt_oldrh   rj   ri   r   r*   r0   )rR   s    r$   Ú_dense_output_implzBDF._dense_output_implÃ  sQ   € Ü˜dŸj™j¨$¯&©&°$·*±*¸t¿~¹~Ñ2MØ"Ÿj™j¨$¯&©&°°$·*±*¸q±.Ð*A×*FÑ*FÓ*HóJð 	Jr&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r�   rc   rq   r¶   rº   Ú__classcell__©r…   s   @r$   rI   rI   H   s:   ø„ ñ{ðx 79·f±fØ ¨4¸dØ!¨dõ:òx1òfMö^Jr&   rI   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r¸   c                 óþ   •— t         ‰| �  ||«       || _        | j                  |t	        j
                  | j                  «      z  z
  | _        |dt	        j
                  | j                  «      z   z  | _        || _        y rN   )	rb   rc   r   rh   r   r   Út_shiftÚdenomr*   )rR   r¹   rh   r¨   r   r*   r…   s         €r$   rc   zBdfDenseOutput.__init__É  s`   ø€ Ü‰Ñ˜ Ô"ØˆŒ
Ø—v‘v ¤B§I¡I¨d¯j©jÓ$9Ñ 9Ñ9ˆŒØ˜!œbŸi™i¨¯
©
Ó3Ñ3Ñ4ˆŒ
Øˆ�r&   c                 óØ  — |j                   dk(  r2|| j                  z
  | j                  z  }t        j                  |«      }nA|| j                  d d …d f   z
  | j                  d d …d f   z  }t        j                  |d¬«      }t        j
                  | j                  dd  j                  |«      }|j                   dk(  r|| j                  d   z  }|S || j                  dd d …d f   z  }|S )Nr   r   r
   )ÚndimrÃ   rÄ   r   r   r(   r*   r)   )rR   rh   ÚxÚpr?   s        r$   Ú
_call_implzBdfDenseOutput._call_implÐ  sË   € Ø�6‰6�QŠ;Ø�T—\‘\Ñ! T§Z¡ZÑ/ˆAÜ—
‘
˜1“‰Aà�T—\‘\¢! 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½   rc   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   rw   r2   r    r¤   r%   r.   rG   rI   r¸   © r&   r$   ú<module>rÒ      sn   ðÛ ß ,ß 2Ñ 2Ý $Ý 1÷&÷ &ó &÷ )ð €	Ø€Ø€
Ø€
ò!ò0ò!"ôH}Jˆ)ô }Jô@�[õ r&   