<br><br><div class="gmail_quote">On Jan 8, 2008 8:55 PM, David Cournapeau &lt;<a href="mailto:david@ar.media.kyoto-u.ac.jp">david@ar.media.kyoto-u.ac.jp</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Charles R Harris wrote:<br>&gt;<br>&gt;<br>&gt; On Jan 8, 2008 8:42 PM, David Cournapeau &lt;<a href="mailto:david@ar.media.kyoto-u.ac.jp">david@ar.media.kyoto-u.ac.jp</a><br></div><div class="Ih2E3d">
&gt; &lt;mailto:<a href="mailto:david@ar.media.kyoto-u.ac.jp">david@ar.media.kyoto-u.ac.jp</a>&gt;&gt; wrote:<br>&gt;<br>&gt; &nbsp; &nbsp; Charles R Harris wrote:<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; On Jan 8, 2008 6:49 PM, Eric Firing &lt;
<a href="mailto:efiring@hawaii.edu">efiring@hawaii.edu</a><br>&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:efiring@hawaii.edu">efiring@hawaii.edu</a>&gt;<br></div><div class="Ih2E3d">&gt; &nbsp; &nbsp; &gt; &lt;mailto: <a href="mailto:efiring@hawaii.edu">
efiring@hawaii.edu</a> &lt;mailto:<a href="mailto:efiring@hawaii.edu">efiring@hawaii.edu</a>&gt;&gt;&gt; wrote:<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; Bill Baxter wrote:<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt; On Jan 9, 2008 9:18 AM, Charles R Harris
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &lt;<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a><br>&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt;<br>&gt; &nbsp; &nbsp; &lt;mailto:
<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a><br>&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt;&gt;&gt; wrote:<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt; On Jan 8, 2008 5:01 PM, Bill Baxter &lt; 
<a href="mailto:wbaxter@gmail.com">wbaxter@gmail.com</a><br>&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:wbaxter@gmail.com">wbaxter@gmail.com</a>&gt;<br></div><div class="Ih2E3d">&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:wbaxter@gmail.com">
wbaxter@gmail.com</a> &lt;mailto:<a href="mailto:wbaxter@gmail.com">wbaxter@gmail.com</a>&gt;&gt;&gt; wrote:<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt; On Jan 9, 2008 8:03 AM, Charles R Harris<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &lt; <a href="mailto:charlesr.harris@gmail.com">
charlesr.harris@gmail.com</a><br>&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt;<br></div>&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com
</a> &lt;mailto:<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt;&gt;&gt;<br><div class="Ih2E3d">&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt; wrote:<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt; On Jan 8, 2008 1:58 PM, Bill Baxter &lt; 
<a href="mailto:wbaxter@gmail.com">wbaxter@gmail.com</a><br>&gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:wbaxter@gmail.com">wbaxter@gmail.com</a>&gt;<br></div><div><div></div><div class="Wj3C7c">&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &lt;mailto:<a href="mailto:wbaxter@gmail.com">
wbaxter@gmail.com</a> &lt;mailto:<a href="mailto:wbaxter@gmail.com">wbaxter@gmail.com</a>&gt;&gt;&gt; wrote:<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt; If you&#39;re really going to try to do it, Charles,<br>&gt; &nbsp; &nbsp; there&#39;s an
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt; implementation of float16 in the OpenEXR toolkit.<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt; <a href="http://www.openexr.com/" target="_blank">http://www.openexr.com/</a><br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt;
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt; Or more precisely it&#39;s in the files in the Half/ directory<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; of this:<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt;<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;<br>&gt; &nbsp; &nbsp; &gt;
<br>&gt; &nbsp; &nbsp; <a href="http://download.savannah.nongnu.org/releases/openexr/ilmbase-1.0.1.tar.gz" target="_blank">http://download.savannah.nongnu.org/releases/openexr/ilmbase-1.0.1.tar.gz</a><br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt; I don&#39;t know if it&#39;s IEEE conformant or not (especially
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; w.r.t. NaN&#39;s<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt; and such) but it should be a good start. &nbsp;The code<br>&gt; &nbsp; &nbsp; seems to<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; be well<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt;&gt; documented.
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt; The license looks good, essentially BSD. The code is<br>&gt; &nbsp; &nbsp; all C++,<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; which is<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt; the<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt; obvious way to go for this sort of thing, and I would
<br>&gt; &nbsp; &nbsp; like to<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; stick with<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt; it,<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt; but that could lead to build/compatibility problems. I<br>&gt; &nbsp; &nbsp; think<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; NumPy
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt; itself<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt;&gt; should really be in C++. &nbsp;Maybe scons can help with the<br>&gt; &nbsp; &nbsp; build.<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt; Yeh, I was just thinking you&#39;d rip out and C-ify the main
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; algorithms<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt;&gt; rather than trying to wrap it as-is.<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt; I&#39;d rather not C-ify the thing, I&#39;d rather C++-ify parts of<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; NumPy. I note
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;&gt; that MatPlotLab uses C++, so some of the problems must have<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; been solved.<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; A big chunk of C++ in matplotlib has just been replaced, largely
<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; because<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; it was so hard to understand and extend for everyone but its<br>&gt; &nbsp; &nbsp; author.<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; There is still C++ code as well as C code in mpl. &nbsp;Personally, I<br>
&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; prefer<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; the C.<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &gt; If you think that&#39;s easier then go for it.<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; The opinion that C++ would improve numpy is not universal,
<br>&gt; &nbsp; &nbsp; and has<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; been<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; discussed.<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; <a href="http://article.gmane.org/gmane.comp.python.numeric.general/13244" target="_blank">http://article.gmane.org/gmane.comp.python.numeric.general/13244
</a><br>&gt; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &lt;<br>&gt; &nbsp; &nbsp; <a href="http://article.gmane.org/gmane.comp.python.numeric.general/13244" target="_blank">http://article.gmane.org/gmane.comp.python.numeric.general/13244</a>&gt;<br>&gt; &nbsp; &nbsp; &gt;
<br>&gt; &nbsp; &nbsp; &gt;<br>&gt; &nbsp; &nbsp; &gt; Ah, the trick to interfacing C to C++ is to derive the C++ classes<br>&gt; &nbsp; &nbsp; &gt; from the numpy structures and keep the function pointers. Then<br>&gt; &nbsp; &nbsp; all the<br>&gt; &nbsp; &nbsp; &gt; offsets would work. I would think the main advantage of C++ would be
<br>&gt; &nbsp; &nbsp; &gt; in arithmetic operator overloading and using template classes while<br>&gt; &nbsp; &nbsp; &gt; carefully restricting such things to numbers. Mostly, I would<br>&gt; &nbsp; &nbsp; use C++<br>&gt; &nbsp; &nbsp; &gt; inline class methods as shorthand that would compile to what the C
<br>&gt; &nbsp; &nbsp; &gt; approach would do. I suppose we could write a python<br>&gt; &nbsp; &nbsp; preprocessor that<br>&gt; &nbsp; &nbsp; &gt; would do essentially the same thing; C++ started that way.<br>&gt; &nbsp; &nbsp; Are you suggesting to write a compiler to be able to use operator
<br>&gt; &nbsp; &nbsp; overloading ? :) More seriously, the problem of C/C++ is not only at<br>&gt; &nbsp; &nbsp; source level but also at binary level.<br>&gt;<br>&gt;<br>&gt; As &nbsp;I tried to say, there are ways of dealing with the compatibility
<br>&gt; problems at the binary level.<br></div></div>Sorry, I was not precise enough: I talked at the binary level wrt<br>compilers. C++ object code compiled by different compilers are not<br>always compatible, without talking about known linking problems. I am
</blockquote><div><br>This can also be true of C code unless you use compilers in the same family. The C++ name mangling can be worked around. I&#39;m just thinking out loud about these things. Note that numpy already uses what are essentially templates to generate C code using a Python preprocessor, although perhaps the design could be a bit cleaner and maybe a bit more general so as not to be limited to the C builtin types.  What I want is a clean way to get around the limitations of the builtin C numeric types. The ability is there in the Python numeric type, which is function pointer based, so the rest just comes down to ease of coding and trying to make the result efficient. The last is where operator overloading and inline code might come in so as to avoid always calling through a pointer, but it might not be worth the hassle and the returns might be too small to take that last step.
<br><br>I see that there are already a number of parsers available for Python, SPARK, for instance is included in the 2.5.1 distribution. <br><br>Chuck<br></div></div>