名前空間
変種
操作

std::sinh(std::valarray)

From cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
ヘッダ <valarray> で定義
template< class T >
valarray<T> sinh( const valarray<T>& va );

va の各要素について、その値の双曲線正弦を計算します。

目次

[編集] パラメータ

va - 操作を適用する値の配列

[編集] 戻り値

va の値の双曲線正弦を含む値配列。

[編集] 注意

計算を実行するために、修飾されていない関数 (sinh) が使用されます。そのような関数が利用できない場合、引数依存の探索により、std::sinh が使用されます。

この関数は、std::valarray とは異なる戻り値型で実装される場合があります。その場合、代替型は以下のプロパティを持ちます。

  • std::valarray のすべての const メンバ関数が提供されます。
  • std::valarraystd::slice_arraystd::gslice_arraystd::mask_array、および std::indirect_array は、代替型から構築できます。
  • 2つの const std::valarray<T>& 引数を受け取るすべての関数について、代替型を受け取る同一の関数が追加されます(begin() および end() を除く)。
  • 2つの const std::valarray<T>& 引数を受け取るすべての関数について、const std::valarray<T>& と代替型のすべての組み合わせを受け取る同一の関数が追加されます。
  • 戻り値型は、最も深くネストされた引数型に対して、2レベル以上のテンプレートネストを追加しません。

[編集] 実装例

template<class T>
valarray<T> sinh(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = sinh(i);
 
    return other; // proxy object may be returned
}

[編集]

#include <cmath>
#include <complex>
#include <iomanip>
#include <iostream>
#include <valarray>
 
template<typename T>
void show(char const* title, const std::valarray<T>& va)
{
    std::cout << title << " : " << std::right;
    for (T x : va)
        std::cout << std::fixed << x << ' ';
    std::cout << '\n';
}
 
template<typename T>
void sinh_for(std::valarray<T> const& z)
{
    // Hyperbolic sine is sinh(z) = (eᶻ - e⁻ᶻ) / 2.
 
    const std::valarray<T> sinh_z{std::sinh(z)};
    const std::valarray<T> e_z{std::exp(z)};
    const std::valarray<T> e_neg_z{std::exp(-z)};
    const std::valarray<T> sinh_def{(e_z - e_neg_z) / 2.0f};
 
    show("n         ", z);
    show("sinh(n)   ", sinh_z);
    show("(eⁿ-e⁻ⁿ)/2", sinh_def);
 
    std::cout.put('\n');
}
 
int main()
{
    sinh_for(std::valarray<float>{-.2f, -.1f, 0.f, .1f, .2f, INFINITY});
    sinh_for(std::valarray<std::complex<double>>{{-.2,-.1}, {.2,.1}});
}

出力

n          : -0.200000 -0.100000 0.000000 0.100000 0.200000 inf 
sinh(n)    : -0.201336 -0.100167 0.000000 0.100167 0.201336 inf 
(eⁿ-e⁻ⁿ)/2 : -0.201336 -0.100167 0.000000 0.100167 0.201336 inf 
 
n          : (-0.200000,-0.100000) (0.200000,0.100000) 
sinh(n)    : (-0.200330,-0.101837) (0.200330,0.101837) 
(eⁿ-e⁻ⁿ)/2 : (-0.200330,-0.101837) (0.200330,0.101837)

[編集] 関連項目

valarrayの各要素に関数std::coshを適用する
(function template) [編集]
valarrayの各要素に関数std::tanhを適用する
(function template) [編集]
(C++11)(C++11)
双曲線正弦を計算する (sinh(x))
(関数) [編集]
複素数の双曲線正弦 (ハイパボリックサイン) を計算する (sinh(z))
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)