46 double __bd =
__b * __d;
47 double __ad =
__a * __d;
50 __real__(z) = __ac - __bd;
51 __imag__(z) = __ad + __bc;
52 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
54 if (__builtin_isinf(
__a) || __builtin_isinf(
__b)) {
55 __a = __builtin_copysign(__builtin_isinf(
__a) ? 1 : 0,
__a);
56 __b = __builtin_copysign(__builtin_isinf(
__b) ? 1 : 0,
__b);
57 if (__builtin_isnan(
__c))
58 __c = __builtin_copysign(0,
__c);
59 if (__builtin_isnan(__d))
60 __d = __builtin_copysign(0, __d);
63 if (__builtin_isinf(
__c) || __builtin_isinf(__d)) {
64 __c = __builtin_copysign(__builtin_isinf(
__c) ? 1 : 0,
__c);
65 __d = __builtin_copysign(__builtin_isinf(__d) ? 1 : 0, __d);
66 if (__builtin_isnan(
__a))
67 __a = __builtin_copysign(0,
__a);
68 if (__builtin_isnan(
__b))
69 __b = __builtin_copysign(0,
__b);
72 if (!__recalc && (__builtin_isinf(__ac) || __builtin_isinf(__bd) ||
73 __builtin_isinf(__ad) || __builtin_isinf(__bc))) {
74 if (__builtin_isnan(
__a))
75 __a = __builtin_copysign(0,
__a);
76 if (__builtin_isnan(
__b))
77 __b = __builtin_copysign(0,
__b);
78 if (__builtin_isnan(
__c))
79 __c = __builtin_copysign(0,
__c);
80 if (__builtin_isnan(__d))
81 __d = __builtin_copysign(0, __d);
87 __real__(z) = __builtin_huge_val() * (
__a *
__c -
__b * __d);
88 __imag__(z) = __builtin_huge_val() * (
__a * __d +
__b *
__c);
96 float __bd =
__b * __d;
97 float __ad =
__a * __d;
100 __real__(z) = __ac - __bd;
101 __imag__(z) = __ad + __bc;
102 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
104 if (__builtin_isinf(
__a) || __builtin_isinf(
__b)) {
105 __a = __builtin_copysignf(__builtin_isinf(
__a) ? 1 : 0,
__a);
106 __b = __builtin_copysignf(__builtin_isinf(
__b) ? 1 : 0,
__b);
107 if (__builtin_isnan(
__c))
108 __c = __builtin_copysignf(0,
__c);
109 if (__builtin_isnan(__d))
110 __d = __builtin_copysignf(0, __d);
113 if (__builtin_isinf(
__c) || __builtin_isinf(__d)) {
114 __c = __builtin_copysignf(__builtin_isinf(
__c) ? 1 : 0,
__c);
115 __d = __builtin_copysignf(__builtin_isinf(__d) ? 1 : 0, __d);
116 if (__builtin_isnan(
__a))
117 __a = __builtin_copysignf(0,
__a);
118 if (__builtin_isnan(
__b))
119 __b = __builtin_copysignf(0,
__b);
122 if (!__recalc && (__builtin_isinf(__ac) || __builtin_isinf(__bd) ||
123 __builtin_isinf(__ad) || __builtin_isinf(__bc))) {
124 if (__builtin_isnan(
__a))
125 __a = __builtin_copysignf(0,
__a);
126 if (__builtin_isnan(
__b))
127 __b = __builtin_copysignf(0,
__b);
128 if (__builtin_isnan(
__c))
129 __c = __builtin_copysignf(0,
__c);
130 if (__builtin_isnan(__d))
131 __d = __builtin_copysignf(0, __d);
135 __real__(z) = __builtin_huge_valf() * (
__a *
__c -
__b * __d);
136 __imag__(z) = __builtin_huge_valf() * (
__a * __d +
__b *
__c);
149 _LOGBd(__builtin_fmax(__builtin_fabs(
__c), __builtin_fabs(__d)));
150 if (__builtin_isfinite(__logbw)) {
151 __ilogbw = (
int)__logbw;
155 double __denom =
__c *
__c + __d * __d;
159 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
160 if ((__denom == 0.0) && (!__builtin_isnan(
__a) || !__builtin_isnan(
__b))) {
161 __real__(z) = __builtin_copysign(__builtin_huge_val(),
__c) *
__a;
162 __imag__(z) = __builtin_copysign(__builtin_huge_val(),
__c) *
__b;
163 }
else if ((__builtin_isinf(
__a) || __builtin_isinf(
__b)) &&
164 __builtin_isfinite(
__c) && __builtin_isfinite(__d)) {
165 __a = __builtin_copysign(__builtin_isinf(
__a) ? 1.0 : 0.0,
__a);
166 __b = __builtin_copysign(__builtin_isinf(
__b) ? 1.0 : 0.0,
__b);
167 __real__(z) = __builtin_huge_val() * (
__a *
__c +
__b * __d);
168 __imag__(z) = __builtin_huge_val() * (
__b *
__c -
__a * __d);
169 }
else if (__builtin_isinf(__logbw) && __logbw > 0.0 &&
170 __builtin_isfinite(
__a) && __builtin_isfinite(
__b)) {
171 __c = __builtin_copysign(__builtin_isinf(
__c) ? 1.0 : 0.0,
__c);
172 __d = __builtin_copysign(__builtin_isinf(__d) ? 1.0 : 0.0, __d);
173 __real__(z) = 0.0 * (
__a *
__c +
__b * __d);
174 __imag__(z) = 0.0 * (
__b *
__c -
__a * __d);
183 _LOGBf(__builtin_fmaxf(__builtin_fabsf(
__c), __builtin_fabsf(__d)));
184 if (__builtin_isfinite(__logbw)) {
185 __ilogbw = (
int)__logbw;
189 float __denom =
__c *
__c + __d * __d;
193 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
194 if ((__denom == 0) && (!__builtin_isnan(
__a) || !__builtin_isnan(
__b))) {
195 __real__(z) = __builtin_copysignf(__builtin_huge_valf(),
__c) *
__a;
196 __imag__(z) = __builtin_copysignf(__builtin_huge_valf(),
__c) *
__b;
197 }
else if ((__builtin_isinf(
__a) || __builtin_isinf(
__b)) &&
198 __builtin_isfinite(
__c) && __builtin_isfinite(__d)) {
199 __a = __builtin_copysignf(__builtin_isinf(
__a) ? 1 : 0,
__a);
200 __b = __builtin_copysignf(__builtin_isinf(
__b) ? 1 : 0,
__b);
201 __real__(z) = __builtin_huge_valf() * (
__a *
__c +
__b * __d);
202 __imag__(z) = __builtin_huge_valf() * (
__b *
__c -
__a * __d);
203 }
else if (__builtin_isinf(__logbw) && __logbw > 0 &&
204 __builtin_isfinite(
__a) && __builtin_isfinite(
__b)) {
205 __c = __builtin_copysignf(__builtin_isinf(
__c) ? 1 : 0,
__c);
206 __d = __builtin_copysignf(__builtin_isinf(__d) ? 1 : 0, __d);
207 __real__(z) = 0 * (
__a *
__c +
__b * __d);
208 __imag__(z) = 0 * (
__b *
__c -
__a * __d);