
    tfv                     z-   d Z ddlmZ ddl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eD  cg c]  }  e ee|              c} 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+d. Z,d/ Z-d0 Z.d1 Z/d2 Z0d3 Z1d4 Z2d5 Z3d6 Z4d7 Z5d8 Z6d9 Z7d: Z8d; Z9d< Z:d= Z;d> Z<d? Z=d@ Z>dA Z? ej                   ej                  eB      j                        ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMg dZNg eeedej                  dKz  ej                  gej.                  ddLdMg	ee e!ddNdOgej.                  dKdPdQg	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_d`g	ee e!ddadbgej.                  dcdddeg	ee e!ddfdggej.                  dhdidjg	ee e!ddkdlgej.                  dmdndog	ee e!ddpdqgej.                  drdsdtg	ee e!ddudvgej.                  dwdxdyg	ee e!ddzd{gej.                  d|d}d~g	e"e#e$dddgej.                  dddg	e"e#e$dddgej.                  dddg	e"e#e$dddgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTgej.                  dddg	e%e&e'dddTg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j                  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dg	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.                  ddÐdg	e=e>e?dddgej.                  ddK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dT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-d.g	e=e>e?d/ddgej.                  ddd0g	e=e>e?d1ddgej.                  dd2d3g	eEeFeGdddgej.                  ddd4g	eHeIeJdd5ej                  dKz  gddd6d7g	eHeIeJdd5ej                  dKz  gddd6d8g	eHeIeJdd5ej                  dKz  gddd6d9g	eHeIeJdd5ej                  dKz  gddd6d:g	eHeIeJdd5ej                  dKz  gddd6d;g	eHeIeJdd5ej                  dKz  gddd6d<g	eHeIeJdd5ej                  dKz  gddd6d=g	eHeIeJdd5ej                  dKz  gddd6d>g	eHeIeJdd5ej                  dKz  gddd6d?g	eHeIeJdԐd5ej                  dKz  gddd6d@g	eHeIeJdd5ej                  dKz  gddd6dAg	eHeIeJdBd5ej                  dKz  gddd6dCg	eHeIeJdd5ej                  dKz  gddd6dDg	eHeIeJdEd5ej                  dKz  gddd6dFg	eHeIeJdߐd5ej                  dKz  gddd6dGg	eHeIeJdHd5ej                  dKz  gddd6dIg	eHeIeJdd5ej                  dKz  gddd6dJg	eHeIeJdKd5ej                  dKz  gddd6dLg	eHeIeJdd5ej                  dKz  gddd6dMg	eHeIeJdd5ej                  dKz  gddd6dNg	eHeIeJd d5ej                  dKz  gddd6dOg	eHeIeJdPd5ej                  dKz  gddd6dQg	eHeIeJd#d5ej                  dKz  gddd6dRg	eHeIeJdSd5ej                  dKz  gddd6dTg	eHeIeJd&d5ej                  dKz  gddd6dUg	eHeIeJdVd5ej                  dKz  gddd6dWg	eHeIeJd)d5ej                  dKz  gddd6dXg	eHeIeJdYd5ej                  dKz  gddd6dZg	eHeIeJd,d5ej                  dKz  gddd6d[g	eHeIeJd\d5ej                  dKz  gddd6d]g	eHeIeJd/d5ej                  dKz  gddd6d^g	eHeIeJd_d5ej                  dKz  gddd6d`g	eHeIeJd1d5ej                  dKz  gddd6dag	eHeIeJdbd5ej                  dKz  gddd6dcg	eHeIeJddd5ej                  dKz  gddd6deg	eHeIeJdfd5ej                  dKz  gddd6dgg	eHeIeJdhd5ej                  dKz  gddd6dig	eHeIeJdjd5ej                  dKz  gddd6dkg	eHeIeJdld5ej                  dKz  gddd6dmg	eHeIeJdd5ej                  dKz  gddd6dng	eKeLeMdd5dogdddpdqg	eKeLeMd d5dogdddrdsg	eKeLeMdPd5dogdddtdug	eKeLeMd#d5dogdddvdwg	eKeLeMdSd5dogdddxdyg	eKeLeMd&d5dogdddzd{g	eKeLeMdVd5dogddd|d}g	eKeLeMd)d5dogddd~dg	eKeLeMdYd5dogddddg	eKeLeMd,d5dogddddg	eKeLeMd\d5dogddddg	eKeLeMd/d5dogddddg	eKeLeMd_d5dogddddg	eKeLeMd1d5dogddddg	eKeLeMdbd5dogddddg	eKeLeMddd5dogddddg	eKeLeMdfd5dogddddg	eKeLeMdhd5dogddddg	eKeLeMdjd5dogddddg	eKeLeMdld5dogddddg	eKeLeMdd5dogddddg	eKeLeMdΐd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	eKeLeMdd5dogddddg	ZPePD  cg c]  }  e eeN|              c} 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      dKz  dz  z   dg	eReSeTdej.                  ddd ej,                  d      dKz  dz  z   dg	eReSeTdej.                  dTddKdg	eUeVeWdej.                  d͐dej                  dz  dg	eUeVeWdej.                  d͐dej                  dz  dg	gZYeYD  cg c]  }  e eeX|              c} 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ڄ ZidKei_f        dۄ Zjdej_f        d܄ Zkdek_f        d݄ Zldel_f        dބ Zmdem_f        d Znden_f        g dZog eedKdgeej                  dgeeddYgeej                  dgeeddgeej                  dgeeddgeej                  d$geeddgeej                  dgegddgegj                  dgegdodgegj                  dgegddgegj                  dgegddgegj                  dgegddgegj                  dgehddTgehj                  d!gehddYgehj                  d$gehddgehj                  dgehddgehj                  dgehddgehj                  dgeiddTgeij                  d!geiddYgeij                  d$geiddgeij                  d2geiddgeij                  dgeiddgeij                  dgejddgejj                  d!gejddTgejj                  dgejddYgejj                  d$gejddmgejj                  d'gejddgejj                  dcgekddgekj                  d!gekddgekj                  dgekddgekj                  d$gekd dgekj                  d'gekddgekj                  dcgelddgelj                  dgelddTgelj                  dgelddYgelj                  dgelddmgelj                  dgelddgelj                  dgemddKgemj                  dgemddgemj                  dYgemddgemj                  dgemdd*gemj                  dgemddgemj                  dgenddgenj                  dgenddgenj                  dgenddgenj                  dYgendd*genj                  dgenddgenj                  dgZp eqep      D cg c]$  \  }}||d   j                   d|dTz  dz    gz   & c}}ZpepD  cg c]  }  e eeo|              c} Zs e[es       yc c} w c c} w c c} w c c}}w c c} w (
  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_pya  
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    b/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/scipy/optimize/_tstutils.pyf1r   @   s    B<    c                     d| z  dz
  S N      r   r   s    r
   f1_fpr   E   s    q519r   c                      yNr   r   r   s    r
   f1_fppr   I       r   c                     | dz  dz
  S )z$f2 is a symmetric parabola, x**2 - 1r   r   r   r   s    r
   f2r   M       a4!8Or   c                     d| z  S r   r   r   s    r
   f2_fpr   R   s    q5Lr   c                      yr   r   r   s    r
   f2_fppr   V   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   Z   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)   c   s    19rAv""r   c                 8    | dkD  rdd| z  z   S | dk  rdd| z  z   S y)zBPiecewise linear, left- and right- discontinuous at x=1, the root.r   r   皙?      r   r   r   s    r
   f4r-   g   s/    1uR!V|1ub1f}r   c                     | dk7  rdd| z
  z  S y)zY
    Hyperbola with a pole at x=1, but pole replaced with 0. Not continuous at root.
    r   r   r   r   r   s    r
   f5r/   p   s     	Avb1f~r   c                     t         j                  | d       }|,| dkD  rt               }n| dk  rt                }nd}|t         | <   |S )Nr   r   )	_f6_cachegetr   )r	   vs     r
   f6r4   }   sH    aAyq5AU	A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                 8    t        j                  |       | dz  z
  S )z<Straightforward sum of trigonometric function and polynomialr   npsinr   s    r
   aps01_frD      s    66!9q1ur   c                 2    t        j                  |       dz
  S )Nr>   rB   cosr   s    r
   aps01_fprH      s    66!9wr   c                 .    t        j                  |        S NrA   r   s    r
   	aps01_fpprK          FF1I: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!   rB   arangesumr	   iis     r
   aps02_frV      sC    	1b	BB
Q!b!e)a7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   rN   r$   r   rP   r    rQ   rT   s     r
   aps02_fprX      sC    	1b	Brvvq2vzAoRUQ6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   rN      r   rP   rQ   rT   s     r
   	aps02_fppr[      sC    	1b	BB
Q!b!e)a7888r   c                 >    || z  t        j                  || z        z  S )zRapidly changing at the rootrB   expr	   abs      r
   aps03_frb      s    q5266!a%=  r   c                 J    ||| z  dz   z  t        j                  || z        z  S Nr   r]   r_   s      r
   aps03_fpre      s%    A	?RVVAE]**r   c                 V    |||| z  dz   z  |z   z  t        j                  || z        z  S rd   r]   r_   s      r
   	aps03_fpprg      s/    QUQY!#$rvva!e}44r   c                     | |z  |z
  S )zMedium-degree polynomialr   r	   nr`   s      r
   aps04_frk      r   r   c                     || |dz
  z  z  S rd   r   ri   s      r
   aps04_fprm          q1q5z>r   c                 $    ||dz
  z  | |dz
  z  z  S Nr   r   r   ri   s      r
   	aps04_fpprq          A;QU##r   c                 2    t        j                  |       dz
  S )zSimple Trigonometric functionr>   rA   r   s    r
   aps05_frt      s    66!9wr   c                 ,    t        j                  |       S rJ   rF   r   s    r
   aps05_fprv          66!9r   c                 .    t        j                  |        S rJ   rA   r   s    r
   	aps05_fppry      rL   r   c                 z    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   r]   r	   rj   s     r
   aps06_fr|      s8    q52661":BFFA26N 22Q66r   c                 t    dt        j                  |       z  d|z  t        j                  | | z        z  z   S r   r]   r{   s     r
   aps06_fpr~      s2    rvvqbz>AEBFFA26N222r   c                 F    d|z  |z  t        j                  | | z        z  S NrO   r]   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 rp   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                 L    t        j                  | | z        | dz
  z  | |z  z   S )zExponential plus a polynomialr   r]   r{   s     r
   aps10_fr      s(    661"q&>QU#ad**r   c                 f    t        j                  | | z        | | dz
  z  dz   z  || |dz
  z  z  z   S rd   r]   r{   s     r
   aps10_fpr   %  s;    661"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 rp   r]   r{   s     r
   	aps10_fppr   )  s[    FFA26NqbQB!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 rp   r   r{   s     r
   aps11_fpr   3  s    A;Ar   c                     d|dz
  z  | dz  z  S )NrO   r   r!   r   r{   s     r
   	aps11_fppr   7  s    Q<!Q$r   c                 h    t        j                  | d|z        t        j                  |d|z        z
  S )z!nth root of x, with a zero at x=nr   rB   powerr{   s     r
   aps12_fr   ;  s+    88AsQw"((1cAg"666r   c                 @    t        j                  | d|z
  |z        |z  S )Nr   r   r{   s     r
   aps12_fpr   @  s     88A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   D  s7    88Aa!eq()S1W5qAAEEr   c                 b    | dk(  ryd| dz  z  }|t         kD  ry| t        j                  |      z  S )z-Function with *all* derivatives 0 at the rootr   r   r   _MAX_EXPABLErB   r^   r	   ys     r
   aps13_fr   K  s8    Av 	
AqDA<rvvay=r   c                 t    | dk(  ryd| dz  z  }|t         kD  rydd| dz  z  z   t        j                  |      z  S )Nr   r   r   r   r   s     r
   aps13_fpr   X  sC    Av	AqDA<AqDLBFF1I%%r   c                     | dk(  ryd| dz  z  }|t         kD  rydd| dz  z
  z  | dz  z  t        j                  |      z  S )Nr   r   r   rP   r   r   s     r
   	aps13_fppr   a  sL    Av	AqDA<AqD>AqD 266!9,,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   rA   r{   s     r
   aps14_fr   j  s:    AvrDyt8q3w*Q.//r   c                 J    | dk  ry|dz  dt        j                  |       z   z  S )Nr   r   gUUUUUU?rF   r{   s     r
   aps14_fpr   q  s(    Avt8y266!9,--r   c                 F    | dk  ry| dz  t        j                  |       z  S )Nr   r   rA   r{   s     r
   	aps14_fppr   w  s%    Av29q	""r   c                     | dk  ry| dd|z   z  kD  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     rB   er^   r{   s     r
   aps15_fr   }  sP    1u8q1utte|661q5A+/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     sY    'XQ''tte|661q5A+/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     sl    'XQ''tte|661q5A+/D()QU3a7$>!a%H1LtSSr   r   gS?z	aps.01.00g0D   ?g@g=.@z	aps.02.00g.   @gh!@rP   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   rO   z	aps.03.00)irO   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)rP   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)rN   rN   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)rZ   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                     | |z  |z
  S )z&z**n-a:  Use to find the nth root of ar   zrj   r`   s      r
   cplx01_fr     r   r   c                     || |dz
  z  z  S rd   r   r   s      r
   	cplx01_fpr     rn   r   c                 $    ||dz
  z  | |dz
  z  z  S rp   r   r   s      r
   
cplx01_fppr     rr   r   c                 2    t        j                  |       |z
  S )z"e**z - a: Use to find the log of ar]   r   r`   s     r
   cplx02_fr     s    66!9q=r   c                 ,    t        j                  |       S rJ   r]   r   s     r
   	cplx02_fpr     rw   r   c                 ,    t        j                  |       S rJ   r]   r   s     r
   
cplx02_fppr     rw   r   )	r5   r6   r7   r8   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                 h    | D ]-  }t        ddg|j                  dg             D ]
  \  }}|||<    / y)z:Add "a" and "b" keys to each test from the "bracket" valuer`   ra   r9   N)zipr2   )testsdkr3   s       r
   _add_a_br  #  sC     c
AEE)R$89 	DAqAaD	r   c                     | xs d} t         t        t        t        d}|j	                  | g       }||D cg c]  }|d   |k\  s| }}|S c c}w )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"]
    original)apscomplexr  chandrupatlar:   )_APS_TESTS_DICTS_COMPLEX_TESTS_DICTS_ORIGINAL_TESTS_DICTS_CHANDRUPATLA_TESTS_DICTSr2   )
collectionr:   subsetsr  tcs        r
   	get_testsr  /  sc    . )zJ&.08:G KK
B'E#Fr,'7:'EFFL Gs   AA)z	cc.bisectz	cc.ridderz	cc.brenthz	cc.brentq)r   r   r-   r/   r4   c                     | dz  d| z  z
  dz
  S )Nr!   r   rP   r   r   s    r
   fun1r  [  s    a4!A#:>r   g5 @c                     dd| dz  z  z
  S rp   r   r   s    r
   fun2r  `  s    qAv:r   c                     | dz
  dz  S )Nr!   r   r   s    r
   fun3r  e  s    aC!8Or   c                     d| dz
  dz  z  S )Nr$   r   rP   r   r   s    r
   fun4r  j  s    acAX:r   c                     | dz  S )Nr   r   r   s    r
   fun5r  o  s    a4Kr   c                     | dz  S )Nr   r   r   s    r
   fun6r  t  s    b5Lr   c                 Z    t        |       dk  rdS | t        j                  | dz         z  S )NgW8?r   rO   )absrB   r^   r   s    r
   fun7r   y  s+    A17Qrvvq2wh'7%77r   c                     d}dd|z
  z  t        j                  |        z   |d|z
  t        j                  |        z  z   z  dz
  d| z  z   S )Nge-?i  r   i  i\  r]   )r	   xis     r
   fun8r#  ~  sR    	B1R4[#$bAbD"&&!*+<&<=DtAvMMr   g;6b?c                 V    t        j                  |       dz
  d| dz  z  z
  d| dz  z  z   S )Nr   r   g>r!   r]   r   s    r
   fun9r%    s.    66!9q=419$wq!t|33r   gGo?)r5   r9   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   .)r  N)t__doc__r   numpyrB   scipy.optimizer   ccdescriptionr   r   r   r   r   r   r   r%   r)   r-   r/   r1   r4   _ORIGINAL_TESTS_KEYSsqrtinf_ORIGINAL_TESTSdictr   r  rD   rH   rK   rV   rX   r[   rb   re   rg   rk   rm   rq   rt   rv   ry   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   _APS_TESTS_KEYSpi
_APS_TESTSr
  r   r   r   r   r   r   _COMPLEX_TESTS_KEYS_COMPLEX_TESTSr  r  r  bisectridderbrenthbrentqmethodsmstrings	functionsfstringsr  r<   r  r  r  r  r  r   r#  r%  _CHANDRUPATLA_TESTS_KEYS_CHANDRUPATLA_TESTS	enumerate__name__r  )testcaseitests   000r
   <module>rR     s%  R   *

.
-# 	
,  S'"''!*-rvvsCAQRS'"''!*-rvvsCAQRS'"''!*-rvvsCAQRtR#wrwwqz*BS:JKtR#wrwwqz*BS:JKtR#wrwwqz*RVVGS#?OP ?N2:D!8	,- 
98
9
!
+5
$
7
3'1
2
(.1
5$+
@(
'
7
*F rvvhbhhuo))*
&-0.#2?T(uh	2	255'9266.u h	2(';RVV.u
 h	2(';RVV.u h	2)'<bff	 +/u h	2	9'=rvv	 +/u h	2	9'=rvv	 +/u h	2	9'=rvv	 +/u h	2	9'=rvv	 +/u" h	2	9'=rvv	 +/#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VRVV
!;0;u> h	8aVRVV
!;0?uB h	8aVRVV
!;0CuF h	9q!fbff
!;0GuJ h	9q!fbff
!;0KuN h	6Aq6266![OuR h	6Aq6266![SuV h	6Aq6266![WuZ h	7QFBFF![[u^ h	7QFBFF![_ub h	6E4="&&![cuf h	7UDM266![guj h	7UDM266![kun h	7UDM266![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	6Aq6266
#[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$BFF
G["our h	4$BFF
G["suv h	54)RVV
Hk#wuz h	54)RVV
Hk#{u~ h	4!S266![uB h	4!S266![CuF h	4!S266![GuJ h	4!S266![KuN h	4!S266![OuR h	4!S266![SuV h	4!S266![WuZ h	51c(BFF"k[u^ h	51c(BFF"k_ub h	51c(BFF"kcuf h	51c(BFF"kguj h	51c(BFF"kkun h	51c(BFF"kour h	51c(BFF"ksuv h	51c(BFF"kwuz h	51c(BFF"k{u~ h	51c(BFF"kuB h	51c(BFF"kCuF h	51c(BFF"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	 JTTXD_h78T 
$
$  y*grvv
R2y*fbffwrwwqzA~'< < y*grvv*gbggaj1nt33 y*fbff1oy*eRVV
RUUT\?<y*eRVV
RUUT\?<$ >L19D (	+, 
 		  	  	 F 99biiBII
6?RR 	)						8	N 	4	 D .	Aq6499a .	Ar7DIIr". 
As8TYY#. 
D#;		2&	.
 
E4=$))R(. 
C;		1%. 
D#;		2&. 
D#;		2&. 
E4=$))R(. 
E4=$))R(. 
Aq6499b!. 
C9dii$. 
D#;		2&. 
D#;		2&. 
E4=$))R(.  
Aq6499b!!." 
C9dii$#.$ 
D#;		2&%.& 
D#;		2&'.( 
E4=$))R().* 
B7DIIr"+., 
B7DIIr"-.. 
B8TYY#/.0 
B8TYY#1.2 
C:tyy"%3.4 
C9dii$5.6 
C9dii$7.8 
C:tyy"%9.: 
C:tyy"%;.< 
D$<B'=.> 
B7DIIq!?.@ 
B7DIIq!A.B 
B8TYY#C.D 
B8TYY#E.F 
C:tyy"%G.H 
D!9dii#I.J 
D!9dii$K.L 
D!9dii$M.N 
D":tyy"%O.P 
D":tyy"%Q.R 
D!9dii#S.T 
D!9dii#U.V 
D!9dii$W.X 
D":tyy"%Y.Z 
D":tyy"%[. ` '00C&DF"1d $q'"2"2!31QqSUG<== F  .AB!) "#&>"IJ B  	" #Sv UHJFBs'   AZ#B0AZ(GAZ-Y)AZ2ZAZ8