Of course, it is:
double jn(int n,double x);
and
vardef jn(expr n, x) = scantokens(lua("mp.quoted( ffi.C.jn(" & decimal n & "," & decimal x & "))")) enddef ;
Alan
(shows that I have yet to use jn ;-)
On Thu, 13 Dec 2018 14:32:39 +0100
Otared Kavian
Hi Mikael,
Thank you, as ell as Alan and Henri, for giving us a simple way to use Bessel functions, directly in ConTeXt. However I have a question, which may show my total ignorance of the maths libraries ffi and consorts: how do you specify the value of the integr $n$ when you want to use $J_{n}(x)$?
Best regards: OK
On 12 Dec 2018, at 21:13, Mikael P. Sundqvist
wrote: On Wed, Dec 12, 2018 at 9:02 PM Henri Menke
wrote: On 13/12/18 8:56 AM, Alan Braslau wrote:
On Wed, 12 Dec 2018 20:42:56 +0100 "Mikael P. Sundqvist"
wrote: Thanks, Alan! That looks very promising. I could not make it work, though, and I guess that is because I use linux and do not know what to change for what. I installed libcerf but I assume something else is missing. In any case, this is one of the things it would be nice to have, at least as a module. I have no idea on how to realize that, though.
/Mikael
You likely also need to install libffi - I do not know what package this is on your flavor of linux - Luigi is the ffi specialist!
FFI is integrated in LuaTeX >= 1.03
In you example you load libcerf but you are not using it. What you are actually using are the Bessel function from the C Standard library. GCC includes them as a GNU extension. https://www.gnu.org/software/libc/manual/html_node/Special-Functions.html#in... Your example also works if you remove libcerf (at least for me on Linux).
Thanks Henri! Indeed it worked now. The following example (just in case someone else did not get what to change) compiles here, and shows the expected graph. This is very good news!
\startluacode
ffi = require("ffi") ffi.cdef[[ double j0(double x); double j1(double x); double jn(double x); ]]
\stopluacode
\startMPdefinitions{doublefun} vardef jzero primary x = scantokens(lua("mp.quoted( ffi.C.j0(" & decimal x & "))")) enddef ; vardef jone primary x = scantokens(lua("mp.quoted( ffi.C.j1(" & decimal x & "))")) enddef ; vardef jn primary x = scantokens(lua("mp.quoted( ffi.C.jn(" & decimal x & "))")) enddef ; \stopMPdefinitions
\starttext \startMPpage[instance=doublefun] draw function(1,"x","jone(x)",epsed(0),epsed(10),1/10) scaled 1cm; \stopMPpage \stoptext
/Mikael ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________