Macaulay2 Engine
Loading...
Searching...
No Matches

◆ mpfc_invert()

void mpfc_invert ( gmp_CCmutable result,
gmp_CCmutable v )

Definition at line 86 of file complex.c.

87{
88 mpfr_t p, denom;
89 mpfr_init2(p, mpfr_get_prec(v->re));
90 mpfr_init2(denom, mpfr_get_prec(v->re));
91
92 if (mpfr_cmpabs(v->re, v->im) >= 0)
93 {
94 // double p = v->im/v->re;
95 // double denom = v->re + p * v->im;
96 // result->re = 1.0/denom;
97 // result->im = - p/denom;
98
99 mpfr_div(p, v->im, v->re, MPFR_RNDN);
100 mpfr_mul(denom, p, v->im, MPFR_RNDN);
101 mpfr_add(denom, denom, v->re, MPFR_RNDN);
102 mpfr_si_div(result->re, 1, denom, MPFR_RNDN);
103 mpfr_div(result->im, p, denom, MPFR_RNDN);
104 mpfr_neg(result->im, result->im, MPFR_RNDN);
105 }
106 else
107 {
108 // double p = v->re/v->im;
109 // double denom = v->im + p * v->re;
110 // result->re = p/denom;
111 // result->im = -1.0/denom;
112
113 mpfr_div(p, v->re, v->im, MPFR_RNDN);
114 mpfr_mul(denom, p, v->re, MPFR_RNDN);
115 mpfr_add(denom, denom, v->im, MPFR_RNDN);
116 mpfr_si_div(result->im, 1, denom, MPFR_RNDN);
117 mpfr_neg(result->im, result->im, MPFR_RNDN);
118 mpfr_div(result->re, p, denom, MPFR_RNDN);
119 }
120
121 mpfr_clear(p);
122 mpfr_clear(denom);
123}
int p
VALGRIND_MAKE_MEM_DEFINED & result(result)

References p, and result().