⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optim_private_diagnose.c

📁 ASUFIT-Matlab-全局拟合程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*
 * MATLAB Compiler: 2.0.1
 * Date: Tue May 08 21:28:22 2001
 * Arguments: "-B" "sgl" "-m" "-W" "mainhg" "-L" "C" "asufit.m" "absfun.m"
 * "absfunfree.m" "absfunshift.m" "absfunwidth.m" "dispfit.m" "dispfitdisp.m"
 * "dispfitfree.m" "dispfitwidth.m" "seqmodfree.m" "spcfun.m" "spcfun1.m"
 * "atamult.m" "aprecon.m" 
 */
#include "optim_private_diagnose.h"

/*
 * The function "Moptim_private_diagnose" is the implementation version of the
 * "optim/private/diagnose" M-function from file
 * "C:\MATLABR11\toolbox\optim\private\diagnose.m" (lines 1-182). It contains
 * the actual compiled code for that M-function. It is a static function and
 * must only be called from one of the interface functions, appearing below.
 */
/*
 * function msg = diagnose(caller,OUTPUT,gradflag,hessflag,constflag,gradconstflag,line_search,OPTIONS,XOUT,non_eq,...
 */
static mxArray * Moptim_private_diagnose(int nargout_,
                                         mxArray * caller,
                                         mxArray * OUTPUT,
                                         mxArray * gradflag,
                                         mxArray * hessflag,
                                         mxArray * constflag,
                                         mxArray * gradconstflag,
                                         mxArray * line_search,
                                         mxArray * OPTIONS,
                                         mxArray * XOUT,
                                         mxArray * non_eq,
                                         mxArray * non_ineq,
                                         mxArray * lin_eq,
                                         mxArray * lin_ineq,
                                         mxArray * LB,
                                         mxArray * UB,
                                         mxArray * funfcn,
                                         mxArray * confcn,
                                         mxArray * f,
                                         mxArray * GRAD,
                                         mxArray * HESS,
                                         mxArray * c,
                                         mxArray * ceq,
                                         mxArray * cGRAD,
                                         mxArray * ceqGRAD) {
    mxArray * msg = mclGetUninitializedArray();
    mxArray * conformula = mclGetUninitializedArray();
    mxArray * funformula = mclGetUninitializedArray();
    mxArray * gradcformula = mclGetUninitializedArray();
    mxArray * gradformula = mclGetUninitializedArray();
    mxArray * hessformula = mclGetUninitializedArray();
    mxArray * pstr = mclGetUninitializedArray();
    mxArray * temp = mclGetUninitializedArray();
    mclValidateInputs(
      "optim/private/diagnose",
      24,
      &caller,
      &OUTPUT,
      &gradflag,
      &hessflag,
      &constflag,
      &gradconstflag,
      &line_search,
      &OPTIONS,
      &XOUT,
      &non_eq,
      &non_ineq,
      &lin_eq,
      &lin_ineq,
      &LB,
      &UB,
      &funfcn,
      &confcn,
      &f,
      &GRAD,
      &HESS,
      &c,
      &ceq,
      &cGRAD,
      &ceqGRAD);
    /*
     * non_ineq,lin_eq,lin_ineq,LB,UB,funfcn,confcn,f,GRAD,HESS,c,ceq,cGRAD,ceqGRAD);
     * % DIAGNOSE prints diagnostic information about the function to be minimized
     * %    or solved.
     * 
     * %   Copyright (c) 1990-98 by The MathWorks, Inc.
     * %   $Revision: 1.8 $ $Date: 1998/09/30 18:17:18 $
     * 
     * msg = [];
     */
    mlfAssign(&msg, mclCreateEmptyArray());
    /*
     * 
     * pstr = sprintf('\n%s\n%s\n',...
     */
    mlfAssign(
      &pstr,
      mlfSprintf(
        NULL,
        mxCreateString("\\n%s\\n%s\\n"),
        mxCreateString(
          "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"),
        mxCreateString("   Diagnostic Information "),
        NULL));
    /*
     * '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%',...
     * '   Diagnostic Information ');
     * disp(pstr)
     */
    mlfDisp(pstr);
    /*
     * 
     * if ~isempty(funfcn{1})
     */
    if (mlfTobool(
          mlfNot(
            mlfFeval(
              mclValueVarargout(),
              mlxIsempty,
              mlfIndexRef(funfcn, "{?}", mlfScalar(1.0)),
              NULL)))) {
        /*
         * %if isa(funfcn{3},'inline')
         * %funformula = formula(funfcn{3});
         * %else 
         * funformula = funfcn{3};
         */
        mlfAssign(&funformula, mlfIndexRef(funfcn, "{?}", mlfScalar(3.0)));
        /*
         * %end
         * %if isa(funfcn{4},'inline')
         * %   gradformula = formula(funfcn{4});
         * %else 
         * gradformula = funfcn{4};
         */
        mlfAssign(&gradformula, mlfIndexRef(funfcn, "{?}", mlfScalar(4.0)));
        /*
         * %end
         * 
         * %if isa(funfcn{5},'inline')
         * %   hessformula = formula(funfcn{5});
         * %else 
         * hessformula = funfcn{5};
         */
        mlfAssign(&hessformula, mlfIndexRef(funfcn, "{?}", mlfScalar(5.0)));
    /*
     * %end
     * end
     */
    }
    /*
     * 
     * if ~isempty(confcn{1})
     */
    if (mlfTobool(
          mlfNot(
            mlfFeval(
              mclValueVarargout(),
              mlxIsempty,
              mlfIndexRef(confcn, "{?}", mlfScalar(1.0)),
              NULL)))) {
        /*
         * %if isa(confcn{3},'inline')
         * %   conformula = formula(confcn{3});
         * %else 
         * conformula = confcn{3};
         */
        mlfAssign(&conformula, mlfIndexRef(confcn, "{?}", mlfScalar(3.0)));
        /*
         * %end
         * %if isa(confcn{4},'inline')
         * %   gradcformula = formula(confcn{4});
         * %else 
         * gradcformula = confcn{4};
         */
        mlfAssign(&gradcformula, mlfIndexRef(confcn, "{?}", mlfScalar(4.0)));
    /*
     * %end
     * else
     */
    } else {
        /*
         * conformula = '';
         */
        mlfAssign(&conformula, mxCreateString(""));
        /*
         * gradcformula = '';
         */
        mlfAssign(&gradcformula, mxCreateString(""));
    /*
     * end
     */
    }
    /*
     * 
     * disp(['Number of variables: ', int2str(length(XOUT)),sprintf('\n')])
     */
    mlfDisp(
      mlfHorzcat(
        mxCreateString("Number of variables: "),
        mlfInt2str(mlfLength(XOUT)),
        mlfSprintf(NULL, mxCreateString("\\n"), NULL),
        NULL));
    /*
     * if ~isempty(funfcn{1})
     */
    if (mlfTobool(
          mlfNot(
            mlfFeval(
              mclValueVarargout(),
              mlxIsempty,
              mlfIndexRef(funfcn, "{?}", mlfScalar(1.0)),
              NULL)))) {
        /*
         * disp('Functions ')
         */
        mlfDisp(mxCreateString("Functions "));
        /*
         * switch funfcn{1}
         */
        {
            mxArray * t_ = mclUnassigned();
            mlfAssign(&t_, mlfIndexRef(funfcn, "{?}", mlfScalar(1.0)));
            /*
             * case 'fun'
             */
            if (mclSwitchCompare(t_, mxCreateString("fun"))) {
                /*
                 * % display 
                 * disp([' Objective:                            ',funformula]);
                 */
                mlfDisp(
                  mlfHorzcat(
                    mxCreateString(" Objective:                            "),
                    funformula,
                    NULL));
            /*
             * 
             * case 'fungrad'
             */
            } else if (mclSwitchCompare(t_, mxCreateString("fungrad"))) {
                /*
                 * if gradflag
                 */
                if (mlfTobool(gradflag)) {
                    /*
                     * disp([' Objective and gradient:               ',funformula]);
                     */
                    mlfDisp(
                      mlfHorzcat(
                        mxCreateString(
                          " Objective and gradient:               "),
                        funformula,
                        NULL));
                /*
                 * else
                 */
                } else {
                    /*
                     * disp([' Objective:                            ',funformula]);
                     */
                    mlfDisp(
                      mlfHorzcat(
                        mxCreateString(
                          " Objective:                            "),
                        funformula,
                        NULL));
                    /*
                     * disp( '   (set OPTIONS.GradObj=''on'' to use user provided gradient function)') 
                     */
                    mlfDisp(
                      mxCreateString(
                        "   (set OPTIONS.GradObj='on' to use "
                        "user provided gradient function)"));
                /*
                 * end
                 */
                }
            /*
             * 
             * case 'fungradhess'
             */
            } else if (mclSwitchCompare(t_, mxCreateString("fungradhess"))) {
                /*
                 * if gradflag & hessflag
                 */
                if (mlfTobool(gradflag)
                    && mlfTobool(mlfAnd(gradflag, hessflag))) {
                    /*
                     * disp([' Objective, gradient and Hessian:      ',funformula]);
                     */
                    mlfDisp(
                      mlfHorzcat(
                        mxCreateString(
                          " Objective, gradient and Hessian:      "),
                        funformula,
                        NULL));
                /*
                 * elseif gradflag
                 */
                } else if (mlfTobool(gradflag)) {
                    /*
                     * disp([' Objective and gradient:               ',funformula]);
                     */
                    mlfDisp(
                      mlfHorzcat(
                        mxCreateString(
                          " Objective and gradient:               "),
                        funformula,
                        NULL));
                    /*
                     * disp( '   (set OPTIONS.Hessian to ''on'' to use user provided Hessian function)') 
                     */
                    mlfDisp(
                      mxCreateString(
                        "   (set OPTIONS.Hessian to 'on' to us"
                        "e user provided Hessian function)"));
                /*
                 * else
                 */
                } else {
                    /*
                     * disp([' Objective:                            ',funformula]);
                     */
                    mlfDisp(
                      mlfHorzcat(
                        mxCreateString(
                          " Objective:                            "),
                        funformula,
                        NULL));
                    /*
                     * disp( '   (set OPTIONS.GradObj=''on'' to use user provided gradient function)')
                     */
                    mlfDisp(
                      mxCreateString(
                        "   (set OPTIONS.GradObj='on' to use "
                        "user provided gradient function)"));
                    /*
                     * disp( '   (set OPTIONS.Hessian to ''on'' to use user provided Hessian function)') 
                     */
                    mlfDisp(
                      mxCreateString(
                        "   (set OPTIONS.Hessian to 'on' to us"
                        "e user provided Hessian function)"));
                /*
                 * end
                 */
                }
            /*
             * 
             * 
             * case 'fun_then_grad'
             */
            } else if (mclSwitchCompare(t_, mxCreateString("fun_then_grad"))) {
                /*
                 * disp([' Objective:                            ',funformula]);
                 */
                mlfDisp(
                  mlfHorzcat(
                    mxCreateString(" Objective:                            "),
                    funformula,
                    NULL));
                /*
                 * if gradflag
                 */
                if (mlfTobool(gradflag)) {
                    /*
                     * disp([' Gradient:                             ',gradformula]);
                     */
                    mlfDisp(
                      mlfHorzcat(
                        mxCreateString(
                          " Gradient:                             "),
                        gradformula,
                        NULL));
                /*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -