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