On 27 March 2014 19:25, Alex Dyachenko <adya...@gmail.com> wrote:

> It seems that when the source and destination of mpz_nthroot are the same
> the result is _sometimes_ incorrect.
>

Ah, thanks very much for reporting this! I'll add a ticket and we can fix
this for the release.


>
> I'm linking with a static lib build of MPIR based on a slightly old
> February 2014 commit (94c011b8a3b096f91dd2eb9fbfaae53d6de045ee), which I
> built for Windows x64 with MS VC2012 and got all the tests to pass.  (I
> have not been able to build the latest commit for some time presumably
> because the Windows build updates have not been pulled from Gladman's fork).
>

They've been merged, but work is still underway on the Windows side. We
should have it sorted in a few days. Thanks for your patience.


>
> Here is my test code (forgive the naive C):
>
> mpz_t a, cube, r;
> char c[100];
> mpz_init_set_str(a, "8984948281360922385394772450147012613851354303", 10);
> mpz_get_str(c, 10, a);
> cout << "a =                    " << c << endl;
>
> mpz_init(cube);
> mpz_mul(cube, a, a);
> mpz_mul(cube, cube, a);
>
> mpz_init_set(r, cube);
> mpz_nthroot(r, r, 3);
> mpz_get_str(c, 10, r);
> cout << "nthroot(r,r,3) returns " << c << endl;
>
> mpz_nthroot(r, cube, 3);
> mpz_get_str(c, 10, r);
> cout << "nthroot(r,c,3) returns " << c << endl;
>
> This produces the following output:
> a =                    8984948281360922385394772450147012613851354303
> nthroot(r,r,3) returns 8984948281360922385394772450147012613851354302
> nthroot(r,c,3) returns 8984948281360922385394772450147012613851354303
>
> The result is 1 too small when source and result are the same.  This does
> NOT happen with mpz_root(r, r, 3) or mpz_rootrem(r, rem, r, 3) for this
> particular value of a.  I have no idea what exactly about this random value
> causes this; it does calculate correctly, for example, with a=3.
>
> Is this an exception to the general rule that source and destination can
> be the same as long as one of them is SRCPTR?  If so I'd like to know what
> other exceptions exist.
>

No, it's a bug. We'll try to track it down. Thanks.

Bill.


>
> --
> You received this message because you are subscribed to the Google Groups
> "mpir-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to mpir-devel+unsubscr...@googlegroups.com.
> To post to this group, send email to mpir-devel@googlegroups.com.
> Visit this group at http://groups.google.com/group/mpir-devel.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mpir-devel+unsubscr...@googlegroups.com.
To post to this group, send email to mpir-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/mpir-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to