Namespaces
Variants

std::cos(std::valarray)

Von de.cppreference.net
 
 
 
 
Definiert in Header <valarray>
template< class T >
valarray<T> cos( const valarray<T>& va );

Für jedes Element in va wird der Kosinus des Wertes des Elements berechnet.

Parameter

va - Wert-Array, auf das die Operation angewendet werden soll

Rückgabewert

Wertearray, das die Kosinuswerte der Werte in va enthält.

Anmerkungen

Eine unqualifizierte Funktion (cos) wird zur Berechnung verwendet. Falls eine solche Funktion nicht verfügbar ist, wird std::cos aufgrund von argumentabhängiger Suche verwendet.

Die Funktion kann mit einem Rückgabetyp implementiert werden, der sich von std::valarray unterscheidet. In diesem Fall hat der Ersatztyp die folgenden Eigenschaften:

  • Alle const Mitgliedsfunktionen von std::valarray werden bereitgestellt.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array und std::indirect_array können aus dem Ersatztyp konstruiert werden.
  • Für jede Funktion, die ein const std::valarray<T>& (außer begin() und end()(seit C++11)) nimmt, müssen identische Funktionen, die die Ersatztypen nehmen, hinzugefügt werden;
  • Für jede Funktion, die zwei const std::valarray<T>& Argumente nimmt, müssen identische Funktionen, die jede Kombination von const std::valarray<T>& und Ersatztypen nehmen, hinzugefügt werden.
  • Der Rückgabetyp fügt nicht mehr als zwei Ebenen der Templateschachtelung über dem am tiefsten verschachtelten Argumenttyp hinzu.

Mögliche Implementierung

template<class T>
valarray<T> cos(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = cos(i);
    return other; // Proxy-Objekt kann zurückgegeben werden
}

Beispiel

#include <cmath>
#include <iomanip>
#include <iostream>
#include <valarray>
void show(const char* title, const std::valarray<float>& data)
{
    const int w{9};
    std::cout << std::setw(w) << title << " | ";
    for (float x : data)
        std::cout << std::setw(w) << x << " | ";
    std::cout << '\n';
}
int main()
{
    const std::valarray<float> x{.1, .2, .3, .4};
    const auto sin = std::sin(x);
    const auto cos = std::cos(x);
    const auto z = (sin * sin) + (cos * cos);
    show("x", x);
    show("sin(x)", sin);
    show("cos(x)", cos);
    show("z", z);
}

Ausgabe:

        x |       0.1 |       0.2 |       0.3 |       0.4 | 
   sin(x) | 0.0998334 |  0.198669 |   0.29552 |  0.389418 | 
   cos(x) |  0.995004 |  0.980067 |  0.955337 |  0.921061 | 
        z |         1 |         1 |         1 |         1 |

Siehe auch

wendet die Funktion std::sin auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::tan auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::acos auf jedes Element des valarray an
(Funktions-Template)
(C++11) (C++11)
berechnet den Kosinus ( cos(x) )
(Funktion)
berechnet den Kosinus einer komplexen Zahl ( cos(z) )
(Funktions-Template)