58 bool isColumnMajor,
int startSize,
int valueSize,
int* start,
int* index,
59 double* value,
int dimension)
61 if ( !start || startSize <= 1 )
return NULL;
62 if ( !value || !index )
return NULL;
64 int iStartSize = dimension + 1;
66 matrix =
new SparseMatrix( !isColumnMajor, iStartSize, valueSize);
68 int iNumSource = startSize - 1;
69 int* miStart = matrix->
starts;
71 double* mdValue = matrix->
values;
73 for ( i = 0; i < iStartSize; i++)
79 for (i = 0; i < iNumSource; i++)
81 for (j = start[i]; j < start[ i + 1 ]; j++)
86 miStart[ index[j] + 1] ++;
94 for (i = 1; i < iStartSize; i++ )
96 miStart[i] += miStart [i - 1] ;
102 for (i = 0; i < iNumSource; i++)
105 for (j = start[i]; j < start[ i + 1 ]; j++)
107 iTemp = miStart[ index[j]];
108 miIndex [ iTemp] = i;
109 mdValue [ iTemp] = value[j];
110 miStart[ index[j]] ++;
115 for (i = iStartSize - 1; i >= 1; i-- )
117 miStart[i] = miStart [i - 1] ;
159 ostringstream outStr;
185 charResult =
os_dtoa(x, 0, 0, &decimalPointPos, &sign, NULL);
188 if( sign == 1) outStr <<
"-";
189 strLength = strlen( charResult);
193 if(decimalPointPos == 9999)
195 for(k = 0; k < strLength; k++)outStr << charResult[ k];
198 if(decimalPointPos == strLength)
200 for(k = 0; k < strLength; k++)outStr << charResult[ k];
203 if(decimalPointPos >= 0)
205 if(decimalPointPos > strLength)
210 outStr << charResult[ 0];
211 if(decimalPointPos <= 5)
213 for(k = strLength; k < decimalPointPos; k++) outStr <<
"0";
218 for(k = 1; k < strLength; k++) outStr << charResult[ k];
220 outStr << decimalPointPos - 1;
225 outStr << charResult[ 0];
227 for(k = 1; k < strLength; k++) outStr << charResult[ k];
229 outStr << decimalPointPos - 1;
234 for(k = 0; k < decimalPointPos; k++) outStr << charResult[ k];
236 for(k = decimalPointPos; k < strLength; k++) outStr << charResult[ k];
241 outStr << charResult[ 0];
244 for(k = 1; k < strLength; k++)outStr << charResult[ k];
246 outStr << decimalPointPos -1 ;
char * os_dtoa(double dd, int mode, int ndigits, int *decpt, int *sign, char **rve)
static SparseMatrix * convertLinearConstraintCoefficientMatrixToTheOtherMajor(bool isColumnMajor, int startSize, int valueSize, int *start, int *index, double *value, int dimension)
Round a double number to the precision specified.