Linux講座にようこそ。このページは「C言語プログラミング入門 - 第14章.ライブラリ関数 - 数学ライブラリ」です。

C言語プログラミング入門

14. ライブラリ関数(21/36) - 数学ライブラリ(2/3)

14.30 三角関数

14.30.1 sin関数、asin関数、sinh関数、cos関数、acos関数、cosh関数、tan関数、atan関数、atan2関数、tanh関数

  • sin関数はxの正弦(サイン)の値を返します。
  • asin関数はxの逆正弦(アークサイン)の値を返します。
  • sinh関数は双曲線正弦(ハイパボリックサイン)の値を返します。
  • cos関数はxの余弦(コサイン)の値を返します。
  • acos関数はxの逆余弦(アークコサイン)の値を返します。
  • cosh関数は双曲線余弦(ハイパボリックコサイン)の値を返します。
  • tan関数はxの正接(タンジェント)の値を返します。
  • atan関数はxの逆正接(アークタンジェント)の値を返します。
  • atan2関数はy/xの逆正接(アークタンジェント)の値を返します。
  • tanh関数はxの双曲線正接(ハイパボリックタンジェント)の値を返します。
【表14-4-2】 sin関数、asin関数、sinh関数、cos関数、acos関数、
cosh関数、tan関数、atan関数、atan2関数、tanh関数
形式#include <math.h>
double sin(double x);
double asin(double x);
double sinh(double x);
double cos(double x);
double acos(double x);
double cosh(double x);
double tan(double x);
double atan(double x);
double atan2(double y, double x);
double tanh(double x)
返り値正しく計算ができた場合は計算結果を返します。単位はラジアンです。
引数
double x
角度をラジアン単位で指定します。
使用法、
これらの関数は引数と返り値がdouble型ですが、float型とlong double型の関数もあります。

14.31 絶対値関数

14.31.1 abs関数、labs関数、fabs関数

  • abs関数は整数(int型)の絶対値を返します。
  • labs関数は大きな整数(long int型)の絶対値を返します。
  • fabs関数は浮動小数点数(double型)の絶対値を返します。
【表14-4-3】 abs関数、labs関数、fabs関数
形式#include <math.h>
int abs(int i);
long int labs(long int i);
double fabs(double x);
返り値それぞれの関数の型に応じた絶対値を返します。
引数
int i
絶対値を算出したい整数(int型)の値を指定します。
long int i
絶対値を算出したい整数(long int型)の値を指定します。
double x
絶対値を算出したい浮動小数点数(double型)の値を指定します。

14.32 整数の除算関数

14.32.1 div関数、ldiv関数

整数の除算は/演算子で商が求まりますし、%演算子で余りが求まりますので、通常はこれらの演算子を使用した方がよいでしょう。

  • div関数は整数(int型)の除算で、商と余りを返します。
  • ldiv関数は大きな整数(long int型)の除算で、商と余りを返します。
【表14-4-4】 div関数、ldiv関数
形式#include <math.h>
div_t div(int numerator, int denominator);
ldiv_t ldiv(long int numerator, long int denominator);
返り値div_t(またはldiv_t)構造体のquotメンバに商を、remメンバに余りを設定して返します。
引数
int numerator
被除数(割られる方の値)を指定します。
int denominator
除数(割る方の値)を指定します。
long int numerator
被除数(割られる方の値)を指定します。
long int denominator
除数(割る方の値)を指定します。

14.33 最小・最大の整数値算出関数

14.33.1 ceil関数、floor関数

  • ceil関数は指定した引数の値を下回らない最小の整数値を返します。例えば、1.5が指定された場合は2.0が返ります。
  • floor関数は指定した引数の値を越えない最大の整数値を返します。例えば、1.5が指定された場合は1.0が返ります。
【表14-4-5】 ceil関数、floor関数
形式#include <math.h>
double ceil(double x);
double floor(double x);
返り値算出結果を返します。
引数
double x
算出の元となる値を指定します。

14.33.2 例題

入力した数値に対して、ceil関数とfloor関数の結果を表示します。

  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <math.h>
  4.  
  5. int main(void)
  6. {
  7.     double  num;
  8.     char    ans;
  9.  
  10.     do
  11.     {
  12.         printf("数値を入力してください ==> ");
  13.         scanf("%lf", &num);
  14.  
  15.         printf("ceil()  : %f\n", ceil(num));
  16.         printf("floor() : %f\n", floor(num));
  17.  
  18.         printf("再度入力しますか(y/n) ==> ");
  19.         scanf("%*c%c", &ans);
  20.     } while(toupper(ans) == 'Y');
  21.  
  22.     return 0;
  23. }
$ ./ex14_4_1.prg
数値を入力してください ==> 1.5
ceil()  : 2.000000
floor() : 1.000000
再度入力しますか(y/n) ==> y
数値を入力してください ==> -1.5
ceil()  : -1.000000
floor() : -2.000000
再度入力しますか(y/n) ==> y
数値を入力してください ==> 0.5
ceil()  : 1.000000
floor() : 0.000000
再度入力しますか(y/n) ==> y
数値を入力してください ==> -0.5
ceil()  : -0.000000
floor() : -1.000000
再度入力しますか(y/n) ==> y
数値を入力してください ==> 0
ceil()  : 0.000000
floor() : 0.000000
再度入力しますか(y/n) ==> n
$
3行目
数学関数を使いますので、math.hを取り込みます。
15行目
入力した値(変数num)を下回らない最小の整数値をceil関数で求めます。
16行目
入力した値(変数num)を越えない最大の整数値をfloor関数で求めます。