本文整理汇总了C++中EvalContext::evalSetupVerbosity方法的典型用法代码示例。如果您正苦于以下问题:C++ EvalContext::evalSetupVerbosity方法的具体用法?C++ EvalContext::evalSetupVerbosity怎么用?C++ EvalContext::evalSetupVerbosity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EvalContext
的用法示例。
在下文中一共展示了EvalContext::evalSetupVerbosity方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setupEval
void EvaluatableExpr::setupEval(const EvalContext& context) const
{
Tabs tabs0(0);
int verb = context.evalSetupVerbosity();
SUNDANCE_MSG1(verb, tabs0 << "setupEval() for " << this->toString());
if (!evaluators_.containsKey(context))
{
Tabs tabs;
SUNDANCE_MSG2(verb, tabs << "creating new evaluator...");
SUNDANCE_MSG2(verb, tabs << "my sparsity superset = " << std::endl
<< *sparsitySuperset(context));
RCP<Evaluator> eval;
if (sparsitySuperset(context)->numDerivs()>0)
{
SUNDANCE_MSG2(verb, tabs << "calling createEvaluator()");
eval = rcp(createEvaluator(this, context));
}
else
{
SUNDANCE_MSG2(verb,
tabs << "EE: no results needed... creating null evaluator");
eval = rcp(new NullEvaluator());
}
evaluators_.put(context, eval);
}
else
{
Tabs tabs;
SUNDANCE_MSG2(verb, tabs << "reusing existing evaluator...");
}
}
示例2: tabs
ProductEvaluator::ProductEvaluator(const ProductExpr* expr,
const EvalContext& context)
: BinaryEvaluator<ProductExpr>(expr, context),
maxOrder_(this->sparsity()->maxOrder()),
resultIndex_(maxOrder_+1),
resultIsConstant_(maxOrder_+1),
hasWorkspace_(maxOrder_+1),
workspaceIsLeft_(maxOrder_+1),
workspaceIndex_(maxOrder_+1),
workspaceCoeffIndex_(maxOrder_+1),
workspaceCoeffIsConstant_(maxOrder_+1),
ccTerms_(maxOrder_+1),
cvTerms_(maxOrder_+1),
vcTerms_(maxOrder_+1),
vvTerms_(maxOrder_+1),
startingVectors_(maxOrder_+1),
startingParities_(maxOrder_+1)
{
int verb = context.evalSetupVerbosity();
try
{
Tabs tabs(0);
{
Tabs tab;
Tabs tabz;
SUNDANCE_MSG1(verb,
tabs << "initializing product evaluator for "
<< expr->toString());
SUNDANCE_MSG2(verb,
tab << "return sparsity " << std::endl
<< tabz << *(this->sparsity)());
SUNDANCE_MSG2(verb,
tab << "left sparsity " << std::endl
<< tabz << *(leftSparsity()) << std::endl
<< tabz << "right sparsity " << std::endl
<< tabz << *(rightSparsity()));
SUNDANCE_MSG3(verb,
tab << "left vector index map "
<< leftEval()->vectorIndexMap() << std::endl
<< tabz << "right vector index map "
<< rightEval()->vectorIndexMap() << std::endl
<< tabz << "left constant index map "
<< leftEval()->constantIndexMap() << std::endl
<< tabz << "right constant index map "
<< rightEval()->constantIndexMap());
}
int vecResultIndex = 0;
int constResultIndex = 0;
for (int i=0; i<this->sparsity()->numDerivs(); i++)
{
Tabs tab0;
const MultipleDeriv& d = this->sparsity()->deriv(i);
SUNDANCE_MSG2(verb,
tabs << std::endl
<< tabs << "finding rules for deriv " << d);
int order = d.order();
/* Determine the index into which the result will be written */
bool resultIsConstant = this->sparsity()->state(i)==ConstantDeriv;
resultIsConstant_[order].append(resultIsConstant);
if (resultIsConstant)
{
SUNDANCE_MSG3(verb,
tab0 << std::endl
<< tab0 << "result will be in constant index " << constResultIndex);
resultIndex_[order].append(constResultIndex);
addConstantIndex(i, constResultIndex);
constResultIndex++;
}
else
{
SUNDANCE_MSG3(verb,
tab0 << std::endl
<< tab0 << "result will be in constant index " << vecResultIndex);
resultIndex_[order].append(vecResultIndex);
addVectorIndex(i, vecResultIndex);
vecResultIndex++;
}
/* If possible, we want to do the calculations in-place, writing into
* one of the two operand's results vectors for the same derivative.
* Provided that we process derivatives in descending order, it is
* safe to destroy the operands' result vectors.
*/
int dnLeftIndex = leftSparsity()->getIndex(d);
int dnRightIndex = rightSparsity()->getIndex(d);
bool hasVectorWorkspace = false;
bool workspaceIsLeft = false;
int workspaceIndex = -1;
int workspaceCoeffIndex = -1;
//.........这里部分代码省略.........