I'm adding interfaces for DoubleDoubleFunctions with the following special properties: f(x, 0) = x for any x f(0, y) = 0 for any y so that we can speed up sparse vector operations in these cases [1].
Doing this, I'm also updating the existing functions in Functions.java to support the new interfaces where appropriate. I'm seeing some functions use the PlusMult class (subtraction notably) and there seem to be lots of unused functions. Also, these functions don't implement Guava's Function interface making interfacing with Guava difficult in new code. Is this just a case of this being older less cleaned-up code, or are there reasons for this design? If it's the former, would anyone be willing to have a look and do some refactoring? Or, maybe add this as a started issue for GSOC students? :) [1] https://issues.apache.org/jira/browse/MAHOUT-1190