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

 Subject: Re: [xsl] Is this the best way to compute a sigmoid function? From: "Michael Kay mike@xxxxxxxxxxxx" Date: Sat, 2 May 2020 21:33:58 -0000
```It's a long time (almost 50 years!) since I studied numerical methods as an
undergraduate, and while David Wheeler could be an incredibly boring lecturer,
I do recall him demonstrating how repetitive numerical calculations could lose
precision at an alarming rate. So the reason we calculate to 15 digits is not
that we need 15 digits in the final answer, but rather because the errors
accumulate, so if we want 5 digits in the final answer, we may need 15 digits
in the intermediate steps.

Michael Kay
Saxonica

> On 2 May 2020, at 21:53, John Lumley john.lumley@xxxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> o;?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.
>
> o;?The bfetishb 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?
> bWhere angels fear to treadb 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@xxxxxxxxxxxxxx
>
>> On 2 May 2020, at 19:09, Michael Kay mike@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>>
>> o;?
>>
>>> On 2 May 2020, at 18:55, Costello, Roger L. costello@xxxxxxxxx
<mailto:costello@xxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx
<mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> 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)
>>
>>
>> (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"
>>
>> 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 <http://www.mulberrytech.com/xsl/xsl-list>
>> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/949522> (by
email <applewebdata://2896573D-12DF-4038-BCB1-7D3643583865>)
>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email <>)

```