On Fri, Jul 5, 2013 at 1:40 AM, Nick Pentreath <nick.pentre...@gmail.com>wrote:

> Hi Dmitry
>
>
> You can take a look at using the update "magic" method which is similar
> to apply but handles assignment.
>
>
>
> If you want to keep the := as assignment I think you could do
>
>
> def :=(value: Double) = update ...
>


>
> (I don't have my laptop around at the moment so can't check this works).
>
>
> Also you can take a dig into the Breeze code which has a pretty similar
> DSL to what you're trying to put together, for examples of how David has
> done it - ignoring the code that is related to all the


As far as i can tell by either documentation or code, Breeze does not
implement single element assignment thru := operator (as in A(5,2) := 3.0),
but thru  update(row,col) method only. (I studied and tried breeze's linalg
package quite a bit).

update() method in Mahout is actually replaced by safe set(r,c) or unsafe
setQuick(r,c), so i don't see a point to implement yet another method
(although update() is more in line with scala conventions, much as set() is
with java's)


operators and specializing for Int, Double and Float, the core DSL is
> fairly compact I think.
>
>
> N
>
> —
> Sent from Mailbox for iPhone
>
> On Fri, Jul 5, 2013 at 10:16 AM, Dmitriy Lyubimov <dlie...@gmail.com>
> wrote:
>
> > For anyone good at scala DSLs, the following is the puzzle i can't seem
> to
> > figure at the moment.
> > I mentioned  before that I implemented assignment notations to a row or a
> > block, e.g. for a row vector : A(5,::) := (1,2,3)
> > what it really translates into in this particular case is
> > A.viewRow(5).assign(new Vector(new double[]{1,2,3}))
> > One thing i can't quite figure for in-core matrix DSL is how to translate
> > element assignments such as
> > A(5,5) := 2.0
> > into A.setQuick(5,5,2.0)
> > while still having
> > val k = A(5,5)
> > translating into
> > val k = A.getQuick(5,5).
> > it could be implemented with a "elementView" analogue but would require
> the
> > element view object creation  -- which is, first,  a big no-no (too
> > expensive) for a simple solitary element assignment (or read-out)
> > operation, and secondly, reading the element such as A(5,5) * 2.0 would
> > also involve view element object creation with implicit conversion to
> > Double whereas it is not even needed at all in this case.
> > at this point i have only a very obvious apply(Double,Double):Double =
> > m.getQuick(...), i.e. only element reads are supported with that syntax.
> > I am guessing Jake, if anyone, might have an idea here... thanks.
> > On Thu, Jul 4, 2013 at 11:23 PM, Dmitriy Lyubimov <dlie...@gmail.com>
> wrote:
> >> FWIW, Givens streaming qr will be a bit more economical on memory than
> >> Householder's since it doesn't need the full buffer to compute R and
> >> doesn't need to keep entire original matrix around.
> >>
> >>
> >> On Thu, Jul 4, 2013 at 11:15 PM, Dmitriy Lyubimov <dlie...@gmail.com
> >wrote:
> >>
> >>> Ted,
> >>>
> >>> would it make sense to port parts of QR in-core row-wise Givens solver
> >>> out of SSVD to work on any Matrix? I know givens method is advertised
> as
> >>> stable but not sure if it is the fastest accepted one. I guess they
> are all
> >>> about the same.
> >>>
> >>> If yes, i will need also to port the UpperTriangular matrix to adhere
> to
> >>> all the bells and wistles, and also have some sort of RowShift matrix
> (a
> >>> much simpler analogue of Pivoted matrix for row-rolled buffers). would
> that
> >>> make sense?
> >>>
> >>> thanks.
> >>> -D
> >>>
> >>>
> >>
>

Reply via email to