Dip
0.92.4
|
#include "CoinUtilsConfig.h"
#include <unistd.h>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include "CoinTypes.hpp"
#include "CoinError.hpp"
Go to the source code of this file.
Classes | |
class | CoinThreadRandom |
Class for thread specific random numbers. More... | |
Macros | |
#define | COIN_RESTRICT |
#define | COIN_OWN_RANDOM_32 |
#define | CoinSizeofAsInt(type) (static_cast< int >(sizeof(type))) |
Cube Root. More... | |
#define | COIN_DETAIL_PRINT(s) |
Functions | |
template<class T > | |
void | CoinCopyN (const T *from, const CoinBigIndex size, T *to) |
This helper function copies an array to another location using Duff's device (for a speedup of ~2). More... | |
template<class T > | |
void | CoinCopy (const T *first, const T *last, T *to) |
This helper function copies an array to another location using Duff's device (for a speedup of ~2). More... | |
template<class T > | |
void | CoinDisjointCopyN (const T *from, const CoinBigIndex size, T *to) |
This helper function copies an array to another location. More... | |
template<class T > | |
void | CoinDisjointCopy (const T *first, const T *last, T *to) |
This helper function copies an array to another location. More... | |
template<class T > | |
T * | CoinCopyOfArray (const T *array, const CoinBigIndex size) |
Return an array of length size filled with input from array , or null if array is null. More... | |
template<class T > | |
T * | CoinCopyOfArrayPartial (const T *array, const CoinBigIndex size, const CoinBigIndex copySize) |
Return an array of length size filled with first copySize from array , or null if array is null. More... | |
template<class T > | |
T * | CoinCopyOfArray (const T *array, const CoinBigIndex size, T value) |
Return an array of length size filled with input from array , or filled with (scalar) value if array is null. More... | |
template<class T > | |
T * | CoinCopyOfArrayOrZero (const T *array, const CoinBigIndex size) |
Return an array of length size filled with input from array , or filled with zero if array is null. More... | |
template<class T > | |
void | CoinMemcpyN (const T *from, const CoinBigIndex size, T *to) |
This helper function copies an array to another location. More... | |
template<class T > | |
void | CoinMemcpy (const T *first, const T *last, T *to) |
This helper function copies an array to another location. More... | |
template<class T > | |
void | CoinFillN (T *to, const CoinBigIndex size, const T value) |
This helper function fills an array with a given value. More... | |
template<class T > | |
void | CoinFill (T *first, T *last, const T value) |
This helper function fills an array with a given value. More... | |
template<class T > | |
void | CoinZeroN (T *to, const CoinBigIndex size) |
This helper function fills an array with zero. More... | |
void | CoinCheckDoubleZero (double *to, const CoinBigIndex size) |
This Debug helper function checks an array is all zero. More... | |
void | CoinCheckIntZero (int *to, const CoinBigIndex size) |
This Debug helper function checks an array is all zero. More... | |
template<class T > | |
void | CoinZero (T *first, T *last) |
This helper function fills an array with a given value. More... | |
char * | CoinStrdup (const char *name) |
Returns strdup or NULL if original NULL. More... | |
template<class T > | |
T | CoinMax (const T x1, const T x2) |
Return the larger (according to operator<() of the arguments. More... | |
template<class T > | |
T | CoinMin (const T x1, const T x2) |
Return the smaller (according to operator<() of the arguments. More... | |
template<class T > | |
T | CoinAbs (const T value) |
Return the absolute value of the argument. More... | |
template<class T > | |
bool | CoinIsSorted (const T *first, const CoinBigIndex size) |
This helper function tests whether the entries of an array are sorted according to operator<. More... | |
template<class T > | |
bool | CoinIsSorted (const T *first, const T *last) |
This helper function tests whether the entries of an array are sorted according to operator<. More... | |
template<class T > | |
void | CoinIotaN (T *first, const CoinBigIndex size, T init) |
This helper function fills an array with the values init, init+1, init+2, etc. More... | |
template<class T > | |
void | CoinIota (T *first, const T *last, T init) |
This helper function fills an array with the values init, init+1, init+2, etc. More... | |
template<class T > | |
T * | CoinDeleteEntriesFromArray (T *arrayFirst, T *arrayLast, const int *firstDelPos, const int *lastDelPos) |
This helper function deletes certain entries from an array. More... | |
double | CoinDrand48 (bool isSeed=false, unsigned int seed=1) |
Return a random number between 0 and 1. More... | |
void | CoinSeedRandom (int iseed) |
Set the seed for the random number generator. More... | |
char | CoinFindDirSeparator () |
This function figures out whether file names should contain slashes or backslashes as directory separator. More... | |
int | CoinStrNCaseCmp (const char *s0, const char *s1, const size_t len) |
template<class T > | |
void | CoinSwap (T &x, T &y) |
Swap the arguments. More... | |
template<class T > | |
int | CoinToFile (const T *array, CoinBigIndex size, FILE *fp) |
This helper function copies an array to file Returns 0 if OK, 1 if bad write. More... | |
template<class T > | |
int | CoinFromFile (T *&array, CoinBigIndex size, FILE *fp, CoinBigIndex &newSize) |
This helper function copies an array from file and creates with new. More... | |
int | CoinStrlenAsInt (const char *string) |
This helper returns "strlen" as an int. More... | |
#define COIN_RESTRICT |
Definition at line 32 of file CoinHelperFunctions.hpp.
#define COIN_OWN_RANDOM_32 |
Definition at line 886 of file CoinHelperFunctions.hpp.
#define CoinSizeofAsInt | ( | type | ) | (static_cast< int >(sizeof(type))) |
Cube Root.
This helper returns "sizeof" as an int
Definition at line 1071 of file CoinHelperFunctions.hpp.
Referenced by CoinBigIndexArrayWithLength::CoinBigIndexArrayWithLength(), CoinDoubleArrayWithLength::CoinDoubleArrayWithLength(), CoinFactorizationDoubleArrayWithLength::CoinFactorizationDoubleArrayWithLength(), CoinFactorizationLongDoubleArrayWithLength::CoinFactorizationLongDoubleArrayWithLength(), CoinIntArrayWithLength::CoinIntArrayWithLength(), CoinUnsignedIntArrayWithLength::CoinUnsignedIntArrayWithLength(), and CoinVoidStarArrayWithLength::CoinVoidStarArrayWithLength().
#define COIN_DETAIL_PRINT | ( | s | ) |
Definition at line 1254 of file CoinHelperFunctions.hpp.
|
inline |
This helper function copies an array to another location using Duff's device (for a speedup of ~2).
The arrays are given by pointers to their first entries and by the size of the source array. Overlapping arrays are handled correctly.
Definition at line 45 of file CoinHelperFunctions.hpp.
Referenced by CoinCopy(), CoinDisjointCopyN(), CoinMemcpyN(), AbcNodeDesc::setLowerBounds(), and AbcNodeDesc::setUpperBounds().
|
inline |
This helper function copies an array to another location using Duff's device (for a speedup of ~2).
The source array is given by its first and "after last" entry; the target array is given by its first entry. Overlapping arrays are handled correctly.
All of the various CoinCopyN variants use an int for size. On 64-bit architectures, the address diff last-first will be a 64-bit quantity. Given that everything else uses an int, I'm going to choose to kick the difference down to int. – lh, 100823 –
Definition at line 122 of file CoinHelperFunctions.hpp.
References CoinCopyN().
Referenced by CoinDeleteEntriesFromArray().
|
inline |
This helper function copies an array to another location.
The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The arrays are given by pointers to their first entries and by the size of the source array.
Note JJF - the speed claim seems to be false on IA32 so I have added CoinMemcpyN which can be used for atomic data
Definition at line 138 of file CoinHelperFunctions.hpp.
References CoinCopyN().
Referenced by CoinDisjointCopy(), CoinTreeSiblings::CoinTreeSiblings(), CoinWarmStartVector< U >::CoinWarmStartVector(), and CoinWarmStartVector< U >::gutsOfCopy().
|
inline |
This helper function copies an array to another location.
The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The source array is given by its first and "after last" entry; the target array is given by its first entry.
Definition at line 200 of file CoinHelperFunctions.hpp.
References CoinDisjointCopyN().
Referenced by CoinDeleteEntriesFromArray().
|
inline |
Return an array of length size
filled with input from array
, or null if array
is null.
Definition at line 214 of file CoinHelperFunctions.hpp.
|
inline |
Return an array of length size
filled with first copySize from array
, or null if array
is null.
Definition at line 231 of file CoinHelperFunctions.hpp.
|
inline |
Return an array of length size
filled with input from array
, or filled with (scalar) value
if array
is null.
Definition at line 249 of file CoinHelperFunctions.hpp.
|
inline |
Return an array of length size
filled with input from array
, or filled with zero if array
is null.
Definition at line 268 of file CoinHelperFunctions.hpp.
|
inline |
This helper function copies an array to another location.
The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The arrays are given by pointers to their first entries and by the size of the source array.
Note JJF - the speed claim seems to be false on IA32 so I have added alternative coding if USE_MEMCPY defined
Definition at line 291 of file CoinHelperFunctions.hpp.
References CoinCopyN().
Referenced by c_ekkdcpy(), c_ekkscpy(), CoinMemcpy(), and CoinStrdup().
|
inline |
This helper function copies an array to another location.
The two arrays must not overlap (otherwise an exception is thrown). For speed 8 entries are copied at a time. The source array is given by its first and "after last" entry; the target array is given by its first entry.
Definition at line 388 of file CoinHelperFunctions.hpp.
References CoinMemcpyN().
|
inline |
This helper function fills an array with a given value.
For speed 8 entries are filled at a time. The array is given by a pointer to its first entry and its size.
Note JJF - the speed claim seems to be false on IA32 so I have added CoinZero to allow for memset.
Definition at line 404 of file CoinHelperFunctions.hpp.
Referenced by CoinFill(), and UtilFillN().
|
inline |
This helper function fills an array with a given value.
For speed 8 entries are filled at a time. The array is given by its first and "after last" entry.
Definition at line 477 of file CoinHelperFunctions.hpp.
References CoinFillN().
|
inline |
This helper function fills an array with zero.
For speed 8 entries are filled at a time. The array is given by a pointer to its first entry and its size.
Note JJF - the speed claim seems to be false on IA32 so I have allowed for memset as an alternative
Definition at line 492 of file CoinHelperFunctions.hpp.
Referenced by c_ekkczero(), c_ekkdzero(), c_ekkizero(), and CoinZero().
|
inline |
This Debug helper function checks an array is all zero.
Definition at line 570 of file CoinHelperFunctions.hpp.
|
inline |
This Debug helper function checks an array is all zero.
Definition at line 584 of file CoinHelperFunctions.hpp.
|
inline |
This helper function fills an array with a given value.
For speed 8 entries are filled at a time. The array is given by its first and "after last" entry.
Definition at line 605 of file CoinHelperFunctions.hpp.
References CoinZeroN().
|
inline |
Returns strdup or NULL if original NULL.
Definition at line 613 of file CoinHelperFunctions.hpp.
References CoinMemcpyN().
|
inline |
Return the larger (according to operator<()
of the arguments.
This function was introduced because for some reason compiler tend to handle the max()
function differently.
Definition at line 632 of file CoinHelperFunctions.hpp.
Referenced by CoinDenseVector< T >::infNorm().
|
inline |
Return the smaller (according to operator<()
of the arguments.
This function was introduced because for some reason compiler tend to handle the min() function differently.
Definition at line 644 of file CoinHelperFunctions.hpp.
|
inline |
Return the absolute value of the argument.
This function was introduced because for some reason compiler tend to handle the abs() function differently.
Definition at line 656 of file CoinHelperFunctions.hpp.
Referenced by CoinDenseVector< T >::infNorm().
|
inline |
This helper function tests whether the entries of an array are sorted according to operator<.
The array is given by a pointer to its first entry and by its size.
Definition at line 668 of file CoinHelperFunctions.hpp.
Referenced by CoinDeleteEntriesFromArray(), and CoinIsSorted().
|
inline |
This helper function tests whether the entries of an array are sorted according to operator<.
The array is given by its first and "after last" entry.
Definition at line 741 of file CoinHelperFunctions.hpp.
References CoinIsSorted().
|
inline |
This helper function fills an array with the values init, init+1, init+2, etc.
For speed 8 entries are filled at a time. The array is given by a pointer to its first entry and its size.
Definition at line 753 of file CoinHelperFunctions.hpp.
Referenced by CoinIota().
|
inline |
This helper function fills an array with the values init, init+1, init+2, etc.
For speed 8 entries are filled at a time. The array is given by its first and "after last" entry.
Definition at line 826 of file CoinHelperFunctions.hpp.
References CoinIotaN().
|
inline |
This helper function deletes certain entries from an array.
The array is given by pointers to its first and "after last" entry (first two arguments). The positions of the entries to be deleted are given in the integer array specified by the last two arguments (again, first and "after last" entry).
Definition at line 840 of file CoinHelperFunctions.hpp.
References CoinCopy(), CoinDisjointCopy(), and CoinIsSorted().
|
inline |
Return a random number between 0 and 1.
A platform-independent linear congruential generator. For a given seed, the generated sequence is always the same regardless of the (32-bit) architecture. This allows to build & test in different environments, getting in most cases the same optimization path.
Set isSeed
to true and supply an integer seed to set the seed (vid. CoinSeedRandom)
Definition at line 904 of file CoinHelperFunctions.hpp.
Referenced by CoinSeedRandom().
|
inline |
Set the seed for the random number generator.
Definition at line 917 of file CoinHelperFunctions.hpp.
References CoinDrand48().
|
inline |
This function figures out whether file names should contain slashes or backslashes as directory separator.
Definition at line 946 of file CoinHelperFunctions.hpp.
|
inline |
Definition at line 966 of file CoinHelperFunctions.hpp.
|
inline |
Swap the arguments.
Definition at line 990 of file CoinHelperFunctions.hpp.
|
inline |
This helper function copies an array to file Returns 0 if OK, 1 if bad write.
Definition at line 1005 of file CoinHelperFunctions.hpp.
|
inline |
This helper function copies an array from file and creates with new.
Passed in array is ignored i.e. not deleted. But if NULL and size does not match and newSize 0 then leaves as NULL and 0 Returns 0 if OK, 1 if bad read, 2 if size did not match.
Definition at line 1034 of file CoinHelperFunctions.hpp.
|
inline |
This helper returns "strlen" as an int.
Definition at line 1074 of file CoinHelperFunctions.hpp.