Thanks, Henry. I also defer to Devon's more expert solution for a similar approach (which I had not seen while composing my reply to PT).
Your advice about premature optimization strategy is cogent: I can't help wonder whether J's low-level arithmetic routines have "common sense" optimizations already built in. For example: Does J's "addition" procedure *automatically* return an infinity result when either of the addends is infinity -- rather than wasting cycles on the logically needless floating point addition? *-Robert Knight * * * * * On Fri, May 17, 2013 at 10:28 PM, Henry Rich <[email protected]> wrote: > Devon's & Robert's ideas are good. Don't worry about performance until > you get something working. Then use the performance monitor to tune. > Almost certainly you will be fixing the wrong thing if you try to optimize > first. > > Henry Rich > > > On 5/17/2013 10:13 PM, P T wrote: > >> Thanks Devon and Robert. >> >> Sure, we can replace zeros with infinity and vice versa before and after >> division. But, can it be avoided? What I am looking for is conditional >> division without writing an explicit loop. My intention is to represent an >> electrical transmission network with matrices and they can potentially be >> large. I am trying to minimizing the number of operations. >> >> I am reading on sparse matrices in "Learning J" by Roger Stokes and looks >> like it can do what I am looking for. But, I am not sure if it actually >> does not perform the unnecessary operations (i.e. division by zeros) or >> just a display issue. >> >> x =: 1 $. 6 6 NB. an empty 6x6 matrix >> x =: 4 5 6 7 ( 0 0 ; 1 1; 2 2; 3 3) } x NB. insert some data >> x >> 0 0 │ 4 >> 1 1 │ 5 >> 2 2 │ 6 >> 3 3 │ 7 >> >> y =: 1 $. 6 6 >> y =: 1 2 3 4 ( 0 0 ; 1 1; 2 2; 3 3) } y >> y >> 0 0 │ 1 >> 1 1 │ 2 >> 2 2 │ 3 >> 3 3 │ 4 >> >> x%y >> 0 0 │ 4 >> 1 1 │ 2.5 >> 2 2 │ 2 >> 3 3 │ 1.75 >> >> Thanks, >> PT >> >> >> >> On Fri, May 17, 2013 at 6:45 PM, Robert Knight <[email protected] >> >**wrote: >> >> *PT-* >>> >>> To modify the (infinite) "zero-division" result from *infinity* to >>> *zero*... >>> >>> How about adding infinity to the divisor's zero-elements? >>> >>> *z =: x%y+_*y=0* >>> >>> >>> ]x =. 2 2 $ 2 >>> >>> 2 2 >>> 2 2 >>> >>> ]y =. 2 2 $ i.4 >>> >>> 0 1 >>> 2 3 >>> >>> ]z =. x%y+_*y=0 >>> >>> 0 2 >>> 1 0.666667 >>> >>> *-Robert Knight* >>> (Also a J-newbie) >>> >>> >>> On Fri, May 17, 2013 at 6:44 PM, P T <[email protected]> wrote: >>> >>> >>> I am learning J (J602) and dividing one table with another. When >>>> division >>>> by zero occurs, I want the the value to be zero instead of infinity. >>>> For >>>> example, in the results below, I want the first element to be 0.0 >>>> instead >>>> of _ >>>> >>>> ]x =. 2 2 $ 2 >>>> 2 2 >>>> 2 2 >>>> >>>> ]y=. 2 2 $ i.4 >>>> 0 1 >>>> 2 3 >>>> >>>> x%y >>>> _ 2 >>>> 1 0.666667 >>>> >>>> >>>> May be I can replace all occurrences of _ with 0.0. But, can I avoid >>>> this >>>> additional step? >>>> >>>> Thanks, >>>> PT >>>> ------------------------------**------------------------------** >>>> ---------- >>>> 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<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
