177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===-- divdc3_test.c - Test __divdc3 -------------------------------------===// 277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// The LLVM Compiler Infrastructure 477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// This file is distributed under the University of Illinois Open Source 677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// License. See LICENSE.TXT for details. 777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===----------------------------------------------------------------------===// 977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// This file tests __divdc3 for the compiler_rt library. 1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===----------------------------------------------------------------------===// 1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include "int_lib.h" 1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include <math.h> 1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include <complex.h> 1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include <stdio.h> 1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// Returns: the quotient of (a + ib) / (c + id) 2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaodouble _Complex __divdc3(double __a, double __b, double __c, double __d); 2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoenum {zero, non_zero, inf, NaN, non_zero_nan}; 2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint 2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoclassify(double _Complex x) 2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{ 2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (x == 0) 2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return zero; 3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (isinf(creal(x)) || isinf(cimag(x))) 3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return inf; 3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (isnan(creal(x)) && isnan(cimag(x))) 3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return NaN; 3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (isnan(creal(x))) 3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (cimag(x) == 0) 3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return NaN; 3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return non_zero_nan; 3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (isnan(cimag(x))) 4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (creal(x) == 0) 4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return NaN; 4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return non_zero_nan; 4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return non_zero; 4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint test__divdc3(double a, double b, double c, double d) 5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{ 5177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao double _Complex r = __divdc3(a, b, c, d); 5277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// printf("test__divdc3(%f, %f, %f, %f) = %f + I%f\n", 5377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// a, b, c, d, creal(r), cimag(r)); 5477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao double _Complex dividend; 5577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao double _Complex divisor; 5677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 5777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao __real__ dividend = a; 5877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao __imag__ dividend = b; 5977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao __real__ divisor = c; 6077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao __imag__ divisor = d; 6177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 6277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao switch (classify(dividend)) 6377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 6477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case zero: 6577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao switch (classify(divisor)) 6677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 6777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case zero: 6877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 6977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 7177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero: 7277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != zero) 7377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 7577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case inf: 7677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != zero) 7777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 7977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case NaN: 8077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 8177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 8277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 8377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero_nan: 8477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 8577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 8677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 8777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 8877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 8977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero: 9077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao switch (classify(divisor)) 9177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 9277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case zero: 9377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != inf) 9477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 9577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 9677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero: 9777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != non_zero) 9877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 9977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 10077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao double _Complex z = (a * c + b * d) / (c * c + d * d) 10177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao + (b * c - a * d) / (c * c + d * d) * _Complex_I; 10277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (cabs((r-z)/r) > 1.e-6) 10377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 10477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 10577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 10677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case inf: 10777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != zero) 10877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 10977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 11077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case NaN: 11177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 11277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 11377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 11477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero_nan: 11577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 11677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 11777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 11877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 11977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 12077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case inf: 12177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao switch (classify(divisor)) 12277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 12377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case zero: 12477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != inf) 12577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 12677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 12777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero: 12877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != inf) 12977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 13077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 13177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case inf: 13277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 13377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 13477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 13577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case NaN: 13677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 13777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 13877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 13977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero_nan: 14077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 14177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 14277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 14377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 14477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 14577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case NaN: 14677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao switch (classify(divisor)) 14777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 14877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case zero: 14977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 15077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 15177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 15277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero: 15377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 15477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 15577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 15677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case inf: 15777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 15877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 15977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 16077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case NaN: 16177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 16277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 16377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 16477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero_nan: 16577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 16677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 16777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 16877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 16977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 17077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero_nan: 17177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao switch (classify(divisor)) 17277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 17377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case zero: 17477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != inf) 17577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 17677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 17777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero: 17877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 17977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 18077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 18177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case inf: 18277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 18377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 18477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 18577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case NaN: 18677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 18777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 18877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 18977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao case non_zero_nan: 19077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (classify(r) != NaN) 19177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 19277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 19377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 19477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao break; 19577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 19677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 19777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 0; 19877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 19977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 20077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaodouble x[][2] = 20177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{ 20277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e-6, 1.e-6}, 20377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e-6, 1.e-6}, 20477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e-6, -1.e-6}, 20577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e-6, -1.e-6}, 20677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 20777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e+6, 1.e-6}, 20877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e+6, 1.e-6}, 20977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e+6, -1.e-6}, 21077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e+6, -1.e-6}, 21177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 21277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e-6, 1.e+6}, 21377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e-6, 1.e+6}, 21477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e-6, -1.e+6}, 21577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e-6, -1.e+6}, 21677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 21777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e+6, 1.e+6}, 21877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e+6, 1.e+6}, 21977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1.e+6, -1.e+6}, 22077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 1.e+6, -1.e+6}, 22177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 22277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, NAN}, 22377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, NAN}, 22477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, NAN}, 22577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, NAN}, 22677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, NAN}, 22777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., NAN}, 22877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., NAN}, 22977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, NAN}, 23077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, NAN}, 23177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, NAN}, 23277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, NAN}, 23377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 23477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, -INFINITY}, 23577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, -INFINITY}, 23677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, -INFINITY}, 23777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, -INFINITY}, 23877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, -INFINITY}, 23977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., -INFINITY}, 24077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., -INFINITY}, 24177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, -INFINITY}, 24277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, -INFINITY}, 24377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, -INFINITY}, 24477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, -INFINITY}, 24577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 24677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, -2}, 24777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, -2}, 24877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, -2}, 24977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, -2}, 25077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, -2}, 25177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., -2}, 25277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., -2}, 25377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, -2}, 25477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, -2}, 25577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, -2}, 25677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, -2}, 25777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 25877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, -1}, 25977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, -1}, 26077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, -1}, 26177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, -1}, 26277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, -1}, 26377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., -1}, 26477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., -1}, 26577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, -1}, 26677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, -1}, 26777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, -1}, 26877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, -1}, 26977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 27077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, -0.5}, 27177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, -0.5}, 27277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, -0.5}, 27377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, -0.5}, 27477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, -0.5}, 27577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., -0.5}, 27677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., -0.5}, 27777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, -0.5}, 27877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, -0.5}, 27977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, -0.5}, 28077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, -0.5}, 28177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 28277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, -0.}, 28377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, -0.}, 28477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, -0.}, 28577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, -0.}, 28677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, -0.}, 28777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., -0.}, 28877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., -0.}, 28977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, -0.}, 29077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, -0.}, 29177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, -0.}, 29277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, -0.}, 29377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 29477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, 0.}, 29577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, 0.}, 29677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, 0.}, 29777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, 0.}, 29877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, 0.}, 29977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., 0.}, 30077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., 0.}, 30177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, 0.}, 30277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, 0.}, 30377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, 0.}, 30477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, 0.}, 30577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 30677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, 0.5}, 30777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, 0.5}, 30877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, 0.5}, 30977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, 0.5}, 31077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, 0.5}, 31177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., 0.5}, 31277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., 0.5}, 31377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, 0.5}, 31477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, 0.5}, 31577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, 0.5}, 31677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, 0.5}, 31777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 31877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, 1}, 31977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, 1}, 32077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, 1}, 32177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, 1}, 32277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, 1}, 32377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., 1}, 32477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., 1}, 32577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, 1}, 32677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, 1}, 32777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, 1}, 32877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, 1}, 32977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 33077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, 2}, 33177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, 2}, 33277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, 2}, 33377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, 2}, 33477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, 2}, 33577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., 2}, 33677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., 2}, 33777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, 2}, 33877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, 2}, 33977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, 2}, 34077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, 2}, 34177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 34277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {NAN, INFINITY}, 34377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-INFINITY, INFINITY}, 34477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-2, INFINITY}, 34577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-1, INFINITY}, 34677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0.5, INFINITY}, 34777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {-0., INFINITY}, 34877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {+0., INFINITY}, 34977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {0.5, INFINITY}, 35077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {1, INFINITY}, 35177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {2, INFINITY}, 35277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao {INFINITY, INFINITY} 35377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 35477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}; 35577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 35677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint main() 35777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{ 35877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao const unsigned N = sizeof(x) / sizeof(x[0]); 35977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao unsigned i, j; 36077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao for (i = 0; i < N; ++i) 36177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 36277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao for (j = 0; j < N; ++j) 36377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao { 36477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__divdc3(x[i][0], x[i][1], x[j][0], x[j][1])) 36577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 36677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 36777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 36877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 36977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 0; 37077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 371