https://en.wikipedia.org/wiki/Logarithmic_mean defines logarithmic mean as the the limit of difference of two numbers divided by the difference of their (natural) logs. The limit is to deal with the case where the two numbers are equal - in this case, we want an identity function.
I was tempted to implement logarithmic mean as Lm=: (- % -&^.)^:~: But this has a problem with rank: 2 Lm 2 2 2 3 Lm 3 2 2.4663 2.4663 2.4663 2.4663 I could solve this with ("0) but that strikes me as inefficient. L2=: (- % -&^.)^:~:"0 So, instead: L=: (]*=) + - % -&^. ((L-:L2) |.) i.1e5 1 Is that worth it? timespacex '(L |.) i.1e5' 0.0365999 5.24506e6 timespacex '(L2 |.) i.1e5' 0.0828581 3.14982e6 Probably... A caution, though: 0 L 0 |NaN error: L Because: ^. 0 __ So maybe the explicit rank implementation isn't such a bad idea after all? Thanks, -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm