U
    »mœdd  ã                   @   s(   d dl Zd dlmZ dd„ Zdd„ ZdS )é    N)Ú_lbfgsbc                 C   s  dddddg}dddddg}ddddd	g}ddd
ddg}d}d}d}d}t  dddddg¡}	t  dddddg¡}
t  dddddg¡}t  dd d!d"d#g¡}t  | |¡r®|}|	}nJt  | |¡rÄ|}|
}n4t  | |¡rÚ|}|}nt  | |¡rð|}|}ntd$ƒ‚t  |¡t  |¡fS )%z8simplified objective func to test lbfgsb bound violationçú     ì?çŠ     è?çleffffî?çŒ%I’$Iê?çbsÑE]ä?g      ð?ç        gDÊÔW«¥ï?gB¦|müš?gá·Ò¥ï?gèý0Ÿ‡Ô”?g‘ÚÜ¥+´@g¡5sÑ´@g2ìa´@g`� Þ_´@gF§Îýâ¿g¼Çî¢ ú?gœ¬¦ÂwÿQÀg’½þÌôb@gfæ¼�B@g8‘‚µÛ¿g	MpB#ð?g‘öû8B92@gÄæŸ‡Pí?@g ¨µâª3ÀgÊÀÿ8FÞ¿gÆŒíÇJî?gŸƒ…%ƒG‘¿g;S™9H@g€Ñô‚MG@g4</­Þ¿g ŠdZ½Âî?g”c�4’y?g(¹,ÿÀ7H@g ¾Äëœ@z<Simplified objective function not defined at requested point)ÚnpÚarrayZallcloseÚ
ValueErrorÚcopy)ÚxÚx0Úx1Zx2Zx3Zf0Úf1Úf2Zf3Zg0Úg1Úg2Zg3ÚfÚg© r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/optimize/tests/test_lbfgsb_setulb.pyÚobjfun   s~    üüüüüüüÿr   c                  C   s‚  d} d}d}d}d}d}t  | fd¡}t  | t j¡}t  | t j¡}t  dd	d
ddg¡}	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 ]b}t|
ƒ\}}t ||
||||||||||||||||¡ |
|k ¡ �rr|
|k ¡ �stdƒ‚�qdS )zdtest if setulb() violates bounds

    checks for violation due to floating point rounding error
    é   é
   g    ÐcAgñhãˆµøä>é   éÿÿÿÿé   r   r   r   r   r   r   é   é   é   é   ZS60é   é,   é   s   STARTNé   z9_lbfgsb.setulb() stepped to a point outside of the bounds)r	   ÚfullZzerosZfloat64Zonesr
   r   r   ÚtypesZintvarZdtypeÚranger   ZsetulbÚallÚAssertionError)ÚnÚmZfactrZpgtolZmaxlsZiprintZnbdZlow_bndZ	upper_bndr   r   r   r   Zfortran_intÚwaZiwaÚtaskZcsaveZlsaveZisaveZdsaveZn_iterr   r   r   Útest_setulb_floatroundE   s\    üÿ

2        þÿr/   )Únumpyr	   Zscipy.optimizer   r   r/   r   r   r   r   Ú<module>   s   @