Bill is right. I tried viewing Roger's APL Hashing paper in the Chrome
browser on my Samsung Galaxy Note 2 (Android 4.4.2), and many of the APL
characters were missing. The same characters were missing in  Roger's APL
code in in his email, viewed my Android Gmail. So "NO LONGER A PROBLEM" is
more like "still mostly a problem".

Skip
On Aug 1, 2014 7:30 PM, "bill lam" <[email protected]> wrote:

> Many of those apl symbols cannot display in
> android(browser,firefox,chrome). IIRC users cannot install new fonts into
> android, but apps can bundle fonts for its own use.
> On Aug 1, 2014 3:03 AM, "Roger Hui" <[email protected]> wrote:
>
> > I suspect it has more to do with whatever fonts are installed on the
> > machine rather than Windows 7 v Windows 8.  But it is NO LONGER A
> PROBLEM™.
> > ☺
> >
> > A few years ago I discovered that my machine "just works" with displaying
> > Chinese characters.  But still no APL :-(
> >
> >
> > On Thu, Jul 31, 2014 at 11:45 AM, Raul Miller <[email protected]>
> > wrote:
> >
> > > That's a good clue!
> > >
> > > http://jsoftware.com/pipermail/programming/2014-July/038610.html
> renders
> > > correctly for me when I visit it from a windows 8 machine.
> > >
> > > It renders incorrectly when I visit it from a windows 7 machine.
> > >
> > > I was going to try it on an openbsd 5.5 machine, but that's failing
> right
> > > now. Maybe I'll try later. (It crashed and filled my hard disk the
> other
> > > day. I tried building a copy from source which failed with a permission
> > > denied problem building pulseaudo-4.0p1 and... anyways, I don't have an
> > > openbsd browser that can display apl characters. When I try lynx I get
> a
> > > literal display of character entities...)
> > >
> > > Thanks,
> > >
> > > --
> > > Raul
> > >
> > >
> > >
> > > On Thu, Jul 31, 2014 at 2:35 PM, Skip Cave <[email protected]>
> > > wrote:
> > >
> > > > It is interesting that Roger's APL code seems to correctly render all
> > the
> > > > APL characters in the Gmail page in my Firefox browser, as well as
> > Gmail
> > > in
> > > > Chrome & IE, with no effort on my part. However, the line wrap tends
> to
> > > > mess up Rogers neat indenting in all of the browsers in the same
> way. I
> > > > suspect that NO LONGER A PROBLEM is more like "somewhat less of a
> > > problem"
> > > > now.
> > > >
> > > > Skip
> > > >
> > > > Skip Cave
> > > > Cave Consulting LLC
> > > >
> > > >
> > > > On Thu, Jul 31, 2014 at 10:37 AM, Roger Hui <
> [email protected]
> > >
> > > > wrote:
> > > >
> > > > > There is no point to hashing or small-range or ... if you only have
> > one
> > > > > item in the right argument.  Benchmarks in the paper (as stated)
> were
> > > > done
> > > > > on arguments with 1e6 items.
> > > > >
> > > > > I have the following model of hashing in Dyalog APL.  Its
> translation
> > > > into
> > > > > J (including dealing with APL chars which I am told is NO LONGER A
> > > > PROBLEM)
> > > > > is left as an exercise for the reader. :-).  Another (easy)
> exercise
> > is
> > > > to
> > > > > find x and y for which the verbose model is faster than the
> > one-liner.
> > > > >
> > > > >  z←x xiy y;⎕io;h;hf;i;j;m;n;q
> > > > >
> > > > > ⍝ model of x⍳y using hashing; written to be easily translated into
> C
> > > > >
> > > > >
> > > > >
> > > > >  ⎕io←0
> > > > >
> > > > >  hf←{123457×⍵}                            ⍝ hash function
> > > > >
> > > > >  n←≢y
> > > > >
> > > > >  m←≢x
> > > > >
> > > > >  q←2*⌈2⍟m                                 ⍝ size of hash table
> > > > >
> > > > >  h←q⍴m                                    ⍝ hash table; m means
> > "free"
> > > > >
> > > > >  z←n⍴m                                    ⍝ initialize to "not
> found"
> > > > >
> > > > >
> > > > >
> > > > >  :For i :In ⍳m                            ⍝ index for each x
> > > > >
> > > > >      j←q|hf x[i]                          ⍝ index into hash table
> > > > >
> > > > >      :While m>h[j] ⋄ :AndIf x[h[j]]≠x[i]  ⍝ i.e. stop on finding m
> or
> > > an
> > > > > equal entry
> > > > >          j←q|1+j                          ⍝ the next hash table
> entry
> > > > >
> > > > >      :End
> > > > >
> > > > >      :If m=h[j] ⋄ h[j]←i ⋄ :End           ⍝ new hash entry
> > > > >
> > > > >  :End
> > > > >
> > > > >
> > > > >
> > > > >  :For i :In ⍳n                            ⍝ index for each y
> > > > >
> > > > >      j←q|hf y[i]                          ⍝ where to start looking
> in
> > > > hash
> > > > > table
> > > > >      :While m>h[j] ⋄ :AndIf x[h[j]]≠y[i]  ⍝ i.e. stop on finding m
> or
> > > an
> > > > > equal entry
> > > > >          j←q|1+j                          ⍝ the next hash table
> entry
> > > > >
> > > > >      :End
> > > > >
> > > > >      z[i]←h[j]                            ⍝ here, either m=h[j] or
> > > > > x[h[j]]=y[i]
> > > > >  :End
> > > > >
> > > > >
> > > > >
> > > > > On Thu, Jul 31, 2014 at 6:41 AM, Joe Bogner <[email protected]>
> > > wrote:
> > > > >
> > > > > > I enjoyed your paper and particularly enjoyed playing with the
> > native
> > > > > > J implementation:
> > > > > >
> > > > > > xiy =: 13 : '+/*./\x~:/y'
> > > > > >
> > > > > > (i. 1e6) xiy 1e5
> > > > > > 100000
> > > > > >
> > > > > > I was surprised that the tacit J version performed reasonably
> close
> > > to
> > > > > > the special code C version:
> > > > > >
> > > > > > big=: 1e6
> > > > > >
> > > > > > 100 timespacex 'big xiy 1e5'
> > > > > > 1.01128e_5 2816
> > > > > >
> > > > > > 100 timespacex 'big i. 1e5'
> > > > > > 1.23157e_6 1664
> > > > > >
> > > > > > The timing starts to diverge on significantly boxed arrays it
> seems
> > > at
> > > > > > first glance:
> > > > > >
> > > > > > big=: (1e6 # <'a')
> > > > > >
> > > > > > 100 timespacex 'big i. <''a'''
> > > > > > 3.50044e_6 1920
> > > > > >    100 timespacex 'big xiy <''a'''
> > > > > > 0.054772 2.09933e6
> > > > > >
> > > > > > That seems to be hitting an  optimization where it stops on first
> > > > > > find. Compare to:
> > > > > >
> > > > > > 100 timespacex 'big i. <''z'''
> > > > > > 0.0486771 1920
> > > > > >
> > > > > > And it runs similarly to the native J version, which was 0.054772
> > > > > >
> > > > > > At first I was also puzzled by why / was required.
> > > > > >
> > > > > > xiy1 =: 13 : '+/*./\x~:y'
> > > > > > (i. 1e5) (xiy -: xiy1) 10
> > > > > > 1
> > > > > >
> > > > > > Then I realized this:
> > > > > >
> > > > > > (i. 1e5) xiy1 (10,2)
> > > > > > |length error: xiy1
> > > > > > |   (i.100000)    xiy1(10,2)
> > > > > >
> > > > > > However:
> > > > > > (i. 1e5) xiy (10,2)
> > > > > > 10 2
> > > > > >
> > > > > > It was neat to tinker with xiy to better understand how it works.
> > > > > >
> > > > > > I now need to spend some time better understanding the hashing. I
> > > > > > understand at a surface level yet want to play with the examples
> > too.
> > > > > > I may try to create a J implementation of the algorithm using
> amend
> > > > > > and loops. I realize it will be slow, but it will be easier to
> play
> > > > > > with than C. If someone else wants to do it and share I'd be glad
> > to
> > > > > > use that instead. Otherwise, if I get around to it I will post
> it.
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Wed, Jul 30, 2014 at 2:44 AM, Roger Hui <
> > > [email protected]>
> > > > > > wrote:
> > > > > > > My J Conference 2014 presentation can be found at:
> > > > > > >
> > > > > > > Slides only: http://www.jsoftware.com/papers/indexof/
> > > > > > > Slides and script:
> > > > > > http://www.jsoftware.com/papers/indexof/indexofscript.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
> > > > >
> > > >
> ----------------------------------------------------------------------
> > > > 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to