o
    	ñhÆ	  ã                   @   s†   d Z ddlZddlmZ zddlZW n	 ey   Y nw dd„ Zdd„ Zdd	„ Z	d
d„ Z
dd„ ZdZdZdd„ ZedkrAeƒ  dS dS )zì
Precompute coefficients of Temme's asymptotic expansion for gammainc.

This takes about 8 hours to run on a 2.3 GHz Macbook Pro with 4GB ram.

Sources:
[1] NIST, "Digital Library of Mathematical Functions",
    https://dlmf.nist.gov/

é    N)Úlagrange_inversionc                 C   sŽ   t  d¡d g}td| ƒD ]7}|d | }tdt|ƒƒD ]}||| ||   |d  8 }q||d dt  d¡|d     }| |¡ q|S )za_k from DLMF 5.11.6é   é   éÿÿÿÿr   )ÚmpÚsqrtÚrangeÚlenÚmpfÚappend)ÚnÚaÚkÚakÚj© r   úZ/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/special/_precompute/gammainc_asy.pyÚ	compute_a   s    "r   c                    s&   t d|  ƒ‰ ‡ fdd„t| ƒD ƒ}|S )zg_k from DLMF 5.11.3/5.11.5r   c                    s.   g | ]}t  d ¡t  d|¡ ˆ d |   ‘qS )r   g      à?)r   r   Úrf)Ú.0r   ©r   r   r   Ú
<listcomp>#   s   . zcompute_g.<locals>.<listcomp>)r   r   )r   Úgr   r   r   Ú	compute_g    s   r   c                 C   sN   | dkrt  d| t  | d ¡  ¡S | dk r%t  d| t  | d ¡  ¡ S dS )z6Function from DLMF 8.12.1 shifted to be centered at 0.r   r   r   )r   r   Úlog)Úlamr   r   r   Úeta'   s
   r   c                 C   s   t  td| d ¡}t|ƒS )zalpha_n from DLMF 8.12.13r   r   )r   Útaylorr   r   )r   Úcoeffsr   r   r   Úcompute_alpha1   s   r   c           
   	   C   sú   |d|   }t  d¡ d g}t|d ƒ}td|ƒD ]}| |d ||d   ¡ q|g}t| ƒ}td| ƒD ]3}g }	t|d|  ƒD ]!}|	 d| ||  |d |  |d ||d  |d    ¡ qB| |	¡ q6t| ƒD ]}|| d|… ||< qn|S )zd_{k, n} from DLMF 8.12.12r   r   é   r   r   N)r   r
   r   r   r   r   )
ÚKÚNÚMÚd0Úalphar   Údr   r   Údkr   r   r   Ú	compute_d7   s   @r(   z½/* This file was automatically generated by _precomp/gammainc.py.
 * Do not edit it manually!
 */

#ifndef IGAM_H
#define IGAM_H

#define K {}
#define N {}

static const double d[K][N] =
{{z
#endif
c                  C   s  t tƒ d} d}t d¡ t| |ƒ}W d   ƒ n1 sw   Y  tj tj t	¡ddd¡}t
|d dƒD}| t | |¡¡ t|ƒD ])\}}dd	„ |D ƒ}| d
¡ | d |¡¡ || d k rh| d¡ qD| d¡ qD| t¡ W d   ƒ n1 s}w   Y  t |d |¡ d S )Né   é2   z..Úcepheszigam.hz.newÚwc                 S   s   g | ]}t j|d ddd‘qS )é   r   )Ú	min_fixedÚ	max_fixed)r   Únstr)r   Úxr   r   r   r   h   s    zmain.<locals>.<listcomp>Ú{z, r   z},
z}};
)ÚprintÚ__doc__r   Úworkdpsr(   ÚosÚpathÚjoinÚdirnameÚ__file__ÚopenÚwriteÚheaderÚformatÚ	enumerateÚfooterÚrename)r!   r"   r&   ÚfnÚfr   Úrowr   r   r   Úmain^   s&   ÿ
örE   Ú__main__)r4   r6   Úscipy.special._precompute.utilsr   Úmpmathr   ÚImportErrorr   r   r   r   r(   r=   r@   rE   Ú__name__r   r   r   r   Ú<module>   s*    
ÿ
ÿÿ
ÿ