
    Џkh{                     8    d Z ddlmZmZmZmZmZ ddlZd Z	d Z
y)z
This module checks whether to break out of the solver loop.

Translated from Zaikun Zhang's modern-Fortran reference implementation in PRIMA.

Dedicated to late Professor M. J. D. Powell FRS (1936--2015).

Python translation by Nickolai Belakovski.
   )INFO_DEFAULT	NAN_INF_X	NAN_INF_FFTARGET_ACHIEVEDMAXFUN_REACHED    Nc                 r   t         }d}t         t        t        t        t        fvs
J d|        t        t        j                  |            r
J d|        t        t        j                  |            st        t        j                  |            r
J d|        t        t        j                  |            st        t        j                  |            rt        }t        t        j                  |            st        t        j                  |            rt        }||k  rt        }|| k\  rt        }|S )z_
    This module checks whether to break out of the solver loop in the unconstrained case.
    CHECKbreak_UNCPNAN_INF_X, NAN_INF_F, FTARGET_ACHIEVED, and MAXFUN_REACHED differ from INFO_DFT X does not contain NaN zF is not NaN/+Inf 
r   r   r   r   r   anynpisnanisposinfisinf)maxfunnffftargetxinfosrnames          `/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/_lib/pyprima/common/checkbreak.pycheckbreak_uncr      s    D F 	96FWW  u  \l  ms  lt  Zu  uW 288A;C#:6(!CCBHHQK CA$7W<Nvh:WW8 288A;3rxx{+ 288A;3r{{1~.G|	V|K    c                    t         }d}t         t        t        t        t        fvs
J d|        t        t        j                  |            r
J d|        t        j                  |      s?t        j                  |      s*t        j                  |      st        j                  |      r
J d|        t        t        j                  |            st        t        j                  |            rt        }t        j                  |      s?t        j                  |      s*t        j                  |      st        j                  |      rt        }||k  r||k  rt        }|| k\  rt        }|S )z]
    This module checks whether to break out of the solver loop in the constrained case.
    CHECKbreak_CONr   r   zF or CSTRV is not NaN/+Inf r   )	r   r   cstrvctolr   r   r   r   r   s	            r   checkbreak_conr!   7   s.    D F 	96FWW  u  \l  ms  lt  Zu  uW 288A;C#:6(!CCr{{1~%BKKPUDV[vw}v~YW 288A;3rxx{+ 
xx{bkk!n2;;u;M}g	V|Kr   )__doc__infosr   r   r   r   r   numpyr   r   r!    r   r   <module>r&      s!    X W &P&r   