FunctionSquare root
Syntax C/C++#include <VFmath.h>
int VF_sqrt( fVector Y, fVector X, ui size );
int VFx_sqrt( fVector Y, fVector X, ui size, float A, float B, float C );
C++ VecObj#include <OptiVec.h>
int vector<T>::sqrt( const vector<T>& X );
int vector<T>::x_sqrt( const vector<T>& X, const T& A, const T& B, const T& C );
Pascal/Delphiuses VFmath;
function VF_sqrt( Y, X:fVector; size:UIntSize ): IntBool;
function VFx_sqrt( Y, X:fVector; size:UIntSize; A, B, C:Single ): IntBool;
CUDA function C/C++#include <cudaVFmath.h>
int cudaVF_sqrt( fVector d_Y, fVector d_X, ui size );
int cudaVFx_sqrt( fVector d_Y, fVector d_X, ui size, float A, float B, float C );
int cusdVFx_sqrt( fVector d_Y, fVector d_X, ui size, float *d_A, float *d_B, float *d_C );
int VFcu_sqrt( fVector h_Y, fVector h_X, ui size );
int VFxcu_sqrt( fVector h_Y, fVector h_X, ui size, float A, float B, float C );
CUDA function Pascal/Delphiuses VFmath;
function cudaVF_sqrt( d_Y, d_X:fVector; size:UIntSize ): IntBool;
function cudaVFx_sqrt( d_Y, d_X:fVector; size:UIntSize; A, B, C:Single ): IntBool;
function cusdVFx_sqrt( d_Y, d_X:fVector; size:UIntSize; d_A, d_B, d_C:PSingle ): IntBool;
function VFcu_sqrt( h_Y, h_X:fVector; size:UIntSize ): IntBool;
function VFxcu_sqrt( h_Y, h_X:fVector; size:UIntSize; A, B, C:Single ): IntBool;
Descriptionsimple versions: Yi = sqrt( Xi )
expanded versions: Yi = C * sqrt( A*Xi+B )

The "unprotected" versions (prefix VFu_,   VFux_, etc.) do not perform any error handling, which makes them much faster (up to 350% for VFux_sqrt) than the standard versions. On the other hand, any negative input number may lead to an uncontrolled programme crash. Input numbers near the underflow limit may lead to a result of 0. Apart from allowing no negative input numbers, the "unprotected" expanded version (prefix VFux_) also requires that neither the product A*Xi nor the sum A*Xi+B may overflow.

Error handlingNormal versions (VF_, VFx_ etc.): DOMAIN errors occur if, in the real-number versions, the square root of a negative numbers is requested; NAN ("not-a-number") is the default result in this case.
Unprotected versions (VFu_, VFux_ etc.): no error handling.
Return valueFALSE (0), if no error occurred, otherwise TRUE (non-zero)
See alsoVF_square,   VF_rsqrt,   VF_pow,   VF_ipow,   VF_poly

VectorLib Table of Contents  OptiVec home