Hi Ted,

I'm sorry it took so long, but I remember our discussion about Mahout
Math's API uses in Carrot2. Adding to what Staszek already said about
the requirement of being able to do in-place computations on matrices,
I decided to get all the actual API calls we currently use. I wrote an
AspectJ aspect and processed the binaries our of curiosity. Seems like
we're using the following:

generic stuff:

org.apache.mahout.math.Arrays.trimToCapacity(double[], int))
org.apache.mahout.math.function.DoubleComparator.compare(double, double))
org.apache.mahout.math.function.DoubleFunction.apply(double))
org.apache.mahout.math.function.Functions.chain(org.apache.mahout.math.function.UnaryFunction,
org.apache.mahout.math.function.BinaryFunction))
org.apache.mahout.math.function.Functions.mult(double))
org.apache.mahout.math.function.Functions.plus(double))
org.apache.mahout.math.function.Functions.swapArgs(org.apache.mahout.math.function.BinaryFunction))
org.apache.mahout.math.function.Mult.div(double))
org.apache.mahout.math.GenericPermuting.permute(int[], int[]))
org.apache.mahout.math.list.DoubleArrayList.get(int))
org.apache.mahout.math.list.DoubleArrayList.<init>(int))
org.apache.mahout.math.list.DoubleArrayList.size())
org.apache.mahout.math.list.IntArrayList.get(int))
org.apache.mahout.math.list.IntArrayList.<init>(int))

This one most likely replaceable:

org.apache.mahout.math.matrix.doublealgo.Sorting.sort(org.apache.mahout.math.matrix.DoubleMatrix2D,
double[]))

And matrices:

org.apache.mahout.math.matrix.DoubleFactory2D.make(int, int))
org.apache.mahout.math.matrix.DoubleMatrix1D.aggregate(org.apache.mahout.math.function.BinaryFunction,
org.apache.mahout.math.function.UnaryFunction))
org.apache.mahout.math.matrix.DoubleMatrix1D.assign(double))
org.apache.mahout.math.matrix.DoubleMatrix1D.assign(org.apache.mahout.math.function.UnaryFunction))
org.apache.mahout.math.matrix.DoubleMatrix1D.assign(org.apache.mahout.math.matrix.DoubleMatrix1D,
org.apache.mahout.math.function.BinaryFunction))
org.apache.mahout.math.matrix.DoubleMatrix1D.toArray())
org.apache.mahout.math.matrix.DoubleMatrix2D.assign(double))
org.apache.mahout.math.matrix.DoubleMatrix2D.assign(org.apache.mahout.math.function.UnaryFunction))
org.apache.mahout.math.matrix.DoubleMatrix2D.assign(org.apache.mahout.math.matrix.DoubleMatrix2D))
org.apache.mahout.math.matrix.DoubleMatrix2D.assign(org.apache.mahout.math.matrix.DoubleMatrix2D,
org.apache.mahout.math.function.BinaryFunction))
org.apache.mahout.math.matrix.DoubleMatrix2D.cardinality())
org.apache.mahout.math.matrix.DoubleMatrix2D.columns())
org.apache.mahout.math.matrix.DoubleMatrix2D.copy())
org.apache.mahout.math.matrix.DoubleMatrix2D.getNonZeros(org.apache.mahout.math.list.IntArrayList,
org.apache.mahout.math.list.IntArrayList,
org.apache.mahout.math.list.DoubleArrayList))
org.apache.mahout.math.matrix.DoubleMatrix2D.getQuick(int, int))
org.apache.mahout.math.matrix.DoubleMatrix2D.rows())
org.apache.mahout.math.matrix.DoubleMatrix2D.set(int, int, double))
org.apache.mahout.math.matrix.DoubleMatrix2D.setQuick(int, int, double))
org.apache.mahout.math.matrix.DoubleMatrix2D.toStringShort())
org.apache.mahout.math.matrix.DoubleMatrix2D.viewColumn(int))
org.apache.mahout.math.matrix.DoubleMatrix2D.viewDice())
org.apache.mahout.math.matrix.DoubleMatrix2D.viewPart(int, int, int, int))
org.apache.mahout.math.matrix.DoubleMatrix2D.viewRow(int))
org.apache.mahout.math.matrix.DoubleMatrix2D.viewSelection(int[], int[]))
org.apache.mahout.math.matrix.DoubleMatrix2D.zMult(org.apache.mahout.math.matrix.DoubleMatrix2D,
org.apache.mahout.math.matrix.DoubleMatrix2D))
org.apache.mahout.math.matrix.DoubleMatrix2D.zMult(org.apache.mahout.math.matrix.DoubleMatrix2D,
org.apache.mahout.math.matrix.DoubleMatrix2D, double, double, boolean,
boolean))
org.apache.mahout.math.matrix.impl.DenseDoubleMatrix2D.assign(org.apache.mahout.math.matrix.DoubleMatrix2D))
org.apache.mahout.math.matrix.impl.SparseDoubleMatrix2D.<init>(int, int))

Linear algebra:

org.apache.mahout.math.matrix.linalg.Algebra.normF(org.apache.mahout.math.matrix.DoubleMatrix2D))
org.apache.mahout.math.matrix.linalg.EigenvalueDecomposition.getRealEigenvalues())
org.apache.mahout.math.matrix.linalg.EigenvalueDecomposition.<init>(org.apache.mahout.math.matrix.DoubleMatrix2D))
org.apache.mahout.math.matrix.linalg.SingularValueDecomposition.getSingularValues())
org.apache.mahout.math.matrix.linalg.SingularValueDecomposition.getU())
org.apache.mahout.math.matrix.linalg.SingularValueDecomposition.getV())
org.apache.mahout.math.matrix.linalg.SingularValueDecomposition.<init>(org.apache.mahout.math.matrix.DoubleMatrix2D))

And that would be it. Don't know how much this helps, but wanted to
leave a trace so that we can reflect on it later, if needed.

Dawid

Reply via email to