
--- Andy Little <andy@servocomm.freeserve.co.uk> wrote:
disallowing negative denominator seems a little harsh. 1 / -2 is a valid mathematical expression.
Very well. I'll move this restriction to mixed_number<>.
FWIW some comments on rational...
1) rational should have a value_type for similarity with integral_c. ( eg plus <Numerator,Denominator>::type::value_type; )
So, what should value_type be when either Numerator or Denominator are big_integral<>?
2) Because gcd is not a primitive operation( because it can be expressed solely in terms of others); Is there a need fo the 'impl and '::apply rigmarole. I think not(Same for abs, is_negative etc.)Why is this amount of implementation complexity necessary in gcd?.
There may be an implementation of gcd<> that is more efficient even if it works solely on big_integral<> numbers. Or there may not, but for now, I shouldn't rule out anything that promises to make big_integral<> operations less expensive.
3) However OTOH numerator<T> and denominator<T> need to be applicable to integral_c too(Otherwise there is no advantage over use of member ::denomnator) , but is a primitive operation; Therefore the 'impl rigmarole should be applied. denominator <int_<X> >:: type == int_<1>, numerator <int_<X> >:: type == int_<X> or whatever. It should be possible to mix rational and integral parameters pretty easily. FWIW Ive enclosed my rendition of denominator (hopefully boostified) in this method .
I hadn't thought of this, yet. I'll do it, but I'll only specialize for integral_c_tag and big_integral_tag; the default implementation will look for the corresponding member type. Same for whole_part<>, rational_part<>, real_part<>, and imaginary_part<>.
Thanks for working on it though ... ;-)
Not a problem, whenever I have time. :) Cromwell D. Enage __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com