52 double __bd =
__b * __d;
53 double __ad =
__a * __d;
56 __real__(z) = __ac - __bd;
57 __imag__(z) = __ad + __bc;
58 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
60 if (__builtin_isinf(
__a) || __builtin_isinf(
__b)) {
61 __a = __builtin_copysign(__builtin_isinf(
__a) ? 1 : 0,
__a);
62 __b = __builtin_copysign(__builtin_isinf(
__b) ? 1 : 0,
__b);
63 if (__builtin_isnan(
__c))
64 __c = __builtin_copysign(0,
__c);
65 if (__builtin_isnan(__d))
66 __d = __builtin_copysign(0, __d);
69 if (__builtin_isinf(
__c) || __builtin_isinf(__d)) {
70 __c = __builtin_copysign(__builtin_isinf(
__c) ? 1 : 0,
__c);
71 __d = __builtin_copysign(__builtin_isinf(__d) ? 1 : 0, __d);
72 if (__builtin_isnan(
__a))
73 __a = __builtin_copysign(0,
__a);
74 if (__builtin_isnan(
__b))
75 __b = __builtin_copysign(0,
__b);
78 if (!__recalc && (__builtin_isinf(__ac) || __builtin_isinf(__bd) ||
79 __builtin_isinf(__ad) || __builtin_isinf(__bc))) {
80 if (__builtin_isnan(
__a))
81 __a = __builtin_copysign(0,
__a);
82 if (__builtin_isnan(
__b))
83 __b = __builtin_copysign(0,
__b);
84 if (__builtin_isnan(
__c))
85 __c = __builtin_copysign(0,
__c);
86 if (__builtin_isnan(__d))
87 __d = __builtin_copysign(0, __d);
93 __real__(z) = __builtin_huge_val() * (
__a *
__c -
__b * __d);
94 __imag__(z) = __builtin_huge_val() * (
__a * __d +
__b *
__c);
102 float __bd =
__b * __d;
103 float __ad =
__a * __d;
106 __real__(z) = __ac - __bd;
107 __imag__(z) = __ad + __bc;
108 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
110 if (__builtin_isinf(
__a) || __builtin_isinf(
__b)) {
111 __a = __builtin_copysignf(__builtin_isinf(
__a) ? 1 : 0,
__a);
112 __b = __builtin_copysignf(__builtin_isinf(
__b) ? 1 : 0,
__b);
113 if (__builtin_isnan(
__c))
114 __c = __builtin_copysignf(0,
__c);
115 if (__builtin_isnan(__d))
116 __d = __builtin_copysignf(0, __d);
119 if (__builtin_isinf(
__c) || __builtin_isinf(__d)) {
120 __c = __builtin_copysignf(__builtin_isinf(
__c) ? 1 : 0,
__c);
121 __d = __builtin_copysignf(__builtin_isinf(__d) ? 1 : 0, __d);
122 if (__builtin_isnan(
__a))
123 __a = __builtin_copysignf(0,
__a);
124 if (__builtin_isnan(
__b))
125 __b = __builtin_copysignf(0,
__b);
128 if (!__recalc && (__builtin_isinf(__ac) || __builtin_isinf(__bd) ||
129 __builtin_isinf(__ad) || __builtin_isinf(__bc))) {
130 if (__builtin_isnan(
__a))
131 __a = __builtin_copysignf(0,
__a);
132 if (__builtin_isnan(
__b))
133 __b = __builtin_copysignf(0,
__b);
134 if (__builtin_isnan(
__c))
135 __c = __builtin_copysignf(0,
__c);
136 if (__builtin_isnan(__d))
137 __d = __builtin_copysignf(0, __d);
141 __real__(z) = __builtin_huge_valf() * (
__a *
__c -
__b * __d);
142 __imag__(z) = __builtin_huge_valf() * (
__a * __d +
__b *
__c);
155 _LOGBd(__builtin_fmax(__builtin_fabs(
__c), __builtin_fabs(__d)));
156 if (__builtin_isfinite(__logbw)) {
157 __ilogbw = (
int)__logbw;
161 double __denom =
__c *
__c + __d * __d;
165 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
166 if ((__denom == 0.0) && (!__builtin_isnan(
__a) || !__builtin_isnan(
__b))) {
167 __real__(z) = __builtin_copysign(__builtin_huge_val(),
__c) *
__a;
168 __imag__(z) = __builtin_copysign(__builtin_huge_val(),
__c) *
__b;
169 }
else if ((__builtin_isinf(
__a) || __builtin_isinf(
__b)) &&
170 __builtin_isfinite(
__c) && __builtin_isfinite(__d)) {
171 __a = __builtin_copysign(__builtin_isinf(
__a) ? 1.0 : 0.0,
__a);
172 __b = __builtin_copysign(__builtin_isinf(
__b) ? 1.0 : 0.0,
__b);
173 __real__(z) = __builtin_huge_val() * (
__a *
__c +
__b * __d);
174 __imag__(z) = __builtin_huge_val() * (
__b *
__c -
__a * __d);
175 }
else if (__builtin_isinf(__logbw) && __logbw > 0.0 &&
176 __builtin_isfinite(
__a) && __builtin_isfinite(
__b)) {
177 __c = __builtin_copysign(__builtin_isinf(
__c) ? 1.0 : 0.0,
__c);
178 __d = __builtin_copysign(__builtin_isinf(__d) ? 1.0 : 0.0, __d);
179 __real__(z) = 0.0 * (
__a *
__c +
__b * __d);
180 __imag__(z) = 0.0 * (
__b *
__c -
__a * __d);
189 _LOGBf(__builtin_fmaxf(__builtin_fabsf(
__c), __builtin_fabsf(__d)));
190 if (__builtin_isfinite(__logbw)) {
191 __ilogbw = (
int)__logbw;
195 float __denom =
__c *
__c + __d * __d;
199 if (__builtin_isnan(__real__(z)) && __builtin_isnan(__imag__(z))) {
200 if ((__denom == 0) && (!__builtin_isnan(
__a) || !__builtin_isnan(
__b))) {
201 __real__(z) = __builtin_copysignf(__builtin_huge_valf(),
__c) *
__a;
202 __imag__(z) = __builtin_copysignf(__builtin_huge_valf(),
__c) *
__b;
203 }
else if ((__builtin_isinf(
__a) || __builtin_isinf(
__b)) &&
204 __builtin_isfinite(
__c) && __builtin_isfinite(__d)) {
205 __a = __builtin_copysignf(__builtin_isinf(
__a) ? 1 : 0,
__a);
206 __b = __builtin_copysignf(__builtin_isinf(
__b) ? 1 : 0,
__b);
207 __real__(z) = __builtin_huge_valf() * (
__a *
__c +
__b * __d);
208 __imag__(z) = __builtin_huge_valf() * (
__b *
__c -
__a * __d);
209 }
else if (__builtin_isinf(__logbw) && __logbw > 0 &&
210 __builtin_isfinite(
__a) && __builtin_isfinite(
__b)) {
211 __c = __builtin_copysignf(__builtin_isinf(
__c) ? 1 : 0,
__c);
212 __d = __builtin_copysignf(__builtin_isinf(__d) ? 1 : 0, __d);
213 __real__(z) = 0 * (
__a *
__c +
__b * __d);
214 __imag__(z) = 0 * (
__b *
__c -
__a * __d);