No it's not. It's a single standing control surrounded by html :)
I didn't delve into the complexity of your calculations, but based on the bits of code you provided I can only say that it will not work :-)
Since I don't know how far you've gotten into SilverStripe, at this point I can only give a few tips, that you might already be familiar with. For a function outcome to be rendered using a template, the function should either return a single value or a DataObjectSet, in which case you can use a control structure in the template to render the set.
Seems like your function creates a couple of arrays and I don't know how you were planning on feeding them to the template...