aboutsummaryrefslogtreecommitdiff
path: root/tests/core/closebitcasts.c
blob: 2c9d5ab5e41d2de7cd987d28ff845c69ffaf1725 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>

int main(int argc, char **argv) {
  float x = argc%17, y = (argc+1)*(argc+2)*(argc+3)*(argc+4)*(argc*5);
  y *= 1<<30;
  y *= -13;
  if (argc == 17) { x++; y--; }
  int *xi = (int*)&x;
  int *yi = (int*)&y;
  int z = *xi - *yi;
  while (z % 15) {
    z++;
  }
  printf("!%d\n", z);

  double xd = x, yd = y;
  yd = yd*yd;
  yd = yd*yd;
  int *xl = (int*)&xd;
  int *xh = &((int*)&xd)[1];
  int *yl = (int*)&yd;
  int *yh = &((int*)&yd)[1];
  int l = *xl - *yl;
  int h = *xh - *yh;
  while (l % 15) {
    l++;
    h += 3;
  }
  printf("%d,%d!\n", l, h);
  return 0;
}