| Server IP : 93.86.61.54 / Your IP : 216.73.216.156 Web Server : Apache/2.4.62 (Ubuntu) System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64 User : www-data ( 33) PHP Version : 8.4.22 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3/dist-packages/mpmath/libmp/__pycache__/ |
Upload File : |
o
�"`� � @ s� d Z ddlZddlZddlmZmZmZmZmZ ddl m
Z
ddlmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m-Z-m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN dd l mOZO dd
lPmQZQmRZRmSZS G dd� deT�ZU d
d� ZVedkr�dd� ZVe
fdd�ZWdd� ZXe
fdd�ZYdd� ZZdd� Z[dd� Z\dd� Z]e
dfd d!�Z^e
dfd"d#�Z_e
fd$d%�Z`e
fd&d'�Zae
dfd(d)�ZbdMd*d+�ZcdMd,d-�Zde
d.fd/d0�Zee
fd1d2�Zfe
fd3d4�Zge
fd5d6�Zhe
fd7d8�Zie
fd9d:�Zje
fd;d<�Zke
fd=d>�Zle
fd?d@�Zme
fdAdB�Zne
fdCdD�Zoe
fdEdF�Zpe
fdGdH�Zqe
fdIdJ�Zre
fdKdL�ZsdS )Nz�
This module implements computation of hypergeometric and related
functions. In particular, it provides code for generic summation
of hypergeometric series. Optimized versions for various special
cases are also provided.
� N� )�MPZ_ZERO�MPZ_ONE�BACKEND�xrange�exec_)�gcd)%�
ComplexResult�
round_fast�
round_nearest�negative_rnd�bitcount�to_fixed�from_man_exp�from_int�to_int�
from_rational�fzero�fone�fnone�ftwo�finf�fninf�fnan�mpf_sign�mpf_add�mpf_abs�mpf_pos�mpf_cmp�mpf_lt�mpf_le�mpf_gt�mpf_min_max�mpf_perturb�mpf_neg� mpf_shift�mpf_sub�mpf_mul�mpf_div�
sqrt_fixed�mpf_sqrt�mpf_rdiv_int�mpf_pow_int�to_rational) �mpf_pi�mpf_exp�mpf_log�pi_fixed�mpf_cos_sin�mpf_cos�mpf_sinr* � agm_fixed)�mpc_one�mpc_sub�mpc_mul_mpf�mpc_mul�mpc_neg�complex_int_pow�mpc_div�mpc_add_mpf�mpc_sub_mpf�mpc_log�mpc_add�mpc_pos� mpc_shift�
mpc_is_infnan�mpc_zero�mpc_sqrt�mpc_abs�mpc_mpf_div�
mpc_square�mpc_exp)�ifac)�
mpf_gamma_int� mpf_euler�euler_fixedc @ s e Zd ZdS )�
NoConvergenceN)�__name__�
__module__�__qualname__� rR rR �7/usr/lib/python3/dist-packages/mpmath/libmp/libhyper.pyrN + s rN c C sx | \}}}}d� |�}d|||d|� ||d� |f }d|v }|dk}|p'|} g }
|
j}g }g }
g }g }g }g }g }g }|d� |d� |d� |d� | rS|d � |rf|d
� |d� |d� |d
� n|d� |d� |d� |d� |d� |d� |d� |r�|d� |d� |d� |d� |d� t|�D ]�\}}ddg||k }|dkr�||g||k �|� |d|||f � q�|dkr�|
|g||k �|� |d|||||f � q�|dk�r||g||k �|� |d| � |d� |d� |d� |d||f � |d� |d ||f � q�|dk�rr||g||k �|� |d!| � |d"� |d� |d#� |d
� |d� |d� |d$||f � |d� |d%||f � |d� |d� |d&||f � |d� |d'||f � q�t�t|�}t|�}t||�}||d� }||d� }|d(� |d)� |d*� | �r�|d+� |d,� d-� d.d/� |D �d0d/� |
D � d1d/� |D � �}d-� d2d/� |D �d3d/� |D � d4d/� |
D � d5g �}|�r�|d6| � |d7| � |d8� |�r�|d9� |d:� |d;� | �r�t|�D ]}|d<|| || f � �q |D ]
}|d=�d>t|��� �q|D ]
}|d?�d>t|��� �q"t|�D ]}|d@|| || f � �q4|D ]
}|dA�d>t|��� �qF|D ]
}|dB�d>t|��� �qV|�r�|�rw|dC� |dD� |dE� n!|dF� |dG� n|�r�|dH� |dD� |dE� n|dI� |dJ� |D ]}|dK�d>t|��� |dD� |dE� �q�|D ]5}|dL�d>t|��� |dM�d>t|��� |dN�d>t|��� |dO�d>t|��� |dP�d>t|��� �q�n@t|�D ]}|d<|| || f � �q�|D ]
}|d=�d>t|��� �q�|D ]
}|d?�d>t|��� �q|�r%|dQ� n|dI� | �r=|dR� |dS� |dT� |dU� n|dR� |dV� |dU� |dW� |dX� |D ]
}|dY�d>t|��� �qS|D ]
}|dZ�d>t|��� �qc|
D ]
}|d[�d>t|��� �qs|D ]
}|d\�d>t|��� �q�|D ]
}|d]�d>t|��� �q�|D ]
}|d^�d>t|��� �q�|D ]
}|d_�d>t|��� �q�|D ]
}|d`�d>t|��� �q�| �r|da� |db� |dc� |dd� |de� |df� |dg� |dh� |di� |d� |dj� |dk� n|da� |dc� |dl� |d� |dj� |dm� dn� dodp� |
D ��}
dq| |
}
i }t |
t
� |� |
|| fS )rz�
Returns a function that sums a generalized hypergeometric series,
for given parameter types (integer, rational, real, complex).
� zhypsum_%i_%i_%s_%s_%sN�Cz$MAX = kwargs.get('maxterms', wp*100)zHIGH = MPZ_ONE<<epsshiftzLOW = -HIGHz!SRE = PRE = one = (MPZ_ONE << wp)zSIM = PIM = MPZ_ZEROzxsign, xm, xe, xbc = z[0]zif xsign: xm = -xmzysign, ym, ye, ybc = z[1]zif ysign: ym = -ymzxsign, xm, xe, xbc = zzoffset = xe + wpzif offset >= 0:z ZRE = xm << offsetzelse:z ZRE = xm >> (-offset)zoffset = ye + wpz ZIM = ym << offsetz ZIM = ym >> (-offset)�A�B�Zz%sINT_%i = coeffs[%i]�Qz!%sP_%i, %sQ_%i = coeffs[%i]._mpq_�Rz%xsign, xm, xe, xbc = coeffs[%i]._mpf_z %sREAL_%i = xm << offsetz %sREAL_%i = xm >> (-offset)z__re, __im = coeffs[%i]._mpc_zxsign, xm, xe, xbc = __rezysign, ym, ye, ybc = __imz %sCRE_%i = xm << offsetz %sCRE_%i = xm >> (-offset)z %sCIM_%i = ym << offsetz %sCIM_%i = ym >> (-offset)zfor n in xrange(1,10**8):z if n in magnitude_check:z" p_mag = bitcount(abs(PRE))z. p_mag = max(p_mag, bitcount(abs(PIM)))z% magnitude_check[n] = wp-p_magz * c S � g | ]
}d � dt|���qS )zAINT_#�#��replace�str��.0�irR rR rS �
<listcomp>� � z%make_hyp_summator.<locals>.<listcomp>c S r[ )zAP_#r\ r] r` rR rR rS rc � rd c S r[ )zBQ_#r\ r] r` rR rR rS rc � rd c S r[ )zBINT_#r\ r] r` rR rR rS rc � rd c S r[ )zBP_#r\ r] r` rR rR rS rc � rd c S r[ )zAQ_#r\ r] r` rR rR rS rc � rd �nz
mul = z
div = z if not div:z if not mul:z breakz raise ZeroDivisionErrorz$ PRE = PRE * AREAL_%i // BREAL_%iz PRE = (PRE * AREAL_#) >> wpr\ z PRE = (PRE << wp) // BREAL_#z$ PIM = PIM * AREAL_%i // BREAL_%iz PIM = (PIM * AREAL_#) >> wpz PIM = (PIM << wp) // BREAL_#zI PRE, PIM = (mul*(PRE*ZRE-PIM*ZIM))//div, (mul*(PIM*ZRE+PRE*ZIM))//divz PRE >>= wpz PIM >>= wpz* PRE = ((mul * PRE * ZRE) >> wp) // divz* PIM = ((mul * PIM * ZRE) >> wp) // divz= PRE, PIM = (PRE*ZRE-PIM*ZIM)//div, (PIM*ZRE+PRE*ZIM)//divz$ PRE = ((PRE * ZRE) >> wp) // divz$ PIM = ((PIM * ZRE) >> wp) // divz; PRE, PIM = PRE*ACRE_#-PIM*ACIM_#, PIM*ACRE_#+PRE*ACIM_#z% mag = BCRE_#*BCRE_#+BCIM_#*BCIM_#z re = PRE*BCRE_# + PIM*BCIM_#z im = PIM*BCRE_# - PRE*BCIM_#z PRE = (re << wp) // magz PIM = (im << wp) // magz* PRE = ((PRE * mul * ZRE) >> wp) // divz SRE += PREz SIM += PIMz1 if (HIGH > PRE > LOW) and (HIGH > PIM > LOW):z
breakz if HIGH > PRE > LOW:z if n > MAX:zc raise NoConvergence('Hypergeometric series converges too slowly. Try increasing maxterms.')z AINT_# += 1z BINT_# += 1z AP_# += AQ_#z BP_# += BQ_#z AREAL_# += onez BREAL_# += onez ACRE_# += onez BCRE_# += onez%a = from_man_exp(SRE, -wp, prec, 'n')z%b = from_man_exp(SIM, -wp, prec, 'n')zif SRE:z if SIM:z( magn = max(a[2]+a[3], b[2]+b[3])z else:z magn = a[2]+a[3]z elif SIM:z magn = b[2]+b[3]z magn = -wp+1zreturn (a, b), True, magnz magn = a[2]+a[3]zreturn a, False, magn�
c s s � | ]}d | V qdS )z NrR )ra �linerR rR rS � <genexpr>+ s � z$make_hyp_summator.<locals>.<genexpr>zBdef %s(coeffs, z, prec, wp, epsshift, magnitude_check, **kwargs):
)�join�append� enumerate�
ValueError�len�min�ranger^ r_ r �globals) �key�p�q�param_types�ztype�pstring�fname�have_complex_param�have_complex_arg�have_complex�source�add�aint�arat�bint�brat�areal�breal�acomplex�bcomplexrb �flag�W�l_areal�l_breal�cancellable_real�noncancellable_real_num�noncancellable_real_den�
multiplier�divisor�k� namespacerR rR rS �make_hyp_summator@ sr
"
�����( (
�(
r� �sagec s4 ddl m� | \����� ����fdd�}d|fS )z�
Returns a function that sums a generalized hypergeometric series,
for given parameter types (integer, rational, real, complex).
r )�hypsum_internalc s � ����| ||||||�S �NrR )�coeffs�z�prec�wp�epsshift�magnitude_check�kwargs�r� rr rt rs ru rR rS �_hypsum? s
�z"make_hyp_summator.<locals>._hypsumz(none))�sage.libs.mpmath.ext_mainr� )rq r� rR r� rS r� 8 s c C sx | \}}}}|s| t krt S | tkrtS | tkrtS tS || }tj}|dkrDd|d d ||d�krD|r=ttd||�S ttd||�S || k r`t | d�} t
t|d �|d �} t| | ||�S |t
|� d }
t
t| |
��}|| |
? }|dd}
}}|r�|| |
? | }|d| d }|d@ r�|
|8 }
n|
|7 }
|d7 }|s|
|
d >