The other way I would expect would be for it to return 5, which would be cosnistent with 33 being treated as an integer.

A return of "5" is what I would have expected. Afaict, the "33" is a Math::BigInt object, yet for some reason the module's author has apparently decided to implement some cross-class overloading and have a Math::BigFloat object returned when sqrt() is called with 'use bignum'. I guess, therefore, it might be possible (via some recoding of the bignum module) to have the overloaded ** operator return a Math::BigFloat object when the exponent is a negative integer.

I don't particularly like cross-class overloading ... it's a cute and clever thing to do, but one just doesn't know in advance what one is going to get in return. And there's no guarantee that DWIMness is being met, anyway. I would recommend that one uses Math::BigInt/Math::BigFloat instead of bignum.

(I could be way off with my diagnosis ... I haven't delved into the source to verify that I've got it right. I have made my assessments based on a few test programs that Devel::Peek::Dump()ed the various arguments and returns.)

Cheers,
Rob

In reply to Re^3: use bignum and exponentiation by syphilis
in thread use bignum and exponentiation by swampyankee

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.