# FormulasToConstants

## Formulas Up To Constants: PG Code Snippet

*This code snippet shows the essential PG code to evaluate antderivative and general antiderivative formulas. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.*

There are two types of comparison that we're interested in here: one is "an antiderivative of f(x)", and the other is "the most general antiderivative of f(x)". The former requires that the student answers F(x), F(x)+1, F(x)-sqrt(8), etc., all be marked correct, and the latter, that F(x)+C, F(x)+5-k, etc., all be marked correct. These are both illustrated below.

It is possible to do some of this type of comparison with old-style answer checkers. This is shown in a table below.

PG problem file | Explanation |
---|---|

loadMacros("parserFormulaUpToConstant.pl"); |
To check |

$func = Formula("sin(x)"); $gfunc = FormulaUpToConstant("sin(x)+C"); |
In the problem set-up section of the problem file, we define an antiderivative function, |

BEGIN_TEXT An antiderivative of \(cos(x)\) is \{ ans_rule(15) \} $BR The most general antiderivative is \{ ans_rule(15) \} END_TEXT |
In the text section of the file we ask for the answers as usual. |

ANS( $func->cmp(upToConstant=>1) ); ANS( $gfunc->cmp() ); |
And then in the answer and solution section of the file we rely on the MathObjects
Note that for the formula up to an arbitrary constant the comparison will correctly mark students' answers that have different arbitrary constants: thus, a student answer of |

With old-style answer checkers we can check *antiderivatives*, but checking *the most general antiderivative* is much less elegant, as we have to require that the student use a specific constant of integration.

PG problem file | Explanation |
---|---|

$func = "sin(x)"; $gfunc = "sin(x)+C"; |
In this case we need no additional macros, and so do not change the description and tagging or initialization sections of the file. In the problem set-up section we specify the function(s) to evaluate. |

BEGIN_TEXT An antiderivative of \(cos(x)\) is \{ ans_rule(15) \} $BR The most general antiderivative is \{ ans_rule(15) \} $BR ${BITALIC}(Use "C" for any arbitrary constant of integration in your answer.)$EITALIC END_TEXT |
In the text section of the problem we ask for the functions. Because we require that the most general antiderivative use the constant |

ANS( fun_cmp( $func, mode=>"antider" ) ); ANS( fun_cmp( $gfunc, mode=>"antider", var=>["x","C"] ) ); |
When checking the answer in the answer and solutions section of the file, we specify |