]> www.ginac.de Git - cln.git/blob - src/rational/elem/cl_RA_recip.cc
c213dfd0f38a9e53ee3354f8d56e8a56ef399e6e
[cln.git] / src / rational / elem / cl_RA_recip.cc
1 // recip().
2
3 // General includes.
4 #include "cl_sysdep.h"
5
6 // Specification.
7 #include "cl_rational.h"
8
9
10 // Implementation.
11
12 #include "cl_RA.h"
13 #include "cl_N.h"
14 #include "cl_I.h"
15
16 const cl_RA recip (const cl_RA& r)
17 {
18 // Methode:
19 // r=0 -> Error.
20 // a:=(numerator r), b:=(denominator r).
21 // a>0 -> Ergebnis b/a (mit ggT(b,a)=1).
22 // a<0 -> Ergebnis (- b)/(- a) (mit ggT(-b,-a)=1).
23         if (zerop(r))
24                 cl_error_division_by_0();
25         var cl_I a;
26         var cl_I b;
27         RA_numden_I_I(r, a = , b = );
28         if (!minusp(a))
29                 return I_I_to_RA(b,a);
30         else
31                 // a<0
32                 return I_I_to_RA(-b,-a);
33 }