Yeah, I know what you mean. It took me so long to convert my formula to MC because I didn't realize the Math function existed. The wiki doesn't seem to have any info on it, but the expression builder has some decent descriptions of all functions when you hover your mouse over them.
The Math function is pretty simple and just evalutes the values inside it as a methematical function. For example: Math(2 + 5 * 7) equates to 37, because the * has higher precedence than the +.
Here's a breakdown of my function:
Math((100 + If(IsEqual(Field(Last Played,0),), 100, Math(Now() - Field(Last Played,0)))) / 100 / (10 + If(IsEqual([Number Plays],),0,[Number Plays])) * (If(IsEqual(Field(Rating, 0), ), 6, Field(Rating, 0)) * 15))
1
First, the "Field" function is needed to convert certain fields into a number, instead of a date or rating. So doing that replacement simplifies the function to:
Math((100 + If(IsEqual(Last Played,), 100, Math(Now() - Last Played))) / 100 / (10 + If(IsEqual([Number Plays],),0,[Number Plays])) * (If(IsEqual(Rating, ), 6, Rating) * 15))
2
Next, the "If" and "IsEqual" stuff is needed to convert fields that might not yet have a value to some default value. For example, if a track is not rated it's rating is empty, not the number 0. Similarly for "Number Plays".
For "Last Played" I make it slightly more complex. If it has never been played I set the value to 100 (i.e., it hasn't been played in 100 days), if it has been played then I subtract the "Last Played" value from Now() (i.e., the time right now) to get the number of days since it was last played.
If I remove these it simplifies the function to:
Math((100 + Days Since Last Played) / 100 / (10 + Number Plays) * (Rating * 15))
3
This gives me my basic formula. I played with various values to come up with this and the constant numbers can be adjusted to change weightings. For clarity removing the "Math" leaves the final formula:
(100 + Days Since Last Played) / 100 / (10 + Number Plays) * (Rating * 15)
I hope that helps a bit.