Jump to: Site Navigation

parserRoot.pl - defines a `root(n,x)`

function for n-th root of x.

This file defines the code necessary to add to any context a `root(n,x)`

function that performs the n-th root of x. For example, `Compute("root(3,27)")`

would return the equivalent of `Real(3)`

.

To accomplish this, put the line

` loadMacros("parserRoot.pl");`

at the beginning of your problem file, then set the Context to the one you wish to use in the problem. Then use the command:

` parser::Root->Enable;`

(You can also pass the Enable command a pointer to a context if you wish to alter a context other than the current one.)

Once that is done, you (and students) can enter roots by using the `root()`

function. You can use `root()`

both within `Formula()`

and `Compute()`

calls, and in Perl expressions, such as

` $n = root(3,27);`

to obtain n-th roots. Note that `root()`

will properly handle odd roots of negative numbers, so

` $n = root(3,-8);`

will produce the equivalent of `$n = Real(-2)`

, but even roots of negative numbers will produce an error message.

If you enable `root()`

in a context that allows complex numbers, you may want to allow even roots of negative numbers. To do this, use

` parser::Root->EnableComplex;`

(again, you can pass a context to be altered, if you wish). This will force negative values to be promoted to complex numbers before an even root is taken. So

```
parser::Root->EnableComplex;
$z = root(2,-9);
```

would produce the equivalent of `$z = 3*i;`