You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
f2=jtinv2; f1=jtinv1; if(nameless(a)){WITHMSGSOFF(if(h=inv(a)){f1=jtinvh1;flag=FAV(h)->flag&VNOLOCCHG+VNONAME+VNOSELF;}else{f1=jtinverr;})} // h must be valid A block for free. If no names in w, take the inverse. If it doesn't exist, fail the monad but keep the dyad going
369
369
}elseflag=FAV(a)->flag&VNONAME+VNOSELF; // if u^:_, never allow inplace assignment since we are converging
370
370
// Note: negative powers other than _1 are resolved in the action routine
371
-
}elseif(n==2&&a==ds(CLESS)){f2=jtintersect;} // -.^:2, set intersection, which allows inplacing
f2=jtintersect; // treat the compound as a primitive of its own
377
+
flag|=(7+(((IINTER-II0EPS)&0xf)<<3)); // flag it like -.
378
+
// if tolerance given on second -., it is now in cct
379
+
}
380
+
}
381
+
#endif
372
382
encn=(ABS(n)<<POWERABSX)+(n<0?POWERANEG:0); encn=n==IMIN?((I)-1*POWERABS)+POWERADOWHILE:encn; // save the power, in flagged form, for powatom12
373
383
}else{f1=f2=jtply12; flag=FAV(a)->flag&VNONAME+VNOSELF;} // non-atomic power: handle general case, which does not support inplacing (since it might converge)
374
384
// fall through to create result
375
385
} // end of 'u^:numeric'
376
386
} // end of 'u^:n'
377
387
fdeffill(z,0,CPOWOP,VERB, f1,f2, a,w,h,flag, RMAX,RMAX,RMAX); // Create derived verb: pass in integer powers or inverse as h
378
-
FAV(z)->localuse.lu1.poweratom=encn; // pass power info for powatom12, garbage for others
388
+
FAV(z)->localuse.lu1.poweratom=encn; FAV(z)->localuse.lu0.cct=cct;// pass power info for powatom12, garbage for others
if(unlikely(ar>1+wr))Rtake(zeroionei(0),a); // if w's rank is smaller than that of a cell of a, nothing can be common, return no items
1278
1279
if(unlikely(MIN(ai,wi)==0))Rtake(zeroionei(0),a); // if either arg is empty, nothing can be common, return no items
1279
1280
jtfg=MOVEIP0A(jtfg); // only our a argument can be inplaced, and it moves to y in all uses
1280
-
PUSHCCTIF(FAV(self)->localuse.lu1.cct,FAV(self)->localuse.lu1.cct!=0) // if there is a CT, use it *** no errors till cct restored ***
1281
+
PUSHCCTIF(FAV(self)->localuse.lu0.cct,FAV(self)->localuse.lu0.cct!=0) // if there is a CT, use it *** no errors till cct restored ***
1281
1282
if(unlikely(ar==wr+1)){ // is just 1 cell of y, with x a list of such cells?
1282
1283
if(wr==0)x=eq(a,w); elseIRS2(a,w,0,wr,wr,jtmatch,x); RZGOTO(x,errexit) x=jtrepeat(jtfg,x,a); // y has rank 1 less than x, execute as ((x = y) # x) (y atomic) or ((x -:"yr) # x) if (y array). Inplace x on the #. Use IRS and leave comparison tolerance as set
1283
1284
}else{
1284
1285
// if w's rank is larger than that of a cell of a, reheader w to look like a list of such cells
1285
1286
if(unlikely((-wr&-(r^wr))<0)){RZGOTO(x=virtual(w,0,r),errexit); AN(x)=wn; s=AS(x); ws=AS(w); k=ar>wr?0:1+wr-r; Is0; PRODX(s0,k,ws,1) s[0]=s0; MCISH(1+s,k+ws,r-1);} // use fauxvirtual here
1286
1287
// comparison tolerance may be encoded in h - apply it if so
1287
-
Dsavcct=jt->cct;
1288
+
// obsolete D savcct = jt->cct;
1288
1289
// if nothing special (like sparse, or incompatible types, or x requires conversion) do the fast way; otherwise (x e. y) # x
1289
1290
// because LESS allocates a large array to hold all the values, we use the slower, less memory-intensive, version if a is mapped
1290
1291
// Don't revert to fork! localuse.lu1.fork2hfn is not set
@@ -1296,6 +1297,7 @@ errexit:;
1296
1297
if(unlikely(at&BOX)){jtfg=MOVEIPA0(jtfg); PRISTXFERAF(x,a)} // the boxes in w cannot get to the result, even though their values participate; so pristinity depends entirely on original a
0 commit comments