home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c      Meh, in C you gotta define EVERYTHING      243,242 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 242,087 of 243,242   
   Michael S to bart   
   Re: _BitInt(N)   
   24 Nov 25 15:17:49   
   
   From: already5chosen@yahoo.com   
      
   On Mon, 24 Nov 2025 12:56:58 +0000   
   bart  wrote:   
      
   > On 24/11/2025 11:57, Michael S wrote:   
   > > On Mon, 24 Nov 2025 11:45:18 +0000   
   > > bart  wrote:   
   > >>   
   > >> But my scripting language has an arbitrary-precision /decimal/   
   > >> floating point type, which can also be used for pure integer   
   > >> calculations.   
   > >>   
   > >   
   > > Arbitrary-precision floating point? That sounds problematic,   
   > > regardless of base. Unless you don't use the word 'arbitrary' in   
   > > the same sense that it is used, for example, in GMP.   
   > > Gnu MPFR is very careful to never call itself "arbitrary-precision"   
   > > in official docs.   
   > >   
   >   
   > If you mean problems like repeated multiplies giving ever larger   
   > numbers, then that will happen also with integers (or rationals).   
   >   
   > If you mean the problems with a divide operation potentially carrying   
   > on indefinitely, then a cap needs to be set on that.   
   >   
      
   Yes, that what I meant.   
      
   > I haven't attempted libraries for working out trancendental   
   > functions; the problems there are in getting a particular precision   
   > even if you know that in advance.   
   >   
   > But for basic arithmetic, it works extremely well.   
   >   
   > (While it is built-in to my scripting language, it was originally a   
   > standalone library and has been ported to C. See the bignum.c and   
   > bignum.h files here:   
   >   
   > https://github.com/sal55/langs/tree/master/bignum   
   >   
   > You can try out division like this:   
   >   
   >    #include    
   >    #include "bignum.h"   
   >   
   >    int main() {   
   >        Bignum a, b, c;   
   >   
   >        a = bn_makeint(1);   
   >        b = bn_makeint(7);   
   >        c = bn_init();   
   >   
   >        bn_div(c, a, b, 1000);   
   >        bn_println(c);   
   >    }   
   >   
   > (Build as 'gcc prog.c bignum.c' etc.)   
   >   
   > You can see that 'bn_div' needs a precision argument: this is the   
   > number of significant decimal digits. Using 100M here produced 100   
   > million digits and took about 6 seconds.)   
   >   
   >   
   >   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca