o
    g	                     @   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   d/home/ubuntu/cloudmapper/venv/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*    


