if there occurs something like a*a in your expression, but you also might want negative output, then this expression simsply isnt finished.
a typical situation where one runs into this problem is when using pythagoras to find points in a system.
you will have to split the expression into one "version" for negative and one for positive.
example:
[expr pow($f1\,2.) * ($f1>=0.) + (pow($f1\,2.)*-1) * ($f1