# caret.pg # Philip D Loewen, 2021-09-12 DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "PGML.pl", "parserPopUp.pl" ); TEXT(beginproblem()); Context("Numeric"); $two = 2; $three = 3; $a = $two^$three; $b = Formula("$a"); $c = Formula("$two^$three"); ############################################################## BEGIN_PGML The code to set up this problem says ``` Context("Numeric"); $two = 2; $three = 3; $a = $two^$three; $b = Formula("$a"); $c = Formula("$two^$three"); ``` Find [|$a|]: [___________]{$a} Find [|$b|]: [___________]{$b} Find [|$c|]: [___________]{$c} END_PGML BEGIN_PGML_SOLUTION In Perl, the caret ([|^|]) is a binary operator that computes the bitwise exclusive-or of its inputs. Therefore [|$a|] is the result of something like [|0b0010 ^ 0b0011|], namely [|0b0001|]. Perl does string interpolation inside double-quotes, so the line defining [|$b|] is equivalent to [|Formula("1");|]. Inside a formula string WeBWorK conventions apply. There, the caret denotes exponentiation. The line defining [|$c|] is equivalent to [|Formula("2^3");|]. Users influenced by algebraic thinking may find the difference in results for [|$b|] and [|$c|] surprising, and therefore instructive. (For reliable exponentiation, the two-character operator "[|**|]" appears to work in all cases.) END_PGML_SOLUTION ENDDOCUMENT();