当前位置: 首页>>代码示例>>C++>>正文


C++ Number::AssignAdditiveIdentity方法代码示例

本文整理汇总了C++中Number::AssignAdditiveIdentity方法的典型用法代码示例。如果您正苦于以下问题:C++ Number::AssignAdditiveIdentity方法的具体用法?C++ Number::AssignAdditiveIdentity怎么用?C++ Number::AssignAdditiveIdentity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Number的用法示例。


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

示例1: CreateNumber

//=========================================================================================
/*virtual*/ Evaluator* Environment::CreateBinaryOperator( const char* operatorName, Evaluator* leftOperand, Evaluator* rightOperand, bool& isBinaryOperationEvaluator )
{
	// Here we implement exponentiation in terms of Tayler series.
	// This works for any type of number, because the Tyler series
	// function only uses the arithmetic operations of the number interface.
	// We re-write x^y as exp(y*ln x).  The Tayler series are centered at zero.
	// If the user does not want it centered at zero, they must call the
	// Tyler series functions themselves.  Environment derivatives, of course,
	// can override this function to give the "^" operator a different meaning.
	if( 0 == strcmp( operatorName, "^" ) )
	{
		Number* zero = CreateNumber();
		zero->AssignAdditiveIdentity( *this );

		FunctionArgumentEvaluator* argumentEvaluator = new FunctionArgumentEvaluator();
		argumentEvaluator->Argument( leftOperand );

		TaylorSeriesFunctionEvaluator* lnEvaluator = new TaylorSeriesFunctionEvaluator();
		lnEvaluator->Center( zero, *this );
		lnEvaluator->TaylorSeries( TaylorSeriesFunctionEvaluator::TAYLOR_SERIES_LN );
		lnEvaluator->AddArgument( argumentEvaluator, FunctionEvaluator::APPEND_TO_LIST_OF_ARGS );

		BinaryArithmeticOperationEvaluator* mulEvaluator = new BinaryArithmeticOperationEvaluator( BinaryArithmeticOperationEvaluator::ARITHMETIC_OPERATION_MULTIPLY );
		mulEvaluator->LeftOperand( rightOperand );
		mulEvaluator->RightOperand( lnEvaluator );

		argumentEvaluator = new FunctionArgumentEvaluator();
		argumentEvaluator->Argument( mulEvaluator );

		TaylorSeriesFunctionEvaluator* expEvaluator = new TaylorSeriesFunctionEvaluator();
		expEvaluator->Center( zero, *this );
		expEvaluator->TaylorSeries( TaylorSeriesFunctionEvaluator::TAYLOR_SERIES_EXP );
		expEvaluator->AddArgument( argumentEvaluator, FunctionEvaluator::APPEND_TO_LIST_OF_ARGS );

		// We're not actually returning a binary operation evaluator.
		isBinaryOperationEvaluator = false;
		delete zero;
		return expEvaluator;
	}

	return 0;
}
开发者ID:mapleyustat,项目名称:CalcLib,代码行数:43,代码来源:Environment.cpp

示例2:

//=========================================================================================
/*virtual*/ bool EnvironmentInformationFunctionEvaluator::EvaluateResult( Number& result, Environment& environment )
{
	result.AssignAdditiveIdentity( environment );
	environment.PrintEnvironmentInfo();
	return true;
}
开发者ID:mapleyustat,项目名称:CalcLib,代码行数:7,代码来源:Function.cpp


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