42#if defined(RAD_DEBUG_BLOCKKEEP) && !defined(HAVE_SACADO_UNINIT)
43#undef RAD_DEBUG_BLOCKKEEP
50#ifndef RAD_NO_USING_STDCC
103 static void Weighted_Gradcomp(
int,
ADvar**,
double*);
131 void *
operator new(size_t);
132 void operator delete(
void*) {}
160 void *
operator new(
size_t len) {
return ADvari::adc.Memalloc(len); }
161 void operator delete(
void*) {}
166#ifdef RAD_AUTO_AD_Const
174 static ADvari *First_ADvari, **Last_ADvari;
182#define Ai const ADvari&
183#define T1(r,f) F r f(Ai);
229 friend ADvari&
ADf1(
double f,
double g,
const ADvari &x);
230 friend ADvari&
ADf2(
double f,
double gx,
double gy,
const ADvari &x,
const ADvari &y);
231 friend ADvari&
ADfn(
double f,
int n,
const ADvar *x,
const double *g);
234 inline void* Derp::operator
new(
size_t len) {
return ADvari::adc.Memalloc(len); }
244#ifdef RAD_AUTO_AD_Const
260 static void aval_reset(
void);
269#ifdef RAD_AUTO_AD_Const
296#ifdef RAD_AUTO_AD_Const
299 inline ~IndepADvar() {
318 inline double val()
const {
return cv->Val; }
319 inline double adj()
const {
return cv->aval; }
329#define Ai const ADvari&
330#define AI const IndepADvar&
337#define T1(f) friend ADvari& f(AI);
339#define F friend ADvari&
396#ifdef RAD_AUTO_AD_Const
399 inline ADvar(ADvari &x) { cv = &x; x.padv =
this; }
400 inline ADvar& operator=(
const IndepADvar &x) {
403 cv =
new ADvar1(
this,x);
427 ADvar& operator=(
double);
429 ADvar& operator+=(
double);
431 ADvar& operator-=(
double);
433 ADvar& operator*=(
double);
435 ADvar& operator/=(
double);
473#ifdef RAD_AUTO_AD_Const
477#ifdef RAD_NO_CONST_UPDATE
498 const double *Rc):
ADvari(val1) {
533 ADvarn(
double val1,
int n1,
const ADvar *x,
const double *g);
575#define Ai const ADvari&
576#define AI const IndepADvar&
579 T r f(Ai L, AI R) { return f(L, *A R.cv); }\
580 T r f(AI L, Ai R) { return f(*A L.cv, R); }\
581 T r f(AI L, AI R) { return f(*A L.cv, *A R.cv); }\
582 T r f(AI L, D R) { return f(*A L.cv, R); }\
583 T r f(D L, AI R) { return f(L, *A R.cv); }
604 T F f(AI x) { return f(*A x.cv); }
atan2(expr1.val(), expr2.val())
adouble max(const adouble &a, const adouble &b)
adouble min(const adouble &a, const adouble &b)
void * Memalloc(size_t len)
static void Gradcomp(int)
void * new_ADmemblock(size_t)
static void Weighted_Gradcomp(int, ADvar **, double *)
ADvar1(double val1, const double *a1, const ADvari *c1)
ADvar1(double val1, const ADvari *c1)
ADvar1s(double val1, double a1, const ADvari *c1)
ADvar2(double val1, const ADvari *Lcv, const double *Lc, const ADvari *Rcv, const double *Rc)
ADvar2q(double val1, double Lp, double Rp, const ADvari *Lcv, const ADvari *Rcv)
static bool setget_fpval_implies_const(bool newval)
ADvar & operator=(const IndepADvar &x)
ADvar(const IndepADvar &x)
ADvar & operator=(const ADvari &x)
static void Gradcomp(int wantgrad)
static void set_fpval_implies_const(bool newval)
static void Weighted_Gradcomp(int n, ADvar **v, double *w)
static bool get_fpval_implies_const(void)
ADvari(double t, double ta)
ADvarn(double val1, int n1, const ADvar *x, const double *g)
static const double negOne
ConstADvar & operator*=(const ADvari &)
ConstADvar & operator/=(const ADvari &)
ConstADvar & operator=(double d)
ConstADvar & operator+=(const ADvari &)
ConstADvar & operator+=(double)
ConstADvar & operator/=(double)
void ConstADvar_ctr(double)
ConstADvar & operator*=(double)
ConstADvar & operator-=(const ADvari &)
ConstADvar & operator-=(double)
ConstADvar & operator=(const IndepADvar &d)
static void aval_reset(void)
static ConstADvari * lastcad
static void Gradcomp(int wantgrad)
static void AD_Const(const IndepADvar &)
IndepADvar & operator=(const IndepADvar &x)
static void Weighted_Gradcomp(int n, ADvar **v, double *w)
int operator<=(const ADvari &L, const ADvari &R)
ADvari & ADfn(double f, int n, const ADvar *x, const double *g)
int operator<(const ADvari &L, const ADvari &R)
ADvari & ADf2(double f, double gx, double gy, const ADvari &x, const ADvari &y)
void AD_Const(const IndepADvar &v)
int operator!=(const ADvari &L, const ADvari &R)
ADvari & ADf1(double f, double g, const ADvari &x)
ADvari & operator+(ADvari &T)
ADvari & fabs(const ADvari &v)
int operator>=(const ADvari &L, const ADvari &R)
ADvar & ADvar_operatoreq(ADvar *This, const ADvari &x)
int operator==(const ADvari &L, const ADvari &R)
ADvari & copy(const IndepADvar &x)
int operator>(const ADvari &L, const ADvari &R)
ADvari & abs(const ADvari &x)
ADvari & pow(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)