# FormulasToConstants

## Formulas Up To Additive 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 |

- POD documentation: parserFormulaUpToConstant.pl
- PG macro: parserFormulaUpToConstant.pl

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 |