1b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//===-- muldc3_test.c - Test __muldc3 -------------------------------------===// 2b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// 3b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// The LLVM Compiler Infrastructure 4b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// 59ad441ffec97db647fee3725b3424284fb913e14Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 69ad441ffec97db647fee3725b3424284fb913e14Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// 8b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//===----------------------------------------------------------------------===// 9b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// 10b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// This file tests __muldc3 for the compiler_rt library. 11b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// 12b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar//===----------------------------------------------------------------------===// 13b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 14b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#include "int_lib.h" 15b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#include <math.h> 16b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#include <complex.h> 17b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#include <stdio.h> 18b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 19b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// Returns: the product of a + ib and c + id 20b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 21b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbardouble _Complex __muldc3(double __a, double __b, double __c, double __d); 22b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 23b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarenum {zero, non_zero, inf, NaN, non_zero_nan}; 24b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 25b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarint 26b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarclassify(double _Complex x) 27b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{ 28b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (x == 0) 29b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return zero; 30b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (isinf(creal(x)) || isinf(cimag(x))) 31b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return inf; 32b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (isnan(creal(x)) && isnan(cimag(x))) 33b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return NaN; 34b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (isnan(creal(x))) 35b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 36b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (cimag(x) == 0) 37b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return NaN; 38b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return non_zero_nan; 39b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 40b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (isnan(cimag(x))) 41b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 42b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (creal(x) == 0) 43b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return NaN; 44b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return non_zero_nan; 45b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 46b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return non_zero; 47b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} 48b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 49b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarint test__muldc3(double a, double b, double c, double d) 50b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{ 51b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar double _Complex r = __muldc3(a, b, c, d); 52b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// printf("test__muldc3(%f, %f, %f, %f) = %f + I%f\n", 53b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar// a, b, c, d, creal(r), cimag(r)); 54b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar double _Complex dividend; 55b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar double _Complex divisor; 56b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 57b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar __real__ dividend = a; 58b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar __imag__ dividend = b; 59b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar __real__ divisor = c; 60b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar __imag__ divisor = d; 61b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 62b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar switch (classify(dividend)) 63b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 64b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case zero: 65b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar switch (classify(divisor)) 66b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 67b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case zero: 68b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != zero) 69b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 70b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 71b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero: 72b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != zero) 73b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 74b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 75b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case inf: 76b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 77b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 78b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 79b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case NaN: 80b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 81b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 82b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 83b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero_nan: 84b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 85b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 86b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 87b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 88b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 89b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero: 90b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar switch (classify(divisor)) 91b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 92b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case zero: 93b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != zero) 94b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 95b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 96b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero: 97b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != non_zero) 98b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 99b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (r != a * c - b * d + _Complex_I*(a * d + b * c)) 100b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 101b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 102b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case inf: 103b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != inf) 104b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 105b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 106b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case NaN: 107b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 108b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 109b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 110b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero_nan: 111b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 112b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 113b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 114b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 115b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 116b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case inf: 117b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar switch (classify(divisor)) 118b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 119b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case zero: 120b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 121b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 122b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 123b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero: 124b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != inf) 125b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 126b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 127b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case inf: 128b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != inf) 129b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 130b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 131b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case NaN: 132b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 133b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 134b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 135b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero_nan: 136b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != inf) 137b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 138b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 139b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 140b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 141b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case NaN: 142b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar switch (classify(divisor)) 143b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 144b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case zero: 145b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 146b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 147b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 148b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero: 149b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 150b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 151b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 152b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case inf: 153b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 154b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 155b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 156b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case NaN: 157b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 158b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 159b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 160b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero_nan: 161b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 162b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 163b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 164b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 165b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 166b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero_nan: 167b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar switch (classify(divisor)) 168b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 169b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case zero: 170b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 171b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 172b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 173b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero: 174b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 175b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 176b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 177b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case inf: 178b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != inf) 179b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 180b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 181b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case NaN: 182b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 183b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 184b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 185b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar case non_zero_nan: 186b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (classify(r) != NaN) 187b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 188b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 189b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 190b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar break; 191b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 192b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 193b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 0; 194b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} 195b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 196b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbardouble x[][2] = 197b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{ 198b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e-6, 1.e-6}, 199b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e-6, 1.e-6}, 200b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e-6, -1.e-6}, 201b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e-6, -1.e-6}, 202b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 203b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e+6, 1.e-6}, 204b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e+6, 1.e-6}, 205b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e+6, -1.e-6}, 206b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e+6, -1.e-6}, 207b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 208b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e-6, 1.e+6}, 209b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e-6, 1.e+6}, 210b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e-6, -1.e+6}, 211b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e-6, -1.e+6}, 212b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 213b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e+6, 1.e+6}, 214b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e+6, 1.e+6}, 215b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1.e+6, -1.e+6}, 216b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 1.e+6, -1.e+6}, 217b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 218b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, NAN}, 219b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, NAN}, 220b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, NAN}, 221b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, NAN}, 222b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, NAN}, 223b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., NAN}, 224b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., NAN}, 225b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, NAN}, 226b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, NAN}, 227b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, NAN}, 228b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, NAN}, 229b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 230b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, -INFINITY}, 231b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, -INFINITY}, 232b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, -INFINITY}, 233b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, -INFINITY}, 234b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, -INFINITY}, 235b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., -INFINITY}, 236b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., -INFINITY}, 237b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, -INFINITY}, 238b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, -INFINITY}, 239b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, -INFINITY}, 240b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, -INFINITY}, 241b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 242b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, -2}, 243b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, -2}, 244b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, -2}, 245b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, -2}, 246b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, -2}, 247b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., -2}, 248b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., -2}, 249b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, -2}, 250b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, -2}, 251b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, -2}, 252b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, -2}, 253b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 254b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, -1}, 255b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, -1}, 256b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, -1}, 257b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, -1}, 258b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, -1}, 259b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., -1}, 260b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., -1}, 261b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, -1}, 262b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, -1}, 263b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, -1}, 264b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, -1}, 265b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 266b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, -0.5}, 267b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, -0.5}, 268b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, -0.5}, 269b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, -0.5}, 270b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, -0.5}, 271b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., -0.5}, 272b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., -0.5}, 273b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, -0.5}, 274b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, -0.5}, 275b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, -0.5}, 276b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, -0.5}, 277b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 278b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, -0.}, 279b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, -0.}, 280b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, -0.}, 281b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, -0.}, 282b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, -0.}, 283b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., -0.}, 284b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., -0.}, 285b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, -0.}, 286b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, -0.}, 287b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, -0.}, 288b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, -0.}, 289b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 290b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, 0.}, 291b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, 0.}, 292b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, 0.}, 293b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, 0.}, 294b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, 0.}, 295b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., 0.}, 296b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., 0.}, 297b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, 0.}, 298b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, 0.}, 299b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, 0.}, 300b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, 0.}, 301b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 302b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, 0.5}, 303b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, 0.5}, 304b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, 0.5}, 305b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, 0.5}, 306b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, 0.5}, 307b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., 0.5}, 308b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., 0.5}, 309b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, 0.5}, 310b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, 0.5}, 311b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, 0.5}, 312b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, 0.5}, 313b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 314b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, 1}, 315b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, 1}, 316b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, 1}, 317b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, 1}, 318b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, 1}, 319b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., 1}, 320b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., 1}, 321b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, 1}, 322b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, 1}, 323b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, 1}, 324b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, 1}, 325b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 326b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, 2}, 327b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, 2}, 328b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, 2}, 329b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, 2}, 330b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, 2}, 331b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., 2}, 332b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., 2}, 333b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, 2}, 334b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, 2}, 335b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, 2}, 336b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, 2}, 337b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 338b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {NAN, INFINITY}, 339b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-INFINITY, INFINITY}, 340b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-2, INFINITY}, 341b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-1, INFINITY}, 342b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0.5, INFINITY}, 343b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {-0., INFINITY}, 344b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {+0., INFINITY}, 345b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {0.5, INFINITY}, 346b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {1, INFINITY}, 347b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {2, INFINITY}, 348b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar {INFINITY, INFINITY} 349b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 350b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar}; 351b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 352b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarint main() 353b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar{ 354b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar const unsigned N = sizeof(x) / sizeof(x[0]); 355b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar unsigned i, j; 356b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar for (i = 0; i < N; ++i) 357b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 358b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar for (j = 0; j < N; ++j) 359b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar { 360b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar if (test__muldc3(x[i][0], x[i][1], x[j][0], x[j][1])) 361b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 1; 362b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 363b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar } 364b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 365b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar return 0; 366b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar} 367