From: Richard Kreckel Date: Mon, 19 Oct 2020 18:36:33 +0000 (+0200) Subject: Remove internal inline versions of numerator/denominator(cl_RA). X-Git-Tag: cln_1-3-7~37 X-Git-Url: https://www.ginac.de/CLN/cln.git//cln.git?a=commitdiff_plain;h=7e29268b4ae7daaf03227fb6afcb7451342c8fb7;p=cln.git Remove internal inline versions of numerator/denominator(cl_RA). These functions were not used internally, but they broke LTO because they were declared extern publicly. See . --- diff --git a/src/float/lfloat/elem/cl_LF_RA_div.cc b/src/float/lfloat/elem/cl_LF_RA_div.cc index b637eed..a0fae06 100644 --- a/src/float/lfloat/elem/cl_LF_RA_div.cc +++ b/src/float/lfloat/elem/cl_LF_RA_div.cc @@ -24,8 +24,8 @@ const cl_LF cl_LF_RA_div (const cl_LF& x, const cl_RA& y) return cl_LF_I_div(x,y); } else { DeclareType(cl_RT,y); - var const cl_I& u = TheRatio(y)->numerator; // u /= 0 - var const cl_I& v = TheRatio(y)->denominator; // v /= 0 + var const cl_I& u = numerator(y); // u /= 0 + var const cl_I& v = denominator(y); // v /= 0 return cl_LF_I_div(The(cl_LF)(cl_LF_I_mul(x,v)),u); } } diff --git a/src/float/lfloat/elem/cl_LF_RA_mul.cc b/src/float/lfloat/elem/cl_LF_RA_mul.cc index 8abc945..04ecc0f 100644 --- a/src/float/lfloat/elem/cl_LF_RA_mul.cc +++ b/src/float/lfloat/elem/cl_LF_RA_mul.cc @@ -23,8 +23,8 @@ const cl_R cl_LF_RA_mul (const cl_LF& x, const cl_RA& y) return cl_LF_I_mul(x,y); } else { DeclareType(cl_RT,y); - var const cl_I& u = TheRatio(y)->numerator; // u /= 0 - var const cl_I& v = TheRatio(y)->denominator; // v /= 0 + var const cl_I& u = numerator(y); // u /= 0 + var const cl_I& v = denominator(y); // v /= 0 return cl_LF_I_div(The(cl_LF)(cl_LF_I_mul(x,u)),v); } } diff --git a/src/float/lfloat/elem/cl_RA_LF_div.cc b/src/float/lfloat/elem/cl_RA_LF_div.cc index db29e7f..51b2f66 100644 --- a/src/float/lfloat/elem/cl_RA_LF_div.cc +++ b/src/float/lfloat/elem/cl_RA_LF_div.cc @@ -23,8 +23,8 @@ const cl_R cl_RA_LF_div (const cl_RA& x, const cl_LF& y) return cl_I_LF_div(x,y); } else { DeclareType(cl_RT,x); - var const cl_I& u = TheRatio(x)->numerator; - var const cl_I& v = TheRatio(x)->denominator; // v /= 0 + var const cl_I& u = numerator(x); + var const cl_I& v = denominator(x); // v /= 0 return cl_I_LF_div(u,The(cl_LF)(cl_LF_I_mul(y,v))); } } diff --git a/src/rational/cl_RA.h b/src/rational/cl_RA.h index e0adf30..9b60b95 100644 --- a/src/rational/cl_RA.h +++ b/src/rational/cl_RA.h @@ -133,27 +133,6 @@ inline bool eq (const cl_RA& x, sint32 y) // I_I_div_RA(a,b) extern const cl_RA I_I_div_RA (const cl_I& a, const cl_I& b); -// Liefert den Zähler einer rationalen Zahl. -// numerator(r) -inline const cl_I numerator (const cl_RA& r) -{ - if (integerp(r)) { - DeclareType(cl_I,r); - return r; - } else - return TheRatio(r)->numerator; -} - -// Liefert den Nenner einer rationalen Zahl. -// denominator(r) -inline const cl_I denominator (const cl_RA& r) -{ - if (integerp(r)) - return 1; - else - return TheRatio(r)->denominator; -} - // Liefert Zähler und Nenner einer rationalen Zahl. // RA_numden_I_I(r, num=,den=); // > r: rationale Zahl diff --git a/src/rational/elem/cl_RA_denominator.cc b/src/rational/elem/cl_RA_denominator.cc index 78e23cd..cd8d6ff 100644 --- a/src/rational/elem/cl_RA_denominator.cc +++ b/src/rational/elem/cl_RA_denominator.cc @@ -9,15 +9,16 @@ // Implementation. -#define denominator inline_denominator #include "rational/cl_RA.h" -#undef denominator namespace cln { const cl_I denominator (const cl_RA& r) { - return inline_denominator(r); + if (integerp(r)) + return 1; + else + return TheRatio(r)->denominator; } } // namespace cln diff --git a/src/rational/elem/cl_RA_numerator.cc b/src/rational/elem/cl_RA_numerator.cc index f009301..b123dc9 100644 --- a/src/rational/elem/cl_RA_numerator.cc +++ b/src/rational/elem/cl_RA_numerator.cc @@ -9,15 +9,17 @@ // Implementation. -#define numerator inline_numerator #include "rational/cl_RA.h" -#undef numerator namespace cln { const cl_I numerator (const cl_RA& r) { - return inline_numerator(r); + if (integerp(r)) { + DeclareType(cl_I,r); + return r; + } else + return TheRatio(r)->numerator; } } // namespace cln