Functions for which there is a function in the C library will invoke the C
library function: sin, cos, exp, log, etc., usually with some surrounding C
code to implement J requirements.  The monad o. (pi times) uses
"*zv++=pi**wv++;" where zv is a pointer to the result and wv is a pointer
to the argument and pi is a "double" scalar with the appropriate value and
is, I expect, as fast as what you can do in C.

As well, Appendix B of the
dictionary<http://www.jsoftware.com/help/dictionary/special.htm>and
the links in that page give you an idea of the optimizations that have
been worked on.  In particular, functions with "integrated rank support"
(listed under f"r), including the so-called scalar functions (+ - * % >. <.
etc.) are quite fast and should be competitive with any other language.

There is as yet no exploitation of multicore.



On Thu, May 30, 2013 at 5:34 AM, Robert Herman <[email protected]> wrote:

> Yes, different tools do make you see the same problem from different
> angles. I am trying to repeat my exercises in J also in Mathematica and
> vice-versa. Some colleagues are saying I should learn F#, however, I find J
> to be more mind-opening in the sense that I have dabbled with some
> functional languages and you can do functional in J too.
> My speed question is not simply a general benchmark question. I am curious
> on how things work beneath the IDE and the J scripts. For instance, how pi
> or 'o. 1' is implemented. Is it calling a C routine that uses a standard
> way of calculating pi? Or Sin (1 o. 1r3p1 = 0.866)? I am not a HFT looking
> to shave calculation times by milliseconds (nanoseconds?), but when I
> dabbled with the programming language Oz, some calculations took minutes!
> Thanks again.
>
> Rob
>
>
> On Wed, May 29, 2013 at 8:34 PM, Raul Miller <[email protected]>
> wrote:
>
> > I do not fully understand your questions, but if I were learning math,
> > I would try to keep using both tools.
> >
> > The issues, in my mind include perspective (different tools reveal
> > different aspects of issues) and accessibility (when you are learning
> > you will need to draw as many useful connections as you can).
> >
> > Put differently, on the one hand you have limited time to figure
> > things out and it takes time to express things in multiple ways, but
> > on the other hand it's the process of figuring out how to express
> > things in different ways that constitutes learning maths.
> >
> > That said, J doesn't inherently use libraries (other than the standard
> > C libraries) but can use things like LAPACK.  It's not LAPACK support
> > is built into J but that the interpreter allows you to reference
> > arbitrary shared libraries (or DLLs on windows).  [So, for example,
> > it's possible to have a J script which includes compiled C, finds and
> > runs a C compiler on it [assuming one is available], then links to the
> > result. This isn't implementation pattern particularly common though,
> > because using external libraries means that they can crash and take
> > down your J session with it. It's also possible to run such libraries
> > in an external program, of course - including a copy of your J
> > session.]
> >
> > Meanwhile, for speed... it is very difficult to make generally valid
> > statements here. Expect some things to be faster on one system and
> > others to be faster on another. Expect also that choices you make will
> > have disproportionate influences on speed.
> >
> > --
> > Raul
> >
> > On Wed, May 29, 2013 at 1:39 AM, Robert Herman <[email protected]>
> > wrote:
> > > I am trying to evaluate J for doing mathematics vs. Mathematica. I own
> > the
> > > Home edition of Mathematica. At the moment, I am trying to teach myself
> > > higher maths with an eye towards completing my maths degree online. I
> > never
> > > finished my degree many moons ago. I like the notebook structure and
> > > multi-paradigm approach in Mathematica, but I am gravitating towards
> J's
> > > succinctness and analogy to learning it's symbols akin to mathematics'
> > > symbols. Iverson's 'Notation as a Tool of Thought' really grabbed me.
> My
> > > latest curiosity about J, if I understand it correctly, is that J is
> > > provided as an executable for several platforms. That it was written in
> > C.
> > > Now, does it implement standard c maths libraries optimized for speed
> and
> > > accuracy? How does the linux version compare to Mathematica in terms of
> > > doing certain operations, say large arrays, for signal processing,
> from a
> > > time and numerical accuracy index? Where can I find a listing of the
> > > libraries it uses, in the source headers? Thank you.
> > >
> > > Rob
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to