160d7101085a33323664fc145e21a8a07057015e0robbiew/* 260d7101085a33323664fc145e21a8a07057015e0robbiew * Copyright (C) Bull S.A. 2001 360d7101085a33323664fc145e21a8a07057015e0robbiew * Copyright (c) International Business Machines Corp., 2001 460d7101085a33323664fc145e21a8a07057015e0robbiew * 560d7101085a33323664fc145e21a8a07057015e0robbiew * This program is free software; you can redistribute it and/or modify 660d7101085a33323664fc145e21a8a07057015e0robbiew * it under the terms of the GNU General Public License as published by 760d7101085a33323664fc145e21a8a07057015e0robbiew * the Free Software Foundation; either version 2 of the License, or 860d7101085a33323664fc145e21a8a07057015e0robbiew * (at your option) any later version. 960d7101085a33323664fc145e21a8a07057015e0robbiew * 1060d7101085a33323664fc145e21a8a07057015e0robbiew * This program is distributed in the hope that it will be useful, 1160d7101085a33323664fc145e21a8a07057015e0robbiew * but WITHOUT ANY WARRANTY; without even the implied warranty of 1260d7101085a33323664fc145e21a8a07057015e0robbiew * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 1360d7101085a33323664fc145e21a8a07057015e0robbiew * the GNU General Public License for more details. 1460d7101085a33323664fc145e21a8a07057015e0robbiew * 1560d7101085a33323664fc145e21a8a07057015e0robbiew * You should have received a copy of the GNU General Public License 1660d7101085a33323664fc145e21a8a07057015e0robbiew * along with this program; if not, write to the Free Software 174548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 1860d7101085a33323664fc145e21a8a07057015e0robbiew */ 1960d7101085a33323664fc145e21a8a07057015e0robbiew 2060d7101085a33323664fc145e21a8a07057015e0robbiew/******************************************************************************/ 2160d7101085a33323664fc145e21a8a07057015e0robbiew/* */ 2260d7101085a33323664fc145e21a8a07057015e0robbiew/* Dec-03-2001 Created: Jacky Malcles & Jean Noel Cordenner */ 2360d7101085a33323664fc145e21a8a07057015e0robbiew/* These tests are adapted from AIX float PVT tests. */ 2460d7101085a33323664fc145e21a8a07057015e0robbiew/* */ 2560d7101085a33323664fc145e21a8a07057015e0robbiew/******************************************************************************/ 26fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <float.h> 27fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <stdio.h> 28fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <stdlib.h> 29fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <string.h> 30fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <errno.h> 31fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <limits.h> 32fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <unistd.h> 33fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <fcntl.h> 34fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <errno.h> 35fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <sys/signal.h> 36fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger#include <math.h> 37fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger 38fc47348dda2b089321861f5a6c27534172661aa4Mike Frysingerint create_Result_file(void) 3960d7101085a33323664fc145e21a8a07057015e0robbiew{ 4060d7101085a33323664fc145e21a8a07057015e0robbiew int i, nbVal; 41fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger double tabR[20000], Inc; 4260d7101085a33323664fc145e21a8a07057015e0robbiew char *F_name; 4360d7101085a33323664fc145e21a8a07057015e0robbiew int fp; 4460d7101085a33323664fc145e21a8a07057015e0robbiew 4560d7101085a33323664fc145e21a8a07057015e0robbiew F_name = "sqrt_out.ref"; 462c28215423293e443469a07ae7011135d058b671Garrett Cooper nbVal = 20000; 4760d7101085a33323664fc145e21a8a07057015e0robbiew 48fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger for (i = 0; i < nbVal; i++) { 4960d7101085a33323664fc145e21a8a07057015e0robbiew Inc = exp(2); 50fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger tabR[i] = sqrt(Inc * i + Inc); 5160d7101085a33323664fc145e21a8a07057015e0robbiew } 5260d7101085a33323664fc145e21a8a07057015e0robbiew 53fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger fp = open(F_name, O_RDWR | O_CREAT | O_TRUNC, 0777); 54fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger if (!fp) { 55fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger printf("error opening file"); 5660d7101085a33323664fc145e21a8a07057015e0robbiew close(fp); 5760d7101085a33323664fc145e21a8a07057015e0robbiew return -1; 58fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger } else { 59fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger for (i = 0; i < nbVal; i++) { 60fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger write(fp, &tabR[i], sizeof(double)); 6160d7101085a33323664fc145e21a8a07057015e0robbiew } 6260d7101085a33323664fc145e21a8a07057015e0robbiew 6360d7101085a33323664fc145e21a8a07057015e0robbiew close(fp); 6460d7101085a33323664fc145e21a8a07057015e0robbiew return 0; 6560d7101085a33323664fc145e21a8a07057015e0robbiew } 6660d7101085a33323664fc145e21a8a07057015e0robbiew} 6760d7101085a33323664fc145e21a8a07057015e0robbiew 6860d7101085a33323664fc145e21a8a07057015e0robbiew/********************************************************************* 6960d7101085a33323664fc145e21a8a07057015e0robbiew * 7060d7101085a33323664fc145e21a8a07057015e0robbiew * create input data file 7160d7101085a33323664fc145e21a8a07057015e0robbiew * 7260d7101085a33323664fc145e21a8a07057015e0robbiew */ 7360d7101085a33323664fc145e21a8a07057015e0robbiew 74fc47348dda2b089321861f5a6c27534172661aa4Mike Frysingerint create_Data_file(void) 7560d7101085a33323664fc145e21a8a07057015e0robbiew{ 7660d7101085a33323664fc145e21a8a07057015e0robbiew int i, nbVal; 77fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger double tabD[20000], Inc; 7860d7101085a33323664fc145e21a8a07057015e0robbiew char *F_name; 7960d7101085a33323664fc145e21a8a07057015e0robbiew int fp; 8060d7101085a33323664fc145e21a8a07057015e0robbiew 8160d7101085a33323664fc145e21a8a07057015e0robbiew F_name = "sqrt_inp.ref"; 822c28215423293e443469a07ae7011135d058b671Garrett Cooper nbVal = 20000; 8360d7101085a33323664fc145e21a8a07057015e0robbiew 8460d7101085a33323664fc145e21a8a07057015e0robbiew Inc = exp(2); 8560d7101085a33323664fc145e21a8a07057015e0robbiew 86fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger for (i = 0; i < nbVal; i++) { 8760d7101085a33323664fc145e21a8a07057015e0robbiew tabD[i] = (Inc * i) + Inc; 8860d7101085a33323664fc145e21a8a07057015e0robbiew } 8960d7101085a33323664fc145e21a8a07057015e0robbiew 90fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger fp = open(F_name, O_RDWR | O_CREAT | O_TRUNC, 0777); 91fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger if (!fp) { 92fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger printf("error opening file"); 93fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger close(fp); 94fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger return -1; 95fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger } else { 96fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger for (i = 0; i < nbVal; i++) { 97fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger write(fp, &tabD[i], sizeof(double)); 9860d7101085a33323664fc145e21a8a07057015e0robbiew } 9960d7101085a33323664fc145e21a8a07057015e0robbiew close(fp); 10060d7101085a33323664fc145e21a8a07057015e0robbiew return 0; 10160d7101085a33323664fc145e21a8a07057015e0robbiew } 10260d7101085a33323664fc145e21a8a07057015e0robbiew} 10360d7101085a33323664fc145e21a8a07057015e0robbiew 104fc47348dda2b089321861f5a6c27534172661aa4Mike Frysingerint main(int argc, char *argv[]) 10560d7101085a33323664fc145e21a8a07057015e0robbiew{ 106fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger if (argc > 1) { 107fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger switch (atoi(argv[1])) { 10860d7101085a33323664fc145e21a8a07057015e0robbiew case 1: 10960d7101085a33323664fc145e21a8a07057015e0robbiew if (create_Data_file() == 0) 11060d7101085a33323664fc145e21a8a07057015e0robbiew printf("Data file created\n"); 11160d7101085a33323664fc145e21a8a07057015e0robbiew else 112354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("problem during %s data file creation\n", 113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao argv[0]); 11460d7101085a33323664fc145e21a8a07057015e0robbiew break; 11560d7101085a33323664fc145e21a8a07057015e0robbiew 11660d7101085a33323664fc145e21a8a07057015e0robbiew case 2: 11760d7101085a33323664fc145e21a8a07057015e0robbiew if (create_Result_file() == 0) 11860d7101085a33323664fc145e21a8a07057015e0robbiew printf("Result file created\n"); 11960d7101085a33323664fc145e21a8a07057015e0robbiew else 120354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf 121354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("problem during %s result file creation\n", 122354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao argv[0]); 12360d7101085a33323664fc145e21a8a07057015e0robbiew break; 12460d7101085a33323664fc145e21a8a07057015e0robbiew default: 12560d7101085a33323664fc145e21a8a07057015e0robbiew printf("Bad arglist code for: '%s'\n", argv[0]); 12660d7101085a33323664fc145e21a8a07057015e0robbiew return -1; 12760d7101085a33323664fc145e21a8a07057015e0robbiew break; 12860d7101085a33323664fc145e21a8a07057015e0robbiew } 129fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger } else { 13060d7101085a33323664fc145e21a8a07057015e0robbiew if (create_Data_file() != 0) 131354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("problem during %s data file creation\n", 132354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao argv[0]); 13360d7101085a33323664fc145e21a8a07057015e0robbiew if (create_Result_file() != 0) 134354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("problem during %s result file creation\n", 135354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao argv[0]); 13660d7101085a33323664fc145e21a8a07057015e0robbiew } 137ae45c71a1ee39a8ef47ea4ff8b1197613cefe276robbiew 138fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger return 0; 139fc47348dda2b089321861f5a6c27534172661aa4Mike Frysinger} 140