VI_ramp | VBI_ramp | VSI_ramp | VLI_ramp | VQI_ramp | |
VU_ramp | VUB_ramp | VUS_ramp | VUL_ramp | VUQ_ramp | VUI_ramp |
|
Funktion | aufsteigende oder absteigende "Rampe" |
|
Syntax C/C++ | #include <VFstd.h>
void VF_ramp( fVector X, ui size, float Start, float Rise );
(analog VD_, VE_, VCF_, VCD_, VCE_, VI_ etc.)
void VU_ramp( uVector X, ui size, unsigned Start, int Rise );
(analog VUB_, VUS_, VUL_) |
C++ VecObj | #include <OptiVec.h>
void vector<T>::ramp( T Start, T Rise );
void vector<unsigned>::ramp( unsigned Start, int Rise ); |
Pascal/Delphi | uses VFstd;
procedure VF_ramp( X:fVector; size:UIntSize; Start, Rise:Single );
(analog VD_, VE_, VCF_, VCD_, VCE_, VI_ etc.)
procedure VU_ramp( X:uVector; size:UIntSize; Start:UInt; Rise:Integer );
(analog VUB_, VUS_, VUL_) |
|
CUDA-Funktion C/C++ | #include <cudaVFstd.h>
int cudaVF_ramp( fVector d_X, ui size, float Start, float Rise );
int cusdVF_ramp( fVector d_X, ui size, float *d_Start, float *d_Rise );
void VFcu_ramp( fVector h_X, ui size, float Start, float Rise );
|
CUDA-Funktion Pascal/Delphi | uses VFstd;
function cudaVF_ramp( d_X:fVector; size:UIntSize; Start, Rise:Single ): IntBool;
function cusdVF_ramp( d_X:fVector; size:UIntSize; d_Start, d_Rise:PSingle ): IntBool;
procedure VFcu_ramp( h_X:fVector; size:UIntSize; Start, Rise:Single );
|
|
Beschreibung | Xi = Start + i * Rise
Bei den Fließkomma-Versionen behalte man die begrenzte Genauigkeit von Fließkomma-Zahlen im Auge. So wird beispielsweise nach dem Aufruf von
VF_ramp( F1, 101, −1.0, 0.01 );
das Element F1[100] nicht - wie vielleicht erhofft - 0.0 sein, sondern 2.2*10-8. Dies ist kein Fehler von VectorLib, sondern kommt daher, dass die als float an die Funktion übergebene Zahl 0.01 als float gar nicht exakt dargestellt werden kann. Wenn daraus Probleme erwachsen, baue man die Rampe zunächst mit nicht zu großen Ganzzahlen auf und dividiere anschließend durch einen geeigneten Nenner:
VF_ramp( F1, 101, −100.0, 1.0 );
VF_divC( F1, F1, 101, 100.0 );
In den Versionen für vorzeichenlose Ganzzahl-Typen beachte man, dass Rise als vorzeichenbehafteter Typ definiert ist (also z.B. als int anstelle von unsigned in der VU_- Version). Hierdurch werden absteigende Rampen auch in den vorzeichenlosen Versionen ermöglicht. |
|
Fehlerbehandlung | Fließkomma-Versionen: keine;
Ganzzahl-Versionen: siehe Kap. 5.2. |
|
|
|