U
    HvfÆ	  ã                   @   s„   d Z ddlZddlmZ zddlZW n ek
r8   Y nX 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r€eƒ  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 ]n}|d | }tdt|ƒƒD ]"}||| ||   |d  8 }q8||d dt  d¡|d     }| |¡ q|S )za_k from DLMF 5.11.6é   é   éÿÿÿÿr   )ÚmpÚsqrtÚrangeÚlenÚmpfÚappend)ÚnÚaÚkZakÚj© r   úJ/tmp/pip-unpacked-wheel-96ln3f52/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   sR   | dkr$t  d| t  | d ¡  ¡S | dk rJt  d| t  | d ¡  ¡ S dS dS )z6Function from DLMF 8.12.1 shifted to be centered at 0.r   r   r   N)r   r   Úlog)Z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   Ztaylorr   r   )r   Zcoeffsr   r   r   Úcompute_alpha1   s    r   c           
   	   C   sú   |d|   }t  d¡ d g}t|d ƒ}td|ƒD ]}| |d ||d   ¡ q4|g}t| ƒ}td| ƒD ]f}g }	t|d|  ƒD ]B}|	 d| ||  |d |  |d ||d  |d    ¡ q„| |	¡ qlt| ƒD ]}|| d|… ||< qÜ|S )zd_{k, n} from DLMF 8.12.12r   r   é   r   r   N)r   r
   r   r   r   r   )
ÚKÚNÚMZd0Úalphar   Údr   r   Z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 5 Q R X tj tj t	¡ddd¡}t
|d dƒ~}| t | |¡¡ t|ƒD ]R\}}dd	„ |D ƒ}| d
¡ | d |¡¡ || d k r¼| d¡ qt| d¡ qt| t¡ W 5 Q R X t |d |¡ d S )Né   é2   z..Zcepheszigam.hz.newÚwc                 S   s   g | ]}t j|d ddd‘qS )é   r   )Z	min_fixedZ	max_fixed)r   Znstr)r   Úxr   r   r   r   h   s     zmain.<locals>.<listcomp>Ú{z, r   z},
z}};
)ÚprintÚ__doc__r   Zworkdpsr"   ÚosÚpathÚjoinÚdirnameÚ__file__ÚopenÚwriteÚheaderÚformatÚ	enumerateÚfooterÚrename)r   r   r!   ÚfnÚfr   Úrowr   r   r   Úmain^   s"    
r:   Ú__main__)r*   r+   Zscipy.special._precompute.utilsr   Zmpmathr   ÚImportErrorr   r   r   r   r"   r2   r5   r:   Ú__name__r   r   r   r   Ú<module>   s$   

ÿÿ