[elektro] Béke poraira !

Szima Gábor sygma at tesla.hu
Thu Oct 13 18:43:06 CEST 2011


On Thu, 13 Oct 2011, [UTF-8] Balázs Bámer wrote:

>>> Nem akarok flame wart
>> Attol meg lesz. :-)
>
> Lesz vagy nem lesz, leírom, mi volt.
> Doszos Borland C++-t használtam akkor, volt szám objektum, operator
> overloadinggal minden lényeges művelet. Beírtam a programba, hogy
> Szam a=new Szam(3);
> Szam b=new Szam(5.5);
> Szam c=a+b*2.3-a*b*(a+b/2);

Ez tenyleg lasabb, mivel objektumokat hozol letre feleslegesen.

C++ -ban is nyugodtan hasznalhatod a sima C-s megoldasokat:

double a = 3.0;
double b = 5.5;
double c=a+b*2.3-a*b*(a+b/2);

A leforditott kod gyakorlatilag ugyanaz lesz.

test.c, test.cc:

#include <stdio.h>

int main (void) {

   double a = 3.0;
   double b = 5.5;
   double c=a+b*2.3-a*b*(a+b/2);

   printf ("%f\n", c);

   return 0;
}

gcc -s -O2 -o test test.c
gcc -s -O2 -lstdc++ -o testcc test.cc

test:   5628 byte
testcc: 5688 byte

./test
-79.225000

./testcc
-79.225000



test.c, test.cc:

int main (void) {

   double a = 3.0;
   double b = 5.5;
   double c = 0;
   int    i;

   for ( i = 0; i < 1000000000; i++ ) c+=a+b*2.3-a*b*(a+b/2);

   printf ("%f\n", c);

   return 0;
}


test:   5628 byte
testcc: 5688 byte


$ time test
-79225000000.729813

real    0m0.949s
user    0m0.948s
sys     0m0.004s

$ time ./testcc
-79225000000.729813

real    0m0.949s
user    0m0.948s
sys     0m0.000s




Most akkor csinald meg ezt egy numerikus osztallyal! :)
A sima C ismeri azt a par valtozotipust, ami lenyegeben ket alapveto 
csoport (integer, float), a tobbi csak rizsa es ruzs. ;)

Ezzel bizonyos dolgokat nem tudsz csinalni, mert a int32_t tulcsordul, az 
int64_t nem tud tizedeseket, a double pedig elcsalja a tizedeseket nagy 
erteknel.

Ide "Arbitrary Precision Math Library" kell.

Numeric a = 3.000000000000000000000000000000000000000000000000000000000000000001;
Numeric b = 123456789.0000000000000000000000000000000000000000000000000000000001;
Numeric c = a+b;




 								-Sygma



More information about the Elektro mailing list