o
    gd                     @   s(   d dl Zd dlmZ dd Zdd ZdS )    N)_lbfgsbc                 C   s   g d}g d}g d}g d}d}d}d}d}t g d	}	t g d
}
t g d}t g d}t | |r?|}|	}n%t | |rJ|}|
}nt | |rU|}|}nt | |r`|}|}ntdt |t |fS )z8simplified objective func to test lbfgsb bound violationg     ?g     ?gleffff?g%I$I?gbsE]?)      ?        r   r   r   )r   r   gDW?r   gB|m?)r   r   gҥ?r   g0Ԕ?gܥ+@g5s@g2a@g`_@)gFg ?gwQgb@gf漍B@)g8ۿg	MpB#?g8B92@g柇P?@g 3)g8F޿gƌJ?g%Gg;S9H@gMG@)g4</޿g dZ?gc4y?g(,7H@g @z<Simplified objective function not defined at requested point)nparrayallclose
ValueErrorcopy)xx0x1x2x3f0f1f2f3g0g1g2g3fg r   e/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_lbfgsb_setulb.pyobjfun   s8   r   c                  C   sv  d} d}d}d}d}d}t | fd}t | t j}t | t j}t g d}	t |	}
t d	t j}t | t j}tjj	j
}t d| |  d|   d
| |  d|  t j}t d|  |}t dd}t dd}t d|}t d|}t dt j}d|dd< tdD ].}t|
\}}t||
|||||||||||||||| |
|k r|
|k sJ dqdS )zdtest if setulb() violates bounds

    checks for violation due to floating point rounding error
       
   g    cAgh㈵>      r   r               S60   ,      s   STARTN   z9_lbfgsb.setulb() stepped to a point outside of the bounds)r   fullzerosfloat64onesr   r
   r   typesintvardtyperanger   setulball)nmfactrpgtolmaxlsiprintnbdlow_bnd	upper_bndr   r   r   r   fortran_intwaiwataskcsavelsaveisavedsaven_iterr   r   r   test_setulb_floatroundE   sD   

2rG   )numpyr   scipy.optimizer   r   rG   r   r   r   r   <module>   s    @