| 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/scipy/sparse/__pycache__/ |
Upload File : |
o
��EbA1 � @ s� d Z ddlZddlZddlmZ dZdZdZdZdefd efd
efdefgZ dd
gZ
g d�ZdZdZ
dZdd� Zdd� Zdd� Zdd� ZedkrMe� dS dS )a�
python generate_sparsetools.py
Generate manual wrappers for C++ sparsetools code.
Type codes used:
'i': integer scalar
'I': integer array
'T': data array
'B': boolean array
'V': std::vector<integer>*
'W': std::vector<data>*
'*': indicates that the next argument is an output argument
'v': void
'l': 64-bit integer scalar
See sparsetools.cxx for more details.
� N)�newera�
bsr_diagonal v iiiiiIIT*T
bsr_tocsr v iiiiIIT*I*I*T
bsr_scale_rows v iiiiII*TT
bsr_scale_columns v iiiiII*TT
bsr_sort_indices v iiii*I*I*T
bsr_transpose v iiiiIIT*I*I*T
bsr_matmat v iiiiiiIITIIT*I*I*T
bsr_matvec v iiiiIITT*T
bsr_matvecs v iiiiiIITT*T
bsr_elmul_bsr v iiiiIITIIT*I*I*T
bsr_eldiv_bsr v iiiiIITIIT*I*I*T
bsr_plus_bsr v iiiiIITIIT*I*I*T
bsr_minus_bsr v iiiiIITIIT*I*I*T
bsr_maximum_bsr v iiiiIITIIT*I*I*T
bsr_minimum_bsr v iiiiIITIIT*I*I*T
bsr_ne_bsr v iiiiIITIIT*I*I*B
bsr_lt_bsr v iiiiIITIIT*I*I*B
bsr_gt_bsr v iiiiIITIIT*I*I*B
bsr_le_bsr v iiiiIITIIT*I*I*B
bsr_ge_bsr v iiiiIITIIT*I*I*B
aZ
csc_diagonal v iiiIIT*T
csc_tocsr v iiIIT*I*I*T
csc_matmat_maxnnz l iiIIII
csc_matmat v iiIITIIT*I*I*T
csc_matvec v iiIITT*T
csc_matvecs v iiiIITT*T
csc_elmul_csc v iiIITIIT*I*I*T
csc_eldiv_csc v iiIITIIT*I*I*T
csc_plus_csc v iiIITIIT*I*I*T
csc_minus_csc v iiIITIIT*I*I*T
csc_maximum_csc v iiIITIIT*I*I*T
csc_minimum_csc v iiIITIIT*I*I*T
csc_ne_csc v iiIITIIT*I*I*B
csc_lt_csc v iiIITIIT*I*I*B
csc_gt_csc v iiIITIIT*I*I*B
csc_le_csc v iiIITIIT*I*I*B
csc_ge_csc v iiIITIIT*I*I*B
a�
csr_matmat_maxnnz l iiIIII
csr_matmat v iiIITIIT*I*I*T
csr_diagonal v iiiIIT*T
csr_tocsc v iiIIT*I*I*T
csr_tobsr v iiiiIIT*I*I*T
csr_todense v iiIIT*T
csr_matvec v iiIITT*T
csr_matvecs v iiiIITT*T
csr_elmul_csr v iiIITIIT*I*I*T
csr_eldiv_csr v iiIITIIT*I*I*T
csr_plus_csr v iiIITIIT*I*I*T
csr_minus_csr v iiIITIIT*I*I*T
csr_maximum_csr v iiIITIIT*I*I*T
csr_minimum_csr v iiIITIIT*I*I*T
csr_ne_csr v iiIITIIT*I*I*B
csr_lt_csr v iiIITIIT*I*I*B
csr_gt_csr v iiIITIIT*I*I*B
csr_le_csr v iiIITIIT*I*I*B
csr_ge_csr v iiIITIIT*I*I*B
csr_scale_rows v iiII*TT
csr_scale_columns v iiII*TT
csr_sort_indices v iI*I*T
csr_eliminate_zeros v ii*I*I*T
csr_sum_duplicates v ii*I*I*T
get_csr_submatrix v iiIITiiii*V*V*W
csr_row_index v iIIIT*I*T
csr_row_slice v iiiIIT*I*T
csr_column_index1 v iIiiII*I*I
csr_column_index2 v IIiIT*I*T
csr_sample_values v iiIITiII*T
csr_count_blocks i iiiiII
csr_sample_offsets i iiIIiII*I
csr_hstack v iiIIIT*I*I*T
expandptr v iI*I
test_throw_error i
csr_has_sorted_indices i iII
csr_has_canonical_format i iII
z�
coo_tocsr v iiiIIT*I*I*T
coo_todense v iilIIT*Ti
coo_matvec v lIITT*T
dia_matvec v iiiiITT*T
cs_graph_components i iII*I
�bsr�csr�csc�other)� NPY_INT32� npy_int32)� NPY_INT64� npy_int64))�NPY_BOOL�npy_bool_wrapper)�NPY_BYTE�npy_byte)� NPY_UBYTE� npy_ubyte)� NPY_SHORT� npy_short)�
NPY_USHORT�
npy_ushort)�NPY_INT�npy_int)�NPY_UINT�npy_uint)�NPY_LONG�npy_long)� NPY_ULONG� npy_ulong)�NPY_LONGLONG�npy_longlong)�
NPY_ULONGLONG�
npy_ulonglong)� NPY_FLOAT� npy_float)�
NPY_DOUBLE�
npy_double)�NPY_LONGDOUBLE�npy_longdouble)�
NPY_CFLOAT�npy_cfloat_wrapper)�NPY_CDOUBLE�npy_cdouble_wrapper)�NPY_CLONGDOUBLE�npy_clongdouble_wrapperzf
static PY_LONG_LONG %(name)s_thunk(int I_typenum, int T_typenum, void **a)
{
%(thunk_content)s
}
z�
NPY_VISIBILITY_HIDDEN PyObject *
%(name)s_method(PyObject *self, PyObject *args)
{
return call_thunk('%(ret_spec)s', "%(arg_spec)s", %(name)s_thunk, args);
}
z]
static int get_thunk_case(int I_typenum, int T_typenum)
{
%(content)s;
return -1;
}
c C s� g } g }d}d}t D ]C\}}d}||t||d� 7 }|�||d|df� |d7 }tD ]\}}d}||t||d� 7 }| �|||||f� |d7 }q*|d 7 }q
|| tt|d
� fS )a�
Get a list containing cartesian product of data types, plus a getter routine.
Returns
-------
i_types : list [(j, I_typenum, None, I_type, None), ...]
Pairing of index type numbers and the corresponding C++ types,
and an unique index `j`. This is for routines that are parameterized
only by I but not by T.
it_types : list [(j, I_typenum, T_typenum, I_type, T_type), ...]
Same as `i_types`, but for routines parameterized both by T and I.
getter_code : str
C++ code for a function that takes I_typenum, T_typenum and returns
the unique index corresponding to the lists, or -1 if no match was
found.
r z
if (0) {}zb
else if (I_typenum == %(I_typenum)s) {
if (T_typenum == -1) { return %(j)s; })� I_typenum�jN� zC
else if (T_typenum == %(T_typenum)s) { return %(j)s; })� T_typenumr. z
})�content)�I_TYPES�dict�append�T_TYPES�GET_THUNK_CASE_TEMPLATE) �it_types�i_typesr. �getter_coder- �I_type�piecer0 �T_type� r= �D/usr/lib/python3/dist-packages/scipy/sparse/_generate_sparsetools.py�get_thunk_type_set� s
r? c s� |d }|dd� � � fdd�}d}|D ]*\}}}} }
|| |
�}d}|dkr+|d 7 }n|d
7 }||t || |
|||| d� 7 }q|d7 }tt | |d
� }
tt | |� d� }|
|fS )a3
Generate thunk and method code for a given routine.
Parameters
----------
name : str
Name of the C++ routine
args : str
Argument list specification (in format explained above)
types : list
List of types to instantiate, as returned `get_thunk_type_set`
r r/ Nc s: g }d}d}� D ]�}|rdnd}d}|dkrd}q|dkr)|� d|| |f � nj|d kr9|� d
|| |f � nZ|dkrI|� d
|| |f � nJ|dkrV|� d
|f � n=|dkrj|r`td��|� d| |f � n)|dkr~|rttd��|� d||f � n|dkr�|� d||f � ntd|f ��|d7 }qd�|�S )zE
Generate argument list for calling the C++ function
Fr � zconst �*T�iz*(%s*)a[%d]�Iz
(%s*)a[%d]�T�Bz(npy_bool_wrapper*)a[%d]�Vz"'V' argument must be an output argz(std::vector<%s>*)a[%d]�Wz"'W' argument must be an output arg�lz*(%snpy_int64*)a[%d]zInvalid spec character %rr/ z, )r4 �
ValueError�join)r: r<