* numarray on Cygwin
@ 2002-05-06 15:37 Jochen Küpper
2002-05-07 5:57 ` [Numpy-discussion] " Todd Miller
0 siblings, 1 reply; 2+ messages in thread
From: Jochen Küpper @ 2002-05-06 15:37 UTC (permalink / raw)
To: numpy-discussion, cygwin
[-- Attachment #1: Type: text/plain, Size: 1812 bytes --]
I am trying to run numarray on Cygwin.
(Where Numeric seems to work fine.)
In order to compile it I had to change the use of round to rint, as
Cygwin's C library (newlib) doesn't have round. The patch is
attached.
When I use it I don't get far, though:
,----
| > python
| Python 2.2 (#1, Dec 31 2001, 15:21:18)
| [GCC 2.95.3-5 (cygwin special)] on cygwin
| Type "help", "copyright", "credits" or "license" for more information.
| >>> import numarray as na
| >>> x = na.array([1.0, 2.0])
| >>> x
| Traceback (most recent call last):
| File "<stdin>", line 1, in ?
| File "/usr/lib/python2.2/site-packages/numarray/numarray.py", line 591, in __repr__
| MAX_LINE_WIDTH, PRECISION, SUPPRESS_SMALL, ', ', 1)
| File "/usr/lib/python2.2/site-packages/numarray/arrayprint.py", line 86, in array2string
| format, item_length = _floatFormat(data, precision, suppress_small)
| File "/usr/lib/python2.2/site-packages/numarray/arrayprint.py", line 140, in _floatFormat
| non_zero = numarray.abs(numarray.compress(numarray.not_equal(data, 0), data))
| File "/usr/lib/python2.2/site-packages/numarray/ufunc.py", line 474, in __call__
| cfunc, ufargs, scalar)
| File "/usr/lib/python2.2/site-packages/numarray/ufunc.py", line 312, in _doit
| apply(cfunc, ufargs)
| TypeError: 'PyCObject' object is not callable
| >>>
`----
If I print out the type of cfunc down in _doit, I get (the expected)
,----
| <type 'PyCObject'>
`----
Any ideas, probably some hints how to proceed?
Greetings,
Jochen
--
University of North Carolina phone: +1-919-962-4403
Department of Chemistry phone: +1-919-962-1579
Venable Hall CB#3290 (Kenan C148) fax: +1-919-843-6041
Chapel Hill, NC 27599, USA GnuPG key: 44BCCD8E
[-- Attachment #2: numarray.diff --]
[-- Type: text/x-patch, Size: 6898 bytes --]
? Lib/ChangeLog
? Lib/numinclude.py
Index: Include/numarray/ChangeLog
===================================================================
RCS file: /cvsroot/numpy/numarray/Include/numarray/ChangeLog,v
retrieving revision 1.1
diff -u -r1.1 ChangeLog
--- Include/numarray/ChangeLog 22 Apr 2002 20:33:16 -0000 1.1
+++ Include/numarray/ChangeLog 6 May 2002 22:32:43 -0000
@@ -1,8 +1,18 @@
+2002-05-06 Jochen Küpper <jochen@unc.edu>
+
+ * numcomplex.h (NUM_CROUND): Use rint instead of round. The latter is
+ not available on all systems, namely Cygwin.
+
2002-04-10 Jochen Küpper <jochen@unc.edu>
* ndarrayinfo.h: Change NDInfo->strides to NDInfo->stride for
consistency. Adopt all sources accordingly.
- * genapi.py (bodystring): Do not include emacs' Local Variables
- section into gnerated files.
+ * genapi.py (bodystring): Do not include emacs' Local Variables section
+ into gnerated files.
+
+ * Local Variables:
+ * mode: auto-fill
+ * fill-column: 79
+ * End:
Index: Include/numarray/numcomplex.h
===================================================================
RCS file: /cvsroot/numpy/numarray/Include/numarray/numcomplex.h,v
retrieving revision 1.5
diff -u -r1.5 numcomplex.h
--- Include/numarray/numcomplex.h 30 Apr 2002 17:29:43 -0000 1.5
+++ Include/numarray/numcomplex.h 6 May 2002 22:32:43 -0000
@@ -228,7 +228,7 @@
#define NUM_CCEIL(p, s) (s).r = ceil((p).r); (s).i = ceil((p).i);
#define NUM_CFABS(p, s) (s).r = fabs((p).r); (s).i = fabs((p).i);
-#define NUM_CROUND(p, s) (s).r = round((p).r); (s).i = round((p).i);
+#define NUM_CROUND(p, s) (s).r = rint((p).r); (s).i = rint((p).i);
#define NUM_CHYPOT(p, q, s) { Complex64 t; \
NUM_CSQR(p, s); NUM_CSQR(q, t); \
NUM_CADD(s, t, s); \
Index: Lib/codegenerator.py
===================================================================
RCS file: /cvsroot/numpy/numarray/Lib/codegenerator.py,v
retrieving revision 1.22
diff -u -r1.22 codegenerator.py
--- Lib/codegenerator.py 3 May 2002 19:14:06 -0000 1.22
+++ Lib/codegenerator.py 6 May 2002 22:32:44 -0000
@@ -1593,7 +1593,7 @@
["minimum", 2, 1, (function_td, "ufminimum"), generic_operator_sigs, opt_minmax_decl],
["fabs", 1, 1, (function_td, "fabs"), generic_mathfunction_sigs, ""],
-["around", 1, 1, (function_td, "round"), generic_mathfunction_sigs, ""],
+["around", 1, 1, (function_td, "rint"), generic_mathfunction_sigs, ""],
["hypot", 2, 1, (function_td, "hypot"), generic_mathfunction_sigs, ""],
# Complex ufuncs
Index: Src/_ufuncBoolmodule.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncBoolmodule.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncBoolmodule.c
--- Src/_ufuncBoolmodule.c 29 Apr 2002 21:39:50 -0000 1.8
+++ Src/_ufuncBoolmodule.c 6 May 2002 22:32:45 -0000
@@ -2365,7 +2365,7 @@
Float32 *tout = (Float32 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
Index: Src/_ufuncFloat32module.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncFloat32module.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncFloat32module.c
--- Src/_ufuncFloat32module.c 29 Apr 2002 21:39:50 -0000 1.8
+++ Src/_ufuncFloat32module.c 6 May 2002 22:32:45 -0000
@@ -1773,7 +1773,7 @@
Float32 *tout = (Float32 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
Index: Src/_ufuncFloat64module.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncFloat64module.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncFloat64module.c
--- Src/_ufuncFloat64module.c 29 Apr 2002 21:39:50 -0000 1.8
+++ Src/_ufuncFloat64module.c 6 May 2002 22:32:45 -0000
@@ -1773,7 +1773,7 @@
Float64 *tout = (Float64 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
Index: Src/_ufuncInt16module.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncInt16module.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncInt16module.c
--- Src/_ufuncInt16module.c 29 Apr 2002 21:39:51 -0000 1.8
+++ Src/_ufuncInt16module.c 6 May 2002 22:32:45 -0000
@@ -2254,7 +2254,7 @@
Float32 *tout = (Float32 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
Index: Src/_ufuncInt32module.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncInt32module.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncInt32module.c
--- Src/_ufuncInt32module.c 29 Apr 2002 21:39:51 -0000 1.8
+++ Src/_ufuncInt32module.c 6 May 2002 22:32:45 -0000
@@ -2254,7 +2254,7 @@
Float32 *tout = (Float32 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
Index: Src/_ufuncInt8module.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncInt8module.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncInt8module.c
--- Src/_ufuncInt8module.c 29 Apr 2002 21:39:51 -0000 1.8
+++ Src/_ufuncInt8module.c 6 May 2002 22:32:45 -0000
@@ -2254,7 +2254,7 @@
Float32 *tout = (Float32 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
Index: Src/_ufuncUInt16module.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncUInt16module.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncUInt16module.c
--- Src/_ufuncUInt16module.c 29 Apr 2002 21:39:51 -0000 1.8
+++ Src/_ufuncUInt16module.c 6 May 2002 22:32:45 -0000
@@ -2249,7 +2249,7 @@
Float32 *tout = (Float32 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
Index: Src/_ufuncUInt8module.c
===================================================================
RCS file: /cvsroot/numpy/numarray/Src/_ufuncUInt8module.c,v
retrieving revision 1.8
diff -u -r1.8 _ufuncUInt8module.c
--- Src/_ufuncUInt8module.c 29 Apr 2002 21:39:51 -0000 1.8
+++ Src/_ufuncUInt8module.c 6 May 2002 22:32:45 -0000
@@ -2249,7 +2249,7 @@
Float32 *tout = (Float32 *) buffers[1];
for (i=0; i<niter; i++, tin++, tout++) {
- *tout = round(*tin);
+ *tout = rint(*tin);
}
return 0;
}
[-- Attachment #3: Type: text/plain, Size: 214 bytes --]
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Numpy-discussion] numarray on Cygwin
2002-05-06 15:37 numarray on Cygwin Jochen Küpper
@ 2002-05-07 5:57 ` Todd Miller
0 siblings, 0 replies; 2+ messages in thread
From: Todd Miller @ 2002-05-07 5:57 UTC (permalink / raw)
To: Jochen Küpper; +Cc: numpy-discussion, cygwin
Jochen Küpper wrote:
>I am trying to run numarray on Cygwin.
>(Where Numeric seems to work fine.)
>
>In order to compile it I had to change the use of round to rint, as
>Cygwin's C library (newlib) doesn't have round. The patch is
>attached.
>
>When I use it I don't get far, though:
>,----
>| > python
>| Python 2.2 (#1, Dec 31 2001, 15:21:18)
>| [GCC 2.95.3-5 (cygwin special)] on cygwin
>| Type "help", "copyright", "credits" or "license" for more information.
>| >>> import numarray as na
>| >>> x = na.array([1.0, 2.0])
>| >>> x
>| Traceback (most recent call last):
>| File "<stdin>", line 1, in ?
>| File "/usr/lib/python2.2/site-packages/numarray/numarray.py", line 591, in __repr__
>| MAX_LINE_WIDTH, PRECISION, SUPPRESS_SMALL, ', ', 1)
>| File "/usr/lib/python2.2/site-packages/numarray/arrayprint.py", line 86, in array2string
>| format, item_length = _floatFormat(data, precision, suppress_small)
>| File "/usr/lib/python2.2/site-packages/numarray/arrayprint.py", line 140, in _floatFormat
>| non_zero = numarray.abs(numarray.compress(numarray.not_equal(data, 0), data))
>| File "/usr/lib/python2.2/site-packages/numarray/ufunc.py", line 474, in __call__
>| cfunc, ufargs, scalar)
>| File "/usr/lib/python2.2/site-packages/numarray/ufunc.py", line 312, in _doit
>| apply(cfunc, ufargs)
>| TypeError: 'PyCObject' object is not callable
>| >>>
>`----
>If I print out the type of cfunc down in _doit, I get (the expected)
>,----
>| <type 'PyCObject'>
>`----
>
>Any ideas, probably some hints how to proceed?
>
Hi Jochen,
Trying to call a PyCObject is a symptom of an inconsistent installation.
Extension functions stopped being passed around as PyCObjects in
numarray-0.3. Instead, I created a new C-type called CFunc which binds
an "extension function implementation" to the correct generic wrapper.
An added benefit was that CFuncs are directly callable as python
functions, whereas PyCObjects were not.
The repr of a CFunc looks more like:
>>> import _ufuncInt32
>>> _ufuncInt32.functionDict[_ufuncInt32.functionDict.keys()[0]]
<cfunc 'rshift_Int32_reduce' at 4019ffec check-self:0 align:1 io:(1, 1)>
So, it appears that your c-extensions are not yet updated to CFuncs, but
your numarray python code is updated to CFuncs.
I suggest deleting your numarray installation and re-installing.
Todd
>
>Greetings,
>Jochen
>
>
>------------------------------------------------------------------------
>
>? Lib/ChangeLog
>? Lib/numinclude.py
>Index: Include/numarray/ChangeLog
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Include/numarray/ChangeLog,v
>retrieving revision 1.1
>diff -u -r1.1 ChangeLog
>--- Include/numarray/ChangeLog 22 Apr 2002 20:33:16 -0000 1.1
>+++ Include/numarray/ChangeLog 6 May 2002 22:32:43 -0000
>@@ -1,8 +1,18 @@
>+2002-05-06 Jochen Küpper <jochen@unc.edu>
>+
>+ * numcomplex.h (NUM_CROUND): Use rint instead of round. The latter is
>+ not available on all systems, namely Cygwin.
>+
> 2002-04-10 Jochen Küpper <jochen@unc.edu>
>
> * ndarrayinfo.h: Change NDInfo->strides to NDInfo->stride for
> consistency. Adopt all sources accordingly.
>
>- * genapi.py (bodystring): Do not include emacs' Local Variables
>- section into gnerated files.
>+ * genapi.py (bodystring): Do not include emacs' Local Variables section
>+ into gnerated files.
>+
>
>+ * Local Variables:
>+ * mode: auto-fill
>+ * fill-column: 79
>+ * End:
>Index: Include/numarray/numcomplex.h
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Include/numarray/numcomplex.h,v
>retrieving revision 1.5
>diff -u -r1.5 numcomplex.h
>--- Include/numarray/numcomplex.h 30 Apr 2002 17:29:43 -0000 1.5
>+++ Include/numarray/numcomplex.h 6 May 2002 22:32:43 -0000
>@@ -228,7 +228,7 @@
> #define NUM_CCEIL(p, s) (s).r = ceil((p).r); (s).i = ceil((p).i);
>
> #define NUM_CFABS(p, s) (s).r = fabs((p).r); (s).i = fabs((p).i);
>-#define NUM_CROUND(p, s) (s).r = round((p).r); (s).i = round((p).i);
>+#define NUM_CROUND(p, s) (s).r = rint((p).r); (s).i = rint((p).i);
> #define NUM_CHYPOT(p, q, s) { Complex64 t; \
> NUM_CSQR(p, s); NUM_CSQR(q, t); \
> NUM_CADD(s, t, s); \
>Index: Lib/codegenerator.py
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Lib/codegenerator.py,v
>retrieving revision 1.22
>diff -u -r1.22 codegenerator.py
>--- Lib/codegenerator.py 3 May 2002 19:14:06 -0000 1.22
>+++ Lib/codegenerator.py 6 May 2002 22:32:44 -0000
>@@ -1593,7 +1593,7 @@
> ["minimum", 2, 1, (function_td, "ufminimum"), generic_operator_sigs, opt_minmax_decl],
>
> ["fabs", 1, 1, (function_td, "fabs"), generic_mathfunction_sigs, ""],
>-["around", 1, 1, (function_td, "round"), generic_mathfunction_sigs, ""],
>+["around", 1, 1, (function_td, "rint"), generic_mathfunction_sigs, ""],
> ["hypot", 2, 1, (function_td, "hypot"), generic_mathfunction_sigs, ""],
>
> # Complex ufuncs
>Index: Src/_ufuncBoolmodule.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncBoolmodule.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncBoolmodule.c
>--- Src/_ufuncBoolmodule.c 29 Apr 2002 21:39:50 -0000 1.8
>+++ Src/_ufuncBoolmodule.c 6 May 2002 22:32:45 -0000
>@@ -2365,7 +2365,7 @@
> Float32 *tout = (Float32 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>Index: Src/_ufuncFloat32module.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncFloat32module.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncFloat32module.c
>--- Src/_ufuncFloat32module.c 29 Apr 2002 21:39:50 -0000 1.8
>+++ Src/_ufuncFloat32module.c 6 May 2002 22:32:45 -0000
>@@ -1773,7 +1773,7 @@
> Float32 *tout = (Float32 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>Index: Src/_ufuncFloat64module.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncFloat64module.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncFloat64module.c
>--- Src/_ufuncFloat64module.c 29 Apr 2002 21:39:50 -0000 1.8
>+++ Src/_ufuncFloat64module.c 6 May 2002 22:32:45 -0000
>@@ -1773,7 +1773,7 @@
> Float64 *tout = (Float64 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>Index: Src/_ufuncInt16module.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncInt16module.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncInt16module.c
>--- Src/_ufuncInt16module.c 29 Apr 2002 21:39:51 -0000 1.8
>+++ Src/_ufuncInt16module.c 6 May 2002 22:32:45 -0000
>@@ -2254,7 +2254,7 @@
> Float32 *tout = (Float32 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>Index: Src/_ufuncInt32module.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncInt32module.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncInt32module.c
>--- Src/_ufuncInt32module.c 29 Apr 2002 21:39:51 -0000 1.8
>+++ Src/_ufuncInt32module.c 6 May 2002 22:32:45 -0000
>@@ -2254,7 +2254,7 @@
> Float32 *tout = (Float32 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>Index: Src/_ufuncInt8module.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncInt8module.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncInt8module.c
>--- Src/_ufuncInt8module.c 29 Apr 2002 21:39:51 -0000 1.8
>+++ Src/_ufuncInt8module.c 6 May 2002 22:32:45 -0000
>@@ -2254,7 +2254,7 @@
> Float32 *tout = (Float32 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>Index: Src/_ufuncUInt16module.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncUInt16module.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncUInt16module.c
>--- Src/_ufuncUInt16module.c 29 Apr 2002 21:39:51 -0000 1.8
>+++ Src/_ufuncUInt16module.c 6 May 2002 22:32:45 -0000
>@@ -2249,7 +2249,7 @@
> Float32 *tout = (Float32 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>Index: Src/_ufuncUInt8module.c
>===================================================================
>RCS file: /cvsroot/numpy/numarray/Src/_ufuncUInt8module.c,v
>retrieving revision 1.8
>diff -u -r1.8 _ufuncUInt8module.c
>--- Src/_ufuncUInt8module.c 29 Apr 2002 21:39:51 -0000 1.8
>+++ Src/_ufuncUInt8module.c 6 May 2002 22:32:45 -0000
>@@ -2249,7 +2249,7 @@
> Float32 *tout = (Float32 *) buffers[1];
>
> for (i=0; i<niter; i++, tin++, tout++) {
>- *tout = round(*tin);
>+ *tout = rint(*tin);
> }
> return 0;
> }
>
> numarray.diff
>
> Content-Type:
>
> text/x-patch
> Content-Encoding:
>
> quoted-printable
>
>
--
Todd Miller jmiller@stsci.edu
STSCI / SSG (410) 338 4576
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2002-05-07 12:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-05-06 15:37 numarray on Cygwin Jochen Küpper
2002-05-07 5:57 ` [Numpy-discussion] " Todd Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).