您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AD类代码示例

51自学网 2021-06-03 12:03:23
  C++
这篇教程C++ AD类代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AD的典型用法代码示例。如果您正苦于以下问题:C++ AD类的具体用法?C++ AD怎么用?C++ AD使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。

在下文中一共展示了AD类的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: bug_1222

double bug_1222() {  typedef Eigen::AutoDiffScalar<Eigen::Vector3d> AD;  const double _cv1_3 = 1.0;  const AD chi_3 = 1.0;  // this line did not work, because operator+ returns ADS<DerType&>, which then cannot be converted to ADS<DerType>  const AD denom = chi_3 + _cv1_3;  return denom.value();}
开发者ID:SimoneRinco,项目名称:Finite-Volumes-Immersed-Boundary-Methods,代码行数:8,


示例2: test_autodiff_scalar

void test_autodiff_scalar(){  Vector2f p = Vector2f::Random();  typedef AutoDiffScalar<Vector2f> AD;  AD ax(p.x(),Vector2f::UnitX());  AD ay(p.y(),Vector2f::UnitY());  AD res = foo<AD>(ax,ay);  VERIFY_IS_APPROX(res.value(), foo(p.x(),p.y()));}
开发者ID:SimoneRinco,项目名称:Finite-Volumes-Immersed-Boundary-Methods,代码行数:9,


示例3: bug_1261

// check a compilation issue with numext::maxdouble bug_1261() {  typedef AutoDiffScalar<Matrix2d> AD;  typedef Matrix<AD,2,1> VectorAD;  VectorAD v(0.,0.);  const AD maxVal = v.maxCoeff();  const AD minVal = v.minCoeff();  return maxVal.value() + minVal.value();}
开发者ID:SimoneRinco,项目名称:Finite-Volumes-Immersed-Boundary-Methods,代码行数:10,


示例4: test_autodiff_scalar

void test_autodiff_scalar(){    std::cerr << foo<float>(1,2) << "/n";    typedef AutoDiffScalar<Vector2f> AD;    AD ax(1,Vector2f::UnitX());    AD ay(2,Vector2f::UnitY());    AD res = foo<AD>(ax,ay);    std::cerr << res.value() << " <> "              << res.derivatives().transpose() << "/n/n";}
开发者ID:logtcn,项目名称:eigen,代码行数:10,


示例5: test_autodiff_vector

void test_autodiff_vector(){  Vector2f p = Vector2f::Random();  typedef AutoDiffScalar<Vector2f> AD;  typedef Matrix<AD,2,1> VectorAD;  VectorAD ap = p.cast<AD>();  ap.x().derivatives() = Vector2f::UnitX();  ap.y().derivatives() = Vector2f::UnitY();  AD res = foo<VectorAD>(ap);  VERIFY_IS_APPROX(res.value(), foo(p));}
开发者ID:SimoneRinco,项目名称:Finite-Volumes-Immersed-Boundary-Methods,代码行数:12,


示例6: test_autodiff_vector

void test_autodiff_vector(){    std::cerr << foo<Vector2f>(Vector2f(1,2)) << "/n";    typedef AutoDiffScalar<Vector2f> AD;    typedef Matrix<AD,2,1> VectorAD;    VectorAD p(AD(1),AD(-1));    p.x().derivatives() = Vector2f::UnitX();    p.y().derivatives() = Vector2f::UnitY();    AD res = foo<VectorAD>(p);    std::cerr << res.value() << " <> "              << res.derivatives().transpose() << "/n/n";}
开发者ID:logtcn,项目名称:eigen,代码行数:13,


示例7: if

CPPAD_INLINE bool operator != (const AD<Base> &left , const AD<Base> &right){	bool result =  (left.value_ != right.value_);	ADTape<Base> *tape = CPPAD_NULL;	if( Variable(left) )		tape = left.tape_this();	else if ( Variable(right) )		tape = right.tape_this();	if( tape != CPPAD_NULL )		tape->RecordCompare(CompareNe, result, left, right);	return result;}
开发者ID:jnorthrup,项目名称:jmodelica,代码行数:14,


示例8: collectData

UINT RandomWalk::collectData(LPVOID lparam){	AD obj;	while(TRUE){		obj.readData();		obj.getDistance(arrayDistance, 8);		for(int i=0; i< 8; i++){			if(arrayDistance[i] <= 5.0){				SetEvent(hSysStatus);				continue;			}		}		obj.getVoltage(arrayVoltage, 2);	}	return 0;}
开发者ID:tianxingjianmj,项目名称:MJ_code_home,代码行数:15,


示例9: check_atan2

template<typename Scalar> void check_atan2(){  typedef Matrix<Scalar, 1, 1> Deriv1;  typedef AutoDiffScalar<Deriv1> AD;    AD x(internal::random<Scalar>(-3.0, 3.0), Deriv1::UnitX());    using std::exp;  Scalar r = exp(internal::random<Scalar>(-10, 10));    AD s = sin(x), c = cos(x);  AD res = atan2(r*s, r*c);    VERIFY_IS_APPROX(res.value(), x.value());  VERIFY_IS_APPROX(res.derivatives(), x.derivatives());}
开发者ID:1292765944,项目名称:caffe2,代码行数:16,


示例10: bug_1223

double bug_1223() {  using std::min;  typedef Eigen::AutoDiffScalar<Eigen::Vector3d> AD;  const double _cv1_3 = 1.0;  const AD chi_3 = 1.0;  const AD denom = 1.0;  // failed because implementation of min attempts to construct ADS<DerType&> via constructor AutoDiffScalar(const Real& value)  // without initializing m_derivatives (which is a reference in this case)  #define EIGEN_TEST_SPACE  const AD t = min EIGEN_TEST_SPACE (denom / chi_3, 1.0);  const AD t2 = min EIGEN_TEST_SPACE (denom / (chi_3 * _cv1_3), 1.0);  return t.value() + t2.value();}
开发者ID:SimoneRinco,项目名称:Finite-Volumes-Immersed-Boundary-Methods,代码行数:17,


示例11: Variable

CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTIONbool operator >= (const AD<Base> &left , const AD<Base> &right){	bool result    =  (left.value_ >= right.value_);	bool var_left  = Variable(left);	bool var_right = Variable(right);	ADTape<Base> *tape = CPPAD_NULL;	if( var_left )	{	tape = left.tape_this();		if( var_right )		{	if( result )			{	tape->Rec_.PutOp(LevvOp);				tape->Rec_.PutArg(right.taddr_, left.taddr_);			}			else			{	tape->Rec_.PutOp(LtvvOp);				tape->Rec_.PutArg(left.taddr_, right.taddr_);			}		}		else		{	addr_t arg1 = tape->Rec_.PutPar(right.value_);			if( result )			{	tape->Rec_.PutOp(LepvOp);				tape->Rec_.PutArg(arg1, left.taddr_);			}			else			{	tape->Rec_.PutOp(LtvpOp);				tape->Rec_.PutArg(left.taddr_, arg1);			}		}	}	else if ( var_right )	{	tape = right.tape_this();		addr_t arg0 = tape->Rec_.PutPar(left.value_);		if( result )		{	tape->Rec_.PutOp(LevpOp);			tape->Rec_.PutArg(right.taddr_, arg0);		}		else		{	tape->Rec_.PutOp(LtpvOp);			tape->Rec_.PutArg(arg0, right.taddr_);		}	}	return result;}
开发者ID:jonathancurrie,项目名称:OPTI,代码行数:46,


示例12: Eval

	// used during the recording process	AD<Base> Eval(const AD<Base> &x) const	{	AD<Base> z;		z.value_ = f(x.value_);		if( Variable(x) )		{	x.tape_this()->RecordDisOp(				z,				x.taddr_,				y_taddr			);		}		return z;	}
开发者ID:cran,项目名称:RMC,代码行数:14,


示例13: Variable

CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTIONbool operator != (const AD<Base> &left , const AD<Base> &right){	bool result    =  (left.value_ != right.value_);	bool var_left  = Variable(left);	bool var_right = Variable(right);	local::ADTape<Base> *tape = CPPAD_NULL;	if( var_left )	{	tape = left.tape_this();		if( var_right )		{	tape->Rec_.PutArg(left.taddr_, right.taddr_);			if( result )				tape->Rec_.PutOp(local::NevvOp);			else				tape->Rec_.PutOp(local::EqvvOp);		}		else		{	addr_t arg1 = tape->Rec_.PutPar(right.value_);			tape->Rec_.PutArg(arg1, left.taddr_);			if( result )				tape->Rec_.PutOp(local::NepvOp);			else				tape->Rec_.PutOp(local::EqpvOp);		}	}	else if ( var_right )	{	tape = right.tape_this();		addr_t arg0 = tape->Rec_.PutPar(left.value_);		tape->Rec_.PutArg(arg0, right.taddr_);		if( result )			tape->Rec_.PutOp(local::NepvOp);		else			tape->Rec_.PutOp(local::EqpvOp);	}	return result;}
开发者ID:iagomosqueira,项目名称:FLasher,代码行数:37,


示例14: audioCallBack

// DO NOT MODIFY THE AUDIO CALLBACK FUNCTION void audioCallBack(AudioIOData& io){	while(io()) 	{		if(tmr()) env.reset();	// Reset AD envelope				input = white() * env(); // Apply envelope to white noise 		roomReverb(input, output, decayTime); // Apply reverb		for (int i = 0; i < channelsOut; i++) 		{			io.out(i) = ( (1.0 - dryWet) * input + dryWet * output ) * level; 		}	} }
开发者ID:akshay1992,项目名称:240D,代码行数:16,


示例15: log

AD<T> log(const AD<T>& x){  AD<T> newAD;  ADnode<T>* orx = x.getRoot();  newAD.setRoot(new ADlog<T>(orx));  return newAD;}
开发者ID:calbertsen,项目名称:otoclass,代码行数:6,


示例16: asin

AD<T> asin(const AD<T>& x){  AD<T> newAD;  ADnode<T>* orx = x.getRoot();  newAD.setRoot(new ADasin<T>(orx));  return newAD;}
开发者ID:calbertsen,项目名称:otoclass,代码行数:6,


示例17: CPPAD_ASSERT_UNKNOWN

AD<Base> operator / (const AD<Base> &left , const AD<Base> &right){    // compute the Base part    AD<Base> result;    result.value_  = left.value_ / right.value_;    CPPAD_ASSERT_UNKNOWN( Parameter(result) );    // check if there is a recording in progress    local::ADTape<Base>* tape = AD<Base>::tape_ptr();    if( tape == CPPAD_NULL )        return result;    tape_id_t tape_id = tape->id_;    // tape_id cannot match the default value for tape_id_; i.e., 0    CPPAD_ASSERT_UNKNOWN( tape_id > 0 );    // check if left and right tapes match    bool match_left  = left.tape_id_  == tape_id;    bool match_right = right.tape_id_ == tape_id;    // check if left and right are dynamic parameters    bool dyn_left  = match_left  & (left.ad_type_ == dynamic_enum);    bool dyn_right = match_right & (right.ad_type_ == dynamic_enum);    // check if left and right are variables    bool var_left  = match_left  & (left.ad_type_ != dynamic_enum);    bool var_right = match_right & (right.ad_type_ != dynamic_enum);    CPPAD_ASSERT_KNOWN(        left.tape_id_ == right.tape_id_ || ! match_left || ! match_right ,        "Divide: AD variables or dynamic parameters on different threads."    );    if( var_left )    {   if( var_right )        {   // result = variable / variable            CPPAD_ASSERT_UNKNOWN( local::NumRes(local::DivvvOp) == 1 );            CPPAD_ASSERT_UNKNOWN( local::NumArg(local::DivvvOp) == 2 );            // put operand addresses in tape            tape->Rec_.PutArg(left.taddr_, right.taddr_);            // put operator in the tape            result.taddr_ = tape->Rec_.PutOp(local::DivvvOp);            // make result a variable            result.tape_id_ = tape_id;            result.ad_type_ = variable_enum;        }        else if( (! dyn_right) & IdenticalOne(right.value_) )        {   // result = variable / 1            result.make_variable(left.tape_id_, left.taddr_);        }        else        {   // result = variable / parameter            CPPAD_ASSERT_UNKNOWN( local::NumRes(local::DivvpOp) == 1 );            CPPAD_ASSERT_UNKNOWN( local::NumArg(local::DivvpOp) == 2 );            // put operand addresses in tape            addr_t p = right.taddr_;            if( ! dyn_right )                p = tape->Rec_.put_con_par(right.value_);            tape->Rec_.PutArg(left.taddr_, p);            // put operator in the tape            result.taddr_ = tape->Rec_.PutOp(local::DivvpOp);            // make result a variable            result.tape_id_ = tape_id;            result.ad_type_ = variable_enum;        }    }    else if( var_right )    {   if( (! dyn_left) & IdenticalZero(left.value_) )        {   // result = 0 / variable        }        else        {   // result = parameter / variable            CPPAD_ASSERT_UNKNOWN( local::NumRes(local::DivpvOp) == 1 );            CPPAD_ASSERT_UNKNOWN( local::NumArg(local::DivpvOp) == 2 );            // put operand addresses in tape            addr_t p = left.taddr_;            if( ! dyn_left )                p = tape->Rec_.put_con_par(left.value_);            tape->Rec_.PutArg(p, right.taddr_);            // put operator in the tape            result.taddr_ = tape->Rec_.PutOp(local::DivpvOp);            // make result a variable            result.tape_id_ = tape_id;            result.ad_type_ = variable_enum;        }    }    else if( dyn_left | dyn_right )    {   addr_t arg0 = left.taddr_;        addr_t arg1 = right.taddr_;        if( ! dyn_left )            arg0 = tape->Rec_.put_con_par(left.value_);        if( ! dyn_right )            arg1 = tape->Rec_.put_con_par(right.value_);        //        // parameters with a dynamic parameter result        result.taddr_   = tape->Rec_.put_dyn_par(            result.value_, local::div_dyn,   arg0, arg1        );        result.tape_id_ = tape_id;//.........这里部分代码省略.........
开发者ID:barak,项目名称:cppad,代码行数:101,


示例18: sign

inline AD<Base> sign(const AD<Base> &x){	return x.Sign(); }
开发者ID:AndreasBrack,项目名称:WahlkreisSeminar,代码行数:2,


示例19: erf

	inline AD<Base> erf(const AD<Base> &x)	{	return x.erf(); }
开发者ID:ZiiCee,项目名称:OPTI,代码行数:2,


示例20: Variable

AD<Base> operator - (const AD<Base> &left , const AD<Base> &right){	ADTape<Base> *tape = AD<Base>::tape_ptr();	bool var_left, var_right;# ifdef NDEBUG	if( tape == CPPAD_NULL )	{	var_left =  false;		var_right = false;	}	else	{		var_left  = left.id_  == tape->id_;		var_right = right.id_ == tape->id_;	}# else	var_left  = Variable(left);	var_right = Variable(right);	CPPAD_ASSERT_KNOWN(		(! var_left) || left.id_ == tape->id_ ,		"- left operand is a variable for a different thread"	);	CPPAD_ASSERT_KNOWN(		(! var_right) || right.id_ == tape->id_ ,		"- right operand is a variable for a different thread"	);# endif	AD<Base> result;	result.value_  = left.value_ - right.value_;	CPPAD_ASSERT_UNKNOWN( Parameter(result) );	if( var_left )	{	if( var_right )		{	// result = variable - variable			CPPAD_ASSERT_UNKNOWN( NumRes(SubvvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(SubvvOp) == 2 );			// put operand addresses in tape			tape->Rec_.PutArg(left.taddr_, right.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(SubvvOp);			// make result a variable			result.id_ = tape->id_;		}		else if( IdenticalZero(right.value_) )		{	// result = variable - 0			result.make_variable(left.id_, left.taddr_);		}		else		{	// result = variable - parameter			CPPAD_ASSERT_UNKNOWN( NumRes(SubvpOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(SubvpOp) == 2 );			// put operand addresses in tape			size_t p = tape->Rec_.PutPar(right.value_);			tape->Rec_.PutArg(left.taddr_, p);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(SubvpOp);			// make result a variable			result.id_ = tape->id_;		}	}	else if( var_right )	{	// result = parameter - variable		CPPAD_ASSERT_UNKNOWN( NumRes(SubpvOp) == 1 );		CPPAD_ASSERT_UNKNOWN( NumArg(SubpvOp) == 2 );		// put operand addresses in tape		size_t p = tape->Rec_.PutPar(left.value_);		tape->Rec_.PutArg(p, right.taddr_);		// put operator in the tape		result.taddr_ = tape->Rec_.PutOp(SubpvOp);		// make result a variable		result.id_ = tape->id_;	}	return result;}
开发者ID:jnorthrup,项目名称:jmodelica,代码行数:76,


示例21: CPPAD_ASSERT_UNKNOWN

AD<Base> operator + (const AD<Base> &left , const AD<Base> &right){	// compute the Base part of this AD object	AD<Base> result;	result.value_  = left.value_ + right.value_;	CPPAD_ASSERT_UNKNOWN( Parameter(result) );	// check if there is a recording in progress	ADTape<Base>* tape = AD<Base>::tape_ptr();	if( tape == CPPAD_NULL )		return result;	tape_id_t tape_id = tape->id_;	// tape_id cannot match the default value for tape_id_; i.e., 0	CPPAD_ASSERT_UNKNOWN( tape_id > 0 );	bool var_left  = left.tape_id_  == tape_id;	bool var_right = right.tape_id_ == tape_id;	if( var_left )	{	if( var_right )		{	// result = variable + variable			CPPAD_ASSERT_UNKNOWN( NumRes(AddvvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(AddvvOp) == 2 );			// put operand addresses in tape			tape->Rec_.PutArg(left.taddr_, right.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(AddvvOp);			// make result a variable			result.tape_id_ = tape_id;		}		else if( IdenticalZero(right.value_) )		{	// result = variable + 0			result.make_variable(left.tape_id_, left.taddr_);		}		else		{	// result = variable  + parameter			//        = parameter + variable			CPPAD_ASSERT_UNKNOWN( NumRes(AddpvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(AddpvOp) == 2 );			// put operand addresses in tape			addr_t p = tape->Rec_.PutPar(right.value_);			tape->Rec_.PutArg(p, left.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(AddpvOp);			// make result a variable			result.tape_id_ = tape_id;		}	}	else if( var_right )	{	if( IdenticalZero(left.value_) )		{	// result = 0 + variable			result.make_variable(right.tape_id_, right.taddr_);		}		else		{	// result = parameter + variable			CPPAD_ASSERT_UNKNOWN( NumRes(AddpvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(AddpvOp) == 2 );			// put operand addresses in tape			addr_t p = tape->Rec_.PutPar(left.value_);			tape->Rec_.PutArg(p, right.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(AddpvOp);			// make result a variable			result.tape_id_ = tape_id;		}	}	return result;}
开发者ID:GodinA,项目名称:adcomp,代码行数:71,


示例22: azmul

// case where x and y are AD<Base> -------------------------------------------template <class Base> AD<Base>azmul(const AD<Base>& x, const AD<Base>& y){	// compute the Base part	AD<Base> result;	result.value_ = azmul(x.value_, y.value_);	// check if there is a recording in progress	ADTape<Base>* tape = AD<Base>::tape_ptr();	if( tape == CPPAD_NULL )		return result;	tape_id_t tape_id = tape->id_;	// tape_id cannot match the default value for tape_id_; i.e., 0	CPPAD_ASSERT_UNKNOWN( tape_id > 0 );	bool var_x = x.tape_id_ == tape_id;	bool var_y = y.tape_id_ == tape_id;	if( var_x )	{	if( var_y )		{	// result = azmul(variable, variable)			CPPAD_ASSERT_UNKNOWN( NumRes(ZmulvvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(ZmulvvOp) == 2 );			// put operand addresses in tape			tape->Rec_.PutArg(x.taddr_, y.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(ZmulvvOp);			// make result a variable			result.tape_id_ = tape_id;		}		else if( IdenticalZero( y.value_ ) )		{	// result = variable * 0		}		else if( IdenticalOne( y.value_ ) )		{	// result = variable * 1			result.make_variable(x.tape_id_, x.taddr_);		}		else		{	// result = zmul(variable, parameter)			CPPAD_ASSERT_UNKNOWN( NumRes(ZmulvpOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(ZmulvpOp) == 2 );			// put operand addresses in tape			addr_t p = tape->Rec_.PutPar(y.value_);			tape->Rec_.PutArg(x.taddr_, p);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(ZmulvpOp);			// make result a variable			result.tape_id_ = tape_id;		}	}	else if( var_y )	{	if( IdenticalZero(x.value_) )		{	// result = 0 * variable		}		else if( IdenticalOne( x.value_ ) )		{	// result = 1 * variable			result.make_variable(y.tape_id_, y.taddr_);		}		else		{	// result = zmul(parameter, variable)			CPPAD_ASSERT_UNKNOWN( NumRes(ZmulpvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(ZmulpvOp) == 2 );			// put operand addresses in tape			addr_t p = tape->Rec_.PutPar(x.value_);			tape->Rec_.PutArg(p, y.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(ZmulpvOp);			// make result a variable			result.tape_id_ = tape_id;		}	}	return result;}
开发者ID:barak,项目名称:CppAD-1,代码行数:83,


示例23: CondExpOp

CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTIONAD<Base> CondExpOp(	enum  CompareOp cop       ,	const AD<Base> &left      ,	const AD<Base> &right     ,	const AD<Base> &if_true   ,	const AD<Base> &if_false  ){	AD<Base> returnValue;	CPPAD_ASSERT_UNKNOWN( Parameter(returnValue) );	// check first case where do not need to tape	if( IdenticalPar(left) & IdenticalPar(right) )	{	switch( cop )		{			case CompareLt:			if( left.value_ < right.value_ )				returnValue = if_true;			else	returnValue = if_false;			break;			case CompareLe:			if( left.value_ <= right.value_ )				returnValue = if_true;			else	returnValue = if_false;			break;			case CompareEq:			if( left.value_ == right.value_ )				returnValue = if_true;			else	returnValue = if_false;			break;			case CompareGe:			if( left.value_ >= right.value_ )				returnValue = if_true;			else	returnValue = if_false;			break;			case CompareGt:			if( left.value_ > right.value_ )				returnValue = if_true;			else	returnValue = if_false;			break;			default:			CPPAD_ASSERT_UNKNOWN(0);			returnValue = if_true;		}		return returnValue;	}	// must use CondExp incase Base is an AD type and recording	returnValue.value_ = CondExpOp(cop,		left.value_, right.value_, if_true.value_, if_false.value_);	ADTape<Base> *tape = CPPAD_NULL;	if( Variable(left) )		tape = left.tape_this();	if( Variable(right) )		tape = right.tape_this();	if( Variable(if_true) )		tape = if_true.tape_this();	if( Variable(if_false) )		tape = if_false.tape_this();	// add this operation to the tape	if( tape != CPPAD_NULL )		tape->RecordCondExp(cop,			returnValue, left, right, if_true, if_false);	return returnValue;}
开发者ID:Andres-Hernandez,项目名称:CppAD,代码行数:73,


示例24: CPPAD_ASSERT_UNKNOWN

void ADTape<Base>::RecordCondExp(	enum CompareOp  cop         ,	AD<Base>       &returnValue ,	const AD<Base> &left        ,	const AD<Base> &right       ,	const AD<Base> &if_true     ,	const AD<Base> &if_false    ){	size_t   ind0, ind1, ind2, ind3, ind4, ind5;	size_t   returnValue_taddr;	// taddr_ of this variable	CPPAD_ASSERT_UNKNOWN( NumRes(CExpOp) == 1 );	returnValue_taddr = Rec_.PutOp(CExpOp);	// ind[0] = cop	ind0 = addr_t( cop );	// ind[1] = base 2 representaion of the value	// [Var(left), Var(right), Var(if_true), Var(if_false)]	ind1 = 0;	// Make sure returnValue is in the list of variables and set its taddr	if( Parameter(returnValue) )		returnValue.make_variable(id_, returnValue_taddr );	else	returnValue.taddr_ = returnValue_taddr;	// ind[2] = left address	if( Parameter(left) )		ind2 = Rec_.PutPar(left.value_);	else	{	ind1 += 1;		ind2 = left.taddr_;	}	// ind[3] = right address	if( Parameter(right) )		ind3 = Rec_.PutPar(right.value_);	else	{	ind1 += 2;		ind3 = right.taddr_;	}	// ind[4] = if_true address	if( Parameter(if_true) )		ind4 = Rec_.PutPar(if_true.value_);	else	{	ind1 += 4;		ind4 = if_true.taddr_;	}	// ind[5] =  if_false address	if( Parameter(if_false) )		ind5 = Rec_.PutPar(if_false.value_);	else	{	ind1 += 8;		ind5 = if_false.taddr_;	}	CPPAD_ASSERT_UNKNOWN( NumArg(CExpOp) == 6 );	CPPAD_ASSERT_UNKNOWN( ind1 > 0 );	Rec_.PutArg(ind0, ind1, ind2, ind3, ind4, ind5);	// check that returnValue is a dependent variable	CPPAD_ASSERT_UNKNOWN( Variable(returnValue) );}
开发者ID:Andres-Hernandez,项目名称:CppAD,代码行数:65,


示例25: CPPAD_ASSERT_UNKNOWN

AD<Base> operator / (const AD<Base> &left , const AD<Base> &right){	// compute the Base part	AD<Base> result;	result.value_  = left.value_ / right.value_;	CPPAD_ASSERT_UNKNOWN( Parameter(result) );	// check if there is a recording in progress	ADTape<Base>* tape = AD<Base>::tape_ptr();	if( tape == CPPAD_NULL )		return result;	tape_id_t tape_id = tape->id_;	// tape_id cannot match the default value for tape_id_; i.e., 0	CPPAD_ASSERT_UNKNOWN( tape_id > 0 );	bool var_left  = left.tape_id_  == tape_id;	bool var_right = right.tape_id_ == tape_id;	if( var_left )	{	if( var_right )		{	// result = variable / variable			CPPAD_ASSERT_KNOWN(				left.tape_id_ == right.tape_id_,				"Dividing AD objects that are"				" variables on different tapes."			);			CPPAD_ASSERT_UNKNOWN( NumRes(DivvvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(DivvvOp) == 2 );			// put operand addresses in tape			tape->Rec_.PutArg(left.taddr_, right.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(DivvvOp);			// make result a variable			result.tape_id_ = tape_id;		}		else if( IdenticalOne(right.value_) )		{	// result = variable / 1			result.make_variable(left.tape_id_, left.taddr_);		}		else		{	// result = variable / parameter			CPPAD_ASSERT_UNKNOWN( NumRes(DivvpOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(DivvpOp) == 2 );			// put operand addresses in tape			addr_t p = tape->Rec_.PutPar(right.value_);			tape->Rec_.PutArg(left.taddr_, p);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(DivvpOp);			// make result a variable			result.tape_id_ = tape_id;		}	}	else if( var_right )	{	if( IdenticalZero(left.value_) )		{	// result = 0 / variable		}		else		{	// result = parameter / variable			CPPAD_ASSERT_UNKNOWN( NumRes(DivpvOp) == 1 );			CPPAD_ASSERT_UNKNOWN( NumArg(DivpvOp) == 2 );			// put operand addresses in tape			addr_t p = tape->Rec_.PutPar(left.value_);			tape->Rec_.PutArg(p, right.taddr_);			// put operator in the tape			result.taddr_ = tape->Rec_.PutOp(DivpvOp);			// make result a variable			result.tape_id_ = tape_id;		}	}	return result;}
开发者ID:GodinA,项目名称:adcomp,代码行数:74,


示例26: abs

inline AD<Base> abs(const AD<Base> &x){	return x.Abs(); }
开发者ID:CSCsw,项目名称:CppAD,代码行数:2,


示例27: short

	MyApp(){		lpf.type(LOW_PASS);		// Set filter to low-pass response		lpf.res(4);				// Set resonance amount to emphasize filter		env.attack(0.01);		// Set short (10 ms) attack		env.decay(0.4);			// Set longer (400 ms) decay		tmr.freq(120./60.*4.);	// Set timer frequency to 120 BPM		tmr.phaseMax();			// Ensures timer triggers on first sample		modCutoff.period(30);	// Set period of cutoff modulation		modCutoff.phase(0.5);	// Start half-way through cycle		freq.lag(0.1);			// Lag time of portamento effect		step=0;	}
开发者ID:LancePutnam,项目名称:Gamma,代码行数:12,


示例28: onAudio

	void onAudio(AudioIOData& io){		while(io()){			if(tmr()){				// Our sequence of pitches				float pitches[] = {0,0,12,0,0,10,-5,0};				// Map pitch class to a frequency in Hz				float f = 55 * pow(2, pitches[step]/12.);				// Increment step counter				step = (step + 1) % 8;				// Set new target frequence of portamento				freq = f;				// Restart envelope using a soft reset (to avoid clicks)				env.resetSoft();			}			// Set saw frequency from portamento filter			saw.freq(freq());			// Get next envelope value			float e = env();			// Map envelope value to cutoff frequency			lpf.freq(e * (modCutoff.paraU()*6000 + 500) + 40);			// Generate next saw sample			float s = saw() * 0.3;			// Filter saw sample			s = lpf(s) * e;			// Send sample to DAC			io.out(0) = io.out(1) = s;		}	}
开发者ID:LancePutnam,项目名称:Gamma,代码行数:31,


示例29: main

int main() {	tmr.period(3);	// Reset the envelope every 3 seconds 	env.attack(0.01);	// Attack time	env.decay(0.05);	// Decay time	// Delays, lowpass, and allpass filters setup code goes here 	//	lpf.type(LOW_PASS);	lpf.freq(2600);	lpf.res(sqrt(2.0)/2.0);	AudioIO audioIO(frameCount, samplingRate, audioCallBack, NULL, channelsOut, channelsIn);	Sync::master().spu(audioIO.framesPerSecond()); 	audioIO.start();	printf("Press 'enter' to quit.../n"); 	getchar();	return 0; }
开发者ID:akshay1992,项目名称:240D,代码行数:20,


示例30: audioCB

void audioCB(AudioIOData& io){		position pos;		pos.x=-10;		pos.y=0;		pos.z=0;	while(io()){		float r;		r=rand()%7;	//	cout<<bpmInput<<endl;	//	cout<<tmr2.freq()<<endl;		float s = 0;		float tone = 0;		float bass = 0;		if (tmr()){				src3.reset();			envLPF.reset();			}	if(tmr3()){			env.reset();			env2.reset();			//src3.reset();			tmr3.freq(rnd::uni(beat,beat*2));			src2.reset();		}		if(tmr2()){//			src.reset();			tmr2.freq(rnd::uni(beat,beat*3));			src3.reset();			src2.reset();		}		if (tmr4()){		//		src.reset();			pos.x+=1;			tmr4.freq(rnd::uni(beat,beat*2));			src3.reset();			envLPF.reset();			}		if (tmr5()){		//		src.reset();			pos.x+=1;			tmr5.freq(rnd::uni(beat/2,beat*2));			src4.reset();			envLPF.reset();			}		if (tmr6()){		//		src.reset();			pos.x+=1;			src5.reset();			envLPF.reset();			}		if (tmr7()){		//		src.reset();			pos.x+=1;			src6.reset();			envLPF.reset();			}		if (tmrRand())		{			envswell.reset();			envpan.set(434200,-3);//			beat*=(float)r;		}		if(sweep()){				envwhite.reset();				}					float wet1, wet2;		s=src()*env()*.3;		hpfreq*=envLPF();		tone = src2()*.2;	 	bass = src3()*.3;	 	s+=src4()*.2+src5()*.2+src6()*.2;		tone+=bass;		s+=tone;		reverb(s,wet1, wet2);		//double xplane =  pos.x/10;		//define my sound variables with pan		float batleft=swnoise()*envwhite()*envswell()*.15*envpan();		float batright= swnoise()*envwhite()*(envswell())*.15*(1-envpan());		float preout=LPF(s);		float out = preout+LPF(wet1*.2);//.........这里部分代码省略.........
开发者ID:danielryan2430,项目名称:GammaProjects,代码行数:101,



注:本文中的AD类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ ADB类代码示例
C++ ACTIVE_TASK类代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。