Namespaces
Variants

std::acos(std::valarray)

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

Für jedes Element in va wird der Arkuskosinus des Werts des Elements berechnet.

Parameter

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

Rückgabewert

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

Anmerkungen

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

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

  • Alle const Mitgliedsfunktionen von std::valarray sind vorhanden.
  • 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, werden identische Funktionen hinzugefügt, die die Ersatztypen nehmen;
  • Für jede Funktion, die zwei const std::valarray<T>& Argumente nimmt, werden identische Funktionen für jede Kombination aus const std::valarray<T>& und Ersatztypen hinzugefügt.
  • Der Rückgabetyp fügt nicht mehr als zwei Ebenen von Template-Verschachtelung über dem am tiefsten verschachtelten Argumenttyp hinzu.

Mögliche Implementierung

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

Beispiel

#include <cmath>
#include <iostream>
#include <numbers>
#include <valarray>
int main()
{
    // nehme gemeinsame x-Werte vom Einheitskreis
    const double s32 = std::sqrt(3.0) / 2.0;
    const double s22 = std::sqrt(2.0) / 2.0;
    std::valarray<double> v1 = {-1.0, -s32, -s22, -0.5, 0.0, 0.5, s22, s32, 1.0};
    std::valarray<double> v2 = std::acos(v1) * 180.0 / std::numbers::pi;
    for (double n : v2)
        std::cout << n << "° ";
    std::cout << '\n';
}

Ausgabe:

180° 150° 135° 120° 90° 60° 45° 30° 0°

Siehe auch

wendet die Funktion std::asin auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::atan auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::atan2 auf ein valarray und einen Wert an
(Funktions-Template)
wendet die Funktion std::cos auf jedes Element des valarray an
(Funktions-Template)
(C++11) (C++11)
berechnet den Arkuskosinus ( arccos(x) )
(Funktion)
berechnet den Arkuskosinus einer komplexen Zahl ( arccos(z) )
(Funktions-Template)