47#if defined(RAD_DEBUG_BLOCKKEEP) && !defined(HAVE_SACADO_UNINIT)
48#undef RAD_DEBUG_BLOCKKEEP
51#ifndef SACADO_NO_NAMESPACE
57#ifndef RAD_NO_USING_STDCC
118 static void Hvprod(
int,
ADvar**,
double*,
double*);
119 static void Weighted_Gradcomp(
int,
ADvar**,
double*);
152 void *
operator new(size_t);
153 void operator delete(
void*) {}
192 extern ADvari&
ADf1(
double f,
double g,
double h,
const ADvari &x);
193 extern ADvari&
ADf2(
double f,
double gx,
double gy,
double hxx,
194 double hxy,
double hyy,
const ADvari &x,
const ADvari &y);
195 extern ADvari&
ADfn(
double f,
int n,
const ADvar *x,
const double *g,
const double *h);
207 void *
operator new(
size_t len) {
return ADvari::adc.Memalloc(len); }
208 void operator delete(
void*) {}
219#ifdef RAD_AUTO_AD_Const
227 static ADvari *First_ADvari, **Last_ADvari;
235#define Ai const ADvari&
236#define T1(r,f) F r f(Ai);
282 friend ADvari&
ADf1(
double f,
double g,
double h,
const ADvari &x);
283 friend ADvari&
ADf2(
double f,
double gx,
double gy,
double hxx,
284 double hxy,
double hyy,
const ADvari &x,
const ADvari &y);
285 friend ADvari&
ADfn(
double f,
int n,
const ADvar *x,
const double *g,
const double *h);
288 inline void* Derp::operator
new(
size_t len) {
return ADvari::adc.Memalloc(len); }
296 ADvari(oc,val1),
d(a1,this,c1) {}
297#ifdef RAD_AUTO_AD_Const
313 static void aval_reset(
void);
322#ifdef RAD_AUTO_AD_Const
349#ifdef RAD_AUTO_AD_Const
352 inline ~IndepADvar() {
371 inline double val()
const {
return cv->Val; }
372 inline double adj()
const {
return cv->aval; }
377 static inline void Hvprod(
int n,
ADvar **vp,
double *v,
double *hv)
384#define Ai const ADvari&
385#define AI const IndepADvar&
392#define T1(f) friend ADvari& f(AI);
394#define F friend ADvari&
451#ifdef RAD_AUTO_AD_Const
454 inline ADvar(ADvari &x) { cv = &x; x.padv =
this; }
455 inline ADvar& operator=(
const IndepADvar &x) {
458 cv =
new ADvar1(
this,x);
483 ADvar& operator=(
double);
485 ADvar& operator+=(
double);
487 ADvar& operator-=(
double);
489 ADvar& operator*=(
double);
491 ADvar& operator/=(
double);
505 static inline void Hvprod(
int n,
ADvar **vp,
double *v,
double *hv)
531#ifdef RAD_AUTO_AD_Const
535#ifdef RAD_NO_CONST_UPDATE
584 ADvar2q(
double val1,
double Lp,
double Rp,
double LR,
double R2,
596 ADvar2g(
double val1,
double Lp,
double Rp,
double L2,
double LR,
double R2,
606 ADvarn(
double val1,
int n1,
const ADvar *x,
const double *g,
const double *h);
648#define Ai const ADvari&
649#define AI const IndepADvar&
652 T r f(Ai L, AI R) { return f(L, *A R.cv); }\
653 T r f(AI L, Ai R) { return f(*A L.cv, R); }\
654 T r f(AI L, AI R) { return f(*A L.cv, *A R.cv); }\
655 T r f(AI L, D R) { return f(*A L.cv, R); }\
656 T r f(D L, AI R) { return f(L, *A R.cv); }
677 T F f(AI x) { return f(*A x.cv); }
707#ifndef SACADO_NO_NAMESPACE
atan2(expr1.val(), expr2.val())
adouble max(const adouble &a, const adouble &b)
adouble min(const adouble &a, const adouble &b)
void ADvari_record(ADvari *x)
static void Weighted_Gradcomp(int, ADvar **, double *)
void * new_ADmemblock(size_t)
static void Hvprod(int, ADvar **, double *, double *)
static void Gradcomp(int)
void * Memalloc(size_t len)
ADvar1(Advari_Opclass oc, double val1, const double *a1, const ADvari *c1)
ADvar1g(double val1, double d1, double d2, const ADvari *c1)
ADvar1s(double val1, double d1, const ADvari *c1)
ADvar2(Advari_Opclass oc, double val1, const ADvari *Lcv, const double *Lc, const ADvari *Rcv, const double *Rc)
ADvar2g(double val1, double Lp, double Rp, double L2, double LR, double R2, const ADvari *Lcv, const ADvari *Rcv)
ADvar2q(double val1, double Lp, double Rp, double LR, double R2, const ADvari *Lcv, const ADvari *Rcv)
static void Hvprod(int n, ADvar **vp, double *v, double *hv)
ADvar & operator=(const ADvari &x)
static bool get_fpval_implies_const(void)
static void set_fpval_implies_const(bool newval)
ADvar(const IndepADvar &x)
ADvar & operator=(const IndepADvar &x)
static void Gradcomp(int wantgrad)
static bool setget_fpval_implies_const(bool newval)
static void Weighted_Gradcomp(int n, ADvar **v, double *w)
ADvari(Advari_Opclass oc, double t, double ta)
ADvari(Advari_Opclass oc, double t)
ADvarn(double val1, int n1, const ADvar *x, const double *g, const double *h)
static const double negOne
ConstADvar & operator-=(const ADvari &)
ConstADvar & operator=(const IndepADvar &d)
ConstADvar & operator=(double d)
ConstADvar & operator+=(double)
ConstADvar & operator*=(double)
void ConstADvar_ctr(double)
ConstADvar & operator-=(double)
ConstADvar & operator/=(const ADvari &)
ConstADvar & operator/=(double)
ConstADvar & operator*=(const ADvari &)
ConstADvar & operator+=(const ADvari &)
static ConstADvari * lastcad
static void aval_reset(void)
IndepADvar & operator=(const IndepADvar &x)
static void Weighted_Gradcomp(int n, ADvar **v, double *w)
static void Hvprod(int n, ADvar **vp, double *v, double *hv)
static void Gradcomp(int wantgrad)
static void AD_Const(const IndepADvar &)
ADvari & ADf2(double f, double gx, double gy, double hxx, double hxy, double hyy, const ADvari &x, const ADvari &y)
ADvari & operator+(ADvari &T)
ADvari & fabs(const ADvari &v)
ADvari & copy(const IndepADvar &x)
int operator<(const ADvari &L, const ADvari &R)
int operator<=(const ADvari &L, const ADvari &R)
ADvar & ADvar_operatoreq(ADvar *This, const ADvari &x)
ADvari & pow(const ADvari &L, const ADvari &R)
int operator==(const ADvari &L, const ADvari &R)
ADvari & ADf1(double f, double g, double h, const ADvari &x)
int operator!=(const ADvari &L, const ADvari &R)
ADvari & abs(const ADvari &x)
ADvari & ADfn(double f, int n, const ADvar *x, const double *g, const double *h)
void AD_Const(const IndepADvar &v)
int operator>(const ADvari &L, const ADvari &R)
int operator>=(const ADvari &L, const ADvari &R)
ACosExprType< T >::expr_type acos(const Expr< T > &expr)
PowExprType< Expr< T1 >, Expr< T2 > >::expr_type pow(const Expr< T1 > &expr1, const Expr< T2 > &expr2)
Log10ExprType< T >::expr_type log10(const Expr< T > &expr)
ATanExprType< T >::expr_type atan(const Expr< T > &expr)
TanhExprType< T >::expr_type tanh(const Expr< T > &expr)
TanExprType< T >::expr_type tan(const Expr< T > &expr)
ASinExprType< T >::expr_type asin(const Expr< T > &expr)