You can make use of gnu indent.
Saying indent -npsl inputfile.c
for your snippet would result in:
void func (double *s, Quaternion & a, int n)
{
int size ((n < 4) ? n : 4);
for (int i = 0; i < size; i++)
{
a[i] = s[i];
}
}
The manual can be accessed here.