<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; ">Hi Usman:<DIV><BR class="khtml-block-placeholder"></DIV><DIV>I'll preface this by saying that my understanding of how floating points are stored is sketchy at best, so if anyone needs to set me straight, feel free. </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I received your posts about using 128 bit floats on the GCC list as well.   You mention that a 64 bit number is "not sufficient" to contain your numbers and I assume this means you need greater precision, not greater range as the range on a 64 bit number is pretty darn large. </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Keep in mind that in a traditional 32 or 64 (and I assume 128) bit floats, BOTH the exponent and mantissa are contained in that 32 or 64 bits, which leads to 8 and 11 bit exponents, respectively.  With GMP, you're getting a 32 or 64 bit exponent , depending on the size of a machine word on your system, plus the mantissa that you request.  You might be able to minimize the memory requirement at the cost of performance by configuring with a 32 bit ABI instead of the 64 bit ABI (if your CPU/system will allow you to).  Using a 32 bit exponent should free up more memory to devote to precision. </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV> Also, I see you using mpf_get_d. The GMP manual says that all calculations are performed to the precision of the destination variable.  I'd make sure that you don't have excessive precision immediately before you truncate with mpf_get_d.   For example, it makes little sense (in my opinion, might be wrong) to multiply two numbers with 256 bits of precision, store them in another number of 256 bits, and then call mpf_get_d.  You would probably be better off having a destination variable with less precision, perhaps 64 bits, and then calling mpf_get_d on it.  That might save some memory. </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Finally, and I'm mostly speculating on this as I haven't dug this deep into the code.  Each variable keeps the size of the mantissa data actually in use regardless of the precision requested.  If you're willing to take the performance hit and use a fixed mantissa size, you might be able to delete this from the mpf_t  variable and alter the functions to assume a fixed mantissa, negating the need to keep track of how many bits are actually in use, again freeing up more memory.  <BR><DIV><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><BR class="Apple-interchange-newline"><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><DIV>Hope something in this is useable, not not toooooo  far into left field.  Perhaps a more experienced developer or programmer can help set us straight on this. </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Blake Huff</DIV><DIV><A href="mailto:stangmechanic@gmail.com">stangmechanic@gmail.com</A></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>"When the going gets tough, the tough get aeronautical."-Howling Mad Murdoch</DIV><DIV><BR class="khtml-block-placeholder"></DIV></SPAN><BR class="Apple-interchange-newline"></SPAN><SPAN></SPAN><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><BR class="Apple-interchange-newline"><BR class="Apple-interchange-newline"></SPAN></SPAN> </SPAN></DIV><BR><DIV><DIV>On Oct 14, 2006, at 5:21 PM, Usman W Roshan cis faculty/staff wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hi,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">My code produces large 2D matrices containing very large numbers. I use</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">GMP since 64 bit (and 80 bit long double) is not sufficient to contain my</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">numbers. However, my program slows down significantly and also ends up</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">using lots of memory. I'm using just the mpf_t types and the following</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">functions from the library:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">mpf_set_default_prec, mpf_mul, mpf_set_d, mpf_mul, mpf_div, mpf_get_d,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">mpf_clear, mpf_init, mpf_add</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Is it possible to tweak the library to reduce the memory usage and</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">increase speed if I'm using just these functions and the mpf_t type? If</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">so, can you suggest how? Thanks,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Usman Roshan</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Department of Computer Science</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">New Jersey Institute of Technology</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="http://www.cs.njit.edu/usman">http://www.cs.njit.edu/usman</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">gmp-discuss mailing list</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="mailto:gmp-discuss@swox.com">gmp-discuss@swox.com</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="https://gmplib.org/mailman/listinfo/gmp-discuss">https://gmplib.org/mailman/listinfo/gmp-discuss</A></DIV> </BLOCKQUOTE></DIV><BR></DIV></BODY></HTML>