📄 optim_private_diagnose.c
字号:
/*
* 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 + -