<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 25, 2019, 12:56 PM Stefan van der Walt <<a href="mailto:stefanv@berkeley.edu" target="_blank" rel="noreferrer">stefanv@berkeley.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u><div><div>On Fri, Sep 20, 2019, at 21:30, Robert Kern wrote:<br></div><blockquote type="cite" id="m_1654523374714601550m_6100740737507730935qt"><div dir="ltr"><div dir="ltr">Given the prevalence of Cython, it's actually really easy to use the Python API pretty easily in "C", so it's actually a huge waste if the C API matches the Python API too closely. The power and utility of the C API will be in how it *differs* from the Python API. For the distribution methods, this is largely in how it lets you sample one number at a time without bothering with the numpy and broadcasting overhead. That's the driving motivation for having a C API for the distributions, and the algorithms that we choose have consequences for the C API that will best satisfy that motivation.<br></div></div></blockquote><div><br></div><div>I'd like to clarify what exactly we mean by exposing a C API.  Do we have in mind that our random number generators can be used from standalone C code, or via Cython `cimport` like with the current numpy.pxd?</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Cython is the priority. Numba and cffi/ctypes are also desired and relatively easy to do with capsules. Pure C (via #include) is desired, but can be added later because doing that is more annoying. </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>It sounds like we want to expose the highest level generators; do we also want to provide access to the bit streams?</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">100%</div></div>