std::atan(std::valarray)
來自 cppreference.com
定義於標頭檔案 <valarray> |
||
template< class T > valarray<T> atan( const valarray<T>& va ); |
||
對於 va 中的每個元素,計算該元素的反正切值。
目錄 |
[編輯] 引數
va | - | 要應用操作的值陣列 |
[編輯] 返回值
包含 va 中所有元素反正切值的陣列。
[編輯] 注意
使用非限定函式(atan)執行計算。如果此函式不可用,則由於實參依賴查詢,將使用 std::atan。
該函式可以使用與 std::valarray 不同的返回型別實現。在這種情況下,替換型別具有以下屬性:
- 提供 std::valarray 的所有 const 成員函式。
- std::valarray、std::slice_array、std::gslice_array、std::mask_array 和 std::indirect_array 可以由替換型別構造。
- 對於所有接受 const std::valarray<T>& 作為引數的函式(除了 begin() 和 end()(C++11 起)),應新增接受替換型別的相同函式;
- 對於所有接受兩個 const std::valarray<T>& 引數的函式,應新增接受 const std::valarray<T>& 和替換型別的各種組合的相同函式。
- 返回型別不會在最深層巢狀的引數型別之上增加超過兩個模板巢狀級別。
[編輯] 可能的實現
template<class T> valarray<T> atan(const valarray<T>& va) { valarray<T> other = va; for (T& i : other) i = atan(i); return other; // proxy object may be returned } |
[編輯] 示例
執行此程式碼
#include <algorithm> #include <cmath> #include <iostream> #include <valarray> auto show = [](char const* title, const std::valarray<float>& va) { std::cout << title << " :"; std::for_each(std::begin(va), std::end(va), [](const float x) { std::cout << " " << std::fixed << x; }); std::cout << '\n'; }; int main() { const std::valarray<float> x = {.1f, .3f, .6f, .9f}; const std::valarray<float> f = std::atan(x); const std::valarray<float> g = std::tan(f); show("x ", x); show("f = atan(x)", f); show("g = tan(f) ", g); }
輸出
x : 0.100000 0.300000 0.600000 0.900000 f = atan(x) : 0.099669 0.291457 0.540420 0.732815 g = tan(f) : 0.100000 0.300000 0.600000 0.900000
[編輯] 參閱
將函式 std::asin 應用於 valarray 的每個元素 (函式模板) | |
將函式 std::acos 應用於 valarray 的每個元素 (函式模板) | |
將函式 std::atan2 應用於一個 valarray 和一個值 (函式模板) | |
將函式 std::tan 應用於 valarray 的每個元素 (函式模板) | |
(C++11)(C++11) |
計算反正切(arctan(x)) (函式) |
(C++11) |
計算複數的反正切 (arctan(z)) (函式模板) |