8000 BUG: Align type definition with generated lapack (#10477) · numpy/numpy@2f3e04f · GitHub 8000
[go: up one dir, main page]

Skip to content

Commit 2f3e04f

Browse files
xoviatcharris
authored andcommitted
BUG: Align type definition with generated lapack (#10477)
* Align type definitions * Regenerate sources * Replace BytesIO * Consolidate executables * Create directories on PY2 * Revise step name * Consolidate directory creation * Don't catch makedirs errors * Revise step name * Add header source
1 parent 7311b96 commit 2f3e04f

File tree

11 files changed

+256
-819
lines changed

11 files changed

+256
-819
lines changed

numpy/linalg/lapack_lite/clapack_scrub.py

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22
from __future__ import division, absolute_import, print_function
33

44
import sys, os
5-
from io import BytesIO
65
import re
76
from plex import Scanner, Str, Lexicon, Opt, Bol, State, AnyChar, TEXT, IGNORE
87
from plex.traditional import re as Re
98

9+
PY2 = sys.version_info < (3, 0)
10+
11+
if PY2:
12+
from io import BytesIO as UStringIO
13+
else:
14+
from io import StringIO as UStringIO
15+
1016
class MyScanner(Scanner):
1117
def __init__(self, info, name='<default>'):
1218
Scanner.__init__(self, self.lexicon, info, name)
@@ -21,8 +27,8 @@ def sep_seq(sequence, sep):
2127
return pat
2228

2329
def runScanner(data, scanner_class, lexicon=None):
24-
info = BytesIO(data)
25-
outfo = BytesIO()
30+
info = UStringIO(data)
31+
outfo = UStringIO()
2632
if lexicon is not None:
2733
scanner = scanner_class(lexicon, info)
2834
else:
@@ -189,7 +195,7 @@ def HaveBlankLines(line):
189195
return SourceLines
190196

191197
state = SourceLines
192-
for line in BytesIO(source):
198+
for line in UStringIO(source):
193199
state = state(line)
194200
comments.flushTo(lines)
195201
return lines.getValue()
@@ -217,7 +223,38 @@ def OutOfHeader(line):
217223
return OutOfHeader
218224

219225
state = LookingForHeader
220-
for line in BytesIO(source):
226+
for line in UStringIO(source):
227+
state = state(line)
228+
return lines.getValue()
229+
230+
def removeSubroutinePrototypes(source):
231+
expression = re.compile(
232+
'/\* Subroutine \*/^\s*(?:(?:inline|static)\s+){0,2}(?!else|typedef|return)\w+\s+\*?\s*(\w+)\s*\([^0]+\)\s*;?'
233+
)
234+
lines = LineQueue()
235+
for line in UStringIO(source):
236+
if not expression.match(line):
237+
lines.add(line)
238+
239+
return lines.getValue()
240+
241+
def removeBuiltinFunctions(source):
242+
lines = LineQueue()
243+
def LookingForBuiltinFunctions(line):
244+
if line.strip() == '/* Builtin functions */':
245+
return InBuiltInFunctions
246+
else:
247+
lines.add(line)
248+
return LookingForBuiltinFunctions
249+
250+
def InBuiltInFunctions(line):
251+
if line.strip() == '':
252+
return LookingForBuiltinFunctions
253+
else:
254+
return InBuiltInFunctions
255+
256+
state = LookingForBuiltinFunctions
257+
for line in UStringIO(source):
221258
state = state(line)
222259
return lines.getValue()
223260

@@ -240,6 +277,8 @@ def scrubSource(source, nsteps=None, verbose=False):
240277
('clean source', cleanSource),
241278
('clean comments', cleanComments),
242279
('replace dlamch_() calls', replaceDlamch),
280+
('remove prototypes', removeSubroutinePrototypes),
281+
('remove builtin function prototypes', removeBuiltinFunctions),
243282
]
244283

245284
if nsteps is not None:

numpy/linalg/lapack_lite/f2c.h

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,4 +214,173 @@ typedef doublereal E_f; /* real function with -R not specified */
214214
#undef unix
215215
#undef vax
216216
#endif
217+
218+
/* https://anonscm.debian.org/cgit/collab-maint/libf2c2.git/tree/f2ch.add */
219+
220+
/* If you are using a C++ compiler, append the following to f2c.h
221+
for compiling libF77 and libI77. */
222+
223+
#ifdef __cplusplus
224+
extern "C" {
225+
#endif
226+
227+
extern int abort_(void);
228+
extern double c_abs(complex *);
229+
extern void c_cos(complex *, complex *);
230+
extern void c_div(complex *, complex *, complex *);
231+
extern void c_exp(complex *, complex *);
232+
extern void c_log(complex *, complex *);
233+
extern void c_sin(complex *, complex *);
234+
extern void c_sqrt(complex *, complex *);
235+
extern double d_abs(double *);
236+
extern double d_acos(double *);
237+
extern double d_asin(double *);
238+
extern double d_atan(double *);
239+
extern double d_atn2(double *, double *);
240+
extern void d_cnjg(doublecomplex *, doublecomplex *);
241+
extern double d_cos(double *);
242+
extern double d_cosh(double *);
243+
extern double d_dim(double *, double *);
244+
extern double d_exp(double *);
245+
extern double d_imag(doublecomplex *);
246+
extern double d_int(double *);
247+
extern double d_lg10(double *);
248+
extern double d_log(double *);
249+
extern double d_mod(double *, double *);
250+
extern double d_nint(double *);
251+
extern double d_prod(float *, float *);
252+
extern double d_sign(double *, double *);
253+
extern double d_sin(double *);
254+
extern double d_sinh(double *);
255+
extern double d_sqrt(double *);
256+
extern double d_tan(double *);
257+
extern double d_tanh(double *);
258+
extern double derf_(double *);
259+
extern double derfc_(double *);
260+
extern void do_fio(ftnint *, char *, ftnlen);
261+
extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
262+
extern integer do_uio(ftnint *, char *, ftnlen);
263+
extern integer e_rdfe(void);
264+
extern integer e_rdue(void);
265+
extern integer e_rsfe(void);
266+
extern integer e_rsfi(void);
267+
extern integer e_rsle(void);
268+
extern integer e_rsli(void);
269+
extern integer e_rsue(void);
270+
extern integer e_wdfe(void);
271+
extern integer e_wdue(void);
272+
extern void e_wsfe(void);
273+
extern integer e_wsfi(void);
274+
extern integer e_wsle(void);
275+
extern integer e_wsli(void);
276+
extern integer e_wsue(void);
277+
extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
278+
extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
279+
280+
extern double erf_(float *);
281+
extern double erfc_(float *);
282+
extern integer f_back(alist *);
283+
extern integer f_clos(cllist *);
284+
extern integer f_end(alist *);
285+
extern void f_exit(void);
286+
extern integer f_inqu(inlist *);
287+
extern integer f_open(olist *);
288+
extern integer f_rew(alist *);
289+
extern int flush_(void);
290+
extern void getarg_(integer *, char *, ftnlen);
291+
extern void getenv_(char *, char *, ftnlen, ftnlen);
292+
extern short h_abs(short *);
293+
extern short h_dim(short *, short *);
294+
extern short h_dnnt(double *);
295+
extern short h_indx(char *, char *, ftnlen, ftnlen);
296+
extern short h_len(char *, ftnlen);
297+
extern short h_mod(short *, short *);
298+
extern short h_nint(float *);
299+
extern short h_sign(short *, short *);
300+
extern short hl_ge(char *, char *, ftnlen, ftnlen);
301+
extern short hl_gt(char *, char *, ftnlen, ftnlen);
302+
extern short hl_le(char *, char *, ftnlen, ftnlen);
303+
extern short hl_lt(char *, char *, ftnlen, ftnlen);
304+
extern integer i_abs(integer *);
305+
extern integer i_dim(integer *, integer *);
306+
extern integer i_dnnt(double *);
307+
extern integer i_indx(char *, char *, ftnlen, ftnlen);
308+
extern integer i_len(char *, ftnlen);
309+
extern integer i_mod(integer *, integer *);
310+
extern integer i_nint(float *);
311+
extern integer i_sign(integer *, integer *);
312+
extern integer iargc_(void);
313+
extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
314+
extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
315+
extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
316+
extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
317+
extern void pow_ci(complex *, complex *, integer *);
318+
extern double pow_dd(double *, double *);
319+
extern double pow_di(double *, integer *);
320+
extern short pow_hh(short *, shortint *);
321+
extern integer pow_ii(integer *, integer *);
322+
extern double pow_ri(float *, integer *);
323+
extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
324+
extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
325+
extern double r_abs(float *);
326+
extern double r_acos(float *);
327+
extern double r_asin(float *);
328+
extern double r_atan(float *);
329+
extern double r_atn2(float *, float *);
330+
extern void r_cnjg(complex *, complex *);
331+
extern double r_cos(float *);
332+
extern double r_cosh(float *);
333+
extern double r_dim(float *, float *);
334+
extern double r_exp(float *);
335+
extern float r_imag(complex *);
336+
extern double r_int(float *);
337+
extern float r_lg10(real *);
338+
extern double r_log(float *);
339+
extern double r_mod(float *, float *);
340+
extern double r_nint(float *);
341+
extern double r_sign(float *, float *);
342+
extern double r_sin(float *);
343+
extern double r_sinh(float *);
344+
extern double r_sqrt(float *);
345+
extern double r_tan(float *);
346+
extern double r_tanh(float *);
347+
extern void s_cat(char *, char **, integer *, integer *, ftnlen);
348+
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
349+
extern void s_copy(char *, char *, ftnlen, ftnlen);
350+
extern int s_paus(char *, ftnlen);
351+
extern integer s_rdfe(cilist *);
352+
extern integer s_rdue(cilist *);
353+
extern integer s_rnge(char *, integer, char *, integer);
354+
extern integer s_rsfe(cilist *);
355+
extern integer s_rsfi(icilist *);
356+
extern integer s_rsle(cilist *);
357+
extern integer s_rsli(icilist *);
358+
extern integer s_rsne(cilist *);
359+
extern integer s_rsni(icilist *);
360+
extern integer s_rsue(cilist *);
361+
extern int s_stop(char *, ftnlen);
362+
extern integer s_wdfe(cilist *);
363+
extern integer s_wdue(cilist *);
364+
extern void s_wsfe( cilist *);
365+
extern integer s_wsfi(icilist *);
366+
extern integer s_wsle(cilist *);
367+
extern integer s_wsli(icilist *);
368+
extern integer s_wsne(cilist *);
369+
extern integer s_wsni(icilist *);
370+
extern integer s_wsue(cilist *);
371+
extern void sig_die(char *, int);
372+
extern integer signal_(integer *, void (*)(int));
373+
extern integer system_(char *, ftnlen);
374+
extern double z_abs(doublecomplex *);
375+
extern void z_cos(doublecomplex *, doublecomplex *);
376+
extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
377+
extern void z_exp(doublecomplex *, doublecomplex *);
378+
extern void z_log(doublecomplex *, doublecomplex *);
379+
extern void z_sin(doublecomplex *, doublecomplex *);
380+
extern void z_sqrt(doublecomplex *, doublecomplex *);
381+
382+
#ifdef __cplusplus
383+
}
384+
#endif
385+
217386
#endif

0 commit comments

Comments
 (0)
0