tan関数
概要
C言語でタンジェント値を計算する関数です。
<math.h>
を#include
することによって使うことができます。
定義
定義は次の通りになります。
double tan(double)
機能 | 型 | 内容 |
---|---|---|
第1引数 | double |
任意のラジアン値 x |
返り値 | double |
値 tan(x) |
仕様
ISO/IEC 9899:1999 における仕様を示します。
7.12.4.7 The tan functions
Synopsis
1 #include <math.h> double tan(double x);
float tanf(float x);
long double tanl(long double x);
Description
2 The tan functions return the tangent of x (measured in radians). Returns
3 The tan functions return tan x.
また、JIS X 3010:2003 における仕様を示します。
7.12.4.7 tan 関数群
形式 #include <math.h>
double tan(double x);
float tanf(float x);
long double tanl(long double x);
機能 tan 関数群は,x(ラジアン値)の正接を計算する。
返却値 tan 関数群は,正接値を返す。
使用例
#include <stdio.h> #include <math.h> #define PI 3.14159265358979323846 int main() { printf("%lf\n", tan(0.0)); printf("%lf\n", tan(PI / 6.0)); printf("%lf\n", tan(PI / 4.0)); printf("%lf\n", tan(PI / 3.0)); printf("%lf\n", tan(PI / 2.0)); printf("%lf\n", tan(PI)); return 0; }
結果は以下のようになります。
コンパイラはEmbarcadero C++ 7.20
。
$ ./a.exe 0.000000 0.577350 1.000000 1.732051 16331778728383844.000000 -0.000000
実装例
#ifndef M_PI #define M_PI 3.14159265358979323846 #endif double sin(double x) { double sum, k; int i; sum = k = x -= (int)(x / (2 * M_PI)) * 2 * M_PI; for (i = 2;; i += 2) { k *= -(x * x) / (i * (i + 1)); if (sum == sum + k) return sum; else sum += k; } } double cos(double x) { double sum = 1, k = 1; int i; x -= (int)(x / (2 * M_PI)) * 2 * M_PI; for (i = 1;; i += 2) { k *= -(x * x) / (i * (i + 1)); if (sum == sum + k) return sum; else sum += k; } } double tan(double x) { return sin(x) / cos(x); }
sin関数とcos関数を用いて実装することができるはずです。多分。
以下の図は0.000244140625ごとにxの値を変えたときのsin関数とcos関数のfor文の中身の実行回数です。
なお、for文の繰り返し回数は47回以内に収まるようです。
マクローリン展開は以下の記事を参考にするといいです。
最終更新日: 2018-05-19