標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <math.h>
double remainder(double x, double y);
#define _ISOC99_SOURCE
#include <math.h>
float remainderf(float x, float y);
long double remainderl(long double x, long double y);
#define _TR1_C99
#include <math.h>
float remainder(float x, float y);
long double remainder(long double x, long double y);
関数 | Hex | IEEE |
---|---|---|
remainder | X | X |
remainderf | X | X |
remainderl | X | X |
正常に実行された場合、remainder() は、記述のように x を y で割る除算を行い、その残りを戻します。
y がゼロの場合、remainder() は HUGE_VAL を戻し、errno に EDOM を設定します。
r = 0 の場合は、x の符号が付けられます。
IEEE の特殊な動作: 正常に実行された場合、remainder() は、x を y で割る除算を行い、その残りを戻します。
y がゼロの場合、remainder() は NaNQ を戻し、errno に EDOM を設定します。
/*
* This program illustrates the use of remainder() function
*
*/
#define _ISOC99_SOURCE
#include <math.h>
#include <stdio.h>
void main() {
double number1=3.0, number2=3.5;
printf("Illustrates the remainder() function");
#ifdef __BFP__
printf(" (IEEE version)¥n¥n");
#else
printf(" (HFP version)¥n¥n");
#endif
printf("remainder(%.2f,%.2f)=%.2f¥n",number1,number2,
remainder(number1,number2));
number1=1; number2=2;
printf("remainder(%.2f,%.2f)=%.2f¥n",number1,number2,
remainder(number1,number2));
number1=1; number2=0;
printf("remainder(%.2f,%.2f)=%.2f¥n",number1,number2,
remainder(number1,number2));
}
出力:
Illustrates the remainder() function (IEEE version)
remainder(3.00,3.50)=-0.50
remainder(1.00,2.00)=1.00
remainder(1.00,0.00)=NaNQ(1)