o
    'Æ&i:
  ã                   @   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ÚkZakÚj© r   úQC:\wamp64\www\opt\env\Lib\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)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   ¡ 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Ú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 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..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*    
ÿ
ÿÿ
ÿ