125{
127 mpfr_init2(
p, mpfr_get_prec(u->re));
128 mpfr_init2(denom, mpfr_get_prec(u->re));
129
130 printf("not expected to be used -- we have a bug here\n");
131 abort();
132 if (mpfr_cmpabs(v->re, v->im) >= 0)
133 {
134
135
136
137
138
139
140
141
142
143
144 mpfr_div(
p, v->im, v->re, MPFR_RNDN);
145 mpfr_mul(denom,
p, v->im, MPFR_RNDN);
146 mpfr_add(denom, denom, v->re, MPFR_RNDN);
147
148 mpfr_mul(
result->re,
p, u->im, MPFR_RNDN);
151
152 mpfr_mul(
result->im,
p, u->re, MPFR_RNDN);
156 }
157 else
158 {
159
160
161
162
163
164 mpfr_div(
p, v->re, v->im, MPFR_RNDN);
165 mpfr_mul(denom,
p, v->re, MPFR_RNDN);
166 mpfr_add(denom, denom, v->im, MPFR_RNDN);
167
168 mpfr_mul(
result->re,
p, u->re, MPFR_RNDN);
171
172 mpfr_mul(
result->im,
p, u->im, MPFR_RNDN);
175 }
176
178 mpfr_clear(denom);
179#if 0
181 {
182
183
184
185
186 double p = v.im/v.re;
187 double denom = v.re +
p * v.im;
188 result.re = (u.re +
p*u.im)/denom;
189 result.im = (u.im -
p*u.re)/denom;
190 }
191 else
192 {
193 double p = v.re/v.im;
194 double denom = v.im +
p * v.re;
195 result.re = (u.re *
p + u.im)/denom;
196 result.im = (-u.re +
p * u.im)/denom;
197 }
198#endif
199}
VALGRIND_MAKE_MEM_DEFINED & result(result)
const mpreal fabs(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())