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 tabR[20000], Inc;
45 char *F_name;
46 int fp;
47
48 F_name = "hypot_out.ref";
49 nbVal = 20000;
50
51 Inc = (2 * M_PIl) / nbVal;
52
53 for (i = 0; i < nbVal; i++) {
54 tabR[i] = hypot(cos(Inc * 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, &tabR[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 tabD[20000], Inc;
75 char *F_name;
76 int fp;
77
78 F_name = "hypot_inp.ref";
79 nbVal = 20000;
80
81 Inc = (2 * M_PIl) / nbVal;
82
83 for (i = 0; i < nbVal; i++) {
84 tabD[i] = (Inc * i);
85 }
86
87 fp = open(F_name, O_RDWR | O_CREAT | O_TRUNC, 0777);
88 if (!fp) {
89 printf("error opening file");
90 close(fp);
91 return -1;
92 } else {
93 for (i = 0; i < nbVal; i++) {
94 write(fp, &tabD[i], sizeof(double));
95 }
96 close(fp);
97 return 0;
98 }
99 }
100
main(int argc,char * argv[])101 int main(int argc, char *argv[])
102 {
103
104 if (argc > 1) {
105 switch (atoi(argv[1])) {
106 case 1:
107 if (create_Data_file() == 0)
108 printf("Data file created\n");
109 else
110 printf("problem during %s data file creation\n",
111 argv[0]);
112 break;
113
114 case 2:
115 if (create_Result_file() == 0)
116 printf("Result file created\n");
117 else
118 printf
119 ("problem during %s result file creation\n",
120 argv[0]);
121 break;
122 default:
123 printf("Bad arglist code for: '%s'\n", argv[0]);
124 return -1;
125 break;
126 }
127 } else {
128 if (create_Data_file() != 0)
129 printf("problem during %s data file creation\n",
130 argv[0]);
131 if (create_Result_file() != 0)
132 printf("problem during %s result file creation\n",
133 argv[0]);
134 }
135
136 return (0);
137
138 }
139