Exemplo n.º 1
0
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////        Helper functions for solver
////////////
inline void baseODE45::solve_one_step(    std::vector<double> &X
                                    , std::vector<double> &C
                                    , std::vector<double> &K1
                                    , std::vector<double> &K2
                                    , std::vector<double> &K3
                                    , std::vector<double> &K4   )
{
    K1 = calcFunc(X);
    K2 = calcFunc(calc_K_by_h_div_2(X,K1,step_length));
    K3 = calcFunc(calc_K_by_h_div_2(X,K2,step_length));
    K4 = calcFunc(calc_K_by_h(X,K1,step_length));

    X = calc_new_X(X, K1, K2, K3, K4, step_length);
    res.push_back(X);
}
Exemplo n.º 2
0
static void prim()
{
	switch (currTok)
	{
		case tEnd:
			break;
		case tFunc:
			calcFunc();
			getToken();
			break;
		case tVar:
			put(MCODE_OP_PUSHVAR);
			putstr(nameString);
			getToken();
			break;
		case tConst:
			put(MCODE_OP_PUSHCONST);
			putstr(nameString);
			getToken();
			break;
		case tInt:
			put(MCODE_OP_PUSHINT);
			put64(currVar.i());
			getToken();
			break;
		case tFloat:
			put(MCODE_OP_PUSHFLOAT);
			putDouble(currVar.d());
			getToken();
			break;
		case tFARVar:
			put(FARVar); // nFARVar получаем в getToken()
			getToken();
			break;
		case tStr:
			put(MCODE_OP_PUSHSTR);
			putstr(currVar.s());
			getToken();
			break;
		case tMinus:
			getToken();
			prim();
			put(MCODE_OP_NEGATE);
			break;
		case tBitNot:
			getToken();
			prim();
			put(MCODE_OP_BITNOT);
			break;
		case tNot:
			getToken();
			prim();
			put(MCODE_OP_NOT);
			break;
		case tLp:
			getToken();
			expr();

			if (currTok != tRp)
				keyMacroParseError(err_Expected_Token, L")");

			getToken();
			break;
		case tRp: //???
			break;
		default:
			keyMacroParseError(err_Expr_Expected);
			break;
	}
}
Exemplo n.º 3
0
int calclulate(int a, int b, int (*calcFunc)(int, int)) {
  int result = calcFunc(a,b);
  return result;
}