- From: David Carlisle <d.p.carlisle@g...>
- To: Roger L Costello <costello@m...>
- Date: Sat, 27 Jun 2020 20:38:28 +0100
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 question just 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.
David
On Sat, 27 Jun 2020 at 20:13, Roger L Costello < costello@m...> wrote:
Hi Folks,
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
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
|