I am trying to test this now but I have to update a bunch of calls to rank2ex. It is not clear to me what I should set the new lcr and rcr parameters to. Can someone clarify?

On 06/11/2017 06:39 AM, bill lam wrote:
I tested a little bit more. It seems more work is required.

    ,~ < $. 1 0 0 2
┌─────┬─────┐
│0 │ 1│0 │ 1│
│3 │ 2│3 │ 2│
└─────┴─────┘
     (<2 3 4 5),< $. 1 0 0 2
┌───────┬─────┐
│2 3 4 5│0 │ 1│
│       │3 │ 2│
└───────┴─────┘
    /: (<2 3 4 5),< $. 1 0 0 2
(segfault)

Вс, 11 июн 2017, bill lam написал(а):
I applied your patch to the latest git repos, and it ran without
any crash.
    < $. 1 0 0 2
┌─────┐
│0 │ 1│
│3 │ 2│
└─────┘


Пт, 02 июн 2017, Thomas Costigliola написал(а):
I have this patch that implements sparse boxing that worked in the J805
engine. Sometime between 805 and 806 it stopped working and now crashes the
interpreter during or after the result gets freed.

< $. 1 0 0 2

Can someone (Henry) explain what changed?

Here is the patch:

diff --git a/jsrc/cu.c b/jsrc/cu.c
index ea70060..db2166c 100644
--- a/jsrc/cu.c
+++ b/jsrc/cu.c
@@ -9,7 +9,7 @@

  static A jteverysp(J jt,A w,A fs,AF f1){A*wv,x,z,*zv;P*wp,*zp;
   RZ(w);
- ASSERT(SBOX&AT(w),EVNONCE);
+ //ASSERT(SBOX&AT(w),EVNONCE);
   RZ(z=ca(w));
   wp=PAV(w); x=SPA(wp,x); wv=AAV(x);
   zp=PAV(z); x=SPA(zp,x); zv=AAV(x);
@@ -17,7 +17,7 @@ static A jteverysp(J jt,A w,A fs,AF
f1){A*wv,x,z,*zv;P*wp,*zp;
   R z;
  }

-#define EVERYI(exp)  {RZ(*zv++=x=exp); ASSERT(!(SPARSE&AT(x)),EVNONCE);}
+#define EVERYI(exp)  {RZ(*zv++=x=exp);
/*ASSERT(!(SPARSE&AT(x)),EVNONCE);*/}
       /* note: x can be non-noun */

  A jtevery(J jt,A w,A fs,AF f1){A*wv,x,z,*zv;I wd;
diff --git a/jsrc/vo.c b/jsrc/vo.c
index 29d118c..a8b20ac 100644
--- a/jsrc/vo.c
+++ b/jsrc/vo.c
@@ -17,8 +17,22 @@ F1(jtlevel1){RZ(w); R sc(level(w));}

  F1(jtbox0){R irs1(w,0L,0L,jtbox);}

+F1(jtboxsp){A z, *zv;I r, n;
+ if(jt->rank){
+  r=jt->rank[1]; jt->rank=0;
+  z=denseit(w);
+  z=df1(z,qq(ds(CLT),sc(r)));
+  z=every(z,0,jtsparse1);
+ }else{
+  GATV(z,BOX,1,0,0); zv=AAV(z);
+  rat1(w); *zv=w;
+ }
+ R z;
+}
+
  F1(jtbox){A y,z,*zv;C*wv,*yv;I f,k,m,n,r,wr,*ws;
   RZ(w);
+ if(SPARSE&AT(w)) R jtboxsp(jt,w);
   ASSERT(!(SPARSE&AT(w)),EVNONCE);
   ws=AS(w); wr=AR(w); r=jt->rank?jt->rank[1]:wr; f=wr-r;
   RE(n=prod(f,ws)); if(n)m=AN(w)/n; else RE(m=prod(r,f+ws));

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

--
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to