xsl-list
[Top] [All Lists]

Re: [xsl] Is this the best way to compute a sigmoid function?

2020-05-02 15:53:19
Apart from determining the value of G or the fine constant, or a few other 
esoteric determination of funadamental constants, what practical issues require 
more than 7-8 significant figures of precision?

Yes, some interplanetary differentials might at times. (Our moon recedes from 
us as fast as your fingernails grow, and GPS internals can need sub-nanosecond 
differential time intervals) but what ones we might encounter in the XML world.

The ‘fetish’ of chasing decimal places in most, but not all, cases shows a 
lack of understanding of the essence of the problem.

The (artificial) epitome of this is the well-trodden problem of a railway 
around the world that must be lifted up 1 cm, but stays circular... how much 
more rail is needed?
‘Where angels fear to tread’ rush in with finding the difference by
 2*pi*6,357,000.01 - 2*pi*6,357,000
which requires 9-10 places of numerical precision (i.e. approaching 30 bits of 
mantissa) neglecting the deeper structure of the mathematics..

John Lumley
john(_at_)johnlumley(_dot_)net

On 2 May 2020, at 19:09, Michael Kay mike(_at_)saxonica(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:


On 2 May 2020, at 18:55, Costello, Roger L. costello(_at_)mitre(_dot_)org 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:


I want to compute the result of evaluating this sigmoid function:

    1
----------------
(1 + e**-x)

That is, compute 1 divided by (1 + e raised to the -x power)

In recent versions of XPath, you can simply do 

(1 div (1 + math:exp(-$x)))

(However, it already appears to be mighty accurate -- look at all those 
digits to the right of the decimal point)

I hope you don't seriously believe that precision implies accuracy - that 
someone who claims the population of the world is 7,345,651,523 is more 
likely to be right than someone who says it is 7 billion.

Notice that for the variable $e-to-the-minus-x-power I specified it this 
way: as="xs:decimal". Should I have specified it this way: as="xs:float" 
instead? 

For calculations like this it's best to use xs:double. You don't need any 
more precision than this, and exponential/trigonometric functions are likely 
to be implemented as double-precision floating point by whatever underlying 
library is used.

Michael Kay
Saxonica
XSL-List info and archive
EasyUnsubscribe (by email)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>