/* * example1_static.c : Computes static model for Dynare * * Warning : this file is generated automatically by Dynare * from model file (.mod) */ #include #include #define max(a, b) (((a) > (b)) ? (a) : (b)) #define min(a, b) (((a) > (b)) ? (b) : (a)) double getPowerDeriv(double, double, int); void Static(double *y, double *x, int nb_row_x, double *params, double *residual, double *g1, double *v2) { double lhs, rhs; /* Residual equations */ double T39 = exp(y[3])*pow(y[2],params[2])*pow(y[4],1-params[2]); lhs =y[1]*params[4]*pow(y[4],1+params[5]); rhs =(1-params[2])*y[0]; residual[0]= lhs-rhs; lhs =y[2]; rhs =params[0]*(y[0]*params[2]*exp(y[5])+y[2]*(1-params[3])); residual[1]= lhs-rhs; lhs =y[0]; rhs =T39; residual[2]= lhs-rhs; lhs =y[2]; rhs =y[2]*(1-params[3])+exp(y[5])*(y[0]-y[1]); residual[3]= lhs-rhs; lhs =y[3]; rhs =y[3]*params[1]+y[5]*params[6]+x[0]; residual[4]= lhs-rhs; lhs =y[5]; rhs =y[3]*params[6]+y[5]*params[1]+x[1]; residual[5]= lhs-rhs; /* Jacobian */ if (g1 == NULL) return; else { g1[0]=(-(1-params[2])); g1[6]=params[4]*pow(y[4],1+params[5]); g1[24]=y[1]*params[4]*getPowerDeriv(y[4],1+params[5],1); g1[1]=(-(params[0]*params[2]*exp(y[5]))); g1[13]=1-params[0]*(1-params[3]); g1[31]=(-(params[0]*y[0]*params[2]*exp(y[5]))); g1[2]=1; g1[14]=(-(pow(y[4],1-params[2])*exp(y[3])*getPowerDeriv(y[2],params[2],1))); g1[20]=(-T39); g1[26]=(-(exp(y[3])*pow(y[2],params[2])*getPowerDeriv(y[4],1-params[2],1))); g1[3]=(-exp(y[5])); g1[9]=exp(y[5]); g1[15]=1-(1-params[3]); g1[33]=(-(exp(y[5])*(y[0]-y[1]))); g1[22]=1-params[1]; g1[34]=(-params[6]); g1[23]=(-params[6]); g1[35]=1-params[1]; } } /* * The k-th derivative of x^p */ double getPowerDeriv(double x, double p, int k) { #ifdef _MSC_VER # define nearbyint(x) (fabs((x)-floor(x)) < fabs((x)-ceil(x)) ? floor(x) : ceil(x)) #endif if ( fabs(x) < 1e-012 && p > 0 && k > p && fabs(p-nearbyint(p)) < 1e-012 ) return 0.0; else { int i = 0; double dxp = pow(x, p-k); for (; i