Dear J programmers, I am using J504 on Linux.
Consider three operands: x, y1, y2 and the spread function, #^:_1 Isnt it true that if "y1 -: y2", then "(x #^:_1 y1) -: (x #^:_1 y2)" ? I understand that -: can return 1 for non-equal operands when they are equal under tolerant comparison. But in my example it does not appear that tolerant comparison should come into play. Here is my session output: x +-----+ |0 0 0| +-----+ y1 ++ || ++ y2 ++ || ++ y1 = a: 1 y2 = a: 1 y1 -: y2 1 x #^:_1 each y1 +----+ |++++| |||||| |++++| +----+ x #^:_1 each y2 +-----+ |0 0 0| +-----+ The problem appears to be with the fills used by #^:_1. For y1, it is using a: as the fill and for y2 it is using 0 fills. I extracted y1 and y2 from a larger array and although y1 -: y2 returns 1 and they are both equal to a:, there is some difference which I am unable to figure out. (I did not include the program that generated this array because it is fairly large). When I explicitly create y1 and y2, I get the expected behavior. y1 =. a: y2 =. a: x #^:_1 each y1 +-----+ |0 0 0| +-----+ x #^:_1 each y2 +-----+ |0 0 0| +-----+ Can someone suggest how I could go about finding out the difference between the y1 and y2 that I extracted from the larger array? Thx, -sashi. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
