Đọc qua các thông số kỹ thuật C Tôi tìm thấy chức năng này:Chức năng remquo làm gì và nó có thể được sử dụng để làm gì?
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);
Các
remquo
chức năng tính toán thời gian còn lại tương tự nhưremainder
chức năng. Trong đối tượng được trỏ đến bởi hiện họ lưu trữ một giá trị có dấu hiệu là dấu hiệu củax/y
và có độ lớn là đồng dư modulo 2^n đến tầm quan trọng của thương không thể thiếu củax/y
, nơi n là một thực-de fi nguyên ned lớn hơn hoặc bằng 3.Các
remquo
chức năng trởx
REMy
. Nếuy
là zero, giá trị được lưu trữ trong đối tượng trỏ đến bởiquo
là unspeci fi ed và liệu một lỗi xảy ra miền hoặc các chức năng trở zero là thi de fi Ned.
Tôi hiểu những gì nó trả về, nó trả về fmod(x, y)
, nhưng tôi không hiểu toàn bộ phần quo
. Nó có bằng ngữ nghĩa không?
*quo = (int) x/y;
*quo %= n; /* n implementation defined */
Và câu hỏi cuối cùng của tôi, cho chức năng này có ích gì?
cũng xem http://www.kernel.org/doc/man-pages/online/pages/man3/remquo.3.html và http://sourceware.org/bugzilla/show_bug.cgi?id=4449 – Christoph
Cách sử dụng đã được trả lời trong [câu hỏi này] (http://stackoverflow.com/questions/11074865/stdremquo-purpose-and-usage) –
Cũng là một lưu ý từ [cppreference] (http://en.cppreference.com/ w/cpp/số/math/remquo): Hàm này hữu ích khi thực hiện các hàm định kỳ với khoảng thời gian chính xác có thể biểu diễn dưới dạng giá trị dấu phẩy động: khi tính sin (πx) cho x rất lớn, gọi std :: sin trực tiếp dẫn đến lỗi lớn, nhưng nếu đối số hàm lần đầu tiên được giảm với std :: remquo, các bit có thứ tự thấp của thương có thể được sử dụng để xác định dấu và octant của kết quả trong khoảng thời gian, còn lại có thể là được sử dụng để tính giá trị với độ chính xác cao. –