<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
Hi Rafael,<BR>
This works to get the digits from an mpz_t variable.&nbsp;I did it with a char array<BR>but you could use&nbsp;pointers if you like.<BR>
&nbsp;<BR>
#include &lt;stdio.h&gt;<BR>#include &lt;math.h&gt;<BR>#include &lt;windows.h&gt;<BR>#include &lt;string.h&gt;<BR>#include &lt;stdlib.h&gt;<BR>#include "gmp.h"<BR>#define getz(a) mpz_inp_str(a,stdin,10)<BR><BR>
int main(int argc, char * argv[])<BR>{<BR>int i;<BR>char digit[2000];<BR>char *tmp;<BR>&nbsp; mpz_t num;<BR>printf("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get&nbsp; mpz digits \n");<BR>while(1)<BR>{<BR>&nbsp; mpz_init(num);<BR>printf("num\n");<BR>getz(num);<BR>mpz_get_str (digit,10,num);<BR>for(i=0;i&lt;strlen(digit);i++)<BR>printf("%c",(int)digit[i]);<BR>printf("\n");<BR>}<BR>&nbsp; return 0;<BR>}<BR>
&nbsp;<BR>
Input/Output:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get&nbsp; mpz digits<BR>num<BR>3141592653589793238462643383<BR>3141592653589793238462643383<BR>num<BR>
&nbsp;<BR>
Cino Hilliard<BR>
<BR>&gt; Today's Topics:<BR>&gt; <BR>&gt; 1. Re: Addressing single digits of big integers (decio@decpp.net)<BR>&gt; <BR>&gt; <BR>&gt; ----------------------------------------------------------------------<BR>&gt; <BR>&gt; Message: 1<BR>&gt; Date: Fri, 25 Jul 2008 19:29:08 -0300<BR>&gt; From: "decio@decpp.net" &lt;decio@decpp.net&gt;<BR>&gt; Subject: Re: Addressing single digits of big integers<BR>&gt; To: "Rafael Anschau" &lt;rafael.anschau@gmail.com&gt;, gmp-discuss@swox.com<BR>&gt; Message-ID: &lt;488a53b4.94.2466.821384423@seti.serverlogistics.com&gt;<BR>&gt; Content-Type: text/plain; charset="iso-8859-1"<BR>&gt; <BR>&gt; <BR>&gt; ----- Original Message -----<BR>&gt; From: "Rafael Anschau" &lt;rafael.anschau@gmail.com&gt;<BR>&gt; To: gmp-discuss@swox.com<BR>&gt; Subject: Addressing single digits of big integers<BR>&gt; Date: Thu, 24 Jul 2008 16:48:03 -0300<BR>&gt; <BR>&gt; &gt; Is it possible to address single digits in big integers,<BR>&gt; &gt; without the high costs of export import ? Something like a<BR>&gt; &gt; pointer to the digit ?<BR>&gt; <BR>&gt; If by digit you mean a base-10 digit, sorry, it's gonna be<BR>&gt; fairly costly. Most large integer packages represent values<BR>&gt; internally in a power-of-two base, so you can't directly get<BR>&gt; base-10 digits, only base-2^k digits. To get base-10 digits<BR>&gt; you'll have to incur the cost of changing representation by<BR>&gt; exporting, or doing a calculation like x/10^k mod 10, and<BR>&gt; both the division and the modulo are costly for large<BR>&gt; values.<BR>&gt; <BR>&gt; If you routinely need to work with the base-10<BR>&gt; representation of your large integers, and it's a bottleneck<BR>&gt; of your code (profile it somewhere to be sure, otherwise you<BR>&gt; may lose performance by following this advice), try a<BR>&gt; different library which works with a power-of-10 base<BR>&gt; representation. I can't name any, but I know that most of<BR>&gt; the various Pi-calculator programs out there use base-10<BR>&gt; extensively to avoid a costly change of representation at<BR>&gt; the end.<BR>&gt; <BR>&gt; D?cio<BR>&gt; <BR>&gt; <BR>&gt; ------------------------------<BR>&gt; <BR>&gt; _______________________________________________<BR>&gt; gmp-discuss mailing list<BR>&gt; gmp-discuss@swox.com<BR>&gt; https://gmplib.org/mailman/listinfo/gmp-discuss<BR>&gt; <BR>&gt; <BR>&gt; End of gmp-discuss Digest, Vol 59, Issue 9<BR>&gt; ******************************************<BR><BR></body>
</html>