1d86ed7fbStbbdev /*
2*b15aabb3Stbbdev     Copyright (c) 2005-2021 Intel Corporation
3d86ed7fbStbbdev 
4d86ed7fbStbbdev     Licensed under the Apache License, Version 2.0 (the "License");
5d86ed7fbStbbdev     you may not use this file except in compliance with the License.
6d86ed7fbStbbdev     You may obtain a copy of the License at
7d86ed7fbStbbdev 
8d86ed7fbStbbdev         http://www.apache.org/licenses/LICENSE-2.0
9d86ed7fbStbbdev 
10d86ed7fbStbbdev     Unless required by applicable law or agreed to in writing, software
11d86ed7fbStbbdev     distributed under the License is distributed on an "AS IS" BASIS,
12d86ed7fbStbbdev     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d86ed7fbStbbdev     See the License for the specific language governing permissions and
14d86ed7fbStbbdev     limitations under the License.
15d86ed7fbStbbdev */
16d86ed7fbStbbdev 
17d86ed7fbStbbdev #include <cstdlib>
18d86ed7fbStbbdev #include <cstdio>
19d86ed7fbStbbdev 
20d86ed7fbStbbdev #include <stdexcept>
21d86ed7fbStbbdev 
22d86ed7fbStbbdev #if _WIN32
23d86ed7fbStbbdev #include <io.h>
24d86ed7fbStbbdev #ifndef F_OK
25d86ed7fbStbbdev #define F_OK 0
26d86ed7fbStbbdev #endif
27d86ed7fbStbbdev #define access _access
28d86ed7fbStbbdev #else
29d86ed7fbStbbdev #include <unistd.h>
30d86ed7fbStbbdev #endif
31d86ed7fbStbbdev 
32d86ed7fbStbbdev const long INPUT_SIZE = 1000000;
33d86ed7fbStbbdev 
34d86ed7fbStbbdev //! Generates sample input for square.cpp
gen_input(const char * fname)35d86ed7fbStbbdev void gen_input(const char *fname) {
36d86ed7fbStbbdev     long num = INPUT_SIZE;
37d86ed7fbStbbdev     FILE *fptr = fopen(fname, "w");
38d86ed7fbStbbdev     if (!fptr) {
39d86ed7fbStbbdev         throw std::runtime_error("Could not open file for generating input");
40d86ed7fbStbbdev     }
41d86ed7fbStbbdev 
42d86ed7fbStbbdev     int a = 0;
43d86ed7fbStbbdev     int b = 1;
44d86ed7fbStbbdev     for (long j = 0; j < num; ++j) {
45d86ed7fbStbbdev         fprintf(fptr, "%u\n", a);
46d86ed7fbStbbdev         b += a;
47d86ed7fbStbbdev         a = (b - a) % 10000;
48d86ed7fbStbbdev         if (a < 0)
49d86ed7fbStbbdev             a = -a;
50d86ed7fbStbbdev     }
51d86ed7fbStbbdev 
52d86ed7fbStbbdev     if (fptr) {
53d86ed7fbStbbdev         fclose(fptr);
54d86ed7fbStbbdev     }
55d86ed7fbStbbdev }
56d86ed7fbStbbdev 
generate_if_needed(const char * fname)57d86ed7fbStbbdev void generate_if_needed(const char *fname) {
58d86ed7fbStbbdev     if (access(fname, F_OK) != 0)
59d86ed7fbStbbdev         gen_input(fname);
60d86ed7fbStbbdev }
61