Flint2-0.1.0.5: Haskell bindings for the flint library for number theory

Data.Number.Flint.Support.D.Vec

Synopsis

Memory management

_d_vec_init len

Returns an initialised vector of doubles of given length. The entries are not zeroed.

_d_vec_clear vec

Frees the space allocated for vec.

Randomisation

_d_vec_randtest f state len minexp maxexp

Sets the entries of a vector of the given length to random signed numbers with exponents between minexp and maxexp or zero.

Assignment and basic manipulation

_d_vec_set vec1 vec2 len2

Makes a copy of (vec2, len2) into vec1.

_d_vec_zero vec len

Zeros the entries of (vec, len).

Comparison

_d_vec_equal vec1 vec2 len

Compares two vectors of the given length and returns $$1$$ if they are equal, otherwise returns $$0$$.

_d_vec_is_zero vec len

Returns $$1$$ if (vec, len) is zero, and $$0$$ otherwise.

_d_vec_is_approx_zero vec len eps

Returns $$1$$ if the entries of (vec, len) are zero to within eps, and $$0$$ otherwise.

_d_vec_approx_equal vec1 vec2 len eps

Compares two vectors of the given length and returns $$1$$ if their entries are within eps of each other, otherwise returns $$0$$.

Sets (res, len2) to the sum of (vec1, len2) and (vec2, len2).

_d_vec_sub res vec1 vec2 len2

Sets (res, len2) to (vec1, len2) minus (vec2, len2).

Dot product and norm

_d_vec_dot vec1 vec2 len2

Returns the dot product of (vec1, len2) and (vec2, len2).

_d_vec_norm vec len

Returns the square of the Euclidean norm of (vec, len).

_d_vec_dot_heuristic vec1 vec2 len2 err

Returns the dot product of (vec1, len2) and (vec2, len2) by adding up the positive and negative products, and doing a single subtraction of the two sums at the end. err is a pointer to a double in which an error bound for the operation will be stored.

_d_vec_dot_thrice vec1 vec2 len2 err

Returns the dot product of (vec1, len2) and (vec2, len2) using error-free floating point sums and products to compute the dot product with three times (thrice) the working precision. err is a pointer to a double in which an error bound for the operation will be stored.

This implements the algorithm of Ogita-Rump-Oishi. See http://www.ti3.tuhh.de/paper/rump/OgRuOi05.pdf.