static double xsav,ysav; static double (*nrfunc)(double,double,double); double quad3d(double (*func)(double, double, double), double x1, double x2) // ”íÏ•ªŠÖ”func { double qgaus(double (*func)(double), double a, double b); double f1(double x); nrfunc=func; return qgaus(f1,x1,x2); } double f1(double x)// ÅŠO‚ÌÏ•ªŽÀs { double qgaus(double (*func)(double), double a, double b); double f2(double y); double yy1(double x),yy2(double x); xsav=x; return qgaus(f2,yy1(x),yy2(x)); } double f2(double y)// ’†ŠÔ‚ÌÏ•ªŽÀs { double qgaus(double (*func)(double), double a, double b); double f3(double z); double z1(double x,double y),z2(double x,double y); ysav=y; return qgaus(f3,z1(xsav,y),z2(xsav,y)); } double f3(double z)// Å“à‚ÌÏ•ªŽÀs { return (*nrfunc)(xsav,ysav,z); // Å“à‚Ì”íÏ•ªŠÖ” } /////////////////////////// // User Definition // /////////////////////////// double yy1(double x) { return -x; // ’†ŠÔ‚ÌÏ•ª”͈͉ºŒÀ } double yy2(double x) { return x; // ’†ŠÔ‚ÌÏ•ª”͈ÍãŒÀ } double z1(double x,double y) { return -(x+y); // Å“à‚ÌÏ•ª”͈͉ºŒÀ } double z2(double x,double y) { return x+y; // Å“à‚ÌÏ•ª”͈ÍãŒÀ } double func(double x,double y,double z) { return x; // ”íÏ•ªŠÖ” }