Linda, see the definition of Amend } . Below the two gray boxes there is a paragraph beginning "If m is a gerund". --Kip
http://www.jsoftware.com/docs/help701/dictionary/d530n.htm Sent from my iPad > On Jan 13, 2014, at 3:17 AM, "Linda Alvord" <lindaalv...@verizon.net> wrote: > > Raul, What happens to M when you involve } > > I don't understand how and what definition of } is used. > u=:2 3 0 > v=:i.3 3 > > GG=: 13 :'x`({.x)`y' > ]M=: u GG v > > 2 3 0 2 > 0 1 2 0 > 3 4 5 0 > 6 7 8 0 > > HH=: [`([:{.[)`]} > > u HH v > 0 1 2 > 3 4 5 > 2 3 0 > > 5!:4 <'GG' > -- 4 > -- : -+- ,:'x`({.x)`y' > > 5!:4 <'HH' > -- [ > │ -- [: > -- } ---+---+- {. > │ L- [ > L- ] > > 5!:4 <'FF' > -- [ > │ -- {. > -- } ---+- @ -+- [ > L- ] > > > Linda > > > -----Original Message----- > From: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Raul Miller > Sent: Monday, January 13, 2014 12:53 AM > To: Programming forum > Subject: Re: [Jprogramming] Tacit? > > FF=: [`({.@[)`]} > > Or something using multiple and add with some bit valued intermediate > results. > > Thanks, > > -- > Raul > >> On Mon, Jan 13, 2014 at 12:39 AM, km <k...@math.uh.edu> wrote: >> Here is a simpler question. Is there a tacit version of ff below? >> >> u =: 2 3 0 >> v =: i. 3 3 >> ff =: 4 : 'x ({. x)} y' >> u ff v >> 0 1 2 >> 3 4 5 >> 2 3 0 >> >> --Kip Murray >> >> Sent from my iPad >> >>> On Jan 12, 2014, at 10:41 PM, Raul Miller <rauldmil...@gmail.com> wrote: >>> >>> Sometimes it helps to inspect intermediate results. With recursion, >>> though, it can be a bit tricky for a casual observer to see the >>> intermediate results. With that in mind, here's what I am seeing for >>> your example: >>> >>> a1=: (calcU calcL) saveAA >>> a2=: (calcU calcL) a1 >>> a3=: (calcU calcL) a2 >>> >>> A4=: ((({.@[ ,: ]) ,&.:(|."1) a3"_) calcL) a2 >>> A5=: ((({.@[ ,: ]) ,&.:(|."1) A4"_) calcL) a1 >>> A6=: ((({.@[ ,: ]) ,&.:(|."1) A5"_) calcL) saveAA >>> >>> a1, a2 and a3 are progressively smaller square matrices (2x2, 1x1, >>> 0x0) >>> >>> A4, A5 and A6 are progressively larger matrices which are twice as >>> tall as wide. If you could compute them in reverse order it might >>> have made sense to make it twice as wide as tall (with intermediate >>> lu side by side instead of interleave stacked)? >>> >>> A6 is the same as lumain saveAA >>> >>> I should go back and re-read km's implementation. But I will note >>> that you can cut code size slightly using some cross hooks: >>> >>> lumain =: (((,:~ {.)~ ,&.:(|."1) $:@calcU) calcL)^:(*@#) >>> lu =: [: (,:~ |:)/ 1 0 2 |: _2 ]\ lumain >>> >>> Anyways, I think your O(n^3) space is largely because all >>> intermediate values from what I have characterized as a (calcU calcL) >>> hook are "pre"-computed and placed on the stack before proceeding >>> with further computations. >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>>> On Sun, Jan 12, 2014 at 10:10 PM, Henry Rich <henryhr...@nc.rr.com> > wrote: >>>> calcL =: (% {.)@:({."1) >>>> calcU =: (}.@[ - {.@[ *"1 0 ])&:(}."1) >>>> lumain =: ((({.@[ ,: ]) ,&.:(|."1) $:@calcU) calcL)^:(*@#) >>>> lu =: [: (|:@] ,: [)/ 1 0 2 |: _2 ]\ lumain NB. Half this code >>>> is handling joining ragged lists. >>>> NB. Is there a better way? >>>> >>>> saveAA =: 3 3 $ 2 1 4 _4 _1 _11 2 4 _2 >>>> lu saveAA >>>> >>>> 1 0 0 >>>> _2 1 0 >>>> 1 3 1 >>>> >>>> 2 1 4 >>>> 0 1 _3 >>>> 0 0 3 >>>> >>>> I suspect that a vectorized explicit version is a better way to go. >>>> This version has memory requirements of O(n^3). >>>> >>>> Henry Rich >>>> >>>> >>>>> On 1/12/2014 9:00 PM, km wrote: >>>>> >>>>> Verb LU below produces the matrices L and U of the LU decomposition >>>>> of a square matrix A. L is lower triangular, U is upper >>>>> triangular, and A is L >>>>> +/ . * U . >>>>> >>>>> Should one attempt a tacit version? >>>>> >>>>> eye =: =@i.@] NB. eye 3 is a 3 by 3 identity matrix >>>>> >>>>> rop =: 3 : 0 NB. row op: subtract c times row i0 from row i1 >>>>> : >>>>> 'i1 c i0' =. x >>>>> ( (i1 { y) - c * i0 { y ) i1 } y >>>>> ) >>>>> >>>>> LU =: 3 : 0 NB. square matrices L and U for y -: L +/ . * U >>>>> m =. # y >>>>> L =. eye(m) >>>>> U =. y >>>>> for_j. i. <: m do. >>>>> p =. (< j , j) { U >>>>> for_i. j + >: i. <: m - j do. >>>>> c =. p %~ (< i , j) { U >>>>> L =. c (< i , j) } L >>>>> U =. (i, c, j) rop U >>>>> end. >>>>> end. >>>>> L ,: U >>>>> ) >>>>> >>>>> saveAA >>>>> 2 1 4 >>>>> _4 _1 _11 >>>>> 2 4 _2 >>>>> >>>>> LU saveAA >>>>> 1 0 0 >>>>> _2 1 0 >>>>> 1 3 1 >>>>> >>>>> 2 1 4 >>>>> 0 1 _3 >>>>> 0 0 3 >>>>> >>>>> saveAA -: +/ . */ LU saveAA >>>>> 1 >>>>> >>>>> --Kip Murray >>>>> >>>>> Sent from my iPad >>>>> ------------------------------------------------------------------- >>>>> --- 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