VFrx_sin2 | VDrx_sin2 | VErx_sin2 |
|
Funktion | Quadrat der Sinus-Funktion |
|
Syntax C/C++ | #include <VFmath.h>
int VF_sin2( fVector Y, fVector X, ui size );
int VFx_sin2( fVector Y, fVector X, ui size, float A, float B, float C ); |
C++ VecObj | #include <OptiVec.h>
int vector<T>::sin2( const vector<T>& X );
int vector<T>::x_sin2( const vector<T>& X, const T& A, const T& B, const T& C ); |
Pascal/Delphi | uses VFmath;
function VF_sin2( Y, X:fVector; size:UIntSize ): IntBool;
function VFx_sin2( Y, X:fVector; size:UIntSize; A, B, C:Single ): IntBool; |
|
CUDA-Funktion C/C++ | #include <cudaVFmath.h>
int cudaVF_sin2( fVector d_Y, fVector d_X, ui size );
int cudaVFx_sin2( fVector d_Y, fVector d_X, ui size, float A, float B, float C );
int cusdVFx_sin2( fVector d_Y, fVector d_X, ui size, float *d_A, float *d_B, float *d_C );
int VFcu_sin2( fVector h_Y, fVector h_X, ui size );
int VFxcu_sin2( fVector h_Y, fVector h_X, ui size, float A, float B, float C );
|
CUDA-Funktion Pascal/Delphi | uses VFmath;
function cudaVF_sin2( d_Y, d_X:fVector; size:UIntSize ): IntBool;
function cudaVFx_sin2( d_Y, d_X:fVector; size:UIntSize; A, B, C:Single ): IntBool;
function cusdVFx_sin2( d_Y, d_X:fVector; size:UIntSize; d_A, d_B, d_C:PSingle ): IntBool;
function VFcu_sin2( h_Y, h_X:fVector; size:UIntSize ): IntBool;
function VFxcu_sin2( h_Y, h_X:fVector; size:UIntSize; A, B, C:Single ): IntBool;
|
|
Beschreibung | einfache Versionen: Yi = sin2( Xi )
erweiterte Versionen: Yi = C * sin2( A*Xi+B )
Das Quadrat trigonometrischer Funktionen läßt sich schneller und genauer direkt als über den Umweg der jeweils zugrundeliegenden Funktion bestimmen.
Falls man andererseits sicher ist, dass sich alle Eingabewerte innerhalb eines "vernünftigen" Bereiches befinden, so können die schnelleren Funktionen mit reduziertem Eingabe-Bereich eingesetzt werden (Präfix VFr_ und VFrx_). Sie verlangen folgende Begrenzungen:
64-bit: |Xi| < 232 (ungefähr 4.2*109)
32-bit: |Xi| ≤ 2p).
Die Funktionen mit reduziertem Eingabe-Bereich existieren nur für die CPU, nicht für CUDA. |
|
Fehlerbehandlung | Genauigkeits-Fehler führen zum Resultat 0.0 (als ob das Argument 0.0 wäre) und zu einem Rückgabewert ungleich 0. Ansonsten werden diese Fehler ignoriert. _matherr wird daher nicht aufgerufen.
OVERFLOW-Fehler können nur in den komplexen Versionen auftreten und führen zum Resultat ±HUGE_VAL. |
|
Rückgabewert | FALSE (0), wenn fehlerfrei, andernfalls TRUE (≠ 0). |
|
|