同时计算浮点x/y的商和余数,其中商对INT_MAX取余,余数的计算和remainder保持一致。
C interface:
float remquof(float x, float y, int *quo);
double remquo(double x, double y, int *quo);
long double remquol(long double x, long double y, int *quo);
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
x |
|
表示输入数据的浮点值。 |
输入 |
y |
|
表示输入数据的浮点值。 |
输入 |
quo |
|
表示输出数据的值。 |
输出 |
C: "km.h"
C interface:
// typical usage double x1 = 3.0, x2 = 3.5; double y1 = 4.0, y2 = 4.5; // special handling double e = INFINITY, f = -INFINITY, g = NAN; // print result double rem; int quo; printf("/*\n"); rem = remquo(x1, y1, &quo); printf(" * remquo(3.0, 4.0) = %.15f, %d\n", rem, quo); rem = remquo(x2, x2, &quo); printf(" * remquo(3.5, 4.5) = %.15f, %d\n", rem, quo); rem = remquo(y2, y2, &quo); printf(" * remquo(4.5, 4.5) = %.15f, %d\n", rem, quo); rem = remquo(e, 0.0f, &quo); printf(" * remquo(INFINITY, 0) = %.15f, %d\n", rem, quo); rem = remquo(f, x1, &quo); printf(" * remquo(-INFINITY, 3.0) = %.15f, %d\n", rem, quo); rem = remquo(g, x1, &quo); printf(" * remquo(NAN, 3.0) = %.15f, %d\n", rem, quo); rem = remquo(g, e, &quo); printf(" * remquo(NAN, INFINITY) = %.15f, %d\n", rem, quo); printf(" **/\n"); /* * remquo(3.0, 4.0) = -1.000000000000000, 1 * remquo(3.5, 4.5) = 0.000000000000000, 1 * remquo(4.5, 4.5) = 0.000000000000000, 1 * remquo(INFINITY, 0) = nan, 0 * remquo(-INFINITY, 3.0) = nan, 0 * remquo(NAN, 3.0) = nan, 0 * remquo(NAN, INFINITY) = nan, 0 **/