
Could you please send more examples of test case error
reports that you receive? I really need to see more examples of the error text before I break down and get this other compiler running.
I have committed a log file error.txt under
svn ci -m "Multiprecision: added error log" Adding test/error.txt Transmitting file data . Committed revision 78803. pc3:test viboes$ pwd /sand/big_number/libs/multiprecision/test
Thanks. I'll take a look soon. <snip>
I would expect the implicit conversion from cpp_dec_float_50 to cpp_dec_float_100 to be found here, but I don't know why the compiler don't find it.
Because cpp_dec_float_50 and cpp_dec_float_100 are *different types*. The compiler does not find binary arithmetic involving these two different types because it does not exist. We decided not to support it. This design choice has both advantages as well as disadvantages. In our opinion, the advantages outweigh the disadvantages. <snip>
Yes but it round while converting 100 digits to 50, and this should be documented.
No. I wish we *would* already have rounding in these cases. But we don't! In fact, the class constructor has a TODO-style comment indicating that it does not round.
Well, I don't know how a type that has less bytes to store the conversion could do it without rounding. Maybe you mean that you have taken just the first 50 digits, but this is a kind of rounding.
Yes, that's exactly what I mean! My implementation takes the first 50 digits plus the guard digits of the 100 digit type and copies these to the 50 digit type. I don't call that rounding. But you do. Sorry about the confusion.
Conversion to another digit range does not round. Since rounding occurs when printing the number, and because there are guard digits, you must be experiencing the "illusion" of rounding via a rounded printout.
Hmm, I should be missing something trivial :( Best, Vicente
No, you are right. Rather, I did not understand your questions. Based on your continued clarifications and my previous misunderstanding, you have got it. For cpp_dec-float, rounding is truncation. The exception is conversion of cpp_dec_float to string, which rounds. But I forgot if it rounds toward zero, nearest or infinity. I will look it up and tell you. Best regards, Chris.