$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] New Boost.XInt Library, request preliminary review
From: Scott McMurray (me22.ca+boost_at_[hidden])
Date: 2010-03-29 20:42:21
On 29 March 2010 02:32, Chad Nelson <chad.thecomfychair_at_[hidden]> wrote:
>
> Not completely. There *are* the two functions that return Not-a-Number
> as part of their normal operation, not counting the string- and
> stream-reading functions. As I said on the rationales page of the
> documentation, I tried using Boost.Optional for those, but it made the
> library harder for people not already familiar with Boost.Optional to
> understand. An error code is an idiom that every C or C++ developer
> already understands well and knows how to deal with.
>
Those two functions, invmod and random_prime, can use xint() as their
error code, if the relevant exception is blocked, since 0 is obviously
neither a multiplicative inverse or a prime. That even lets you use
them like error codes:
xint z = invmod(x, y);
if (z) { ... worked ... }
else { ... no inverse exists ... }
Though personally I think I'd still prefer an exception. If I'm doing
RSA and there's no inverse, something has gone drastically wrong.