remainder()、remainderf()、remainderl() - x を y で割った剰余の計算

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
C99
Single UNIX Specification、バージョン 3
C++ TR1 C99

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <math.h>

double remainder(double x, double y);
C99
#define _ISOC99_SOURCE
#include <math.h>

float remainderf(float x, float y);
long double remainderl(long double x, long double y);
C++ TR1 C99
#define _TR1_C99
#include <math.h>

float remainder(float x, float y); 
long double remainder(long double x, long double y);

機能説明

remainder() 関数は、y がゼロ以外の場合に浮動小数点演算の剰余を戻し、次の関係式に従います。
関数の公式
n は、正確な x/y 値に最も近い整数値です。以下の式の場合、
関数の公式
n の値は偶数です。
注: 下表は、これらの関数の実行可能な形式を示しています。 IEEE 2 進数浮動小数点の詳細は、IEEE 2 進数浮動小数点を参照してください。
関数 Hex IEEE
remainder X X
remainderf X X
remainderl X X
制約事項: remainderf() 関数は、_FP_MODE_VARIABLE フィーチャー・テスト・マクロをサポートしません。

戻り値

正常に実行された場合、remainder() は、記述のように xy で割る除算を行い、その残りを戻します。

y がゼロの場合、remainder() は HUGE_VAL を戻し、errno に EDOM を設定します。

r = 0 の場合は、x の符号が付けられます。

IEEE の特殊な動作: 正常に実行された場合、remainder() は、xy で割る除算を行い、その残りを戻します。

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)

関連情報