>>24
つーかdivideの式がおかしいような。
b==0の時に0除算になるのは当然だからこんな感じじゃない?
void divide(const double* a,const double* b,double* c) {
  double mi=1/(b[0]*b[0]+b[1]*b[1]);
  c[0]=(a[0]*b[0]-a[1]*b[1])*mi;
  c[1]=(a[1]*b[0]-a[0]*b[1])*mi;
}