1long long
2signed_poly (long long sum, long x)
3{
4  sum += (long long) (long) sum * (long long) x;
5  return sum;
6}
7
8unsigned long long
9unsigned_poly (unsigned long long sum, unsigned long x)
10{
11  sum += (unsigned long long) (unsigned long) sum * (unsigned long long) x;
12  return sum;
13}
14
15int
16main (void)
17{
18  if (signed_poly (2LL, -3) != -4LL)
19    abort ();
20
21  if (unsigned_poly (2ULL, 3) != 8ULL)
22    abort ();
23
24  exit (0);
25}
26