08. maj 2003 - 20:29Der er
14 kommentarer og 1 løsning
Gange og dividere algoritme??!
Hi eksperter...
Jeg har det problem at jeg skal kunne regne med KÆMPE store tal + MEGET små tal... jeg har valgt at løse dette ved at skrive mine egne algoritmer for (+,-,*,/). Er også blevet færdig med + og - men jeg mangler en algoritme for * og /. (de skal kunne * og / med flydende tal)
Er der en af jer der ligger inde med sådanne, eller kender et link til sådanne???
class BigFP operator/(const class BigFP& z1,const class BigFP& z2) { if(z1.Size!=z2.Size) fp_error(EM_ONCI,"/"); // test for zero if(ZERO(z1)) return BigFP(z1.Size,0); if(ZERO(z2)) fp_error(EM_DBZ); // both nonzero // use iterative algorithm based on guess from highbytes of mantissa class BigFP leftover(z1.Size); class BigFP guess(z1.Size); class BigFP result(z1.Size,0); for(int i=0;i<(z1.Size/sizeof(long int)-1);i++) { leftover = z1 - result*z2; if((z1.Exponent - leftover.Exponent)>(leftover.Size-sizeof(long int))*BITS_PR_CHAR) break; guess = double(leftover.Mantissa.HighLong())/double(z2.Mantissa.HighLong()); guess.Exponent = guess.Exponent + (leftover.Exponent - z2.Exponent); if(leftover.Sign^z2.Sign) result = result - guess; else result = result + guess; } return result; }
Hej igen... Arne: Har ikke helt fattet alt i din kode... Men problemet er at det skal kunne kompiles i gcc(unix), har prøvet men for self bunker af fejl :( (sikkert bare mig der er en padde) Hvis det bare er mig kunne jeg så ikke få dig til at lave et simpelt eks med dine funktioner, som kan kompiles i gcc???
Ville gerne bruge "gnu mp" men det er ikke muligt, da jeg skal bruge det på et cluster hvor jeg ikke har adgang til at installere nyt software :(
Men hvis i kender nogle andre headerfiler eller objectfiler som kan bruges uden at skulle installeres ville det være HELT perfekt...
Se det fattede jeg en smule af!! :) hehe Tusind tak Arne for alt hjælpen!
Geek
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.