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