that wasn't the conclusion that I expected you to draw from my reply:-)I was just pointing out the functions were different, not saying one was better than the other,The division by zero can't happen for 1/(1+e^-x) anyway but even for your original questionjust asking about 1/x, returning inf may be preferable to returning an error, depending on what you want to do,you didn't highlight it but -1 is a double so math:pow($x,-1) is quite a tricky function, math:pow($x(xs:int(-1)) with an integer power is much simpler to define.https://www.w3.org/TR/xpath-functions/#func-math-pow references the integer and double case separately.DavidOn Sat, 27 Jun 2020 at 20:13, Roger L Costello <costello@mitre.org> wrote: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