OSDN Git Service

initial commit
[openbsd-octeon/openbsd-octeon.git] / src / regress / lib / libm / rint / rint.c
1 /*      $OpenBSD: rint.c,v 1.7 2008/12/09 20:35:13 martynas Exp $       */
2
3 /*      Written by Michael Shalayeff, 2003,  Public domain.     */
4
5 #include <err.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <string.h>
9 #include <signal.h>
10 #include <unistd.h>
11 #include <math.h>
12
13 static void
14 sigfpe(int sig, siginfo_t *si, void *v)
15 {
16         char buf[132];
17
18         if (si) {
19                 snprintf(buf, sizeof(buf), "sigfpe: addr=%p, code=%d\n",
20                     si->si_addr, si->si_code);
21                 write(1, buf, strlen(buf));
22         }
23         _exit(1);
24 }
25
26 int
27 main(int argc, char *argv[])
28 {
29         struct sigaction sa;
30
31         memset(&sa, 0, sizeof(sa));
32         sa.sa_sigaction = sigfpe;
33         sa.sa_flags = SA_SIGINFO;
34         sigaction(SIGFPE, &sa, NULL);
35
36         if (rint(8.6) != 9.)
37                 errx(1, "rint");
38         if (rintf(8.6F) != 9)
39                 errx(1, "rintf");
40         if (rintl(8.6L) != 9)
41                 errx(1, "rintl");
42         if (lrint(8.6) != 9L)
43                 errx(1, "lrint");
44         if (lrintf(8.6F) != 9L)
45                 errx(1, "lrintf");
46         if (llrint(8.6) != 9LL)
47                 errx(1, "llrint");
48         if (llrintf(8.6F) != 9LL)
49                 errx(1, "llrintf");
50
51         exit(0);
52 }