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 <mic...@gmail.com> wrote: > > On Wed, Dec 12, 2018 at 9:02 PM Henri Menke <henrime...@gmail.com> wrote: >> >> On 13/12/18 8:56 AM, Alan Braslau wrote: >>> On Wed, 12 Dec 2018 20:42:56 +0100 >>> "Mikael P. Sundqvist" <mic...@gmail.com> 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#index-j0 >> 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 ___________________________________________________________________________________