Ideally this function should only be called when +ML changes and the value cached.  Thus the frequency of calling is statistically zero.  Therefore clairity should trump speed.  If you wanted to be anal, a simple speed up would be to convert it into divide and conq form.  But even that make the...