U
    /dN
                     @   s   d Z ddlmZ ddlmZ edd edD ZdZ	d\Z
Zd	\ZZZd
d eD Zdd Zdd Zdd Zdd Zdd ZdS )a8  
Test Cython optimize zeros API functions: ``bisect``, ``ridder``, ``brenth``,
and ``brentq`` in `scipy.optimize.cython_optimize`, by finding the roots of a
3rd order polynomial given a sequence of constant terms, ``a0``, and fixed 1st,
2nd, and 3rd order terms in ``args``.

.. math::

    f(x, a0, args) =  ((args[2]*x + args[1])*x + args[0])*x + a0

The 3rd order polynomial function is written in Cython and called in a Python
wrapper named after the zero function. See the private ``_zeros`` Cython module
in `scipy.optimize.cython_optimze` for more information.
    N)_zerosc                 c   s   | ]}d |d  V  qdS )g       g      $@N ).0xr   r   M/tmp/pip-unpacked-wheel-9gxwnfpp/scipy/optimize/tests/test_cython_optimize.py	<genexpr>   s     r   
   )        r	   g      ?)r	   g       @)MbP?r
   r   c                 C   s   g | ]}| d  qS )gUUUUUU?r   )r   Za0r   r   r   
<listcomp>   s     r   c                   C   s.   t jtttdtttt	t
tttt
d d S )NbisectZrtolZatolnptassert_allcloseEXPECTEDlistr   Zloop_exampleA0ARGSXLOXHIXTOLRTOLMITRr   r   r   r   test_bisect*   s     r   c                   C   s.   t jtttdtttt	t
tttt
d d S )NZridderr   r   r   r   r   r   test_ridder5   s     r   c                   C   s.   t jtttdtttt	t
tttt
d d S )NZbrenthr   r   r   r   r   r   test_brenth@   s     r   c                   C   s.   t jtttdtttt	t
tttt
d d S )NZbrentqr   r   r   r   r   r   test_brentqK   s     r   c                  C   sl   t td ft ttttt} t	j
td | d ttd t	d| d  t	d| d  t	d| d  d S )	Nr   rootr      Z
iterations   ZfuncallsZ	error_num)r   Zfull_output_exampler   r   r   r   r   r   r   r   r   r   Zassert_equal)outputr   r   r   test_brentq_full_outputV   s         r"   )__doc__Znumpy.testingZtestingr   Zscipy.optimize.cython_optimizer   tupleranger   r   r   r   r   r   r   r   r   r   r   r   r"   r   r   r   r   <module>   s   
