Czytając specyfikacji Ic znaleziono tę funkcję:Do czego służy funkcja remo i do czego można jej użyć?
double remquo(double x, double y, int *quo);
float remquof(float x, float y, int *quo);
long double remquol(long double x, long double y,
int *quo);
The
remquo
funkcji obliczenia tego samego reszta jakoremainder
funkcji. W przedmiotem wskazywanego przez quo przechowują wartość, której znak jest znakiemx/y
i którego wielkość jest przystający modulo 2^n do wielkości integralnego ilorazx/y
, gdzie n jest implementacji z definicją liczbą całkowitą większą niż lub równą 3. doW
remquo
zwracająx
REMy
. Jeśliy
wynosi zero, wartość przechowywana w obiekcie wskazywanego przezquo
jest unspeci fi kowane i czy występuje błąd domeny lub funkcje wrócić zerowy jest realizacja de fi ned.
rozumiem co to powraca, powraca fmod(x, y)
, ale nie rozumiem cały quo
część. Czy jest semantycznie równa temu?
*quo = (int) x/y;
*quo %= n; /* n implementation defined */
I moje ostatnie pytanie, na co ta funkcja może być przydatna?
patrz także http://www.kernel.org/doc/man-pages/online/pages/man3/remquo.3.html i http://sourceware.org/bugzilla/show_bug.cgi?id=4449 – Christoph
Użycie zostało odebrane w [to pytanie] (http://stackoverflow.com/questions/11074865/stdremquo-purpose-and-usage) –
Również notatka z [cppreference] (http://en.cppreference.com/ w/cpp/numeric/math/remquo): Ta funkcja jest użyteczna przy wykonywaniu funkcji okresowych z okresem dokładnie przedstawianym jako wartość zmiennoprzecinkowa: podczas obliczania grzechu (πx) dla bardzo dużego x, wywołanie std :: sin może bezpośrednio powoduje duży błąd, ale jeśli argument funkcji zostanie najpierw zredukowany za pomocą std :: remquo, bity mniejszego rzędu ilorazu mogą być użyte do określenia znaku i oktanta wyniku w danym okresie, podczas gdy reszta może być używane do obliczania wartości z dużą precyzją. –