Another trampoline bites the dust.
This commit is contained in:
parent
a373667c23
commit
368009e84f
@ -214,36 +214,44 @@ newkeylevel (const int level)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct state_tcc
|
||||||
|
{
|
||||||
|
int leaves;
|
||||||
|
int nonvariables;
|
||||||
|
};
|
||||||
|
|
||||||
|
//! Simple helper for below
|
||||||
|
int
|
||||||
|
countMe (Term t, struct state_tcc *stcc)
|
||||||
|
{
|
||||||
|
if (TermRunid (t) >= 0)
|
||||||
|
{
|
||||||
|
(stcc->leaves)++;
|
||||||
|
if (!isTermVariable (t))
|
||||||
|
{
|
||||||
|
(stcc->nonvariables)++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//! count local constants
|
//! count local constants
|
||||||
float
|
float
|
||||||
term_constcount (const System sys, Term t)
|
term_constcount (const System sys, Term t)
|
||||||
{
|
{
|
||||||
int n, total;
|
|
||||||
float ratio;
|
float ratio;
|
||||||
|
struct state_tcc Stcc;
|
||||||
|
|
||||||
int countMe (Term t)
|
Stcc.nonvariables = 0;
|
||||||
{
|
Stcc.leaves = 0;
|
||||||
if (TermRunid (t) >= 0)
|
term_iterate_state_deVar (t, countMe, NULL, NULL, NULL, &Stcc);
|
||||||
{
|
if (Stcc.leaves == 0)
|
||||||
total++;
|
|
||||||
if (!isTermVariable (t))
|
|
||||||
{
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
n = 0;
|
|
||||||
total = 0;
|
|
||||||
term_iterate_deVar (t, countMe, NULL, NULL, NULL);
|
|
||||||
if (total == 0)
|
|
||||||
{
|
{
|
||||||
ratio = 1;
|
ratio = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ratio = ((total - n) / total);
|
ratio = ((Stcc.leaves - Stcc.nonvariables) / Stcc.leaves);
|
||||||
}
|
}
|
||||||
return ratio;
|
return ratio;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user