[GiNaC-devel] [PATCH 6/8] bernoulli, fibonacci, iquo: explicitly convert return values to numeric.

Alexei Sheplyakov varg at theor.jinr.ru
Wed Mar 19 10:27:27 CET 2008


Implicit conversion from cl_N to numeric considered harmful, part 6.

---
 ginac/numeric.cpp |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/ginac/numeric.cpp b/ginac/numeric.cpp
index 704854c..4cbaa7d 100644
--- a/ginac/numeric.cpp
+++ b/ginac/numeric.cpp
@@ -2161,7 +2161,7 @@ const numeric bernoulli(const numeric &nn)
 		next_r = 4;
 	}
 	if (n<next_r)
-		return results[n/2-1];
+		return numeric(results[n/2-1]);
 
 	results.reserve(n/2);
 	for (unsigned p=next_r; p<=n;  p+=2) {
@@ -2186,7 +2186,7 @@ const numeric bernoulli(const numeric &nn)
 		results.push_back(-b/(p+1));
 	}
 	next_r = n+2;
-	return results[n/2-1];
+	return numeric(results[n/2-1]);
 }
 
 
@@ -2243,9 +2243,9 @@ const numeric fibonacci(const numeric &n)
 	if (n.is_even())
 		// Here we don't use the squaring formula because one multiplication
 		// is cheaper than two squarings.
-		return u * ((v << 1) - u);
+		return numeric(u * ((v << 1) - u));
 	else
-		return cln::square(u) + cln::square(v);    
+		return numeric(cln::square(u) + cln::square(v)); 
 }
 
 
@@ -2363,7 +2363,7 @@ const numeric iquo(const numeric &a, const numeric &b, numeric &r)
 		const cln::cl_I_div_t rem_quo = cln::truncate2(cln::the<cln::cl_I>(a.to_cl_N()),
 		                                               cln::the<cln::cl_I>(b.to_cl_N()));
 		r = numeric(rem_quo.remainder);
-		return rem_quo.quotient;
+		return numeric(rem_quo.quotient);
 	} else {
 		r = *_num0_p;
 		return *_num0_p;
-- 
1.5.4.2


-- 
All science is either physics or stamp collecting.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
URL: <http://www.ginac.de/pipermail/ginac-devel/attachments/20080319/9e11f293/attachment.sig>


More information about the GiNaC-devel mailing list