§
    fŠtjD2  ã                   óú   — d Z ddlmZmZ ddlZddlmZ ddlm	Z	m
Z
 ddlmZ 	 ddlZddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZ n# e$ r Y nw xY wd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!e"dk    r e!¦   «          dS dS )z¨Precompute coefficients of several series expansions
of Wright's generalized Bessel function Phi(a, b, x).

See https://dlmf.nist.gov/10.46.E1 with rho=a, beta=b, z=x.
é    )ÚArgumentParserÚRawTextHelpFormatterN)Úquad)Úminimize_scalarÚ	curve_fit)Útime)Ú
EulerGammaÚRationalÚSÚSumÚ	factorialÚgammaÚ	gammasimpÚpiÚ	polygammaÚsymbolsÚzeta)Úhornerc                  ó8  — d} t          d¦  «        \  }}}}g }g }g }t          ||z  t          |¦  «        z  t          ||z  |z   ¦  «        z  |dt          j        f¦  «        }t          |¦  «        t          j        |¦  «        z  |z  }t          d| dz   ¦  «        D �]}	| 	                    ||	¦  «         
                    |d¦  «                             ¦   «                              ¦   «         }
|
 
                    t          d|¦  «        d¦  «                             t          d„ ¦  «        }|d|	z  z  }|                     ||	z  t          |	¦  «        z  ¦  «         |                     t!          |¦  «        ¦  «         |                     t!          |
|z                       ¦   «         ¦  «        ¦  «         �Œd}|dz  }t#          g d	¢|||g¦  «        D ]F\  }}t          t%          |¦  «        ¦  «        D ]$}|d
|› d|› d�t'          ||         ¦  «        z   z  }Œ%ŒG|S )zATylor series expansion of Phi(a, b, x) in a=0 up to order 5.
    é   úa b x kr   é   c                  ó   — dS ©Nr   © ©Úargss    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/special/_precompute/wright_bessel.pyú<lambda>z series_small_a.<locals>.<lambda>&   ó   € °A€ ó    éÿÿÿÿz=Tylor series expansion of Phi(a, b, x) in a=0 up to order 5.
zAPhi(a, b, x) = exp(x)/gamma(b) * sum(A[i] * X[i] * B[i], i=0..5)
)ÚAÚXÚBú
ú[ú] = )r   r   r   r   r   ÚInfinityÚsympyÚexpÚrangeÚdiffÚsubsÚsimplifyÚdoitr   ÚreplaceÚappendr   ÚzipÚlenÚstr)ÚorderÚaÚbÚxÚkr#   r$   r%   Ú
expressionÚnÚtermÚx_partÚsÚnameÚcÚis                   r   Úseries_small_arC      s  € ð €EÝ˜Ñ#Ô#�J€A€qˆ!ˆQØ
€AØ
€AØ
€Aå�Q˜‘T�) A™,œ,Ñ&¥u¨Q¨q©S°©U¡|¤|Ñ3°a¸½A¼JÐ5GÑHÔH€JÝ�q‘”�%œ) A™,œ,Ñ&¨Ñ3€Jõ �1�e˜A‘gÑÔð 
3ñ 
3ˆØ�Š˜q !Ñ$Ô$×)Ò)¨!¨QÑ/Ô/×8Ò8Ñ:Ô:×?Ò?ÑAÔAˆà—)’)�I a¨™OœO¨QÑ/Ô/ß’7�9 o oÑ6Ô6ð 	ð 	�2˜‘'Ñˆà	�Š��A‘•i ‘l”lÑ"Ñ#Ô#Ð#Ø	�Š•˜‘”Ñ Ô Ð Ø	�Š•˜˜f™×.Ò.Ñ0Ô0Ñ1Ô1Ñ2Ô2Ð2Ñ2àH€AØÐ	MÑM€AÝ���¨¨A¨q¨	Ñ2Ô2ð 1ð 1‰ˆˆaÝ•s˜1‘v”v‘”ð 	1ð 	1ˆAØÐ$�dÐ$Ð$˜QÐ$Ð$Ð$¥s¨1¨Q¬4¡y¤yÑ0Ñ0ˆAˆAð	1à€Hr!   c                 óª   — t          d¦  «        }d| z  t          z
  t          j        d|z  t	          |¦  «        z  | |dz
  z  z  |d|dz   f¦  «        z   S )z„Symbolic expansion of digamma(z) in z=0 to order n.

    See https://dlmf.nist.gov/5.7.E4 and with https://dlmf.nist.gov/5.5.E2
    r:   r"   r   é   )r   r	   r*   Ú	summationr   )Úzr<   r:   s      r   Ú	dg_seriesrH   7   s\   € õ
 	�‰Œ€AØˆa‰4•*ÑÝŒ˜˜a™¥$ q¡'¤'Ñ)¨A°°!±©HÑ4°q¸!¸Q¸q¹S°kÑBÔBñCð Cr!   c                 óP   — t          j        t          ||| z   ¦  «        || ¦  «        S )z8Symbolic expansion of polygamma(k, z) in z=0 to order n.)r*   r-   rH   )r:   rG   r<   s      r   Ú	pg_seriesrJ   A   s$   € åŒ:•i  1 Q¡3Ñ'Ô'¨¨AÑ.Ô.Ð.r!   c                  ót
  ‡‡‡‡— dŠt          d¦  «        \  } Š}}t          d¦  «        \  }}}t          |t          |t          d¦  «        |i}g }g }g }	g Št	          ‰¦  «        t          j        |¦  «        z  t          ||z  t          |¦  «        z  t	          | |z  ‰z   ¦  «        z  |dt          j
        f¦  «        z  }
t          d‰dz   ¦  «        D �]¤Š|
                     | ‰¦  «                             | d¦  «                             ¦   «                              ¦   «         }|                     t!          d‰¦  «        d¦  «                             t           d„ ¦  «        }|d‰z  z  }||z  t	          ‰¦  «        z  }‰dk    r“|                     t           ˆˆfd	„¦  «        }|                     ‰d‰dz   ‰z
  ¬
¦  «                             ¦   «                              t!          dd¦  «        dt          d¦  «        z  ¦  «                             ¦   «         }|                     | ‰z  t          ‰¦  «        z  ¦  «         |                     t+          |¦  «        ¦  «         |	                     |¦  «         �Œ¦t          j        |	d                              |¦  «        ‰¦  «                             ¦   «         Š‰                     ¦   «          t          t3          ‰¦  «        ¦  «        D ]/}‰|         t          |¦  «        z                       ¦   «         ‰|<   Œ0d}|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }t5          ddg||g¦  «        D ]H\  }}t          t3          |¦  «        ¦  «        D ]&}|d|› d|› d�z  }|t7          ||         ¦  «        z  }Œ'ŒIt          t3          ‰¦  «        ¦  «        D ]‡}|d|› d�z  }|t7          ‰|         ¦  «        z  }|d|› d�z  }|t7          ‰|                              |t          |t          |t          d¦  «        i¦  «                             d¦  «        ¦  «        z  }Œˆ|dz  }|dz  }|dz  }t;          ˆˆfd„t          ‰dz
  ¦  «        D ¦   «         ¦  «        }||	d                              |¦  «        z
                       ¦   «         }|d |t          d¦  «        k    › �z  }|d!z  }t;          ˆˆfd"„t          ‰dz
  ¦  «        D ¦   «         ¦  «        }||	d                              |¦  «        z
                       ¦   «         }|d |t          d¦  «        k    › �z  }|S )#aŠ  Tylor series expansion of Phi(a, b, x) in a=0 and b=0 up to order 5.

    Be aware of cancellation of poles in b=0 of digamma(b)/Gamma(b) and
    polygamma functions.

    digamma(b)/Gamma(b) = -1 - 2*M_EG*b + O(b^2)
    digamma(b)^2/Gamma(b) = 1/b + 3*M_EG + b*(-5/12*PI^2+7/2*M_EG^2) + O(b^2)
    polygamma(1, b)/Gamma(b) = 1/b + M_EG + b*(1/12*PI^2 + 1/2*M_EG^2) + O(b^2)
    and so on.
    r   r   zM_PI M_EG M_Z3é   r   r   c                  ó   — dS r   r   r   s    r   r   z(series_small_a_small_b.<locals>.<lambda>e   r    r!   r"   c                 ó2   •— t          | |‰dz   ‰z   ¦  «        S )Nr   )rJ   )r:   r9   r<   r6   s     €€r   r   z(series_small_a_small_b.<locals>.<lambda>m   s   ø€ µ9¸QÀÀ5ÈÁ7È1Á9Ñ3MÔ3M€ r!   )r<   rE   éþÿÿÿzDTylor series expansion of Phi(a, b, x) in a=0 and b=0 up to order 5.z9
Phi(a, b, x) = exp(x) * sum(A[i] * X[i] * B[i], i=0..5)
z	B[0] = 1
z&B[i] = sum(C[k+i-1] * b**k/k!, k=0..)
z

M_PI = piz
M_EG = EulerGammaz
M_Z3 = zeta(3)r#   r$   r&   r'   r(   z
# C[z
C[é   z/

Test if B[i] does have the assumed structure.z"
C[i] are derived from B[1] alone.z:
Test B[2] == C[1] + b*C[2] + b^2/2*C[3] + b^3/6*C[4] + ..c                 óR   •— g | ]#}‰|z  t          |¦  «        z  ‰|d z            z  ‘Œ$S )r   ©r   ©Ú.0r:   ÚCr8   s     €€r   ú
<listcomp>z*series_small_a_small_b.<locals>.<listcomp>•   ó5   ø€ ÐCÐCÐC¨q��1‘•Y˜q‘\”\Ñ! A a¨¡c¤FÑ*ÐCÐCÐCr!   z
test successful = z-
Test B[3] == C[2] + b*C[3] + b^2/2*C[4] + ..c                 óR   •— g | ]#}‰|z  t          |¦  «        z  ‰|d z            z  ‘Œ$S )rE   rR   rS   s     €€r   rV   z*series_small_a_small_b.<locals>.<listcomp>™   rW   r!   )r   r   r	   r   r   r*   r+   r   r   r   r)   r,   r-   r.   r/   r0   r   r1   ÚseriesÚremoveOr2   r   ÚPolyÚcoeffsÚreverser4   r3   r5   ÚevalfÚsum)r7   r9   r:   ÚM_PIÚM_EGÚM_Z3Úc_subsr#   r$   r%   r;   r=   r>   Úpg_partrB   r?   r@   rA   ÚtestrU   r8   r<   r6   s                      @@@@r   Úseries_small_a_small_brf   F   s-  øøøø€ ð €EÝ˜Ñ#Ô#�J€A€qˆ!ˆQÝÐ/Ñ0Ô0Ñ€Dˆ$�Ý�$�
 D­$¨q©'¬'°4Ð8€FØ
€AØ
€AØ
€AØ
€Aõ
 �q‘”�%œ) A™,œ,Ñ&ÝˆAˆq‰D•˜1‘”Ñ�e A a¡C¨¡E™lœlÑ*¨Q°µ1´:Ð,>Ñ?Ô?ñ@€Jõ �1�e˜A‘gÑÔð ñ ˆØ�Š˜q !Ñ$Ô$×)Ò)¨!¨QÑ/Ô/×8Ò8Ñ:Ô:×?Ò?ÑAÔAˆà—)’)�I a¨™OœO¨QÑ/Ô/ß’7�9 o oÑ6Ô6ð 	ð 	�2˜‘'Ñˆà�v‘+�e A™hœhÑ&ˆØ�Š6ˆ6à—o’o¥iØ&MÐ&MÐ&MÐ&MÐ&MñOô OˆGà—~’~ a¨¨e°A©g°a©i�~Ñ8Ô8ßš™	œ	ßš�Y q¨!™_œ_¨bµ°a±´©jÑ9Ô9ß š™
œ
ð ð 	
�Š��A‘•i ‘l”lÑ"Ñ#Ô#Ð#Ø	�Š•˜‘”Ñ Ô Ð Ø	�Š�ÑÔÐÑõ 	Œ
�1�Q”4—9’9˜VÑ$Ô$ aÑ(Ô(×/Ò/Ñ1Ô1€AØ‡I‚I�K„K€KÝ•3�q‘6”6‰]Œ]ð 0ð 0ˆØ�!”•y ‘|”|Ñ#×-Ò-Ñ/Ô/ˆˆ!‰ˆàN€AØÐ	FÑF€AØˆÑ€AØÐ	2Ñ2€AØˆÑ€AØÐ	Ñ€AØÐ	Ñ€AÝ˜˜S�z A q 6Ñ*Ô*ð ð ‰ˆˆaÝ•s˜1‘v”v‘”ð 	ð 	ˆAØÐ$�dÐ$Ð$˜QÐ$Ð$Ð$Ñ$ˆAØ•�Q�q”T‘”‰NˆAˆAð	õ •3�q‘6”6‰]Œ]ð ð ˆØ	Ð�aÐÐÐÑˆØ	�S��1”‰YŒY‰ˆØ	ˆ^�Aˆ^ˆ^ˆ^ÑˆØ	�S��1”—’˜D¥*¨dµB¸½dÀ1¹g¼gÐFÑGÔGß’%˜‘)”)ñô ñ 	ˆˆð Ð	<Ñ<€AØÐ	.Ñ.€AØÐ	FÑF€AÝÐCÐCÐCÐCÐCµE¸%À¹'±N´NÐCÑCÔCÑDÔD€DØ�1�Q”4—9’9˜VÑ$Ô$Ñ$×.Ò.Ñ0Ô0€DØÐ	, ¥a¨¡d¤d¢
Ð	,Ð	,Ñ,€AØÐ	9Ñ9€AÝÐCÐCÐCÐCÐCµE¸%À¹'±N´NÐCÑCÔCÑDÔD€DØ�1�Q”4—9’9˜VÑ$Ô$Ñ$×.Ò.Ñ0Ô0€DØÐ	, ¥a¨¡d¤d¢
Ð	,Ð	,Ñ,€AØ€Hr!   c            	      óX  ‡— d}  G ˆfd„dt           j        ¦  «        Š G ˆfd„dt           j        ¦  «        }t          d¦  «        \  }}} |d||¦  «        }d}|d	z  }|d
z  }|dz  }|dz  }|dz  }|dz  }|dz  }t          d| dz   ¦  «        D ]è} ||||¦  «        |d|z   |z  z  z                       ¦   «         }d„ t          j        |¦  «                             ¦   «         D ¦   «         }	t          j        |	¦  «        }	||	z                       ¦   «                              |t           j	        ¦  «        }| 
                    |dz   |i¦  «        }|d|› d|	› d|› d�z  }|d|› dt          |¦  «        › d�z  }Œéddl}
|
                     d¦  «        }|                     d|¦  «        }|
                     d¦  «        }|                     d|¦  «        }|                     dd¦  «        }|                     dd ¦  «        }|
                     d!¦  «        }|                     d"|¦  «        }|S )#a�  Asymptotic expansion for large x.

    Phi(a, b, x) ~ Z^(1/2-b) * exp((1+a)/a * Z) * sum_k (-1)^k * C_k / Z^k
    Z = (a*x)^(1/(1+a))

    Wright (1935) lists the coefficients C_0 and C_1 (he calls them a_0 and
    a_1). With slightly different notation, Paris (2017) lists coefficients
    c_k up to order k=3.
    Paris (2017) uses ZP = (1+a)/a * Z  (ZP = Z of Paris) and
    C_k = C_0 * (-a/(1+a))^k * c_k
    é   c                   ó2   •— e Zd ZdZdZeˆ fd„¦   «         ZdS )úasymptotic_series.<locals>.gzÈHelper function g according to Wright (1935)

        g(n, rho, v) = (1 + (rho+2)/3 * v + (rho+2)*(rho+3)/(2*3) * v^2 + ...)

        Note: Wright (1935) uses square root of above definition.
        rL   c                 ó6  •— |dk    st          d¦  «        ‚|dk    rdS  ‰|dz
  ||¦  «        t          t          |dz   |z   ¦  «        t          |dz   ¦  «        z  ¦  «        t          t          d|z   ¦  «        t          d¦  «        z  ¦  «        z  ||z  z  z   S )Nr   zmust have n >= 0r   rE   rL   )Ú
ValueErrorr   r   )Úclsr<   ÚrhoÚvÚgs       €r   Úevalz!asymptotic_series.<locals>.g.eval¶   sŸ   ø€ à˜’6�6Ý Ð!3Ñ4Ô4Ð4Ø�a’�Ø�qà�q˜˜1™˜c 1‘~”~Ý¥ c¨!¡e¨A¡g¡¤­u°S¸±U©|¬|Ñ ;Ñ<Ô<Ý¥ a¨¡c¡
¤
­5°©8¬8Ñ 3Ñ4Ô4ñ5Ø56¸±Tñ:ñ:ð :r!   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnargsÚclassmethodrq   ©rp   s   €r   rp   rj   ­   sI   ø€ € € € € ð	ð 	ð ˆà	ð	:ð 	:ð 	:ð 	:ñ 
Œð	:ð 	:ð 	:r!   rp   c                   ó2   •— e Zd ZdZdZeˆ fd„¦   «         ZdS )ú!asymptotic_series.<locals>.coef_CzßCalculate coefficients C_m for integer m.

        C_m is the coefficient of v^(2*m) in the Taylor expansion in v=0 of
        Gamma(m+1/2)/(2*pi) * (2/(rho+1))^(m+1/2) * (1-v)^(-b)
            * g(rho, v)^(-m-1/2)
        rL   c                 óÄ  •— |dk    st          d¦  «        ‚t          d¦  «        }d|z
  | z   ‰d|z  ||¦  «        | t          dd¦  «        z
  z  z  }|                     |d|z  ¦  «                             |d¦  «        t          d|z  ¦  «        z  }|t          |t          dd¦  «        z   ¦  «        dt          z  z  d|dz   z  |t          dd¦  «        z   z  z  z  }|S )Nr   zmust have m >= 0ro   r   rE   )rl   r   r
   r-   r.   r   r   r   )rm   Úmrn   Úbetaro   r;   Úresrp   s          €r   rq   z&asymptotic_series.<locals>.coef_C.evalÊ   så   ø€ à˜’6�6Ý Ð!3Ñ4Ô4Ð4å˜‘”ˆAØ˜A™# $ ™¨!¨!¨A¨a©C°°a©.¬.¸A¸2½hÀqÈ!¹n¼nÑ;LÑ*MÑMˆJØ—/’/ ! Q q¡SÑ)Ô)×.Ò.¨q°!Ñ4Ô4µyÀÀ1Á±~´~ÑEˆCØ�˜q¥8¨A¨q¡>¤>Ñ1Ñ2Ô2°a½±dÑ;Ø˜s 1™u™I¨­X°a¸©^¬^Ñ);Ñ<ñ=ñ >ˆCàˆJr!   Nrr   ry   s   €r   Úcoef_Cr{   Á   sI   ø€ € € € € ð	ð 	ð ˆà	ð		ð 		ð 		ð 		ñ 
Œð		ð 		ð 		r!   r€   z	xa b xap1r   z!Asymptotic expansion for large x
z.Phi(a, b, x) = Z**(1/2-b) * exp((1+a)/a * Z) 
z3               * sum((-1)**k * C[k]/Z**k, k=0..6)

zZ      = pow(a * x, 1/(1+a))
zA[k]   = pow(a, k)
zB[k]   = pow(b, k)
zAp1[k] = pow(1+a, k)

z#C[0] = 1./sqrt(2. * M_PI * Ap1[1])
r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Údenominator©rT   r9   s     r   rV   z%asymptotic_series.<locals>.<listcomp>ä   s    € ÐEÐEÐE a�!—-’-‘/”/ÐEÐEÐEr!   zC[z] = C[0] / (z * Ap1[z])
z] *= z

Nzxa\*\*(\d+)zA[\1]z
b\*\*(\d+)zB[\1]Úxap1zAp1[1]Úxar7   z	(\d{10,})z\1.)r*   ÚFunctionr   r,   r/   r[   r\   ÚlcmÚcollectÚfactorÚxreplacer5   ÚreÚcompileÚsubr1   )r6   r€   r…   r8   r„   ÚC0r?   rB   Úexprr‰   r‹   Úre_aÚre_bÚ	re_digitsrp   s                 @r   Úasymptotic_seriesr“   Ÿ   s£  ø€ ð €Eð:ð :ð :ð :ð :ð :ð :�EŒNñ :ô :ð :ð(ð ð ð ð ð ð •”ñ ô ð õ, ˜+Ñ&Ô&�K€Bˆˆ4Ø	ˆ��2�qÑ	Ô	€Bà,€AØÐ	:Ñ:€AØÐ	@Ñ@€AØÐ	)Ñ)€AØÐ	Ñ€AØÐ	Ñ€AØÐ	#Ñ#€AØÐ	/Ñ/€AÝ�1�e˜A‘gÑÔð *ð *ˆØ��q˜"˜aÑ Ô  B¨¨"©¨q¡y¡LÑ1×;Ò;Ñ=Ô=ˆØEÐE­5¬:°dÑ+;Ô+;×+BÒ+BÑ+DÔ+DÐEÑEÔEˆÝ”˜6Ñ"Ô"ˆØ�v‘×'Ò'Ñ)Ô)×1Ò1°!µU´\ÑBÔBˆØ�}Š}˜b ™d D˜\Ñ*Ô*ˆØ	Ð7�!Ð7Ð7 Ð7Ð7°Ð7Ð7Ð7Ñ7ˆØ	Ð)�!Ð)Ð)�#˜d™)œ)Ð)Ð)Ð)Ñ)ˆˆØ€I€I€IØ�:Š:�nÑ%Ô%€DØ�Š�˜1ÑÔ€AØ�:Š:�mÑ$Ô$€DØ�Š�˜1ÑÔ€AØ	�	Š	�&˜(Ñ#Ô#€AØ	�	Š	�$˜ÑÔ€Að —
’
˜<Ñ(Ô(€IØ�Š�f˜aÑ Ô €AØ€Hr!   c            
      óˆ  ‡‡‡‡‡	‡
— d„ Š	dˆ	fd„	Šg d¢Šg d¢Šg d¢Št          j        ‰‰‰¦  «        \  ŠŠŠ‰                     ¦   «         ‰                     ¦   «         ‰                     ¦   «         cŠŠŠg } t          ‰j        ¦  «        D ]6Š
|                      t          ˆˆˆˆˆ
fd„d	d
ddi¬¦  «        j        ¦  «         Œ7t          j        | ¦  «        } ‰‰‰| dœ}d„ }t          t          |||d         d¬¦  «        d         ¦  «        }d}|dz  }|dz  }|dz  }|dz  }|d                     d„ |D ¦   «         ¦  «        z  }|S )aÝ  Fit optimal choice of epsilon for integral representation.

    The integrand of
        int_0^pi P(eps, a, b, x, phi) * dphi
    can exhibit oscillatory behaviour. It stems from the cosine of P and can be
    minimized by minimizing the arc length of the argument
        f(phi) = eps * sin(phi) - x * eps^(-a) * sin(a * phi) + (1 - b) * phi
    of cos(f(phi)).
    We minimize the arc length in eps for a grid of values (a, b, x) and fit a
    parametric function to it.
    c                 ó°   — t          j        d| z  | ¦  «        }| t          j        |¦  «        z  ||z  |z  t          j        ||z  ¦  «        z  z
  dz   |z
  S )zDerivative of f w.r.t. phi.g      ð?r   )ÚnpÚpowerÚcos)Úepsr7   r8   r9   ÚphiÚeps_as         r   Úfpz$optimal_epsilon_integral.<locals>.fp  sT   € å”˜˜c™ A 2Ñ&Ô&ˆØ•R”V˜C‘[”[Ñ  1 q¡5¨5¡=µ2´6¸!¸c¹'±?´?Ñ#BÑBÀQÑFÈÑJÐJr!   ç{®Gáz„?éd   c                 ób   •‡ ‡‡‡— t          ˆˆˆ ˆˆfd„dt          j        |d¬¦  «        d         S )z˜Compute Arc length of f.

        Note that the arc length of a function f from t0 to t1 is given by
            int_t0^t1 sqrt(1 + f'(t)^2) dt
        c           
      óR   •— t          j        d ‰‰‰‰‰| ¦  «        dz  z   ¦  «        S )Nr   rE   )r–   Úsqrt)rš   r7   r8   r™   rœ   r9   s    €€€€€r   r   z=optimal_epsilon_integral.<locals>.arclength.<locals>.<lambda>  s-   ø€ ¥¤¨¨B¨B¨s°A°q¸!¸SÑ,AÔ,AÀ1Ñ,DÑ(DÑ EÔ E€ r!   r   rž   )ÚepsrelÚlimit)r   r–   r   )r™   r7   r8   r9   r¢   r£   rœ   s   ````  €r   Ú	arclengthz+optimal_epsilon_integral.<locals>.arclength	  sL   øøøøø€ õ ÐEÐEÐEÐEÐEÐEÐEÐEØ•r”uØ!¨ð.ñ .ô .à./ô1ð 	1r!   )
çü©ñÒMbP?gš™™™™™¹?g      à?gÍÌÌÌÌÌì?r   rE   é   r   é   rh   )r   r   r¦   é   é
   )r   g      ø?rE   r¦   r©   é   é2   rž   éÈ   iô  g     @�@g     ˆ³@g     ˆÃ@c                 óD   •—  ‰| ‰‰         ‰‰         ‰‰         ¦  «        S ©Nr   )r™   r¤   Údata_aÚdata_bÚdata_xrB   s    €€€€€r   r   z*optimal_epsilon_integral.<locals>.<lambda>  s(   ø€ ¨	¨	°#°v¸a´yÀ&ÈÄ)Ø28¸´)ñ)=ô )=€ r!   )r¥   iè  ÚBoundedÚxatolr¥   )ÚboundsÚmethodÚoptions)r7   r8   r9   r™   c           
      óF  — | d         }| d         }| d         }	||z  t          j        d|z  ¦  «        z  t          j        |dd|z   z  t          j        |	¦  «        z  z   |t          j        | |z  ¦  «        z  z
  |dt          j        ||z  ¦  «        z   z  z   ¦  «        z   S )z#Compute parametric function to fit.r7   r8   r9   g      à¿r   )r–   r+   Úlog)
ÚdataÚA0ÚA1ÚA2ÚA3ÚA4ÚA5r7   r8   r9   s
             r   Úfuncz&optimal_epsilon_integral.<locals>.func*  s¢   € à�ŒIˆØ�ŒIˆØ�ŒIˆØ�Q‘�œ  q¡Ñ)Ô)Ñ)Ý”&˜˜a 1 q¡5™k­B¬F°1©I¬IÑ5Ñ5¸½R¼VÀRÀCÈ!ÁG¹_¼_Ñ8LÑLØ ¥R¤V¨B°©F¡^¤^Ñ!3Ñ4ñ5ñ 6ô 6ñ6ð 	7r!   r™   Útrf)rµ   r   z7Fit optimal eps for integrand P via minimal arc length
zwith parametric function:
zBoptimal_eps = (A0 * b * exp(-a/2) + exp(A1 + 1 / (1 + a) * log(x)
z=              - A2 * exp(-A3 * a) + A4 / (1 + exp(A5 * a)))

z Fitted parameters A0 to A5 are:
z, c                 ó   — g | ]}|d ›‘ŒS )z.5gr   rƒ   s     r   rV   z,optimal_epsilon_integral.<locals>.<listcomp>:  s   € Ð4Ð4Ð4 1�q�J�JÐ4Ð4Ð4r!   )r�   rž   )r–   ÚmeshgridÚflattenr,   Úsizer2   r   r9   ÚarrayÚlistr   Újoin)Úbest_epsÚdfrÀ   Úfunc_paramsr?   r¤   r¯   r°   r±   rœ   rB   s        @@@@@@r   Úoptimal_epsilon_integralrÌ   ø   së  øøøøøø€ ðKð Kð Kð
1ð 1ð 1ð 1ð 1ð 1ð 5Ð4Ð4€FØÐÐ€FØEÐEÐE€FÝœ[¨°¸Ñ@Ô@Ñ€FˆF�FØ$ŸnšnÑ.Ô.°·²Ñ0@Ô0@Ø$ŸnšnÑ.Ô.ð €FˆF�Fà€HÝ�6”;ÑÔð 
ð 
ˆØ�ŠÝð =ð =ð =ð =ð =ð =ð =ð =à#/Ø#,°wÀ°oðGñ Gô Gô HIñ		
ô 	
ð 	
ð 	
õ Œx˜Ñ!Ô!€HàØØØð
ð 
€Bð7ð 7ð 7õ •y  r¨2¨e¬9¸UÐCÑCÔCÀAÔFÑGÔG€KàB€AØÐ	&Ñ&€AØÐ	NÑN€AØÐ	JÑJ€AØÐ	,Ñ,€AØˆ�ŠÐ4Ð4¨Ð4Ñ4Ô4Ñ	5Ô	5Ñ5€AØ€Hr!   c                  ój  — t          ¦   «         } t          t          t          ¬¦  «        }|                     dt
          g d¢d¬¦  «         |                     ¦   «         }d„ d„ d„ d	„ dœ} |                     |j        d
„ ¦  «        ¦   «          t          dt          ¦   «         | z
  dz  d›d�¦  «         d S )N)ÚdescriptionÚformatter_classÚaction)r   rE   rL   r¦   zÒchose what expansion to precompute
1 : Series for small a
2 : Series for small a and small b
3 : Asymptotic series for large x
    This may take some time (>4h).
4 : Fit optimal eps for integral representation.)ÚtypeÚchoicesÚhelpc                  ó8   — t          t          ¦   «         ¦  «        S r®   )ÚprintrC   r   r!   r   r   zmain.<locals>.<lambda>L  s   € ��~Ñ/Ô/Ñ0Ô0€ r!   c                  ó8   — t          t          ¦   «         ¦  «        S r®   )rÕ   rf   r   r!   r   r   zmain.<locals>.<lambda>M  s   € �Õ5Ñ7Ô7Ñ8Ô8€ r!   c                  ó8   — t          t          ¦   «         ¦  «        S r®   )rÕ   r“   r   r!   r   r   zmain.<locals>.<lambda>N  s   € �Õ0Ñ2Ô2Ñ3Ô3€ r!   c                  ó8   — t          t          ¦   «         ¦  «        S r®   )rÕ   rÌ   r   r!   r   r   zmain.<locals>.<lambda>O  s   € �Õ7Ñ9Ô9Ñ:Ô:€ r!   c                  ó    — t          d¦  «        S )NzInvalid input.)rÕ   r   r!   r   r   zmain.<locals>.<lambda>Q  s   € ¥EÐ*:Ñ$;Ô$;€ r!   r&   é<   z.1fz minutes elapsed.
)
r   r   rv   r   Úadd_argumentÚintÚ
parse_argsÚgetrÐ   rÕ   )Út0Úparserr   Úswitchs       r   Úmainrâ   >  sß   € Ý	‰Œ€BÝ­Ý,@ðBñ Bô B€Fà
×Ò˜¥s°L°L°LðPð ñ ô ð ð ×ÒÑÔ€Dà0Ð0Ø8Ð8Ø3Ð3Ø:Ð:ðð €Fð
 =€F‡J‚JˆtŒ{Ð;Ð;Ñ<Ô<Ñ>Ô>Ð>Ý	Ð
8•‘”˜‘˜RÑÐ
8Ð
8Ð
8Ð
8Ñ9Ô9Ð9Ð9Ð9r!   Ú__main__)#rv   Úargparser   r   Únumpyr–   Úscipy.integrater   Úscipy.optimizer   r   r   r*   r	   r
   r   r   r   r   r   r   r   r   r   Úsympy.polys.polyfuncsr   ÚImportErrorrC   rH   rJ   rf   r“   rÌ   râ   rs   r   r!   r   ú<module>rê      sí  ððð ð
 :Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð ð	Ø€L€L€LðBð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bà,Ð,Ð,Ð,Ð,Ð,Ð,øØð 	ð 	ð 	Ø€Dð	øøøðð ð ðDCð Cð Cð/ð /ð /ð
Vð Vð VðrVð Vð VðrCð Cð CðL:ð :ð :ð. ˆzÒÐØ€D�F„F€F€F€Fð Ðs   ¤$A	 Á	AÁA