deriv_jcalculus_ does symbolic differentiation on tacit expressions.
For example:

   load'math/calculus'
   (3+*:) deriv_jcalculus_ 1
0"0 + +:
   3 0 1&p. deriv_jcalculus_ 1
0 2&p.
   (3+*:) deriv_jcalculus_ 1 i. 5
0 2 4 6 8
   3 0 1&p. deriv_jcalculus_ 1 i. 5
0 2 4 6 8

(The right argument to deriv_jcalculus_ is how many times to take the
derivative, a negative argument does symbolic integration instead,
with an integration constant of 0. But integration is a bit fussier
than derivation, so it has less support for variant expressions.)

FYI,

-- 
Raul

On Wed, May 19, 2021 at 4:17 AM Thomas McGuire <tmcguir...@gmail.com> wrote:
>
> Thanks Raul,
> I added your ‘tail' implementation to the code and it works without issue. 
> The KJV text is listed in reverse line order in the output file.
>
>     benchmarks ''
> sumloop: 0.227858 8.39149e6
> sumj: 0.000171 1.04986e6
> ack: 2e_6 721472
> array1: 5.6e_5 1.05107e6
> array1t: 4.8e_5 1.05107e6
> string1: 0.003969 2.88634e6
> cat: 0.01474 2.51685e7
> wc: 0.295076 1.58152e8
> tail: 0.065197 3.77133e7
> sum1: 0.12709 4.04989e7
> sum1j: 0.000547 1.18086e6
>
> I have placed the code on GitHub:
> https://github.com/tmcguirefl/JBenchmarks
>
> The scheme folks have put together a large set of benchmarks at:
> https://www.ccs.neu.edu/home/will/Twobit/benchmarksAboutR6.html
>
> When time permits I will go through them and implement the ones that would be 
> J appropriate (some do symbolic differentiation which would be nontrivial for 
> me to code into J).
>
> Tom McGuire
>
> > On May 18, 2021, at 9:04 PM, Raul Miller <rauldmil...@gmail.com> wrote:
> >
> > Here's the tail benchmark written in J:
> >
> > tail=: 4 : 0
> >  (;|.<;.2 freads x) fwrites y
> > )
> >
> > This is based on my reading of the C implementation of the tail
> > benchmark vs the cat benchmark, and on the cat benchmark in this J
> > implementation, except that I have failed to reproduce a bug in the C
> > implementation which shows up when the file contains very long lines
> > and instead I have assumed that the file ends in a newline (which is a
> > valid assumption for the gutenberg kjv bible).
> >
> > Let me know if you think I have made a mistake here.
> >
> > Thanks,
> >
> > --
> > Raul
> >
> > On Tue, May 18, 2021 at 7:02 PM Thomas McGuire <tmcguir...@gmail.com 
> > <mailto:tmcguir...@gmail.com>> wrote:
> >>
> >> I was going over Devon McCormick's notes from the latest NYCJUG meeting. 
> >> There was a discussion about Benchmarks with an example of the 
> >> Kernighan/Van Wyk benchmarks in LISP/Scheme. Devon had made the comment 
> >> that for most things people use J for that correctness overshadowed 
> >> performance.
> >>
> >> The K/VW benchmarks were originally made for C and seem to test looping 
> >> controls and memory allocation which at a time of low memory minicomputers 
> >> and PCs, coupled with multiple available C compilers, made the benchmarks 
> >> a nice way of comparing compiler implementations as well as new processor 
> >> speed.
> >>
> >> However it seemed like a simple project to exercise my J programming 
> >> skills with so I have attached the program to this email.
> >>
> >> Note: you will need to download the King James Version of the Bible from 
> >> project Guttenburg (not included with the attachment) to run the full 
> >> benchmarks. I also created my own file of floating point numbers to sum 
> >> (routine to create a file of random floats is included). I have added some 
> >> routines to accomplish similar functionality in the way I would do it in J 
> >> (at least for my mere mortal understanding of J).
> >>
> >> Running on my mac book pro (2016 with 2.9 Ghz Quad core I7) the results 
> >> are:
> >>
> >>   benchmarks ''
> >> sumloop: 0.214383 8.39149e6
> >> sumj: 0.000162 1.04986e6
> >> ack: 4e_6 721472
> >> array1: 0.000578 1.05107e6
> >> array1t: 2.5e_5 1.05107e6
> >> string1: 0.003237 2.88634e6
> >> cat: 0.014234 2.51685e7
> >> wc: 0.302383 1.58152e8
> >> sum1: 0.124006 4.04989e7
> >> sum1j: 0.000956 1.18086e6
> >>
> >> thought I would share
> >>
> >> Tom McGuire
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm 
> >> <http://www.jsoftware.com/forums.htm>
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm 
> > <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