
    (ph                     -   S r SSKJr  SSKrSSKJr  SSKJr  Sr	S r
S rS	 rS
 rS rS rS rS rS rS rS r0 rS r/ SQr\
\\SS\R0                  " S5      /\R2                  SSS/	\\\SS\R0                  " S5      /\R2                  SSS/	\\\SS\R0                  " S5      /\R2                  SSS/	\SSSS\R0                  " S5      /SSSS/	\SSSS\R0                  " S5      /SSSS/	\SSSS\R0                  " S5      /\R2                  * SSS/	/r\ V s/ s H  n \" \" \U 5      5      PM     sn rS rS  rS! r S" r!S# r"S$ r#S% r$S& r%S' r&S( r'S) r(S* r)S+ r*S, r+S- r,S. r-S/ r.S0 r/S1 r0S2 r1S3 r2S4 r3S5 r4S6 r5S7 r6S8 r7S9 r8S: r9S; r:S< r;S= r<S> r=S? r>S@ r?SA r@SB rA\R                  " \R                  " \D5      R                  5      rFSC rGSD rHSE rISF rJSG rKSH rLSI rMSJ rNSK rO/ SQrP/ \\\ S\R                  SL-  \R                  /\R2                  SSMSN/	P\!\"\#SSOSP/\R2                  SLSQSR/	P\!\"\#SSSST/\R2                  SUSVSW/	P\!\"\#SSXSY/\R2                  SZS[S\/	P\!\"\#SS]S^/\R2                  S_S`Sa/	P\!\"\#SSbSc/\R2                  SdSeSf/	P\!\"\#SSgSh/\R2                  SiSjSk/	P\!\"\#SSlSm/\R2                  SnSoSp/	P\!\"\#SSqSr/\R2                  SsStSu/	P\!\"\#SSvSw/\R2                  SxSySz/	P\!\"\#SS{S|/\R2                  S}S~S/	P\$\%\&SSS/\R2                  SSS/	P\$\%\&SSS/\R2                  SSS/	P\$\%\&SSS/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSSU/\R2                  SSS/	P\'\(\)SSS/\R2                  SSS/	P\'\(\)SSS/\R2                  SSS/	P\'\(\)SSS/\R2                  SSS/	P\'\(\)SSS/\R2                  SSS/	P\*\+\,SSS/\R2                  S\R                  S-  S/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\-\.\/SSS/\R2                  SSS/	P\0\1\2SSS/\R2                  SSS/	P\0\1\2SSS/\R2                  SSS/	P\0\1\2SSS/\R2                  SSS/	P\3\4\5SSS/\R2                  SSS/	P\3\4\5SSS/\R2                  SSS/	P\3\4\5SSS/\R2                  SSS/	P\3\4\5SSS/\R2                  SSS/	P\3\4\5SSS/\R2                  SSS/	P\6\7\8SSS/\R2                  SSS/	P\6\7\8SSS/\R2                  SSS/	P\6\7\8SSS/\R2                  SSS/	P\6\7\8SSS/\R2                  SSS/	P\6\7\8SSS/\R2                  SSS/	P\6\7\8SSS/\R2                  SSS/	P\6\7\8SSS/\R2                  SSS/	P\9\:\;SSS/\R2                  SSS/	P\9\:\;SSS/\R2                  SSS/	P\9\:\;SSS/\R2                  SSS/	P\9\:\;SSS/\R2                  SSS/	P\9\:\;SSS/\R2                  SSS/	P\<\=\>SSS/\R2                  SSS/	P\<\=\>SSS/\R2                  SGS GS/	P\<\=\>SSS/\R2                  SGSGS/	P\<\=\>SSS/\R2                  SSGS/	P\?\@\ASSGS/\R2                  GSSLGS/	P\?\@\ASSGS/\R2                  GSSGS/	P\?\@\ASSGS/\R2                  GSGS	GS
/	P\?\@\ASSGS/\R2                  GSSUGS/	P\?\@\AGSSGS/\R2                  GSSGS/	P\?\@\AGSSGS/\R2                  GSGSGS/	P\?\@\AGSSGS/\R2                  GSGSGS/	P\?\@\AGSSGS/\R2                  GSGSGS/	P\?\@\AGSSGS/\R2                  GSGSGS/	P\?\@\ASSGS/\R2                  GSGSGS/	P\?\@\AGSSGS/\R2                  GSS_GS/	P\?\@\AGSSGS/\R2                  GSGSGS /	P\?\@\AGS!SGS/\R2                  GSGS"GS#/	P\?\@\AGS$SGS/\R2                  GSGS%GS&/	P\?\@\AGS'SGS/\R2                  GSGS(GS)/	P\?\@\AGS*SGS/\R2                  GSGS+GS,/	P\?\@\AGS-SGS/\R2                  GSGS.GS//	P\?\@\AGS0SGS/\R2                  GSSGS1/	P\?\@\AGS2SGS/\R2                  GSGS3GS4/	P\G\H\ISSGS	/\R2                  SSGS5/	P\J\K\LSGS6\R                  SL-  /SSGS7GS8/	P\J\K\LSGS6\R                  SL-  /SSGS7GS9/	P\J\K\LSGS6\R                  SL-  /SSGS7GS:/	P\J\K\LSGS6\R                  SL-  /SSGS7GS;/	P\J\K\LSGS6\R                  SL-  /SSGS7GS</	P\J\K\LGSGS6\R                  SL-  /SSGS7GS=/	P\J\K\LGSGS6\R                  SL-  /SSGS7GS>/	P\J\K\LSGS6\R                  SL-  /SSGS7GS?/	P\J\K\LGSGS6\R                  SL-  /SSGS7GS@/	P\J\K\LSGS6\R                  SL-  /SSGS7GSA/	P\J\K\LGSGS6\R                  SL-  /SSGS7GSB/	P\J\K\LGSCGS6\R                  SL-  /SSGS7GSD/	P\J\K\LGSGS6\R                  SL-  /SSGS7GSE/	P\J\K\LGSFGS6\R                  SL-  /SSGS7GSG/	P\J\K\LSGS6\R                  SL-  /SSGS7GSH/	P\J\K\LGSIGS6\R                  SL-  /SSGS7GSJ/	P\J\K\LGSGS6\R                  SL-  /SSGS7GSK/	P\J\K\LGSLGS6\R                  SL-  /SSGS7GSM/	P\J\K\LGSGS6\R                  SL-  /SSGS7GSN/	P\J\K\LSGS6\R                  SL-  /SSGS7GSO/	P\J\K\LGS!GS6\R                  SL-  /SSGS7GSP/	P\J\K\LGSQGS6\R                  SL-  /SSGS7GSR/	P\J\K\LGS$GS6\R                  SL-  /SSGS7GSS/	P\J\K\LGSTGS6\R                  SL-  /SSGS7GSU/	P\J\K\LGS'GS6\R                  SL-  /SSGS7GSV/	P\J\K\LGSWGS6\R                  SL-  /SSGS7GSX/	P\J\K\LGS*GS6\R                  SL-  /SSGS7GSY/	P\J\K\LGSZGS6\R                  SL-  /SSGS7GS[/	P\J\K\LGS-GS6\R                  SL-  /SSGS7GS\/	P\J\K\LGS]GS6\R                  SL-  /SSGS7GS^/	P\J\K\LGS0GS6\R                  SL-  /SSGS7GS_/	P\J\K\LGS`GS6\R                  SL-  /SSGS7GSa/	P\J\K\LGS2GS6\R                  SL-  /SSGS7GSb/	P\J\K\LGScGS6\R                  SL-  /SSGS7GSd/	P\J\K\LGSeGS6\R                  SL-  /SSGS7GSf/	P\J\K\LGSgGS6\R                  SL-  /SSGS7GSh/	P\J\K\LGSiGS6\R                  SL-  /SSGS7GSj/	P\J\K\LGSkGS6\R                  SL-  /SSGS7GSl/	P\J\K\LGSmGS6\R                  SL-  /SSGS7GSn/	P\J\K\LSGS6\R                  SL-  /SSGS7GSo/	P\M\N\OSGS6GSp/SSGSqGSr/	P\M\N\OGS!GS6GSp/SSGSsGSt/	P\M\N\OGSQGS6GSp/SSGSuGSv/	P\M\N\OGS$GS6GSp/SSGSwGSx/	P\M\N\OGSTGS6GSp/SSGSyGSz/	P\M\N\OGS'GS6GSp/SSGS{GS|/	P\M\N\OGSWGS6GSp/SSGS}GS~/	P\M\N\OGS*GS6GSp/SSGSGS/	P\M\N\OGSZGS6GSp/SSGSGS/	P\M\N\OGS-GS6GSp/SSGSGS/	P\M\N\OGS]GS6GSp/SSGSGS/	P\M\N\OGS0GS6GSp/SSGSGS/	P\M\N\OGS`GS6GSp/SSGSGS/	P\M\N\OGS2GS6GSp/SSGSGS/	P\M\N\OGScGS6GSp/SSGSGS/	P\M\N\OGSeGS6GSp/SSGSGS/	P\M\N\OGSgGS6GSp/SSGSGS/	P\M\N\OGSiGS6GSp/SSGSGS/	P\M\N\OGSkGS6GSp/SSGSGS/	P\M\N\OGSmGS6GSp/SSGSGS/	P\M\N\OSGS6GSp/SSGSGS/	P\M\N\OSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	P\M\N\OGSGS6GSp/SSGSGS/	PrR\R V s/ s H  n \" \" \PU 5      5      PM     sn rSGS rTGS rUGS rVGS rWGS rXGS rY/ GSQrZ\T\U\VGS\R2                  GSGSGSGS/	\T\U\VGS\R2                  GSGSGS\R0                  " S5      SL-  GS-  -   GS/	\T\U\VGS\R2                  GSGSS\R0                  " S5      SL-  GS-  -   GS/	\T\U\VGS\R2                  SUGS	SLGS/	\W\X\YGS\R2                  GSGS\R                  GS-  GS/	\W\X\YGS\R2                  GSGS\R                  GS-  GS/	/r[\[ V s/ s H  n \" \" \ZU 5      5      PM     sn r\GS r]\]" \5        \]" \S5        \]" \\5        GS
GS jr^\R                  \R                  \R                  \R                  /rc/ GSQrd\\\\\/re/ GSQrfGS rgGS\glh        GS riS\ilh        GS rjS\jlh        GS rkSL\klh        GS rlS\llh        GS rmS\mlh        GS rnS\nlh        GS roGS\olh        GS rpGS\plh        / GSQrq/ \gSLS/\gR                  GS/P\gSSZ/\gR                  GS/P\gSGS/\gR                  GS/P\gGSGS/\gR                  GS%/P\gGSGS/\gR                  GS/P\iSGS/\iR                  GS/P\iGSpGS/\iR                  GS/P\iGSGS/\iR                  GS/P\iGSGS/\iR                  GS/P\iGSGS/\iR                  GS/P\jSSU/\jR                  GS"/P\jGSSZ/\jR                  GS%/P\jGSGS/\jR                  GS/P\jGSGS/\jR                  GS/P\jGSGS/\jR                  GS/P\kSSU/\kR                  GS"/P\kGSSZ/\kR                  GS%/P\kGSGS/\kR                  GS3/P\kGSGS/\kR                  GS/P\kGSGS/\kR                  GS/P\lSGS	/\lR                  GS"/P\lSSU/\lR                  GS/P\lSSZ/\lR                  GS%/P\lGSSn/\lR                  GS(/P\lGSGS/\lR                  Sd/P\mGSGS/\mR                  GS"/P\mGSGS/\mR                  GS/P\mGSGS /\mR                  GS%/P\mGSGS/\mR                  GS(/P\mGSGS/\mR                  Sd/P\nSGS	/\nR                  GS/P\nSSU/\nR                  GS/P\nSSZ/\nR                  GS/P\nGSSn/\nR                  GS/P\nGSGS/\nR                  GS/P\oGSSL/\oR                  GS/P\oGSS/\oR                  SZ/P\oGSGS/\oR                  GS/P\oGSGS+/\oR                  GS/P\oGSGS/\oR                  GS/P\pGSS/\pR                  GS/P\pGSS/\pR                  GS/P\pGSGS/\pR                  SZ/P\pGSGS+/\pR                  GS/P\pGSGS/\pR                  GS/Prr\s" \r5       VVs/ s H#  u  pX"S   R                   GS	USU-  S-    3/-   PM%     snnrr\r V s/ s H  n \" \" \qU 5      5      PM     sn ru\]" \u5        gs  sn f s  sn f s  sn f s  snnf s  sn f (  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                     X S-
  -  $ )z'f1 is a quadratic with roots at 0 and 1      ? xs    K/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/_tstutils.pyf1r   A   s    B<    c                     SU -  S-
  $ N      r   r	   s    r   f1_fpr   F   s    q519r   c                     gNr   r   r	   s    r   f1_fppr   J       r   c                     U S-  S-
  $ )z$f2 is a symmetric parabola, x**2 - 1r   r   r   r	   s    r   f2r   N   s    a4!8Or   c                     SU -  $ r   r   r	   s    r   f2_fpr   S   s    q5Lr   c                     gr   r   r	   s    r   f2_fppr   W   r   r   c                 (    X S-
  -  U S-
  -  U 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    SU S-  -  SU S-  -  -
  SU -  -   S-
  $ )N         r         r   r	   s    r   f3_fpr%   `   s+    q!t8b1a4i"q&(1,,r   c                 $    SU S-  -  SU -  -
  S-   $ )N   r   $   r#   r   r	   s    r   f3_fppr)   d   s    19rAv""r   c                 <    U S:  a  SSU -  -   $ U S:  a  SSU -  -   $ g)zBPiecewise linear, left- and right- discontinuous at x=1, the root.r   r   皙?      r   r   r	   s    r   f4r-   h   s/    1uR!V|1ub1f}r   c                      U S:w  a  SSU -
  -  $ g)zQ
Hyperbola with a pole at x=1, but pole replaced with 0. Not continuous at root.
r   r   r   r   r	   s    r   f5r/   q   s     	Avb1f~r   c                     [         R                  U S 5      nUc.  U S:  a  [        5       nOU S:  a  [        5       * nOSnU[         U '   U$ )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                 :    [         R                  " U 5      U S-  -
  $ )z<Straightforward sum of trigonometric function and polynomialr   npsinr	   s    r   aps01_frD      s    66!9q1ur   c                 4    [         R                  " U 5      S-
  $ )Nr>   rB   cosr	   s    r   aps01_fprH      s    66!9wr   c                 0    [         R                  " U 5      * $ NrA   r	   s    r   	aps01_fpprK          FF1I:r   c                     [         R                  " SS5      nS[         R                  " SU-  S-
  S-  XS-  -
  S-  -  5      -  $ )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      sA    	1b	BB
Q!!e)a7888r   c                     [         R                  " SS5      nS[         R                  " SU-  S-
  S-  XS-  -
  S-  -  5      -  $ )Nr   rN   r$   r   rP   r    rQ   rT   s     r   aps02_fprX      sA    	1b	Brvvq2vzAoUQ6777r   c                     [         R                  " SS5      nS[         R                  " SU-  S-
  S-  XS-  -
  S-  -  5      -  $ )Nr   rN      r   rP   rQ   rT   s     r   	aps02_fppr[      sA    	1b	BB
Q!!e)a7888r   c                 <    X-  [         R                  " X -  5      -  $ )zRapidly changing at the rootrB   expr
   abs      r   aps03_frb      s    5266!%=  r   c                 H    XU -  S-   -  [         R                  " X -  5      -  $ Nr   r]   r_   s      r   aps03_fpre      s!    A	?RVVAE]**r   c                 R    XX -  S-   -  U-   -  [         R                  " X -  5      -  $ rd   r]   r_   s      r   	aps03_fpprg      s)    QUQY!#$rvvae}44r   c                     X-  U-
  $ )zMedium-degree polynomialr   r
   nr`   s      r   aps04_frk          4!8Or   c                     XUS-
  -  -  $ rd   r   ri   s      r   aps04_fprn          1q5z>r   c                      XS-
  -  XS-
  -  -  $ Nr   r   r   ri   s      r   	aps04_fpprr          A;U##r   c                 4    [         R                  " U 5      S-
  $ )zSimple Trigonometric functionr>   rA   r	   s    r   aps05_fru      s    66!9wr   c                 .    [         R                  " U 5      $ rJ   rF   r	   s    r   aps05_fprw          66!9r   c                 0    [         R                  " U 5      * $ rJ   rA   r	   s    r   	aps05_fpprz      rL   r   c                 ~    SU -  [         R                  " U* 5      -  S[         R                  " U* U -  5      -  -
  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                 x    S[         R                  " U* 5      -  SU-  [         R                  " U* U -  5      -  -   $ r   r]   r|   s     r   aps06_fpr      s2    rvvqbz>AEBFFA26N222r   c                 H    SU-  U-  [         R                  " U* U -  5      -  $ NrO   r]   r|   s     r   	aps06_fppr      s#    6A:rAv&&r   c                 4    SSU-
  S-  -   U -  SX-  -
  S-  -
  $ )z/Upside down parabola with parametrizable heightr   r   r   r|   s     r   aps07_fr      (    Q
Na1qu9q.00r   c                 4    SSU-
  S-  -   SU-  SX-  -
  -  -   $ rq   r   r|   s     r   aps07_fpr      s(    Q
Na!eq15y111r   c                     SU-  U-  $ r   r   r|   s     r   	aps07_fppr     s    6A:r   c                     X -  SU -
  U-  -
  $ )zDegree n polynomialr   r   r|   s     r   aps08_fr     s    5AEA:r   c                 *    SU -  USU -
  US-
  -  -  -   $ r   r   r|   s     r   aps08_fpr     s#    q51AQ''''r   c                 .    SXS-
  -  SU -
  US-
  -  -  -
  $ r   r   r|   s     r   	aps08_fppr     s%    qE{a!eq1u----r   c                 4    SSU-
  S-  -   U -  SX-  -
  S-  -
  $ )z.Upside down quartic with parametrizable heightr   r    r   r|   s     r   aps09_fr     r   r   c                 :    SSU-
  S-  -   SU-  SX-  -
  S-  -  -   $ )Nr   r    r!   r   r|   s     r   aps09_fpr     s,    Q
Na!eq15y1n444r   c                 "    SU-  SX-  -
  S-  -  $ )Nir   r   r   r|   s     r   	aps09_fppr     s    7a!%i!^##r   c                 L    [         R                  " U* U -  5      U S-
  -  X-  -   $ )zExponential plus a polynomialr   r]   r|   s     r   aps10_fr   !  s&    661"q&>QU#ad**r   c                 f    [         R                  " U* U -  5      U* U S-
  -  S-   -  XUS-
  -  -  -   $ rd   r]   r|   s     r   aps10_fpr   &  s9    661"q&>aR1q5\A-.QZ??r   c                     [         R                  " U* U -  5      U* U* U S-
  -  S-   -  U* U -  -   -  XS-
  -  XS-
  -  -  -   $ rq   r]   r|   s     r   	aps10_fppr   *  sW    FFA26NqbQB!a%L1$45Q>?q5kAAJ&' (r   c                 "    X-  S-
  US-
  U -  -  $ )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                     SUS-
  -  U S-  -  $ rq   r   r|   s     r   aps11_fpr   4  s    A;Ar   c                     SUS-
  -  U S-  -  $ )NrO   r   r!   r   r|   s     r   	aps11_fppr   8  s    Q<!Q$r   c                 l    [         R                  " U SU-  5      [         R                  " USU-  5      -
  $ )z!nth root of x, with a zero at x=nr   rB   powerr|   s     r   aps12_fr   <  s+    88AsQw"((1cAg"666r   c                 B    [         R                  " U SU-
  U-  5      U-  $ )Nr   r   r|   s     r   aps12_fpr   A  s     88Aa1}%))r   c                 `    [         R                  " U SSU-  -
  U-  5      SU-  -  SU-
  -  U-  $ )Nr   r   r   r|   s     r   	aps12_fppr   E  s7    88Aa!eq()S1W5qAAEEr   c                 h    U S:X  a  gSU S-  -  nU[         :  a  gU [        R                  " U5      -  $ )z-Function with *all* derivatives 0 at the rootr   r   r   _MAX_EXPABLErB   r^   r
   ys     r   aps13_fr   L  s8    Av 	
AqDA<rvvay=r   c                 z    U S:X  a  gSU S-  -  nU[         :  a  gSSU S-  -  -   [        R                  " U5      -  $ )Nr   r   r   r   r   s     r   aps13_fpr   Y  sC    Av	AqDA<AqDLBFF1I%%r   c                     U S:X  a  gSU S-  -  nU[         :  a  gSSU S-  -
  -  U S-  -  [        R                  " U5      -  $ )Nr   r   r   rP   r   r   s     r   	aps13_fppr   b  sL    Av	AqDA<AqD>AqD 266!9,,r   c                 d    U S::  a  U* S-  $ US-  U S-  [         R                  " U 5      -   S-
  -  $ )z<0 for negative x-values, trigonometric+linear for x positiver         4@      ?r   rA   r|   s     r   aps14_fr   k  s:    AvrDyt8q3w*Q.//r   c                 N    U S::  a  gUS-  S[         R                  " U 5      -   -  $ )Nr   r   gUUUUUU?rF   r|   s     r   aps14_fpr   r  s(    Avt8y266!9,--r   c                 J    U S::  a  gU* S-  [         R                  " U 5      -  $ )Nr   r   rA   r|   s     r   	aps14_fppr   x  s%    Av29q	""r   c                     U S:  a  gU SSU-   -  :  a  [         R                  S-
  $ [         R                  " US-   U -  S-  S-  5      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                     SU s=::  a  SSU-   -  ::  d  O  [         R                  S-
  $ [         R                  " US-   U -  S-  S-  5      US-   -  S-  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                     SU s=::  a  SSU-   -  ::  d  O  [         R                  S-
  $ [         R                  " US-   U -  S-  S-  5      US-   -  S-  S-  US-   -  S-  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                     X-  U-
  $ )z&z**n-a:  Use to find the nth root of ar   zrj   r`   s      r   cplx01_fr     rl   r   c                     XUS-
  -  -  $ rd   r   r   s      r   	cplx01_fpr     ro   r   c                      XS-
  -  XS-
  -  -  $ rq   r   r   s      r   
cplx01_fppr     rs   r   c                 4    [         R                  " U 5      U-
  $ )z"e**z - a: Use to find the log of ar]   r   r`   s     r   cplx02_fr     s    66!9q=r   c                 .    [         R                  " U 5      $ rJ   r]   r   s     r   	cplx02_fpr     rx   r   c                 .    [         R                  " U 5      $ rJ   r]   r   s     r   
cplx02_fppr     rx   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                 l    U  H.  n[        SS/UR                  S/ 5      5       H	  u  p#X1U'   M     M0     g)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  $  s5    c
AEE)R$89DAaD : r   c                     U =(       d    Sn [         [        [        [        S.nUR	                  U / 5      nUb  U Vs/ s H  oDS   U:  d  M  UPM     nnU$ s  snf )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  0  sb    . )zJ&.08:G KK
B'E#Fe,'7:'EeFL Gs   AA)z	cc.bisectz	cc.ridderz	cc.brenthz	cc.brentq)r   r   r-   r/   r4   c                     U S-  SU -  -
  S-
  $ )Nr!   r   rP   r   r	   s    r   fun1r  \  s    a4!A#:>r   g5 @c                     SSU S-  -  -
  $ rq   r   r	   s    r   fun2r  a  s    qAv:r   c                     U S-
  S-  $ )Nr!   r   r	   s    r   fun3r  f  s    aC!8Or   c                     SU S-
  S-  -  $ )Nr$   r   rP   r   r	   s    r   fun4r  k  s    acAX:r   c                     U S-  $ )Nr   r   r	   s    r   fun5r  p  s    a4Kr   c                     U S-  $ )Nr   r   r	   s    r   fun6r  u  s    b5Lr   c                 t    [        U 5      nUR                  U 5      S:  a  S$ XR                  U S-  * 5      -  $ )NgW8?r   rO   )r   absr^   r
   xps     r   fun7r#  z  s8    		Bq	F"1:&&!b'*:(::r   c                     [        U 5      nSnSSU-
  -  UR                  U * 5      -  * USU-
  UR                  U * 5      -  -   -  S-
  SU -  -   $ )Nge-?i  r   i  i\  r   r^   )r
   r"  xis      r   fun8r'    s\    		B	B1R4[#$bAbD"&&!*+<&<=DtAvMMr   g;6b?c                 d    [        U 5      nUR                  U 5      S-
  SU S-  -  -
  SU S-  -  -   $ )Nr   r   g>r!   r%  r!  s     r   fun9r)    s8    		B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)v__doc__r   numpyrB   scipy.optimizer   ccscipy._lib._array_apir   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   rn   rr   ru   rw   rz   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>rW     s%  R   * 1

.
-# 	
,  S"''!*-rvvsCAQRS"''!*-rvvsCAQRS"''!*-rvvsCAQRtR#rwwqz*BS:JKtR#rwwqz*BS:JKtR#rwwqz*RVVGS#?OP ?N>M(D!8	,-o 
98
9
!
+5
$
7
3'1
2
(.1
5$+
@(
'
7
*F vvbhhuo))*
&-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TXD_h78T 
$
$  y*grvv
R2y*fbffrwwqzA~'< < y*grvv*bggaj1nt33 y*fbff1oy*eRVV
RUUT\?<y*eRVV
RUUT\?<$ >L=KD (	+,^ 
 		  	  	 F 99biiBII
6?RR 	)						; 	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&D71 q'"2"2!31QqSUG<==&DF  .AB-@ "#&>"IJ-@B  	" #Yv UHPFBs'   AZ8B:AZ=GA[Y!*A[ZA[