1 /*
2 * Copyright (C) Bull S.A. 2001
3 * Copyright (c) International Business Machines Corp., 2001
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
13 * the GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20 /******************************************************************************/
21 /* */
22 /* Dec-03-2001 Created: Jacky Malcles & Jean Noel Cordenner */
23 /* These tests are adapted from AIX float PVT tests. */
24 /* */
25 /******************************************************************************/
26 #include <float.h>
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <string.h>
30 #include <errno.h>
31 #include <limits.h>
32 #include <unistd.h>
33 #include <fcntl.h>
34 #include <errno.h>
35 #include <sys/signal.h>
36 #include <math.h>
37
38 #define M_PIl 3.1415926535897932384626433832795029L
39
create_Result_file(void)40 static int create_Result_file(void)
41 {
42
43 int i, nbVal;
44 double tabRsin[20000], Inc;
45 char *F_name;
46 int fp;
47
48 F_name = "rsin";
49 nbVal = 20000;
50
51 Inc = (2 * M_PIl) / nbVal; /* condering a period of 2 pi rad */
52
53 for (i = 0; i < nbVal; i++)
54 tabRsin[i] = sin(Inc * i);
55
56 fp = open(F_name, O_RDWR | O_CREAT | O_TRUNC, 0777);
57 if (!fp) {
58 printf("error opening file");
59 close(fp);
60 return -1;
61 } else {
62 for (i = 0; i < nbVal; i++) {
63 write(fp, &tabRsin[i], sizeof(double));
64 }
65
66 close(fp);
67 return 0;
68 }
69 }
70
create_Data_file(void)71 static int create_Data_file(void)
72 {
73 int i, nbVal;
74 double tabDsin[20000], Inc;
75 char *F_name;
76 int fp;
77
78 F_name = "dsin";
79 nbVal = 20000;
80
81 Inc = (2 * M_PIl) / nbVal; /* condering a period of 2 pi rad */
82
83 for (i = 0; i < nbVal; i++)
84 tabDsin[i] = (Inc * i);
85
86 fp = open(F_name, O_RDWR | O_CREAT | O_TRUNC, 0777);
87 if (!fp) {
88 printf("error opening file");
89 close(fp);
90 return -1;
91 } else {
92 for (i = 0; i < nbVal; i++) {
93 write(fp, &tabDsin[i], sizeof(double));
94 }
95 close(fp);
96 return 0;
97 }
98 }
99
main(int argc,char * argv[])100 int main(int argc, char *argv[])
101 {
102
103 if (argc > 1) {
104 switch (atoi(argv[1])) {
105 case 1:
106 if (create_Data_file() == 0)
107 printf("Data file created\n");
108 else
109 printf
110 ("problem during sin data file creation\n");
111 break;
112
113 case 2:
114 if (create_Result_file() == 0)
115 printf("Result file created\n");
116 else
117 printf
118 ("problem during sin result file creation\n");
119 break;
120 default:
121 printf("Bad arglist code for: '%s'\n", argv[0]);
122 return -1;
123 break;
124 }
125 } else {
126 if (create_Data_file() != 0)
127 printf("problem during sin data file creation\n");
128 if (create_Result_file() != 0)
129 printf("problem during sin result file creation\n");
130 }
131
132 return (0);
133
134 }
135