On Jan 30, 2008 2:49 PM, Ted Dunning <tdunning@veoh.com> wrote:
> For efficient row and column access, I built a hybrid that has both CSR
> and
> CSC represenations under the hood. I also don't care much about mutation.
Cool :) OS? Or, something you built for VEOH? Probably best to move
off-list, but what are you responsible for there?
> A * v
> v * A
> A * A
> A' * A
> rowSum(A)
> columnSum(A)
> sum(A)
No matrix/vector norms? 'course, not necessary, but probably worth throwing
in :)
forEachNonZero, forEachNonZeroRow, forEachNonZeroColumn
> reduceNonZero, reduceNonZeroRow, reduceNonZeroColumn
> many kinds of views
Otherwise sounds great.
The way that Colt does (most of) this is to use a higher-order API. Most
> users I have talked to were completely confused by this. I think the
> right
> answer is to require a small set of primitives for each implementation and
> inherit nice API much like AbstractMap provides lots of sugar over a
> spartan
> Map implementation.
Not sure what you mean by "higher-order"... but agreed that Colt leave
something to be desired. Are there any interfaces or abstract classes
written up?
> I also think it would help us to have a nice syntax for some algorithms.
> I
> have lately been working with groovy and almost have some support for very
> simple map-reduce programming. Since Groovy supports infix overloading,
> that would allow us to have a very simple language for writing matrix like
> code that inter-operates very well with the Java side. I will write more
> as
> that becomes available.
Didn't know about groovy. Looks interesting. Thanks for the pointer. Will
be interested to hear where you go with it.
Jason
|