void ModifiedPatankarRK(int dim_matrix, double oldvalue[], double dt, double newvalue[], recomb_t *thisRecombRates, cell_t *thisCell){ double intervalue[dim_matrix]; double oldvalue_local[dim_matrix]; double newvalue_local[dim_matrix]; double destr_rate[dim_matrix][dim_matrix]; double inter_destr_rate[dim_matrix][dim_matrix]; double matrix[dim_matrix][dim_matrix]; initializeVector(dim_matrix, oldvalue_local, oldvalue); initializeVector(dim_matrix, newvalue_local, oldvalue); // printf("oldvalue_local[0] = %e\toldvalue_local[1] = %e\n", oldvalue_local[0], oldvalue_local[1]); // First Runge Kutta step initializeVector(dim_matrix, oldvalue_local, newvalue_local); //oldvalue = x create_rate_functions(dim_matrix, destr_rate, oldvalue_local, thisRecombRates, thisCell); //calculate destruction rates calculateMatrix(dim_matrix, dt, matrix, destr_rate, oldvalue_local); //calculate matrix for destr_rate and oldvalue solveSetOfEquations(dim_matrix, matrix, oldvalue_local, intervalue); //Solve set of equations for intervalue checkVector(dim_matrix,intervalue); // Second Runge Kutta step initializeVector(dim_matrix, oldvalue_local, oldvalue); //oldvalue = newvalue create_rate_functions(dim_matrix, inter_destr_rate, intervalue, thisRecombRates, thisCell); //calculate new destruction rates from intervalue add_rate_functions(dim_matrix, inter_destr_rate, destr_rate); //add rate functions destr_rate and interdestr_rate, output on interdestr_rate calculateMatrix(dim_matrix, dt*0.5, matrix, inter_destr_rate, intervalue); //calculate matrix for interdestr_rate and intervalue solveSetOfEquations(dim_matrix, matrix, oldvalue_local, newvalue_local); //solve set of equations for newvalue checkVector(dim_matrix, newvalue_local); initializeVector(dim_matrix, newvalue, newvalue_local); }
void CNN1DComponent::readSelf(string filename){ ifstream fin(filename); fin >> kernelSize; fin >> stride; fin >> featureMapNum; fin >> num; fin >> visualRow; fin >> visualColumn; initializeVector(); for (size_t i = 0; i < featureMapNum; i++) { for (size_t j = 0; j < num; j++) { for (size_t ii = 0; ii < kernelSize; ii++) { double val; fin >> val; convKernels[i][j]->setValue(ii, 1, val); } } } for (size_t i = 0; i < featureMapNum; i++) { double val; fin >> val; bias[i]->setValue(1, 1, val); } fin.close(); }
TAC_NODE* generateTacCode(ASTREE* syntaxtree) { int i; TAC_NODE* code[MAX_SONS]; for(i=0; i < MAX_SONS; i++) { code[i] = NULL; } if(syntaxtree == NULL) return NULL; for (i=0; i < MAX_SONS; i++) { code[i] = generateTacCode(syntaxtree->son[i]); } switch (syntaxtree->type) { case AST_PROGRAMA: return code[0]; case AST_DECLARACOES: return joinTacs(code[0], code[1]); case AST_VARIAVEL: if(code[2]!=NULL) { return createTacNode(TAC_DECLARACAO_VARIAVEL, code[0]->result, code[2]->result, NULL); } else { return createTacNode(TAC_SYMBOL, code[0]->result, NULL, NULL); } case AST_VETOR_VAZIO: return createTacNode(TAC_DECLARACAO_VETOR_VAZIO, code[0]->result, code[2]->result, NULL); case AST_VETOR: return joinTacs(createTacNode(TAC_DECLARACAO_VETOR, code[0]->result, code[2]->result, NULL), initializeVector(revertTac(code[3]),code[0]->result,0)); case AST_INI_VETOR: return joinTacs(code[0], code[1]); case AST_LISTA_LITERAIS: return joinTacs(code[0], code[1]); case AST_FUNCAO: return createFunctionDeclaration(code[0]->result, code[2], code[3]); case AST_PARAMETRO: return createTacNode(TAC_PARAMETRO, code[0]->result, code[1]->result, NULL); case AST_LISTA_PARAMETRO: return joinTacs(code[0], code[1]); case AST_COMANDOS: return joinTacs(code[0], code[1]); case AST_BLOCO: return code[0]; case AST_LISTA_PARAM_CHAMADA: return joinTacs(code[0], code[1]); case AST_ACESSO_VETOR: return createVectorRead(code[0]->result, code[1]); case AST_CHAMADA_FUNCAO: return createFunctionCall(code[0]->result, code[1]); case AST_EXPRESSAO_PARENTESES: return code[0]; case AST_OP_SOMA: return createTacOperation(TAC_OP_SOMA, code[0], code[1]); case AST_OP_SUB: return createTacOperation(TAC_OP_SUB, code[0], code[1]); case AST_OP_MUL: return createTacOperation(TAC_OP_MUL, code[0], code[1]); case AST_OP_DIV: return createTacOperation(TAC_OP_DIV, code[0], code[1]); case AST_OP_MENOR: return createTacOperation(TAC_OP_MENOR, code[0], code[1]); case AST_OP_MAIOR: return createTacOperation(TAC_OP_MAIOR, code[0], code[1]); case AST_OP_LE: return createTacOperation(TAC_OP_LE, code[0], code[1]); case AST_OP_GE: return createTacOperation(TAC_OP_GE, code[0], code[1]); case AST_OP_EQ: return createTacOperation(TAC_OP_EQ, code[0], code[1]); case AST_OP_NE: return createTacOperation(TAC_OP_NE, code[0], code[1]); case AST_OP_AND: return createTacOperation(TAC_OP_AND, code[0], code[1]); case AST_OP_OR: return createTacOperation(TAC_OP_OR, code[0], code[1]); case AST_ATRIBUICAO: return joinTacs(code[1], createTacNode(TAC_ATRIBUICAO, code[0]->result, resultAtribuicao(code[1])->result, NULL)); case AST_ATRIBUICAO_VETOR: return createAssignVector(code[0]->result, resultAtribuicao(code[1]), resultAtribuicao(code[2])); case AST_IF: return createIF(code[0],code[1]); case AST_IF_ELSE: return createIF_ELSE(code[0],code[1],code[2]); case AST_WHILE: return createWHILE(code[0], code[1]); case AST_INPUT: return createInput(revertTac(code[0])); case AST_LISTA_VARIAVEIS: return joinTacs(code[0], code[1]); case AST_OUTPUT: return createOutput(revertTac(code[0])); case AST_LISTA_ELEM_EXP: return joinTacs(code[0], code[1]); case AST_LISTA_ELEM_STRING: return joinTacs(createTacNode(TAC_STRING, syntaxtree->symbol, NULL, NULL), code[0]); case AST_RETURN: return joinTacs(code[0], createTacNode(TAC_RETURN, code[0]->result, NULL, NULL)); case AST_KW_INT: return createTacNode(TAC_KW_INT, syntaxtree->symbol, NULL, NULL); case AST_KW_BOOL: return createTacNode(TAC_KW_BOOL, syntaxtree->symbol, NULL, NULL); case AST_KW_REAL: return createTacNode(TAC_KW_REAL, syntaxtree->symbol, NULL, NULL); case AST_KW_CHAR: return createTacNode(TAC_KW_CHAR, syntaxtree->symbol, NULL, NULL); case AST_LIT_INT: return createTacNode(TAC_SYMBOL, syntaxtree->symbol, NULL, NULL); case AST_LIT_REAL: return createTacNode(TAC_SYMBOL, syntaxtree->symbol, NULL, NULL); case AST_LIT_TRUE: return createTacNode(TAC_SYMBOL, syntaxtree->symbol, NULL, NULL); case AST_LIT_FALSE: return createTacNode(TAC_SYMBOL, syntaxtree->symbol, NULL, NULL); case AST_LIT_CHAR: return createTacNode(TAC_SYMBOL, syntaxtree->symbol, NULL, NULL); case AST_LIT_STRING: return createTacNode(TAC_SYMBOL, syntaxtree->symbol, NULL, NULL); case AST_COMANDO_VAZIO: return NULL; case AST_SYMBOL_VAR: return createTacNode(TAC_SYMBOL_VAR, syntaxtree->symbol, NULL, NULL); case AST_SYMBOL_VET: return createTacNode(TAC_SYMBOL_VET, syntaxtree->symbol, NULL, NULL); case AST_SYMBOL_FUN: return createTacNode(TAC_SYMBOL_FUN, syntaxtree->symbol, NULL, NULL); default: break; } }
TAC_NODE* initializeVector(TAC_NODE* initializeList, HASH_NODE* vector, int i){ if(initializeList == NULL){ return initializeList; }else{ char str[25]; sprintf(str,"%d", i); HASH_NODE* index = hashInsert(str, SYMBOL_LIT_INT); return joinTacs(createTacNode(TAC_VECTOR_ASSIGN, vector, index, initializeList->result), initializeVector(initializeList->next, vector, ++i)); } }