| 日本-日本語 | 
      
  | 
  
      
  | 
  
| 
 | 
     
OpenVMS マニュアル | 
    
  
  | 
    
     
HP OpenVMS
 | 
    
    
  
| 目次 | 索引 | 
表 7-1 は, HP C Run-Time Library (RTL) の算術関数を示しています。各関数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)』「リファレンス・セクション」を参照してください。
| 関数 | 説明 | 
|---|---|
| abs | 整数の絶対値を返す。 | 
| acos | ラジアン単位の引数の逆余弦 (アークコサイン) を [0,pi] ラジアンの範囲で返す。 | 
| acosd (Integrity,Alpha) | ラジアン単位の引数の逆余弦 (アークコサイン) を [0,180] 度の範囲で返す。 | 
| acosh (Integrity,Alpha) | 引数の双曲線逆余弦 (アークコサイン) を返す。 | 
| asin | ラジアン単位の引数の逆正弦 (アークサイン) を [ - pi/2,pi/2] ラジアンの範囲で返す。 | 
| asind (Integrity,Alpha) | ラジアン単位の引数の逆正弦 (アークサイン) を [ -90,90 ] 度の範囲で返す。 | 
| asinh (Integrity,Alpha) | 引数の双曲線逆正弦 (アークサイン) を返す。 | 
| atan | ラジアン単位の引数の逆正接 (アークタンジェント) を [ - pi/2,pi/2] ラジアンの範囲で返す。 | 
| atand (Integrity,Alpha) | ラジアン単位の引数の逆正接 (アークタンジェント) を [ -90,90 ] 度の範囲で返す。 | 
| atan2 | y/ x (2 つのラジアン単位の引数) の逆正接 (アークタンジェント) を [ - pi,pi] ラジアンの範囲で返す。 | 
| atand2 (Integrity,Alpha) | y/ x (2 つのラジアン単位の引数) の逆正接 (アークタンジェント) を [ -180,180 ] 度の範囲で返す。 | 
| atanh (Integrity,Alpha) | ラジアン単位の引数の双曲線逆正接 (アークタンジェント) を返す。 | 
| cabs | 複素数の絶対値を sqrt ( x 2 + y 2) として返す。 | 
| cbrt (Integrity,Alpha) | 引数の四捨五入した立方根を返す。 | 
| ceil | 引数に等しいか,それ以上の最小の整数を返す。 | 
| copysign (Integrity,Alpha) | 最初の引数を 2 番目の引数と同じ符号で返す。 | 
| cos | ラジアン単位の引数の余弦 (コサイン) をラジアン単位で返す。 | 
| cosd (Integrity,Alpha) | ラジアン単位の引数の余弦 (コサイン) を度単位で返す。 | 
| cosh | 引数の双曲線余弦 (コサイン) を返す。 | 
| cot | ラジアン単位の引数の余接 (コタンジェント) をラジアン単位で返す。 | 
| cotd (Integrity,Alpha) | ラジアン単位の引数の余接 (コタンジェント) を度単位で返す。 | 
| 
drand48
,
erand48
,
 jrand48 , lrand48 , mrand48 , nrand48  | 
均一に分布した擬似乱数シーケンスを生成する。 48 ビットの負でない倍精度浮動小数点数値を返す。 | 
| erf (Integrity,Alpha) | 引数のエラー関数を返す。 | 
| erfc (Integrity,Alpha) | (1.0 - erf (x )) を返す。 | 
| exp | e を底とする引数のべき乗を返す。 | 
| expm1 (Integrity,Alpha) | exp (x ) - 1 を返す。 | 
| fabs | 浮動小数点数値の絶対値を返す。 | 
| finite (Integrity,Alpha) | 引数が有限の数値の場合は 1 を返し,無限の数値の場合は 0 を返す。 | 
| floor | 引数に等しいか,それより小さい最大の整数を返す。 | 
| fmod | 最初の引数を 2 番目の引数で除算した余りを浮動小数点数値として計算する。 | 
| fp_class (Integrity,Alpha) | IEEE 浮動小数点数値のクラスを判断し, <fp_class.h> ヘッダ・ファイルから定数を返す。 | 
| isnan (Integrity,Alpha) | NaN の判定をする。引数が NaN の場合は 1 を返し,それ以外の場合は 0 を返す。 | 
| j0, j1, jn (Integrity,Alpha) | 第 1 種ベッセル関数を計算する。 | 
| frexp | 浮動小数点数値の小数部と指数部を計算する。 | 
| hypot | 2 つの引数の 2 乗の合計の平方根を返す。 | 
| initstate | 乱数ジェネレータを初期化する。 | 
| labs | 整数の絶対値を long int として返す。 | 
| lcong48 | 48 ビットの均一に分布した擬似乱数シーケンスを初期化する。 | 
| lgamma (Integrity,Alpha) | ガンマ関数の対数を計算する。 | 
| llabs, qabs (Integrity,Alpha) | __int64 整数の絶対値を返す。 | 
| ldexp | 最初の引数に,2 を底とする 2 番目の引数のべき乗を乗算した値を返す。 | 
| ldiv, div | 引数を除算して商と余りを返す。 | 
| lldiv, qdiv (Integrity,Alpha) | 引数を除算して商と余りを返す。 | 
| log2 (Integrity,Alpha) ,log,log10 | 引数の対数を返す。 | 
| log1p (Integrity,Alpha) | ln(1+ x) を正確に計算する。 | 
| logb (Integrity,Alpha) | 基数に依存しない引数の指数を返す。 | 
| nextafter (Integrity,Alpha) | y の方向に,マシンで表現可能な x の次の数値を返す。 | 
| nint (Integrity,Alpha) | 引数に最も近い整数値を返す。 | 
| modf | 最初の引数の正の小数部を返し,2 番目の引数によってアドレスが指定されるオブジェクトに整数部を代入する。 | 
| pow | 最初の引数を底として,2 番目の引数のべき乗を返す。 | 
| rand, srand | 0〜 2 31-1 の範囲で擬似乱数を返す。 | 
| random , srandom | よりランダムなシーケンスで擬似乱数を生成する。 | 
| rint (Integrity,Alpha) | ユーザが指定した現在の IEEE 丸め方向に従って,引数を整数値に丸める。 | 
| scalb (Integrity,Alpha) | 浮動小数点数値の指数部を返す。 | 
| seed48 , srand48 | 48 ビットの乱数ジェネレータを初期化する。 | 
| setstate | 再起動して,乱数ジェネレータを変更する。 | 
| sin | ラジアン単位の引数の正弦 (サイン) をラジアン単位で返す。 | 
| sind (Integrity,Alpha) | ラジアン単位の引数の正弦 (サイン) を度単位で返す。 | 
| sinh | 引数の双曲線正弦 (サイン) を返す。 | 
| sqrt | 引数の平方根を返す。 | 
| tan | ラジアン単位の引数の正接 (タンジェント) をラジアン単位で返す。 | 
| tand (Integrity,Alpha) | ラジアン単位の引数の正接 (タンジェント) を度単位で返す。 | 
| tanh | 引数の双曲線正接 (タンジェント) を返す。 | 
| trunc (Integrity,Alpha) | 引数を整数値に切り捨てる。 | 
| unordered (Integrity,Alpha) | 引数のいずれか一方または両方が NaN の場合は 1 を返し,それ以外の場合は 0 を返す。 | 
| y0, y1, yn (Integrity,Alpha) | 第 2 種ベッセル関数を計算する。 | 
 OpenVMS Alpha システムと OpenVMS Integrity システムでのみ, HP C に対して追加の算術演算ルーチンがサポートされます。これらのルーチンは
<math.h>に定義されており, 表 7-1 に示したルーチンの
floatバリアントと
long doubleバリアントです。
 float バリアントは
float引数を受け付け,
floatの値を返します。名前の最後に接尾語として
fが付加されます。次の例を参照してください。
 
 
![]()
7.1 算術関数のバリアント---float,,long double  (Integrity,Alpha)   
![]()
float cosf (float x); float tandf (float x);  | 
long double バリアントは long double引数を受け付け, long doubleの値を返します。名前の最後に接尾語として lが付加されます。次の例を参照してください。
long double cosl (long double x); long double tandl (long double x);  | 
算術演算ルーチンのバリアントはすべて,本書の「リファレンス・セクション」に説明されています。
/L_DOUBLE=64 を指定せずにコンパイルしたプログラム ( つまり,デフォルトの /L_DOUBLE=128 でコンパイルしたプログラム ) の場合,これらの HP C RTL 算術演算ルーチンの
long doubleバリアントは,『HP Portable Mathematics Library (HPML)』マニュアルに説明されている X_FLOAT エントリ・ポイントにマッピングされます。
 実行時エラーを検出するのに役立つように,
<errno.h>ヘッダ・ファイルには,多くの ( 全部ではない ) 算術関数から返される次の 2 つのシンボル値が定義されています。
 
 算術関数を使用する場合,外部変数
errnoを調べて,これらの値のいずれか一方または両方が格納されていないかどうかを確認し,エラーが発生している場合は適切な処置を実行します。
 
次のプログラムの例では,
errno変数の値が EDOM でないかどうかを調べます。この値は,
sqrt関数に対する入力として負の数値が指定されたことを示します。
 
 
![]()
7.2 エラーの検出
![]()
#include <errno.h> 
#include <math.h> 
#include <stdio.h> 
 
main() 
{ 
   double input, square_root; 
 
   printf("Enter a number: "); 
   scanf("%le", &input); 
   errno = 0; 
   square_root = sqrt(input); 
 
   if (errno == EDOM) 
      perror("Input was negative"); 
   else 
      printf("Square root of %e = %e\n", 
              input, square_root); 
} 
 | 
errnoでこのシンボル値を調べなかった場合,負の値が入力されると,
sqrt関数は 0 を返します。
<errno.h>ヘッダ・ファイルの詳細については, 第 4 章 を参照してください。
 
<fp.h>ヘッダ・ファイルは, ANSI X3J11 委員会の Numerical C Extensions Group が定義している一部の機能を実装しています。浮動小数点関数を広範囲にわたって使用するアプリケーションの場合は,このヘッダ・ファイルが役立ちます。
 この章に示した一部の倍精度関数は,結果が表現できない範囲である場合,±HUGE_VAL (
<math.h>または
<fp.h>に定義) という値を返します。これらの関数の
floatバージョンは,同じ条件で HUGE_VALF (
<fp.h>にのみ定義) という値を返します。
long doubleバージョンは, HUGE_VALL (
<fp.h>に定義) という値を返します。
 IEEE の無限大および NaN の値を有効にしてコンパイルされたプログラムの場合,HUGE_VAL,HUGE_VALF,HUGE_VALL という値は式であり,コンパイル時定数ではありません。次のような初期化を行うと,コンパイル時エラーが発生します。
 
 
![]()
7.3 <fp.h> ヘッダ・ファイル
![]()
$ CREATE IEEE_INFINITY.C #include <fp.h> double my_huge_val = HUGE_VAL ^Z $ CC /FLOAT=IEEE/IEEE=DENORM IEEE_INFINITY double my_huge_val = HUGE_VAL; .....................^ %CC-E-NEEDCONSTEXPR, In the initializer for my_huge_val, "decc$gt_dbl_infinity" is not constant, but occurs in a context that requires a constant expression. at line number 3 in file WORK1$:[RTL]IEEE_INFINITY.C;1 $  | 
<math.h>および
<fp.h>の両方を使用する場合,
<math.h>は関数
isnanを定義し,
<fp.h>は同じ名前のマクロを定義します。アプリケーションで最初に取り込まれたヘッダ・ファイルが
isnanに対する参照を解決します。
 
例 7-1 は,
tan,
sin,
cos関数がどのように動作するかを示しています。
 
 
![]()
7.4 例
![]()
| 例 7-1 正接 (タンジェント) 値の計算と検証 | 
|---|
/*        CHAP_7_MATH_EXAMPLE.C                                 */ 
 
/* This example uses two functions --- mytan and main ---       */ 
/* to calculate the tangent value of a number, and to check     */ 
/* the calculation using the sin and cos functions.             */ 
 
#include <math.h> 
#include <stdio.h> 
 
/* This function calculates the tangent using the sin and       */ 
/* cos functions.                                               */ 
 
double mytan(x) 
    double x; 
{ 
    double y, 
           y1, 
           y2; 
 
    y1 = sin(x); 
    y2 = cos(x); 
 
    if (y2 == 0) 
        y = 0; 
    else 
        y = y1 / y2; 
 
    return y; 
} 
main() 
{ 
    double x; 
 
    /*  Print values: compare   */ 
    for (x = 0.0; x < 1.5; x += 0.1) 
        printf("tan of %4.1f = %6.2f\t%6.2f\n", x, mytan(x), tan(x)); 
} 
 | 
例 7-1 は次の出力を生成します。
$ RUN EXAMPLE tan of 0.0 = 0.00 0.00 tan of 0.1 = 0.10 0.10 tan of 0.2 = 0.20 0.20 tan of 0.3 = 0.31 0.31 tan of 0.4 = 0.42 0.42 tan of 0.5 = 0.55 0.55 tan of 0.6 = 0.68 0.68 tan of 0.7 = 0.84 0.84 tan of 0.8 = 1.03 1.03 tan of 0.9 = 1.26 1.26 tan of 1.0 = 1.56 1.56 tan of 1.1 = 1.96 1.96 tan of 1.2 = 2.57 2.57 tan of 1.3 = 3.60 3.60 tan of 1.4 = 5.80 5.80 $  | 
| 目次 | 索引 | 
      
  | 
  ||||||||