Skip to content

Commit

Permalink
- moved some if statements out of for loops
Browse files Browse the repository at this point in the history
- avoid calloc if memory is directly initialized after allocation

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@14228 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Henning Kiel committed Dec 4, 2012
1 parent 941cf63 commit e9ed93d
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 75 deletions.
37 changes: 20 additions & 17 deletions SimulationRuntime/c/linearization/linearize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,23 +41,25 @@ using namespace std;

string array2string(double* array, int row, int col){

int i=0;
int j=0;
ostringstream retVal(ostringstream::out);
retVal.precision(16);
int k=0;
for (i=0;i<row;i++){
for (j=0;j<col;j++){
k = i + j * row;
if (j+1==col)
retVal << array[k];
else
retVal << array[k] << ",";
}
if (!((i+1) == row) && !(col == 0))
retVal << ";";
int i=0;
int j=0;
ostringstream retVal(ostringstream::out);
retVal.precision(16);
int k;
for (i=0;i<row;i++){
k = i;
for (j=0;j<col-1;j++){
retVal << array[k] << ",";
k += row;
}
return retVal.str();
if (col > 0) {
retVal << array[k];
}
if (!((i+1) == row) && !(col == 0)) {
retVal << ";";
}
}
return retVal.str();
}

int functionJacA(DATA* data, double* jac){
Expand Down Expand Up @@ -94,8 +96,9 @@ int functionJacA(DATA* data, double* jac){
INFO(LOG_JAC,"Print jac:");
for(i=0; i < data->simulationInfo.analyticJacobians[index].sizeRows;i++)
{
for(j=0; j < data->simulationInfo.analyticJacobians[index].sizeCols;j++)
for(j=0; j < data->simulationInfo.analyticJacobians[index].sizeCols;j++) {
printf("% .5e ",jac[i+j*data->simulationInfo.analyticJacobians[index].sizeCols]);
}
printf("\n");
}
}
Expand Down
4 changes: 2 additions & 2 deletions SimulationRuntime/c/simulation/simulation_runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,13 +123,13 @@ void setTermMsg(const char *msg)
size_t length = strlen(msg);
if (length > 0) {
if (TermMsg == NULL) {
TermMsg = (char*)calloc(length+1,sizeof(char));
TermMsg = (char*)malloc((length+1)*sizeof(char));
} else {
if (strlen(msg) > strlen(TermMsg)) {
if (TermMsg != NULL) {
free(TermMsg);
}
TermMsg = (char*)calloc(length+1,sizeof(char));
TermMsg = (char*)malloc((length+1)*sizeof(char));
}
}
for (i=0;i<length;i++)
Expand Down
16 changes: 9 additions & 7 deletions SimulationRuntime/c/util/base_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,13 +187,15 @@ int index_spec_fit_base_array(const index_spec_t *s, const base_array_t *a)
}
}

for (j = 0; j < s->dim_size[i]; ++j) {
if ((s->index[i] != NULL) && ((s->index[i][j] <= 0) ||
(s->index[i][j] > a->dim_size[i]))) {
fprintf(stderr,
"array s->index[%d][%d] == %d incorrect, a->dim_size[%d] == %d\n",
i, j, (int) s->index[i][j], i, (int) a->dim_size[i]); fflush(stderr);
return 0;
if (s->index[i] != NULL)
{
for (j = 0; j < s->dim_size[i]; ++j) {
if ((s->index[i][j] <= 0) || (s->index[i][j] > a->dim_size[i])) {
fprintf(stderr,
"array s->index[%d][%d] == %d incorrect, a->dim_size[%d] == %d\n",
i, j, (int) s->index[i][j], i, (int) a->dim_size[i]); fflush(stderr);
return 0;
}
}
}
}
Expand Down
18 changes: 9 additions & 9 deletions SimulationRuntime/c/util/boolean_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,24 +204,24 @@ void print_boolean_array(const boolean_array_t *source)

data = (modelica_boolean *) source->data;
if (source->ndims == 1) {
for (i = 0; i < source->dim_size[0]; ++i) {
printf("%c", (*data) ? 'T' : 'F');
for (i = 1; i < source->dim_size[0]; ++i) {
printf("%c, ", (*data) ? 'T' : 'F');
++data;
if ((i + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%c", (*data) ? 'T' : 'F');
}
} else if (source->ndims > 1) {
n = base_array_nr_of_elements(source) /
(source->dim_size[0] * source->dim_size[1]);
for (k = 0; k < n; ++k) {
for (i = 0; i < source->dim_size[1]; ++i) {
for (j = 0; j < source->dim_size[0]; ++j) {
printf("%c",(*data) ? 'T' : 'F');
printf("%c, ",(*data) ? 'T' : 'F');
++data;
if ((j + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%c",(*data) ? 'T' : 'F');
}
printf("\n");
}
Expand Down
19 changes: 8 additions & 11 deletions SimulationRuntime/c/util/index_spec.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,13 +135,10 @@ void print_size_array(int size, const size_t* arr)
{
int i;
printf("{");
for(i = 0; i < size; ++i) {
printf("%d", (int) arr[i]);
if (i != (size - 1)) {
printf(",");
}
for(i = 0; i < size-1; ++i) {
printf("%d,", (int) arr[i]);
}
printf("}\n");
printf("%d}\n", (int) arr[i]);
}

/* Calculates the next index for copying subscripted array.
Expand Down Expand Up @@ -180,11 +177,11 @@ void print_index_spec(const index_spec_t* spec)
break;
case 'A':
printf("{");
for (k = 0; k < spec->dim_size[i]; ++k) {
printf("%d", (int) spec->index[i][k]);
if (k != (spec->dim_size[i] - 1)) {
printf(",");
}
for (k = 0; k < spec->dim_size[i]-1; ++k) {
printf("%d,", (int) spec->index[i][k]);
}
if (0 < spec->dim_size[i]) {
printf("%d", (int) spec->index[i][0]);
}
printf("}");
break;
Expand Down
21 changes: 10 additions & 11 deletions SimulationRuntime/c/util/integer_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -264,24 +264,24 @@ void print_integer_array(const integer_array_t * source)

data = (modelica_integer *) source->data;
if (source->ndims == 1) {
for (i = 0; i < source->dim_size[0]; ++i) {
printf("%ld",*data);
for (i = 1; i < source->dim_size[0]; ++i) {
printf("%ld, ",*data);
++data;
if ((i + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%ld",*data);
}
} else if (source->ndims > 1) {
n = base_array_nr_of_elements(source) /
(source->dim_size[0] * source->dim_size[1]);
for (k = 0; k < n; ++k) {
for (i = 0; i < source->dim_size[1]; ++i) {
for (j = 0; j < source->dim_size[0]; ++j) {
printf("%ld",*data);
printf("%ld, ",*data);
++data;
if ((j + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%ld",*data);
}
printf("\n");
}
Expand Down Expand Up @@ -1385,8 +1385,7 @@ void fill_alloc_integer_array(integer_array_t* dest, modelica_integer value, int
va_end(ap);
dest->data = integer_alloc(0,elements);

for(i = 0; i < elements; ++i)
{
for(i = 0; i < elements; ++i) {
integer_set(dest, i, value);
}
}
Expand Down
18 changes: 9 additions & 9 deletions SimulationRuntime/c/util/real_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -243,24 +243,24 @@ void print_real_array(const real_array_t *source)

data = (modelica_real *) source->data;
if (source->ndims == 1) {
for (i = 0; i < source->dim_size[0]; ++i) {
printf("%e",*data);
for (i = 1; i < source->dim_size[0]; ++i) {
printf("%e, ",*data);
++data;
if ((i + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%e",*data);
}
} else if (source->ndims > 1) {
n = base_array_nr_of_elements(source) /
(source->dim_size[0] * source->dim_size[1]);
for (k = 0; k < n; ++k) {
for (i = 0; i < source->dim_size[1]; ++i) {
for (j = 0; j < source->dim_size[0]; ++j) {
printf("%e",*data);
printf("%e, ",*data);
++data;
if ((j + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%e",*data);
}
printf("\n");
}
Expand Down
18 changes: 9 additions & 9 deletions SimulationRuntime/c/util/string_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,24 +181,24 @@ void print_string_array(const string_array_t *source)

data = (modelica_string_t *) source->data;
if (source->ndims == 1) {
for (i = 0; i < source->dim_size[0]; ++i) {
printf("%s", (*data));
for (i = 1; i < source->dim_size[0]; ++i) {
printf("%s, ", (*data));
++data;
if ((i + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%s", (*data));
}
} else if (source->ndims > 1) {
n = base_array_nr_of_elements(source) /
(source->dim_size[0] * source->dim_size[1]);
for (k = 0; k < n; ++k) {
for (i = 0; i < source->dim_size[1]; ++i) {
for (j = 0; j < source->dim_size[0]; ++j) {
printf("%s", (*data));
printf("%s, ", (*data));
++data;
if ((j + 1) < source->dim_size[0]) {
printf(", ");
}
}
if (0 < source->dim_size[0]) {
printf("%s", (*data));
}
printf("\n");
}
Expand Down

0 comments on commit e9ed93d

Please sign in to comment.