# [LON-CAPA-dev] Re: [LON-CAPA-users] exponent in formula response

Peter Riegler lon-capa-dev@mail.lon-capa.org
Wed, 03 Feb 2010 16:48:53 +0100

```Hi,

Gerd Kortemeyer wrote:

> While I have not tried it, I suspect that 1/2*10.0^4 would behave differently, since it does not exactly match any of the patterns above.

I have tried this. The behavior is as suspected.

The very reason for the "malfunction" under discussion is the line
# 3x10^8 -> 3&8; 3*10^-8 -> 3&-8
\$expression=~s/(\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/\$1\&\(\$2\)/gsi;
It translates e.g. 1/2*10^2 into 1/2&2 which will eventually become
1/2e2. In other words 500 becomes 1/200.
Maybe we can fix this with something like
\$expression=~s/(\d+/\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/\$1*1\&\(\$2\)/gsi;
\$expression=~s/(\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/\$1\&\(\$2\)/gsi;
or even
\$expression=~s/(\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/\$1*1\&\(\$2\)/gsi;

In general I feel uneasy about what we are doing for implicit
multiplication. In the parlance of theoretical computer science: Are we
really dealing with a type-3 language here or is it a type-2 language?
If the latter is true we can't fully solve the issue with finite
automata/regexes but have to use a parser/stack machine.

Maybe someone can help to think all this through.

Peter

```