Following the example in the code snippet, I have tried to evaluate one of the answers in my problem at integers only. The relevant setup is below:

##############################################################

#

# Setup

#

#

Context("Numeric");

Context()->strings->add('divergent');

Context()->strings->add('-infinity');

Context()->variables->add(n=>'Real');

Context()->variables->set(n=>{limits=>[1,10]});

$a=random(2,9);

$ans1=Compute("1/$a");

$ans2=Compute("1/($a^2)");

$ans3=Compute("2/($a^3)");

$ans4=Compute("6/($a^4)");

$ans5=Compute("(n!)/($a^(n+1))");

$ans5->{test_points}=[[4],[5]];

##############################################################

You'll notice that $ans5 is tested only at 4 and 5 because of the factorial.

At the end of the file I have the usual

ANS($ans5->cmp());

However, I must be doing something stupid, because it doesn't work. When I try the code, it returns "Can't evaluate formula on test point (4)".

I thought it might be the factorial, but if I remove it, the same error is returned.

Can anyone see what I'm doing wrong here?

Thanks in advance for your help,

S.M.

*x*in addition to

*n*, and so

`$ans5`

is really a function of two variables (though one is not used). So the test points need to include values for both *n*and

*x*. That is because student answers can include

*x*(even if the correct answer doesn't) and there needs to be values to be plugged in for those

*x*'s. So you either need to make the test points be arrays with two entries (the variables are listed in alphabetical order), or remove the

*x*. If you want to have only

*n*in the context, then use

Context()->variables->are(n=>'Real');rather than

Context()->variables->add(n=>'Real');(i.e., "are" rather than "add").

Also, you do not need to add `-infinity`

as a string, as the Infinity object already handles negative infinity. You will get better answer previews and better error messages if you leave it an Infinity rather than a String.

Hope that helps.

Davide

"The problem is that the Context also includes the variable

*x*in addition to*n*, and so`$ans5`

is really a function of two variables (though one is not used). So the test points need to include values for both *n*and*x*. That is because student answers can include*x*(even if the correct answer doesn't) and there needs to be values to be plugged in for those*x*'s. So you either need to make the test points be arrays with two entries (the variables are listed in alphabetical order), or remove the*x*."Thank you. I thought it might have been this, so I tried removing the x, but it didn't work. However, that was probably due to a bug in my code. It works fine now :-)

"Also, you do not need to add `-infinity`

as a string, as the Infinity object already handles negative infinity. You will get better answer previews and better error messages if you leave it an Infinity rather than a String. "

Thanks! I tried to look this up in the documentation and couldn't find it. I guess I should have just tried it :-)

S.M.