dbl_mp(x,&a,p); dbl_mp(dx,&b,p); add(&a,&b,&c,p); if (x>0.8) { sub(&hp,&c,&a,p); __c32(&a,&b,&c,p); }
__dbl_mp(x,&a,p); __dbl_mp(dx,&b,p); __add(&a,&b,&c,p); if (x>0.8) { __sub(&hp,&c,&a,p); __c32(&a,&b,&c,p); }
double __mpsin(double x, double dx) {  int p;  double y;  mp_no a,b,c;  p=32;  dbl_mp(x,&a,p);  dbl_mp(dx,&b,p);  add(&a,&b,&c,p);  if (x>0.8) { sub(&hp,&c,&a,p); __c32(&a,&b,&c,p); }  else __c32(&c,&a,&b,p);     /* b = sin(x+dx)     */  __mp_dbl(&b,&y,p);  return y;}