OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [920501-6.c] - Diff between revs 297 and 338

Only display areas with differences | Details | Blame | View Log

Rev 297 Rev 338
#include <stdio.h>
#include <stdio.h>
 
 
/* Convert a decimal string to a long long unsigned.  No error check is
/* Convert a decimal string to a long long unsigned.  No error check is
   performed.  */
   performed.  */
 
 
long long unsigned
long long unsigned
str2llu (str)
str2llu (str)
     char *str;
     char *str;
{
{
  long long unsigned acc;
  long long unsigned acc;
  int d;
  int d;
  acc =  *str++ - '0';
  acc =  *str++ - '0';
  for (;;)
  for (;;)
    {
    {
      d = *str++;
      d = *str++;
      if (d == '\0')
      if (d == '\0')
        break;
        break;
      d -= '0';
      d -= '0';
      acc = acc * 10 + d;
      acc = acc * 10 + d;
    }
    }
 
 
  return acc;
  return acc;
}
}
 
 
/* isqrt(t) - computes the square root of t. (tege 86-10-27) */
/* isqrt(t) - computes the square root of t. (tege 86-10-27) */
 
 
long unsigned
long unsigned
sqrtllu (long long unsigned t)
sqrtllu (long long unsigned t)
{
{
  long long unsigned s;
  long long unsigned s;
  long long unsigned b;
  long long unsigned b;
 
 
  for (b = 0, s = t;  b++, (s >>= 1) != 0; )
  for (b = 0, s = t;  b++, (s >>= 1) != 0; )
    ;
    ;
 
 
  s = 1LL << (b >> 1);
  s = 1LL << (b >> 1);
 
 
  if (b & 1)
  if (b & 1)
    s += s >> 1;
    s += s >> 1;
 
 
  do
  do
    {
    {
      b = t / s;
      b = t / s;
      s = (s + b) >> 1;
      s = (s + b) >> 1;
    }
    }
  while (b < s);
  while (b < s);
 
 
  return s;
  return s;
}
}
 
 
 
 
int plist (p0, p1, tab)
int plist (p0, p1, tab)
     long long unsigned p0, p1;
     long long unsigned p0, p1;
     long long unsigned *tab;
     long long unsigned *tab;
{
{
  long long unsigned p;
  long long unsigned p;
  long unsigned d;
  long unsigned d;
  long unsigned s;
  long unsigned s;
  long long unsigned *xp = tab;
  long long unsigned *xp = tab;
 
 
  for (p = p0;  p <= p1;  p += 2)
  for (p = p0;  p <= p1;  p += 2)
    {
    {
      s = sqrtllu (p);
      s = sqrtllu (p);
 
 
      for (d = 3;  d <= s;  d += 2)
      for (d = 3;  d <= s;  d += 2)
        {
        {
          long long unsigned q = p % d;
          long long unsigned q = p % d;
          if (q == 0)
          if (q == 0)
            goto not_prime;
            goto not_prime;
        }
        }
 
 
      *xp++ = p;
      *xp++ = p;
    not_prime:;
    not_prime:;
    }
    }
  *xp = 0;
  *xp = 0;
  return xp - tab;
  return xp - tab;
}
}
 
 
main (argc, argv)
main (argc, argv)
     int argc;
     int argc;
     char *argv[];
     char *argv[];
{
{
  long long tab[10];
  long long tab[10];
  int nprimes;
  int nprimes;
  nprimes = plist (str2llu ("1234111111"), str2llu ("1234111127"), tab);
  nprimes = plist (str2llu ("1234111111"), str2llu ("1234111127"), tab);
 
 
  if(tab[0]!=1234111117LL||tab[1]!=1234111121LL||tab[2]!=1234111127LL||tab[3]!=0)
  if(tab[0]!=1234111117LL||tab[1]!=1234111121LL||tab[2]!=1234111127LL||tab[3]!=0)
    abort();
    abort();
 
 
  exit(0);
  exit(0);
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.