summaryrefslogtreecommitdiff
path: root/build/Bonmin/include/coin/ThirdParty/nlp2.h
diff options
context:
space:
mode:
authorHarpreet2016-08-04 15:25:44 +0530
committerHarpreet2016-08-04 15:25:44 +0530
commit9fd2976931c088dc523974afb901e96bad20f73c (patch)
tree22502de6e6988d5cd595290d11266f8432ad825b /build/Bonmin/include/coin/ThirdParty/nlp2.h
downloadFOSSEE-Optim-toolbox-development-9fd2976931c088dc523974afb901e96bad20f73c.tar.gz
FOSSEE-Optim-toolbox-development-9fd2976931c088dc523974afb901e96bad20f73c.tar.bz2
FOSSEE-Optim-toolbox-development-9fd2976931c088dc523974afb901e96bad20f73c.zip
initial add
Diffstat (limited to 'build/Bonmin/include/coin/ThirdParty/nlp2.h')
-rw-r--r--build/Bonmin/include/coin/ThirdParty/nlp2.h342
1 files changed, 342 insertions, 0 deletions
diff --git a/build/Bonmin/include/coin/ThirdParty/nlp2.h b/build/Bonmin/include/coin/ThirdParty/nlp2.h
new file mode 100644
index 0000000..ceefe2b
--- /dev/null
+++ b/build/Bonmin/include/coin/ThirdParty/nlp2.h
@@ -0,0 +1,342 @@
+/****************************************************************
+Copyright (C) 1997-1998, 2000-2001 Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+****************************************************************/
+
+/* Variant of nlp.h for Hessian times vector computations. */
+
+#ifndef NLP_H2_included
+#define NLP_H2_included
+
+#ifndef ASL_included
+#include "asl.h"
+#endif
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+typedef struct argpair2 argpair2;
+typedef struct cde2 cde2;
+typedef struct cexp2 cexp2;
+typedef struct cexp21 cexp21;
+typedef struct de2 de2;
+typedef union ei2 ei2;
+typedef struct expr2 expr2;
+typedef struct expr2_f expr2_f;
+typedef struct expr2_h expr2_h;
+typedef struct expr2_if expr2_if;
+typedef struct expr2_v expr2_v;
+typedef struct expr2_va expr2_va;
+typedef struct funnel2 funnel2;
+typedef struct hes_fun hes_fun;
+typedef struct list2 list2;
+typedef union uir uir;
+
+typedef real efunc2 ANSI((expr2* A_ASL));
+typedef char *sfunc ANSI((expr2* A_ASL));
+
+ union
+uir {
+ int i;
+ real r;
+ };
+
+ union
+ei2 {
+ expr2 *e;
+ expr2 **ep;
+ expr2_if*eif;
+ expr_n *en;
+ expr2_v *ev;
+ int i;
+ plterm *p;
+ de2 *d;
+ real *rp;
+ derp *D;
+ cexp2 *ce;
+ };
+
+ struct
+expr2 {
+ efunc2 *op;
+ int a; /* adjoint index (for gradient computation) */
+ expr2 *fwd, *bak;
+ uir dO; /* deriv of op w.r.t. t in x + t*p */
+ real aO; /* adjoint (in Hv computation) of op */
+ real adO; /* adjoint (in Hv computation) of dO */
+ real dL; /* deriv of op w.r.t. left operand */
+ ei2 L, R; /* left and right operands */
+ real dR; /* deriv of op w.r.t. right operand */
+ real dL2; /* second partial w.r.t. L, L */
+ real dLR; /* second partial w.r.t. L, R */
+ real dR2; /* second partial w.r.t. R, R */
+ };
+
+ struct
+expr2_v {
+ efunc2 *op;
+ int a;
+ expr2 *fwd, *bak;
+ uir dO;
+ real aO, adO;
+ real v;
+ };
+
+ struct
+expr2_if {
+ efunc2 *op;
+ int a;
+ expr2 *fwd, *bak;
+ uir dO;
+ real aO, adO;
+ expr2 *val, *vale, *valf, *e, *T, *Te, *Tf, *F, *Fe, *Ff;
+ derp *D, *dT, *dF, *d0;
+ ei2 Tv, Fv;
+ expr2_if *next, *next2;
+ derp *dTlast;
+ };
+
+ struct
+expr2_va {
+ efunc2 *op;
+ int a;
+ expr2 *fwd, *bak;
+ uir dO;
+ real aO, adO;
+ expr2 *val, *vale, *valf;
+ ei2 L, R;
+ expr2_va *next, *next2;
+ derp *d0;
+ };
+
+ struct
+cde2 {
+ expr2 *e, *ee, *ef;
+ derp *d;
+ int zaplen;
+ int com11, n_com1;
+ };
+
+ struct
+de2 { /* for varargs */
+ expr2 *e, *ee, *ef;
+ derp *d;
+ ei2 dv;
+ derp *dlast; /* for sputhes setup */
+ };
+
+ struct
+list2 {
+ list2 *next;
+ ei2 item;
+ };
+
+ struct
+cexp21 {
+ expr2 *e, *ee, *ef;
+ linpart *L;
+ int nlin;
+ };
+
+ struct
+cexp2 {
+ expr2 *e, *ee, *ef;
+ linpart *L;
+ int nlin;
+ funnel2 *funneled;
+ list2 *cref;
+ ei2 z;
+ int zlen;
+ derp *d;
+ int *vref;
+ hes_fun *hfun;
+ };
+
+ struct
+funnel2 {
+ funnel2 *next;
+ cexp2 *ce;
+ cde2 fcde;
+ derp *fulld;
+ cplist *cl;
+ };
+
+ struct
+argpair2 {
+ expr2 *e;
+ union {
+ char **s;
+ real *v;
+ } u;
+ };
+
+ struct
+expr2_f {
+ efunc2 *op;
+ int a;
+ expr2 *fwd, *bak;
+ uir dO;
+ real aO, adO;
+ func_info *fi;
+ arglist *al;
+ argpair2 *ap, *ape, *sap, *sape;
+ argpair2 *da; /* differentiable args -- nonconstant */
+ argpair2 *dae;
+ real **fh; /* Hessian info */
+ expr2 *args[1];
+ };
+
+ struct
+expr2_h {
+ efunc2 *op;
+ int a;
+ char sym[1];
+ };
+
+ typedef struct
+Edag2info {
+ cde2 *con2_de_; /* constraint deriv. and expr. info */
+ cde2 *lcon2_de_; /* logical constraints */
+ cde2 *obj2_de_; /* objective deriv. and expr. info */
+ expr2_v *var2_e_; /* variable values (and related items) */
+
+ /* stuff for "defined" variables */
+ funnel2 *f2_b_;
+ funnel2 *f2_c_;
+ funnel2 *f2_o_;
+ expr2_v *var2_ex_,
+ *var2_ex1_;
+ cexp2 *cexps2_, *cexpsc_, *cexpso_, *cexpse_;
+ cexp21 *cexps21_;
+ hes_fun *hesthread;
+ char *c_class; /* class of each constraint: */
+ /* 0 = constant */
+ /* 1 = linear */
+ /* 2 = quadratic */
+ /* 3 = general nonlinear */
+ char *o_class; /* class of each objective */
+ char *v_class; /* class of each defined variable */
+ int c_class_max; /* max of c_class values */
+ int o_class_max; /* max of o_class values */
+ /* The above are only computed if requested */
+ /* by the ASL_find_c_class and */
+ /* ASL_find_o_class bits of the flags arg */
+ /* to pfgh_read() and pfg_read() */
+ int x0kind_init;
+ } Edag2info;
+
+ typedef struct
+ASL_fgh {
+ Edagpars p;
+ Edaginfo i;
+ Edag2info I;
+ } ASL_fgh;
+
+ extern efunc2 *r2_ops_ASL[];
+ extern void com21eval_ASL ANSI((ASL_fgh*, int, int));
+ extern void com2eval_ASL ANSI((ASL_fgh*, int, int));
+ extern void fun2set_ASL ANSI((ASL_fgh*, funnel2 *));
+#ifdef __cplusplus
+ }
+#endif
+
+#ifndef SKIP_NL2_DEFINES
+extern efunc2 f2_OPVARVAL_ASL;
+
+#define cexpsc asl->I.cexpsc_
+#define cexpse asl->I.cexpse_
+#define cexpso asl->I.cexpso_
+#define cexps1 asl->I.cexps21_
+#define cexps asl->I.cexps2_
+#define con_de asl->I.con2_de_
+#define f_b asl->I.f2_b_
+#define f_c asl->I.f2_c_
+#define f_o asl->I.f2_o_
+#define lcon_de asl->I.lcon2_de_
+#define obj_de asl->I.obj2_de_
+#define var_e asl->I.var2_e_
+#define var_ex1 asl->I.var2_ex1_
+#define var_ex asl->I.var2_ex_
+
+#define argpair argpair2
+#define cde cde2
+#define cexp cexp2
+#define cexp1 cexp21
+#define de de2
+#define ei ei2
+#define expr expr2
+#define expr_f expr2_f
+#define expr_h expr2_h
+#define expr_if expr2_if
+#define expr_v expr2_v
+#define expr_va expr2_va
+#define funnel funnel2
+#define list list2
+
+#define com1eval com21eval_ASL
+#define comeval com2eval_ASL
+#define funnelset fun2set_ASL
+#undef r_ops
+#define r_ops r2_ops_ASL
+
+#ifndef PSHVREAD
+#define f_OPIFSYM f2_IFSYM_ASL
+#define f_OPPLTERM f2_PLTERM_ASL
+#define f_OPFUNCALL f2_FUNCALL_ASL
+#define f_OP1POW f2_1POW_ASL
+#define f_OP2POW f2_2POW_ASL
+#define f_OPCPOW f2_CPOW_ASL
+#define f_OPPLUS f2_PLUS_ASL
+#define f_OPSUMLIST f2_SUMLIST_ASL
+#define f_OPHOL f2_HOL_ASL
+#define f_OPPOW f2_POW_ASL
+#define f_OPVARVAL f2_VARVAL_ASL
+#endif
+
+/* operation classes (for H*v computation) */
+
+#define Hv_binaryR 0
+#define Hv_binaryLR 1
+#define Hv_unary 2
+#define Hv_vararg 3
+#define Hv_if 4
+#define Hv_plterm 5
+#define Hv_sumlist 6
+#define Hv_func 7
+#define Hv_negate 8
+#define Hv_plusR 9
+#define Hv_plusL 10
+#define Hv_plusLR 11
+#define Hv_minusR 12
+#define Hv_minusLR 13
+#define Hv_timesR 14
+#define Hv_timesL 15
+#define Hv_timesLR 16
+
+/* treat if as vararg, minusL as plusL, binaryL as unary */
+
+#endif /* SKIP_NL2_DEFINES */
+
+#undef f_OPNUM
+#define f_OPNUM (efunc2*)f_OPNUM_ASL
+#endif /* NLP_H2_included */