Thanks everyone and Zvoni, you really shouldn't feed my laziness.
That said, I'll compile it (for x86_64) -al to see if the assembler looks right (for an _86 anyway - I don't know much about the ARM code).
And of course throw some tests at it.
CORRECTION: I assumed, Zvoni, you would go the cdecl route, not translate. I'll have to examine it carefully. For instance where you mention the need for a local vars, I agree it would seem not.
I'll also be looking at that pointer notation in C that I don't fully get ( such as result.v[0] = (q1->v[0] * 0.5 + q2->v[0] * 0.5); ).
Did you use a tool for the translation? I had found a few online but was putting off using them.