if (s3s >= 0 && s2s - s3s < 54 || c3s >= 0 && c2s - c3s < 54
if ((s3s >= 0 && s2s - s3s < 54) || (c3s >= 0 && c2s - c3s < 54)
main (void){  mp1 si, co, x, ox, xt, s2, c2, s3, c3;  int i;  int sin_errors = 0, cos_errors = 0;  int sin_failures = 0, cos_failures = 0;  mp1 sin_maxerror, cos_maxerror;  int sin_maxerror_s = 0, cos_maxerror_s = 0;  const double sf = pow (2, mpbpl);  /* assert(mpbpl == mp_bits_per_limb);  */  assert(FRAC / mpbpl * mpbpl == FRAC);  memset (sin_maxerror, 0, sizeof (mp1));  memset (cos_maxerror, 0, sizeof (mp1));  memset (xt, 0, sizeof (mp1));  xt[(FRAC - N2) / mpbpl] = (mp_limb_t)1 << (FRAC - N2) % mpbpl;  for (i = 0; i < 1 << N2; i++)    {      int s2s, s3s, c2s, c3s, j;      double ds2,dc2;      mpn_mul_1 (x, xt, SZ, i);      sincosx_mpn (si, co, x, i == 0 ? NULL : ox);      memcpy (ox, x, sizeof (mp1));      ds2 = sin (i / (double) (1 << N2));      dc2 = cos (i / (double) (1 << N2));      for (j = SZ-1; j >= 0; j--)	{	  s2[j] = (mp_limb_t) ds2;	  ds2 = (ds2 - s2[j]) * sf;	  c2[j] = (mp_limb_t) dc2;	  dc2 = (dc2 - c2[j]) * sf;	}      if (mpn_cmp (si, s2, SZ) >= 0)	mpn_sub_n (s3, si, s2, SZ);      else	mpn_sub_n (s3, s2, si, SZ);      if (mpn_cmp (co, c2, SZ) >= 0)	mpn_sub_n (c3, co, c2, SZ);      else	mpn_sub_n (c3, c2, co, SZ);      s2s = mpn_bitsize (s2, SZ);      s3s = mpn_bitsize (s3, SZ);      c2s = mpn_bitsize (c2, SZ);      c3s = mpn_bitsize (c3, SZ);      if (s3s >= 0 && s2s - s3s < 54	  || c3s >= 0 && c2s - c3s < 54	  || 0)	{#if PRINT_ERRORS	  printf ("%06x ", i * (0x100000 / (1 << N2)));	  print_mpn_hex(si, (FRAC / 4) + 1);	  putchar (' ');	  print_mpn_hex (co, (FRAC / 4) + 1);	  putchar ('\n');	  fputs ("       ", stdout);	  print_mpn_hex (s2, (FRAC / 4) + 1);	  putchar (' ');	  print_mpn_hex (c2, (FRAC / 4) + 1);	  putchar ('\n');	  printf (" %c%c    ",		  s3s >= 0 && s2s-s3s < 54 ? s2s - s3s == 53 ? 'e' : 'F' : 'P',		  c3s >= 0 && c2s-c3s < 54 ? c2s - c3s == 53 ? 'e' : 'F' : 'P');	  print_mpn_hex (s3, (FRAC / 4) + 1);	  putchar (' ');	  print_mpn_hex (c3, (FRAC / 4) + 1);	  putchar ('\n');#endif	  sin_errors += s2s - s3s == 53;	  cos_errors += c2s - c3s == 53;	  sin_failures += s2s - s3s < 53;	  cos_failures += c2s - c3s < 53;	}      if (s3s >= sin_maxerror_s	  && mpn_cmp (s3, sin_maxerror, SZ) > 0)	{	  memcpy (sin_maxerror, s3, sizeof (mp1));	  sin_maxerror_s = s3s;	}      if (c3s >= cos_maxerror_s	  && mpn_cmp (c3, cos_maxerror, SZ) > 0)	{	  memcpy (cos_maxerror, c3, sizeof (mp1));	  cos_maxerror_s = c3s;	}    }   /* Check Range-Kutta against precomputed values of sin(1) and cos(1).  */   memset (x, 0, sizeof (mp1));   x[FRAC / mpbpl] = (mp_limb_t)1 << FRAC % mpbpl;   sincosx_mpn (si, co, x, ox);   memset (s2, 0, sizeof (mp1));   memset (c2, 0, sizeof (mp1));   for (i = 0; i < 100 && i < FRAC / 4; i++)     {       s2[(FRAC - i * 4 - 4) / mpbpl] |= (strchr (hexdig, sin1[i]) - hexdig					  << (FRAC - i * 4 - 4) % mpbpl);       c2[(FRAC - i * 4 - 4) / mpbpl] |= (strchr (hexdig, cos1[i]) - hexdig					  << (FRAC - i * 4 - 4) % mpbpl);     }   if (mpn_cmp (si, s2, SZ) >= 0)     mpn_sub_n (s3, si, s2, SZ);   else     mpn_sub_n (s3, s2, si, SZ);   if (mpn_cmp (co, c2, SZ) >= 0)      mpn_sub_n (c3, co, c2, SZ);   else     mpn_sub_n (c3, c2, co, SZ);   printf ("sin:\n");   printf ("%d failures; %d errors; error rate %0.2f%%\n",	   sin_failures, sin_errors, sin_errors * 100.0 / (double) (1 << N2));   fputs ("maximum error:   ", stdout);   print_mpn_hex (sin_maxerror, (FRAC / 4) + 1);   fputs ("\nerror in sin(1): ", stdout);   print_mpn_hex (s3, (FRAC / 4) + 1);   fputs ("\n\ncos:\n", stdout);   printf ("%d failures; %d errors; error rate %0.2f%%\n",	   cos_failures, cos_errors, cos_errors * 100.0 / (double) (1 << N2));   fputs ("maximum error:   ", stdout);   print_mpn_hex (cos_maxerror, (FRAC / 4) + 1);   fputs ("\nerror in cos(1): ", stdout);   print_mpn_hex (c3, (FRAC / 4) + 1);   putchar ('\n');   return (sin_failures == 0 && cos_failures == 0) ? 0 : 1;}