
Steven Watanabe wrote:
On 06/24/2012 10:46 AM, Phil Endecott wrote:
If the library had been decomposed into data structures vs. algorithms then perhaps I could have applied the algorithms to my simpler data structures. Unfortunately the library has not been organised in this way, and even if it had done the use of sign-magnitude representation might have scuppered any re-use.
While this is an oft-repeated request on this list, I believe that it's fundamentally misguided. All algorithms have to be implemented in terms of some set of primitives. I'm not convinced that there's any reasonable way to define requirements for an integer more basic than +-*/ etc.
As I've said before, I imagine algorithms that operate on sequences of "limbs" (as John calls them), e.g. (PSEUDO-CODE) template <typename ITER, typename OITER> void add(ITER begin1, ITER end1, ITER begin2, ITER end2, OITER result) { bool carry = false; while (begin1!=end1 && begin2!=end2) { (carry,*result++) = add_with_carry(*begin1++,*begin2++); } } Regards, Phil.