
    ^Mh                     *%   d Z ddlmZ ddlZddlmZ ddlmZ dZ	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zi Zd Zg dZe
eedd ej        d          gej        dddg	eeedd ej        d          gej        dddg	eeedd ej        d          gej        dddg	edddd ej        d          gddddg	edddd ej        d          gddddg	edddd ej        d          gej         dddg	gZd eD             Zd  Zd! Zd" Zd# Zd$ Z d% Z!d& Z"d' Z#d( Z$d) Z%d* Z&d+ Z'd, Z(d- Z)d. Z*d/ Z+d0 Z,d1 Z-d2 Z.d3 Z/d4 Z0d5 Z1d6 Z2d7 Z3d8 Z4d9 Z5d: Z6d; Z7d< Z8d= Z9d> Z:d? Z;d@ Z<dA Z=dB Z>dC Z? ej@         ejA        eB          jC                  ZDdD ZEdE ZFdF ZGdG ZHdH ZIdI ZJdJ ZKdK ZLdL ZMg dZNg eeedejO        dMz  ejO        gej        ddNdOg	ee e!ddPdQgej        dMdRdSg	ee e!ddTdUgej        dVdWdXg	ee e!ddYdZgej        d[d\d]g	ee e!dd^d_gej        d`dadbg	ee e!ddcddgej        dedfdgg	ee e!ddhdigej        djdkdlg	ee e!ddmdngej        dodpdqg	ee e!ddrdsgej        dtdudvg	ee e!ddwdxgej        dydzd{g	ee e!dd|d}gej        d~ddg	e"e#e$dddgej        dddg	e"e#e$dddgej        dddg	e"e#e$dddgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddVgej        dddg	e%e&e'dddgej        dddg	e%e&e'dddgej        dddg	e%e&e'dddgej        dddg	e%e&e'dddgej        dddg	e(e)e*dddgej        dejO        dz  dg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e+e,e-dddgej        dddg	e.e/e0dddgej        dddg	e.e/e0dddgej        dddg	e.e/e0dddgej        dddg	e1e2e3dddgej        dddg	e1e2e3dddgej        dddg	e1e2e3dddgej        dddg	e1e2e3dddgej        dddg	e1e2e3dddgej        dddg	e4e5e6dddgej        dddg	e4e5e6dddgej        dddg	e4e5e6dddgej        dddg	e4e5e6dddgej        dddg	e4e5e6dddgej        dddg	e4e5e6dddgej        dddg	e4e5e6dddgej        dddg	e7e8e9dddgej        dddg	e7e8e9dddgej        dddg	e7e8e9dddgej        dddg	e7e8e9dddgej        dddg	e7e8e9dddgej        dddg	e:e;e<dddgej        ddd g	e:e;e<dddgej        dddg	e:e;e<dddgej        dddg	e:e;e<dddgej        ddŐdg	e=e>e?dddgej        ddMdg	e=e>e?dddgej        ddd	g	e=e>e?dddgej        dd
dg	e=e>e?dddgej        ddVdg	e=e>e?dddgej        dddg	e=e>e?dddgej        dddg	e=e>e?dddgej        dddg	e=e>e?dddgej        dddg	e=e>e?dddgej        dddg	e=e>e?dddgej        dddg	e=e>e?dddgej        dd`dg	e=e>e?dddgej        dd d!g	e=e>e?d"ddgej        dd#d$g	e=e>e?d%ddgej        dd&d'g	e=e>e?d(ddgej        dd)d*g	e=e>e?d+ddgej        dd,d-g	e=e>e?d.ddgej        dd/d0g	e=e>e?d1ddgej        ddd2g	e=e>e?d3ddgej        dd4d5g	eEeFeGddd
gej        ddd6g	eHeIeJdd7ejO        dMz  gddd8d9g	eHeIeJdd7ejO        dMz  gddd8d:g	eHeIeJdd7ejO        dMz  gddd8d;g	eHeIeJdd7ejO        dMz  gddd8d<g	eHeIeJdd7ejO        dMz  gddd8d=g	eHeIeJdd7ejO        dMz  gddd8d>g	eHeIeJdd7ejO        dMz  gddd8d?g	eHeIeJdd7ejO        dMz  gddd8d@g	eHeIeJdd7ejO        dMz  gddd8dAg	eHeIeJd֐d7ejO        dMz  gddd8dBg	eHeIeJdd7ejO        dMz  gddd8dCg	eHeIeJdDd7ejO        dMz  gddd8dEg	eHeIeJdd7ejO        dMz  gddd8dFg	eHeIeJdGd7ejO        dMz  gddd8dHg	eHeIeJdd7ejO        dMz  gddd8dIg	eHeIeJdJd7ejO        dMz  gddd8dKg	eHeIeJdd7ejO        dMz  gddd8dLg	eHeIeJdMd7ejO        dMz  gddd8dNg	eHeIeJdd7ejO        dMz  gddd8dOg	eHeIeJdd7ejO        dMz  gddd8dPg	eHeIeJd"d7ejO        dMz  gddd8dQg	eHeIeJdRd7ejO        dMz  gddd8dSg	eHeIeJd%d7ejO        dMz  gddd8dTg	eHeIeJdUd7ejO        dMz  gddd8dVg	eHeIeJd(d7ejO        dMz  gddd8dWg	eHeIeJdXd7ejO        dMz  gddd8dYg	eHeIeJd+d7ejO        dMz  gddd8dZg	eHeIeJd[d7ejO        dMz  gddd8d\g	eHeIeJd.d7ejO        dMz  gddd8d]g	eHeIeJd^d7ejO        dMz  gddd8d_g	eHeIeJd1d7ejO        dMz  gddd8d`g	eHeIeJdad7ejO        dMz  gddd8dbg	eHeIeJd3d7ejO        dMz  gddd8dcg	eHeIeJddd7ejO        dMz  gddd8deg	eHeIeJdfd7ejO        dMz  gddd8dgg	eHeIeJdhd7ejO        dMz  gddd8dig	eHeIeJdjd7ejO        dMz  gddd8dkg	eHeIeJdld7ejO        dMz  gddd8dmg	eHeIeJdnd7ejO        dMz  gddd8dog	eHeIeJdĐd7ejO        dMz  gddd8dpg	eKeLeMdd7dqgdddrdsg	eKeLeMd"d7dqgdddtdug	eKeLeMdRd7dqgdddvdwg	eKeLeMd%d7dqgdddxdyg	eKeLeMdUd7dqgdddzd{g	eKeLeMd(d7dqgddd|d}g	eKeLeMdXd7dqgddd~dg	eKeLeMd+d7dqgddddg	eKeLeMd[d7dqgddddg	eKeLeMd.d7dqgddddg	eKeLeMd^d7dqgddddg	eKeLeMd1d7dqgddddg	eKeLeMdad7dqgddddg	eKeLeMd3d7dqgddddg	eKeLeMddd7dqgddddg	eKeLeMdfd7dqgddddg	eKeLeMdhd7dqgddddg	eKeLeMdjd7dqgddddg	eKeLeMdld7dqgddddg	eKeLeMdnd7dqgddddg	eKeLeMdĐd7dqgddddg	eKeLeMdАd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	eKeLeMdd7dqgddddg	ZPd ePD             ZQd ZRd ZSd ZTd ZUd ZVd ZWg dZXeReSeTdej        ddÐdĐdg	eReSeTdej        dǐdȐd ej        d          dMz  dz  z   dg	eReSeTdej        dĐdd ej        d          dMz  dz  z   dg	eReSeTdej        dVd
dMdg	eUeVeWdej        dАdejO        dz  dg	eUeVeWdej        dАdejO        dz  dg	gZYdՄ eYD             ZZdք Z[ e[e            e[eQ            e[eZ           dd؄Z\ej]        ej^        ej_        ej`        gZag d٢ZbeeeeegZcg dڢZddۄ Zedee_f        d݄ Zgdeg_f        dބ Zhdeh_f        d߄ ZidMei_f        d Zjdej_f        d Zkdek_f        d Zldel_f        d Zmdem_f        d Znden_f        g dZog eedMdgeejf        dgeedd[geejf        dgeeddgeejf        dgeeddgeejf        d&geeddgeejf        dgegddgegjf        dgegdqdgegjf        dgegddgegjf        dgegddgegjf        dgegddgegjf        dgehddVgehjf        d#gehdd[gehjf        d&gehddgehjf        dgehddgehjf        dgehddgehjf        dgeiddVgeijf        d#geidd[geijf        d&geiddgeijf        d4geiddgeijf        dgeiddgeijf        dgejdd
gejjf        d#gejddVgejjf        dgejdd[gejjf        d&gejddogejjf        d)gejddgejjf        degekd dgekjf        d#gekddgekjf        dgekd dgekjf        d&gekddgekjf        d)gekddgekjf        degeldd
geljf        dgelddVgeljf        dgeldd[geljf        dgelddogeljf        d	gelddgeljf        d gemd
dMgemjf        dgemd
dgemjf        d[gemd
dgemjf        dgemd
d,gemjf        dgemd
dgemjf        dgend
dgenjf        dgend
dgenjf        dgend
dgenjf        d[gend
d,genjf        dgend
dgenjf        dgZpd  eqep          D             Zpd epD             Zr e[er           dS (  a
  
Parameters used in test and benchmark methods.

Collections of test cases suitable for testing 1-D root-finders
  'original': The original benchmarking functions.
     Real-valued functions of real-valued inputs on an interval
     with a zero.
     f1, .., f3 are continuous and infinitely differentiable
     f4 has a left- and right- discontinuity at the root
     f5 has a root at 1 replacing a 1st order pole
     f6 is randomly positive on one side of the root,
     randomly negative on the other.
     f4 - f6 are not continuous at the root.

  'aps': The test problems in the 1995 paper
     TOMS "Algorithm 748: Enclosing Zeros of Continuous Functions"
     by Alefeld, Potra and Shi. Real-valued functions of
     real-valued inputs on an interval with a zero.
     Suitable for methods which start with an enclosing interval, and
     derivatives up to 2nd order.

  'complex': Some complex-valued functions of complex-valued inputs.
     No enclosing bracket is provided.
     Suitable for methods which use one or more starting values, and
     derivatives up to 2nd order.

  The test cases are provided as a list of dictionaries. The dictionary
  keys will be a subset of:
  ["f", "fprime", "fprime2", "args", "bracket", "smoothness",
  "a", "b", "x0", "x1", "root", "ID"]
    )randomN)	_zeros_py)array_namespacea  
f2 is a symmetric parabola, x**2 - 1
f3 is a quartic polynomial with large hump in interval
f4 is step function with a discontinuity at 1
f5 is a hyperbola with vertical asymptote at 1
f6 has random values positive to left of 1, negative to right

Of course, these are not real problems. They just test how the
'good' solvers behave in bad circumstances where bisection is
really the best. A good solver should not be much worse than
bisection in such circumstance, while being faster for smooth
monotone sorts of functions.
c                     | | dz
  z  S )z'f1 is a quadratic with roots at 0 and 1      ? xs    X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/_tstutils.pyf1r   A   s    B<    c                     d| z  dz
  S N      r   r	   s    r   f1_fpr   F   s    q519r   c                     dS Nr   r   r	   s    r   f1_fppr   J       1r   c                     | dz  dz
  S )z$f2 is a symmetric parabola, x**2 - 1r   r   r   r	   s    r   f2r   N       a4!8Or   c                     d| z  S r   r   r	   s    r   f2_fpr   S   s    q5Lr   c                     dS r   r   r	   s    r   f2_fppr   W   r   r   c                 *    | | dz
  z  | dz
  z  | dz
  z  S )z%A quartic with roots at 0, 1, 2 and 3r   g       @g      @r   r	   s    r   f3r   [   s"    B<1r6"a"f--r   c                 6    d| dz  z  d| dz  z  z
  d| z  z   dz
  S )N         r         r   r	   s    r   f3_fpr&   `   s+    q!t8b1a4i"q&(1,,r   c                 $    d| dz  z  d| z  z
  dz   S )N   r   $   r$   r   r	   s    r   f3_fppr*   d   s    19rAv""r   c                 >    | dk    rdd| z  z   S | dk     rdd| z  z   S dS )zBPiecewise linear, left- and right- discontinuous at x=1, the root.r   r   皙?      r   r   r	   s    r   f4r.   h   s5    1uuR!V|1uub1f}1r   c                 "    | dk    rdd| z
  z  S dS )zY
    Hyperbola with a pole at x=1, but pole replaced with 0. Not continuous at root.
    r   r   r   r   r	   s    r   f5r0   q   s      	Avvb1f~1r   c                     t                               | d           }|7| dk    rt                      }n| dk     rt                       }nd}|t           | <   |S )Nr   r   )	_f6_cachegetr   )r
   vs     r   f6r5   ~   sW    aAyq55AAUU	AAA	!Hr   )	ffprimefprime2argsbracket
smoothnessx0rootIDr         ?r"   g333333?r   zoriginal.01.00zoriginal.02.00zoriginal.03.00zoriginal.04.00zoriginal.05.00c                 R    g | ]$}t          t          t          |                    %S r   )dictzip_ORIGINAL_TESTS_KEYS.0testcases     r   
<listcomp>rH      s8       2:D!8	,	,--  r   c                 6    t          j        |           | dz  z
  S )z<Straightforward sum of trigonometric function and polynomialr   npsinr	   s    r   aps01_frM      s    6!99q1ur   c                 0    t          j        |           dz
  S )Nr?   rK   cosr	   s    r   aps01_fprQ      s    6!99wr   c                 ,    t          j        |            S NrJ   r	   s    r   	aps01_fpprT          F1II:r   c                     t          j        dd          }dt          j        d|z  dz
  dz  | |dz  z
  dz  z            z  S )zDpoles at x=n**2, 1st and 2nd derivatives at root are also close to 0r      r      r"   rK   arangesumr
   iis     r   aps02_fr_      sE    	1b		BB
Q!b!e)a78888r   c                     t          j        dd          }dt          j        d|z  dz
  dz  | |dz  z
  dz  z            z  S )Nr   rW   r%   r   rY   r!   rZ   r]   s     r   aps02_fpra      sE    	1b		Brvq2vzAoRUQ67777r   c                     t          j        dd          }dt          j        d|z  dz
  dz  | |dz  z
  dz  z            z  S )Nr   rW      r   rY   rZ   r]   s     r   	aps02_fpprd      sE    	1b		BB
Q!b!e)a78888r   c                 <    || z  t          j        || z            z  S )zRapidly changing at the rootrK   expr
   abs      r   aps03_frk      s    q526!a%==  r   c                 H    ||| z  dz   z  t          j        || z            z  S Nr   rf   rh   s      r   aps03_fprn      s%    A	?RVAE]]**r   c                 T    |||| z  dz   z  |z   z  t          j        || z            z  S rm   rf   rh   s      r   	aps03_fpprp      s/    QUQY!#$rva!e}}44r   c                     | |z  |z
  S )zMedium-degree polynomialr   r
   nri   s      r   aps04_frt      r   r   c                     || |dz
  z  z  S rm   r   rr   s      r   aps04_fprv          q1q5z>r   c                 $    ||dz
  z  | |dz
  z  z  S Nr   r   r   rr   s      r   	aps04_fpprz          A;QU##r   c                 0    t          j        |           dz
  S )zSimple Trigonometric functionr?   rJ   r	   s    r   aps05_fr}      s    6!99wr   c                 *    t          j        |           S rS   rO   r	   s    r   aps05_fpr          6!99r   c                 ,    t          j        |            S rS   rJ   r	   s    r   	aps05_fppr      rU   r   c                 v    d| z  t          j        |           z  dt          j        | | z            z  z
  dz   S )z0Exponential rapidly changing from -1 to 1 at x=0r   r   rf   r
   rs   s     r   aps06_fr      s8    q5261"::BFA26NN 22Q66r   c                 p    dt          j        |           z  d|z  t          j        | | z            z  z   S r   rf   r   s     r   aps06_fpr      s2    rvqbzz>AEBFA26NN222r   c                 D    d|z  |z  t          j        | | z            z  S NrX   rf   r   s     r   	aps06_fppr      s#    6A:rAv&&r   c                 6    dd|z
  dz  z   | z  d|| z  z
  dz  z
  S )z/Upside down parabola with parametrizable heightr   r   r   r   s     r   aps07_fr      *    Q
Na1q1u9q.00r   c                 6    dd|z
  dz  z   d|z  d|| z  z
  z  z   S ry   r   r   s     r   aps07_fpr      s*    Q
Na!eq1q5y111r   c                     d|z  |z  S r   r   r   s     r   	aps07_fppr     s    6A:r   c                     | | z  d| z
  |z  z
  S )zDegree n polynomialr   r   r   s     r   aps08_fr     s    q5AEA:r   c                 *    d| z  |d| z
  |dz
  z  z  z   S r   r   r   s     r   aps08_fpr     s#    q51AQ''''r   c                 0    d||dz
  z  d| z
  |dz
  z  z  z
  S r   r   r   s     r   	aps08_fppr     s'    qAE{a!eq1u----r   c                 6    dd|z
  dz  z   | z  d|| z  z
  dz  z
  S )z.Upside down quartic with parametrizable heightr   r!   r   r   s     r   aps09_fr     r   r   c                 <    dd|z
  dz  z   d|z  d|| z  z
  dz  z  z   S )Nr   r!   r"   r   r   s     r   aps09_fpr     s.    Q
Na!eq1q5y1n444r   c                 $    d|z  d|| z  z
  dz  z  S )Nir   r   r   r   s     r   	aps09_fppr     s    7a!a%i!^##r   c                 J    t          j        | | z            | dz
  z  | |z  z   S )zExponential plus a polynomialr   rf   r   s     r   aps10_fr   !  s(    61"q&>>QU#ad**r   c                 d    t          j        | | z            | | dz
  z  dz   z  || |dz
  z  z  z   S rm   rf   r   s     r   aps10_fpr   &  s;    61"q&>>aR1q5\A-.QQZ??r   c                     t          j        | | z            | | | dz
  z  dz   z  | | z  z   z  ||dz
  z  | |dz
  z  z  z   S ry   rf   r   s     r   	aps10_fppr   *  s[    FA26NNqbQB!a%L1$45Q>?1q5kAAJ&' (r   c                 $    || z  dz
  |dz
  | z  z  S )z8Rational function with a zero at x=1/n and a pole at x=0r   r   r   s     r   aps11_fr   /  s    EAI1q5A+&&r   c                     d|dz
  z  | dz  z  S ry   r   r   s     r   aps11_fpr   4  s    A;Ar   c                     d|dz
  z  | dz  z  S )NrX   r   r"   r   r   s     r   	aps11_fppr   8  s    Q<!Q$r   c                 d    t          j        | d|z            t          j        |d|z            z
  S )z!nth root of x, with a zero at x=nr   rK   powerr   s     r   aps12_fr   <  s-    8AsQw"(1cAg"6"666r   c                 >    t          j        | d|z
  |z            |z  S )Nr   r   r   s     r   aps12_fpr   A  s!    8Aa1}%%))r   c                 \    t          j        | dd|z  z
  |z            d|z  z  d|z
  z  |z  S )Nr   r   r   r   s     r   	aps12_fppr   E  s8    8Aa!eq())S1W5qAAEEr   c                 j    | dk    rdS d| dz  z  }|t           k    rdS | t          j        |          z  S )z-Function with *all* derivatives 0 at the rootr   r   r   _MAX_EXPABLErK   rg   r
   ys     r   aps13_fr   L  sA    Avvq 	
AqDA<qrvayy=r   c                 |    | dk    rdS d| dz  z  }|t           k    rdS dd| dz  z  z   t          j        |          z  S )Nr   r   r   r   r   s     r   aps13_fpr   Y  sL    Avvq	AqDA<qAqDLBF1II%%r   c                     | dk    rdS d| dz  z  }|t           k    rdS dd| dz  z
  z  | dz  z  t          j        |          z  S )Nr   r   r   rY   r   r   s     r   	aps13_fppr   b  sU    Avvq	AqDA<qAqD>AqD 26!99,,r   c                 `    | dk    r| dz  S |dz  | dz  t          j        |           z   dz
  z  S )z<0 for negative x-values, trigonometric+linear for x positiver         4@      ?r   rJ   r   s     r   aps14_fr   k  s<    AvvrDyt8q3w*Q.//r   c                 L    | dk    rdS |dz  dt          j        |           z   z  S )Nr   r   gUUUUUU?rO   r   s     r   aps14_fpr   r  s,    Avvqt8y26!99,--r   c                 H    | dk    rdS | dz  t          j        |           z  S )Nr   r   rJ   r   s     r   	aps14_fppr   x  s)    Avvq29q		""r   c                     | dk     rdS | dd|z   z  k    rt           j        dz
  S t          j        |dz   | z  dz  dz            dz
  S )z6piecewise linear, constant outside of [0, 0.002/(1+n)]r   grh|Mb`?r   X9v?r     rK   erg   r   s     r   aps15_fr   ~  sV    1uuv8q1ute|61q5A+/D())E11r   c                     d| cxk    rdd|z   z  k    sn t           j        dz
  S t          j        |dz   | z  dz  dz            |dz   z  dz  dz  S Nr   r   r   r   r   r   r   r   s     r   aps15_fpr     sj    ''''XQ'''''te|61q5A+/D())QU3a7$>>r   c                     d| cxk    rdd|z   z  k    sn t           j        dz
  S t          j        |dz   | z  dz  dz            |dz   z  dz  dz  |dz   z  dz  dz  S r   r   r   s     r   	aps15_fppr     s}    ''''XQ'''''te|61q5A+/D())QU3a7$>!a%H1LtSSr   r   gS?z	aps.01.00g0D   ?g@g=.@z	aps.02.00g.   @gh!@rY   gƸ)@z	aps.02.01g   "@gh/@
   gxs7z&@z	aps.02.02gK   0@g}8@   g^^W3@z	aps.02.03gK   9@g?A@   g=@z	aps.02.04g%   B@g?H@%   gnD@z	aps.02.05g%  H@g?O@2   g؛[mK@z	aps.02.06g   P@g?T@A   g%Q@z	aps.02.07g  @T@gX@R   gkYMV@z	aps.02.08g   Y@g?^@e   gzi[@z	aps.02.09)ir@   i   rX   z	aps.03.00)irX   z	aps.03.01)i8z	aps.03.02)r!   皙?g      @gllRf?z	aps.04.00)r%   r   g_
x?z	aps.04.01)   r   glTj"+?z	aps.04.02)r   r   g08->?z	aps.04.03)r(   r   g?z	aps.04.04)r!   r   r   z	aps.04.05)r%   r   z	aps.04.06)r   r   z	aps.04.07)r   r   z	aps.04.08)r(   r   z	aps.04.09gffffffg333333@r   z	aps.04.10z	aps.04.11z	aps.04.12)   r   z	aps.04.13g?r%   z	aps.05.00)r   g	?z	aps.06.00)r   gn?z	aps.06.01)r"   gs Hda?z	aps.06.02)r!   gX?z	aps.06.03)rY   g?gi?z	aps.06.04)   r,   g]?z	aps.06.05)(   g?g.?z	aps.06.06)<   g?gTϨ?z	aps.06.07)P   g?g.?z	aps.06.08)d   g{Gz?gͺ},d|?z	aps.06.09gz?z	aps.07.00)r   g3_tF?z	aps.07.01gmd?z	aps.07.02g?z	aps.08.00gΏ$?z	aps.08.01g~++`?z	aps.08.02)   gx5[?z	aps.08.03gB!?z	aps.08.04g.xz?z	aps.09.00g.xz?z	aps.09.01gIl?z	aps.09.02g:*m?z	aps.09.03)r   glM:?z	aps.09.04gR@>z	aps.09.05gKu->z	aps.09.06gG"?z	aps.10.00gXbT?z	aps.10.01g,C?z	aps.10.02g=N?z	aps.10.03gaw?z	aps.10.04{Gz?z	aps.11.00r   z	aps.11.01g?z	aps.11.02z	aps.11.03r   g?z	aps.12.00z	aps.12.01r!   z	aps.12.02z	aps.12.03)r%   z	aps.12.04)   r   z	aps.12.05)	   r   z	aps.12.06)   r   z	aps.12.07)   r   z	aps.12.08r   z	aps.12.09)r   z	aps.12.10)   r   z	aps.12.11)rW   rW   z	aps.12.12)   r   z	aps.12.13)   r   z	aps.12.14)   r   z	aps.12.15)   r   z	aps.12.16)r   z	aps.12.17)!   r   z	aps.12.18z	aps.13.00igh9?z	aps.14.00z	aps.14.01z	aps.14.02z	aps.14.03z	aps.14.04z	aps.14.05z	aps.14.06z	aps.14.07z	aps.14.08z	aps.14.09z	aps.14.10)r(   z	aps.14.11z	aps.14.12)r   z	aps.14.13z	aps.14.14)   z	aps.14.15z	aps.14.16)r#   z	aps.14.17z	aps.14.18z	aps.14.19z	aps.14.20)r$   z	aps.14.21z	aps.14.22)rc   z	aps.14.23z	aps.14.24)r   z	aps.14.25z	aps.14.26)   z	aps.14.27z	aps.14.28)   z	aps.14.29z	aps.14.30)    z	aps.14.31z	aps.14.32)"   z	aps.14.33)#   z	aps.14.34)r)   z	aps.14.35)r   z	aps.14.36)&   z	aps.14.37)'   z	aps.14.38z	aps.14.39g-C6?gBi?z	aps.15.00gpĵx?z	aps.15.01gD?z	aps.15.02gY?z	aps.15.03gVXl
?z	aps.15.04g^	?z	aps.15.05g3Qu?z	aps.15.06gq3юL8?z	aps.15.07gm۾Rk?z	aps.15.08gHt/?z	aps.15.09gW?z	aps.15.10gBQ?z	aps.15.11gWΥ?z	aps.15.12gBN?z	aps.15.13g@rp?z	aps.15.14g`MW?z	aps.15.15g-rc?z	aps.15.16g[.?z	aps.15.17g ?z	aps.15.18g5cA ?z	aps.15.19g\
>z	aps.15.20guW>z	aps.15.21)   g,Y~>z	aps.15.22)i,  gG>z	aps.15.23)i  g]4H->z	aps.15.24)i  g2v>z	aps.15.25)iX  gwaO>z	aps.15.26)i  gAbE٭>z	aps.15.27)i   gӥM>z	aps.15.28)i  gݢO>z	aps.15.29)r   g$lȴ>z	aps.15.30c                 R    g | ]$}t          t          t          |                    %S r   )rB   rC   _APS_TESTS_KEYSrE   s     r   rH   rH     s*    TTTXD_h7788TTTr   c                     | |z  |z
  S )z&z**n-a:  Use to find the nth root of ar   zrs   ri   s      r   cplx01_fr     r   r   c                     || |dz
  z  z  S rm   r   r   s      r   	cplx01_fpr     rw   r   c                 $    ||dz
  z  | |dz
  z  z  S ry   r   r   s      r   
cplx01_fppr     r{   r   c                 0    t          j        |           |z
  S )z"e**z - a: Use to find the log of arf   r   ri   s     r   cplx02_fr    s    6!99q=r   c                 *    t          j        |           S rS   rf   r  s     r   	cplx02_fpr    r   r   c                 *    t          j        |           S rS   rf   r  s     r   
cplx02_fppr    r   r   )	r6   r7   r8   r9   r;   r<   x1r=   r>   )r   r@   y      ?      ?y      ?      ?              ?zcomplex.01.00)r"   r   y            ?y             @g      zcomplex.01.01)r"   r@   zcomplex.01.02)r"   r   zcomplex.01.03)r@   y      ?       @zcomplex.02.00)r	  y              ?zcomplex.02.01c                 R    g | ]$}t          t          t          |                    %S r   )rB   rC   _COMPLEX_TESTS_KEYSrE   s     r   rH   rH     s8       19D (	+	+,,  r   c                 r    | D ]3}t          ddg|                    dg                     D ]
\  }}|||<   4dS )z:Add "a" and "b" keys to each test from the "bracket" valueri   rj   r:   N)rC   r3   )testsdkr4   s       r   _add_a_br  $  sZ      c
AEE)R$8$899 	 	DAqAaDD	 r   originalc                     | pd} t           t          t          t          d}|                    | g           }fd|D             }|S )a  Return the requested collection of test cases, as an array of dicts with subset-specific keys

    Allowed values of collection:
    'original': The original benchmarking functions.
         Real-valued functions of real-valued inputs on an interval with a zero.
         f1, .., f3 are continuous and infinitely differentiable
         f4 has a single discontinuity at the root
         f5 has a root at 1 replacing a 1st order pole
         f6 is randomly positive on one side of the root, randomly negative on the other
    'aps': The test problems in the TOMS "Algorithm 748: Enclosing Zeros of Continuous Functions"
         paper by Alefeld, Potra and Shi. Real-valued functions of
         real-valued inputs on an interval with a zero.
         Suitable for methods which start with an enclosing interval, and
         derivatives up to 2nd order.
    'complex': Some complex-valued functions of complex-valued inputs.
         No enclosing bracket is provided.
         Suitable for methods which use one or more starting values, and
         derivatives up to 2nd order.

    The dictionary keys will be a subset of
    ["f", "fprime", "fprime2", "args", "bracket", "a", b", "smoothness", "x0", "x1", "root", "ID"]
    r  )apscomplexr  chandrupatlaNc                 ,    g | ]}|d          k    |S )r;   r   )rF   tcr;   s     r   rH   zget_tests.<locals>.<listcomp>N  s(    FFFr,'7:'E'E'E'E'Er   )_APS_TESTS_DICTS_COMPLEX_TESTS_DICTS_ORIGINAL_TESTS_DICTS_CHANDRUPATLA_TESTS_DICTSr3   )
collectionr;   subsetsr  s    `  r   	get_testsr  0  s`    . )zJ&.08: :G KK
B''EFFFFeFFFLr   )z	cc.bisectz	cc.ridderz	cc.brenthz	cc.brentq)r   r   r.   r0   r5   c                     | dz  d| z  z
  dz
  S )Nr"   r   rY   r   r	   s    r   fun1r   \  s    a4!A#:>r   g5 @c                     dd| dz  z  z
  S ry   r   r	   s    r   fun2r"  a  s    qAv:r   c                     | dz
  dz  S )Nr"   r   r	   s    r   fun3r$  f  s    aC!8Or   c                     d| dz
  dz  z  S )Nr%   r   rY   r   r	   s    r   fun4r&  k  s    acAX:r   c                     | dz  S )Nr   r   r	   s    r   fun5r(  p  s    a4Kr   c                     | dz  S )Nr   r   r	   s    r   fun6r*  u  s    b5Lr   c                     t          |           }|                    |           dk     rdn| |                    | dz             z  S )NgW8?r   rX   )r   absrg   r
   xps     r   fun7r/  z  sD    			Bq		F""11"&&!b'*:*:(::r   c                     t          |           }d}dd|z
  z  |                    |            z   |d|z
  |                    |            z  z   z  dz
  d| z  z   S )Nge-?i  r   i  i\  r   rg   )r
   r.  xis      r   fun8r3    sc    			B	B1R4[#$bAbD"&&!**+<&<=DtAvMMr   g;6b?c                 t    t          |           }|                    |           dz
  d| dz  z  z
  d| dz  z  z   S )Nr   r   g>r"   r1  r-  s     r   fun9r5    s=    			B66!99q=419$wq!t|33r   gGo?)r6   r:   r=   nfevalr>   r   g     g     @g    _g    _B+   g)\(?r   r$   gư>g    .Ar   g|=)   g-q=g   mB0   ir)   g    .-   7   6   r-   g      @g       g      @g      $@g      g      I@g      $g      Y@r#   g-C6*?r(   Q   c                 L    g | ]!\  }}||d          j          d|dz  dz    gz   "S )r   .rY   r   )__name__)rF   itests      r   rH   rH     sW     F F F"1d $q'"2<<QqSU<<== F F Fr   c                 R    g | ]$}t          t          t          |                    %S r   )rB   rC   _CHANDRUPATLA_TESTS_KEYSrE   s     r   rH   rH     sA     B B B!) "#&>"I"IJJ B B Br   )r  N)s__doc__r   numpyrK   scipy.optimizer   ccscipy._lib._array_apir   descriptionr   r   r   r   r   r   r   r&   r*   r.   r0   r2   r5   rD   sqrtinf_ORIGINAL_TESTSr  rM   rQ   rT   r_   ra   rd   rk   rn   rp   rt   rv   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   logfinfofloatmaxr   r   r   r   r   r   r   r   r   r   r   pi
_APS_TESTSr  r   r   r   r  r  r  r  _COMPLEX_TESTSr  r  r  bisectridderbrenthbrentqmethodsmstrings	functionsfstringsr   r=   r"  r$  r&  r(  r*  r/  r3  r5  rE  _CHANDRUPATLA_TESTS	enumerater  r   r   r   <module>r`     s&   R           * * * * * * 1 1 1 1 1 1  
      
    . . .
- - -# # #     	
 
 
,    S'"'!**-rvsCAQRS'"'!**-rvsCAQRS'"'!**-rvsCAQRtR#wrwqzz*BS:JKtR#wrwqzz*BS:JKtR#wrwqzz*RVGS#?OP >M     
    9 9 98 8 8
9 9 9
! ! !
+ + +5 5 5  
  $ $ $  
    7 7 7
3 3 3' ' '1 1 1
2 2 2    
( ( (. . .1 1 1
5 5 5$ $ $+ + +
@ @ @( ( (
' ' '
    7 7 7
* * *F F F rvhbhuoo)**
 
 
& & &- - -0 0 0. . .# # #2 2 2? ? ?T T T(  uh	2	25'926.u h	2(';RV.u
 h	2(';RV.u h	2)'<bf	 +/u h	2	9'=rv	 +/u h	2	9'=rv	 +/u h	2	9'=rv	 +/u h	2	9'=rv	 +/u" h	2	9'=rv	 +/#u& h	2	:'>	 +/'u* h	2
J'?
!;0+u. h	9r2hK/u2 h	:BxK3u6 h	:BxK7u: h	8aVRV
!;0;u> h	8aVRV
!;0?uB h	8aVRV
!;0CuF h	9q!fbf
!;0GuJ h	9q!fbf
!;0KuN h	6Aq626![OuR h	6Aq626![SuV h	6Aq626![WuZ h	7QFBF![[u^ h	7QFBF![_ub h	6E4="&![cuf h	7UDM26![guj h	7UDM26![kun h	7UDM26![our h	23x"%!)["suv h	4!Q
!;0wuz h	4!Q
!;0{u~ h	4!Q
!;0uB h	4!Q
!;0CuF h	4!Q
!;0GuJ h	51a&"&
!;0KuN h	51a&"&
#[2OuR h	51a&"&&5SuV h	51a&"&%{4WuZ h	6Aq626
#[2[u^ h	4!Q
!;0_ub h	51a&"&
!;0cuf h	51a&"&
!;0guj h	4!Q#{kun h	4!Q
!;0our h	51a&"&
!;0suv h	51a&"&
!;0wuz h	51a&"&
!;0{u~ h	4!Q
!;0uB h	4!Q
!;0CuF h	4!Q
!;0GuJ h	4!Q
!;0KuN h	4!Q
!;0OuR h	51a&"&
!;0SuV h	51a&"&
!;0WuZ h	4!Q
!;0[u^ h	4!Q
!;0_ub h	51a&"&
!;0cuf h	51a&"&
!;0guj h	51a&"&
!;0kun h	4$BF
G["our h	4$BF
G["suv h	54)RV
Hk#wuz h	54)RV
Hk#{u~ h	4!S26![uB h	4!S26![CuF h	4!S26![GuJ h	4!S26![KuN h	4!S26![OuR h	4!S26![SuV h	4!S26![WuZ h	51c(BF"k[u^ h	51c(BF"k_ub h	51c(BF"kcuf h	51c(BF"kguj h	51c(BF"kkun h	51c(BF"kour h	51c(BF"ksuv h	51c(BF"kwuz h	51c(BF"k{u~ h	51c(BF"kuB h	51c(BF"kCuF h	51c(BF"kGuJ h	2Aw![KuN h	4%);Q.OuR h	4%);Q.SuV h	4%);Q.WuZ h	4%);Q.[u^ h	4%);Q._ub h	4%);Q.cuf h	4%);Q.guj h	4%);Q.kun h	4%);Q.our h	55"%!)*<a.suv h	55"%!)*<a.wuz h	55"%!)*<a.{u~ h	55"%!)*<a.uB h	55"%!)*<a.CuF h	55"%!)*<a.GuJ h	55"%!)*<a.KuN h	55"%!)*<a.OuR h	55"%!)*<a.SuV h	55"%!)*<a.WuZ h	55"%!)*<a.[u^ h	55"%!)*<a._ub h	55"%!)*<a.cuf h	55"%!)*<a.guj h	55"%!)*<a.kun h	55"%!)*<a.our h	55"%!)*<a.suv h	55"%!)*<a.wuz h	55"%!)*<a.{u~ h	55"%!)*<a.uB h	55"%!)*<a.CuF h	55"%!)*<a.GuJ h	55"%!)*<a.KuN h	55"%!)*<a.OuR h	55"%!)*<a.SuV h	55"%!)*<a.WuZ h	55"%!)*<a.[u^ h	55"%!)*<a._ub h	55"%!)*<a.cuf h	55"%!)*<a.guj h	55"%!)*<a.kun h	55$-	 +/our h	55$-	 +/suv h	55$-	 +/wuz h	55$-	 +/{u~ h	55$-	 +/uB h	55$-	 +/CuF h	55$-	 +/GuJ h	55$-	 +/KuN h	55$-	 +/OuR h	55$-	 +/SuV h	55$-	 +/WuZ h	55$-	 +/[u^ h	55$-	 +/_ub h	55$-	 +/cuf h	55$-	 +/guj h	55$-	 +/kun h	55$-	 +/our h	55$-	 +/suv h	55$-	 +/wuz h	55$-	 +/{u~ h	55$-	 +/uB	 h	6E4=!	 +/C	uF	 h	6E4=!	 +/G	uJ	 h	6E4=!	 +/K	uN	 h	6E4=!	 +/O	uR	 h	6E4=!	 +/S	uV	 h	6E4=!	 +/W	uZ	 h	6E4=!	 +/[	u^	 h	6E4=!	 +/_	ub	 h	6E4=!	 +/c	uf	 h	7UDM1	 +/g	u
n	 UTTTT   
  $ $ $  
    $    y*grv
R2y*fbfwrwqzzA~'< < y*grv*gbgajj1nt33 y*fbf1oy*eRV
RUT\?<y*eRV
RUT\?<" =K   
   		    	    	      F 9biBI
6???RR 	)))  	  	  	  	  	  	; ; ; 	N N N 	4 4 4 	 DCC .	Aq649a .	Ar7DIr". 
As8TY#. 
D#;	2&	.
 
E4=$)R(. 
C;	1%. 
D#;	2&. 
D#;	2&. 
E4=$)R(. 
E4=$)R(. 
Aq649b!. 
C9di$. 
D#;	2&. 
D#;	2&. 
E4=$)R(.  
Aq649b!!." 
C9di$#.$ 
D#;	2&%.& 
D#;	2&'.( 
E4=$)R().* 
B7DIr"+., 
B7DIr"-.. 
B8TY#/.0 
B8TY#1.2 
C:ty"%3.4 
C9di$5.6 
C9di$7.8 
C:ty"%9.: 
C:ty"%;.< 
D$<B'=.> 
B7DIq!?.@ 
B7DIq!A.B 
B8TY#C.D 
B8TY#E.F 
C:ty"%G.H 
D!9di#I.J 
D!9di$K.L 
D!9di$M.N 
D":ty"%O.P 
D":ty"%Q.R 
D!9di#S.T 
D!9di#U.V 
D!9di$W.X 
D":ty"%Y.Z 
D":ty"%[. ^F F&/i0C&D&DF F F B B-@B B B  	" # # # # #r   