I am writing a Machine Learning (ML) program using XML and XSLT. Part of the program involves evaluating something called a Sigmoid function:
The right-hand side of that expression can be expressed in XPath this way:
1 div (1 + math.exp(-$x))
An equivalent expression is this:
math:pow(1 + math:exp(-$x), -1)
Which expression is better? By "better" I mean any one of these:
- produces more accurate results
- is faster
- is easier to understand, more intuitive
Or, are the two expressions equally good?
Scroll down for the answer …
The first one is better. Here’s why.
They are not equivalent! 1 div 0.0 and math:pow(0.0,-1) produce different results. The first throws an error with the message, “Decimal divide by zero.” The second silently (without error) returns INF; it might not be till some remote downstream process that the INF finally manifests an error. I want to be informed immediately of an error, so the first is definitely better for me.
Thank you David Carlisle for pointing out this difference to me.
/Roger