Strona 1 z 1

Problem z przekraczaniem zakresu double w C/C++

: 18 sty 2006, o 23:53
autor: Wiader
Dajmy na to, ze mam policzyc taka f-cje: funkcja1=((*a)*(pow((x),(*b)+1)))/((*b)+1)

*a i *b to wartosci wspolczynnikow podawanych przez usera (sa podawane w innej f-cji stad te wskazniki) x rowniez jest podawane przez usera...

problem jest w tym, ze potrzebuje napsiac cos w stylu

do
{
funkcja1=((*a)*(pow((x),(*b)+1)))/((*b)+1);
}
while(funkcja1!=OVERFLOW);

jest mozliwe napisanie czegos takiego?? zamiast badania kazdego wyrazenia z osobna a potem razem czy nie jest bliski przekroczeniu zakresu doubla?

Problem z przekraczaniem zakresu double w C/C++

: 19 sty 2006, o 15:18
autor: Fibik
Definiujesz funkcję matherr lub/i jakaś kombinacja: try catch.
Można też od razu obliczyć graniczne wartości parametrów, znając zakres typu double: MAX_DOUBLE = 2^1023 = ~10^308

Problem z przekraczaniem zakresu double w C/C++

: 22 sty 2006, o 23:00
autor: Wiader
Nie idzie tego zrobic jakos tak prosciej? zeby badac czy wyrazenie jest +inf lub -inf?
Mam w programie strasznie duzo funkcji wpisanych z wieloma parametrami i potrzebuje poprostu napisac cos takiego zeby program sie nie wysypywal gdy przekroczy wartosc double lecz poprosil o ponowne podanie parametrow... czyli musi wykrywac +inf i -inf? jesli sie da...

da sie?

pozdro i z gory dzieki

Problem z przekraczaniem zakresu double w C/C++

: 23 sty 2006, o 20:27
autor: Fibik
Trzeba wyłączyć kontrolę błędów koprocesora (generowanie przerwań...), wtedy możesz sprawdzać +-inf, jest jeszcze tzw. nie liczba, np. sqrt(-1) i inne takie tam.
Control word koprocesora ustawiamy asemblerem lub setcw87 (coś w tym stylu).

Raczej nie jest to zbyt proste rozwiązanie = niewielkie szanse powodzenia.