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)35d86ed7fbStbbdevvoid 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)57d86ed7fbStbbdevvoid generate_if_needed(const char *fname) { 58d86ed7fbStbbdev if (access(fname, F_OK) != 0) 59d86ed7fbStbbdev gen_input(fname); 60d86ed7fbStbbdev } 61