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