Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.c > #10482

Re: Berechnen von Zahlen mit Hilfe großer int-Arrays

From "Walter H." <Walter.H-Nntp@mathemainzel.info>
Newsgroups de.comp.lang.c
Subject Re: Berechnen von Zahlen mit Hilfe großer int-Arrays
Date 2023-04-08 06:36 +0200
Organization Waldi's NNTP Home
Message-ID <k9c9amFl24qU1@mid.individual.net> (permalink)
References <k9b715Fg2nrU1@mid.individual.net> <u0prqp$31gi9$1@solani.org>

Show all headers | View raw


On 07.04.2023 21:44, Helmut Schellong wrote:
> On 04/07/2023 20:51, Walter H. wrote:
>> Hallo,
>>
>> gibt ja die eine od. andere lange Zahl, welche so berechnet wird;
>> die bekannteste ist Pi, bereits auf Mrd. von Stellen
>>
>> ich würd geren eine andere Zahl berechnen: die Basis des nat. Logarithmus
>> e = 2.71828182...
>>
>> gibt es hier etwas besseres (schnelleres) als das
>>
>> e = 1 + 1/1! + 1/2! + ...
>>
> 
> Ich meine, schneller geht es generell  bei Reihen nur durch vorherige 
> Berechnung von Konstanten - Teilresultate.

wie soll das schneller gehen ...

ob man vorher sich der Reihe nach die 1/n! bestimmt und diese dann alle 
aufsummiert, oder ob man jeder Addition von 1/n! das nächste 1/(n+1)! 
[mit Hilfe von 1/n!] bestimmt macht ja keinen Unterschied;

> Die Vorberechnung von Fakultäten! geht auch fortlaufend, indem mit 2 3 4 
> 5 ... multipliziert wird.



soweit bin ich ...


static BOOL goon;
static long div = 1L, tmp = 1L;

unsigned long long* e = (unsigned long long*) calloc( blknum, sizeof( 
unsigned long long ) );
unsigned long long* help = (unsigned long long*) calloc( blknum, sizeof( 
unsigned long long ) );

clrlngnum( e, blknum );
clrlngnum( help, blknum );

*e = ( *help = 1ULL ) + 1ULL;

goon = division( help, (signed long long) ++div, blknum );

while ( goon )
{
	addition( e, help, blknum );

	goon = division( help, (signed long long) ++div, blknum ) );
}

free( (void*) help );



clrlngnum verwendet ein Intrinsic


inline void __cdecl clrlngnum( unsigned long long* lngnum, unsigned long 
blknum )
{
__stosq( (unsigned __int64*) lngnum, (unsigned __int64) 0ui64, blknum );
}



und addition bzw. division sind in Assembler ausgelagerte Fkt.en, weil 
der Optimizer hier noch zuviel Unfug reinpfuscht


#ifdef __cplusplus
extern "C" {
#endif

void __fastcall addition( unsigned long long* dstnum, const unsigned 
long long* srcnum, unsigned long blknum );

int __fastcall division( unsigned long long* dstone, signed long long 
srctwo, unsigned long blknum );

#ifdef __cplusplus
}
#endif


so lange blknum eine gewisse Größenordnung nicht übersteigt, passt 
alles, aber ab einer gewissen Größenordnung hätt ma des dann doch gerne 
beschleunigt;

Back to de.comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Berechnen von Zahlen mit Hilfe großer int-Arrays "Walter H." <Walter.H-Nntp@mathemainzel.info> - 2023-04-07 20:51 +0200
  Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-07 21:44 +0200
    Re: Berechnen von Zahlen mit Hilfe großer int-Arrays "Walter H." <Walter.H-Nntp@mathemainzel.info> - 2023-04-08 06:36 +0200
      Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-08 17:41 +0200
        Re: Berechnen von Zahlen mit Hilfe großer int-Arrays "Walter H." <Walter.H-Nntp@mathemainzel.info> - 2023-04-08 19:37 +0200
          Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-08 22:19 +0200
            Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Claus Reibenstein <creibens@gmail.com> - 2023-04-09 16:31 +0200
              Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-09 19:45 +0200
            Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-09 16:45 +0200
              Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-09 19:43 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-09 20:07 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-09 23:55 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-10 04:47 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-10 13:04 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-10 13:31 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-10 14:56 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-10 15:21 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Helmut Schellong <rip@schellong.biz> - 2023-04-10 16:32 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-10 18:00 +0200
                Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-11 19:46 +0200
          Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Thomas Noll <-_tn_-@web.de> - 2023-04-08 22:48 +0000
            Re: Berechnen von Zahlen mit Hilfe großer int-Arrays "Walter H." <Walter.H-Nntp@mathemainzel.info> - 2023-04-09 09:50 +0200
              Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Claus Reibenstein <creibens@gmail.com> - 2023-04-09 16:34 +0200
              Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Thomas Koenig <tkoenig@netcologne.de> - 2023-04-09 18:30 +0000
  Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Thomas Koenig <tkoenig@netcologne.de> - 2023-04-07 20:54 +0000
  Re: Berechnen von Zahlen mit Hilfe großer int-Arrays Bonita Montero <Bonita.Montero@gmail.com> - 2023-04-09 17:24 +0200

csiph-web