14 #include "cl_rational.h"
17 const cl_R log (const cl_R& a, const cl_R& b)
22 // log(a,b) rational errechenbar -> liefern.
23 // Sonst a und b in Floats umwandeln.
24 // a Float, b rational -> bei b=1 Error, sonst b := (float b a)
25 // a rational, b Float -> bei a=1 Ergebnis 0, sonst a := (float a b)
26 // a,b Floats -> log(a,b) = ln(a)/ln(b)
31 if (eq(b,1)) { cl_error_division_by_0(); }
35 if (logp(The(cl_RA)(a),The(cl_RA)(b),&l))
37 // a,b beide in Floats umwandeln:
38 a = cl_float(The(cl_RA)(a)); b = cl_float(The(cl_RA)(b));
41 b = cl_float(The(cl_RA)(b),The(cl_F)(a)); // b := (float b a)
45 if (eq(a,1)) { return 0; } // a=1 -> Ergebnis 0
46 a = cl_float(The(cl_RA)(a),The(cl_F)(b)); // a := (float a b)
49 // Nun a,b beide Floats.
50 return ln(The(cl_F)(a)) / ln(The(cl_F)(b));