Available indexing methods for storing the nonzero positions of sparse matrices full_indexing: the row and column index vectors have the same length and the vectors specify pairs of row and column indices;

row_wise_indexing: the column vector contains the column indices of the nonzeros row-by-row. The number of nonzeros in row i (i=0..r.size()-2) is given by r[i+1]-r[i]; if this number is nonzero, then r[i] contains the index of the column vector, where the non-zero column indices for this row start. Zero rows in the bottom of the matrix does not appear in r; that is, the index i=r.size()-1 is the last nonzero row of the matrix, and r[i] contains the index of the column vector, where the non-zero column indices for this row start.

column_wise_indexing: this is the same as row_wise_indexing, with the roles of the row and column index vectors interchanged.

The division_part? functions return the result of x/y in the following sense, even if the smallest set containing the result is a union of two intervals. For example, the narrowest closed set containg is not but . When the result of the division is representable by only one interval, division_part1 returns this interval and sets the boolean reference tofalse. However, if the result needs two intervals, division_part1 returns the negative part and sets the boolean reference to true; a call to division_part2 is now needed to get the positive part. This second function can take the boolean returned by the first function as last argument. If this bool is not given, its value is assumed to be true, and the behavior of the function is then undetermined if the division does not produce a second interval.

The division_part? functions return the result of x/y in the following sense, even if the smallest set containing the result is a union of two intervals. For example, the narrowest closed set containg is not but . When the result of the division is representable by only one interval, division_part1 returns this interval and sets the boolean reference tofalse. However, if the result needs two intervals, division_part1 returns the negative part and sets the boolean reference to true; a call to division_part2 is now needed to get the positive part. This second function can take the boolean returned by the first function as last argument. If this bool is not given, its value is assumed to be true, and the behavior of the function is then undetermined if the division does not produce a second interval.

double coco::downward_divides

(

const double &

a,

const double &

b

)

This function divides a by b, rounding downwards.

double coco::downward_minus

(

const double &

a,

const double &

b

)

This function subtracts b from a, rounding downwards.

double coco::downward_multiplies

(

const double &

a,

const double &

b

)

This function multiplies a by b, rounding downwards.

double coco::downward_plus

(

const double &

a,

const double &

b

)

This function adds a and b, rounding downwards.

std::string coco::e2D

(

double

d

)

This function converts a double number to a double precision Fortran representation in a C++ string.