From 2e9be875eb04f47cf9a3d461297ae6a9aec4ffd9 Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Mon, 29 Aug 2022 08:15:49 +0200 Subject: [PATCH] [PATCH] WIP Gbp-Pq: Name pythran_type_PR16646.patch --- scipy/optimize/_group_columns.py | 8 ++++---- scipy/signal/_max_len_seq.py | 5 +++-- scipy/signal/_max_len_seq_inner.py | 4 ++-- scipy/sparse/_sputils.py | 3 ++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/scipy/optimize/_group_columns.py b/scipy/optimize/_group_columns.py index 8b4fcee3..99751d28 100644 --- a/scipy/optimize/_group_columns.py +++ b/scipy/optimize/_group_columns.py @@ -52,10 +52,10 @@ def group_dense(m, n, A): return groups -#pythran export group_sparse(int, int, intc[], intc[]) -#pythran export group_sparse(int, int, int[], int[]) -#pythran export group_sparse(int, int, intc[::], intc[::]) -#pythran export group_sparse(int, int, int[::], int[::]) +#pythran export group_sparse(int, int, int32[], int32[]) +#pythran export group_sparse(int, int, int64[], int64[]) +#pythran export group_sparse(int, int, int32[::], int32[::]) +#pythran export group_sparse(int, int, int64[::], int64[::]) def group_sparse(m, n, indices, indptr): groups = -np.ones(n, dtype=np.intp) current_group = 0 diff --git a/scipy/signal/_max_len_seq.py b/scipy/signal/_max_len_seq.py index 04a2e788..afe97dd4 100644 --- a/scipy/signal/_max_len_seq.py +++ b/scipy/signal/_max_len_seq.py @@ -101,14 +101,15 @@ def max_len_seq(nbits, state=None, length=None, taps=None): >>> plt.show() """ + taps_dtype = np.int32 if np.intp().itemsize == 4 else np.int64 if taps is None: if nbits not in _mls_taps: known_taps = np.array(list(_mls_taps.keys())) raise ValueError('nbits must be between %s and %s if taps is None' % (known_taps.min(), known_taps.max())) - taps = np.array(_mls_taps[nbits], np.intp) + taps = np.array(_mls_taps[nbits], taps_dtype) else: - taps = np.unique(np.array(taps, np.intp))[::-1] + taps = np.unique(np.array(taps, taps_dtype))[::-1] if np.any(taps < 0) or np.any(taps > nbits) or taps.size < 1: raise ValueError('taps must be non-empty with values between ' 'zero and nbits (inclusive)') diff --git a/scipy/signal/_max_len_seq_inner.py b/scipy/signal/_max_len_seq_inner.py index 88d6ef3d..8de08937 100644 --- a/scipy/signal/_max_len_seq_inner.py +++ b/scipy/signal/_max_len_seq_inner.py @@ -3,8 +3,8 @@ import numpy as np -#pythran export _max_len_seq_inner(intp[], int8[], int, int, int8[]) -#pythran export _max_len_seq_inner(int[], int8[], int, int, int8[]) +#pythran export _max_len_seq_inner(int32[], int8[], int, int, int8[]) +#pythran export _max_len_seq_inner(int64[], int8[], int, int, int8[]) # Fast inner loop of max_len_seq. def _max_len_seq_inner(taps, state, nbits, length, seq): diff --git a/scipy/sparse/_sputils.py b/scipy/sparse/_sputils.py index 3fea06ea..6d93b6f9 100644 --- a/scipy/sparse/_sputils.py +++ b/scipy/sparse/_sputils.py @@ -153,7 +153,8 @@ def get_index_dtype(arrays=(), maxval=None, check_contents=False): int32min = np.iinfo(np.int32).min int32max = np.iinfo(np.int32).max - dtype = np.intc + # not using intc directly due to misinteractions with pythran + dtype = np.int32 if np.intc().itemsize == 4 else np.int64 if maxval is not None: if maxval > int32max: dtype = np.int64 -- 2.30.2