Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

"Wish not to seem, but to be, the best." -- Aeschylus


tech / sci.electronics.design / Re: 0.0 / 0.0 = -NAN ?

SubjectAuthor
* Re: 0.0 / 0.0 = -NAN ?jlarkin
`* Re: 0.0 / 0.0 = -NAN ?Ricky
 +* Re: 0.0 / 0.0 = -NAN ?legg
 |+- Re: 0.0 / 0.0 = -NAN ?Martin Brown
 |+* Re: 0.0 / 0.0 = -NAN ?jlarkin
 ||`* Re: 0.0 / 0.0 = -NAN ?legg
 || `* Re: 0.0 / 0.0 = -NAN ?John Larkin
 ||  `* Re: 0.0 / 0.0 = -NAN ?whit3rd
 ||   +- Re: 0.0 / 0.0 = -NAN ?Ricky
 ||   `- Re: 0.0 / 0.0 = -NAN ?John Larkin
 |`* Re: 0.0 / 0.0 = -NAN ?whit3rd
 | `* Re: 0.0 / 0.0 = -NAN ?jlarkin
 |  +* Re: 0.0 / 0.0 = -NAN ?Martin Brown
 |  |+- Re: 0.0 / 0.0 = -NAN ?jlarkin
 |  |`* Re: 0.0 / 0.0 = -NAN ?Joe Gwinn
 |  | +* Re: 0.0 / 0.0 = -NAN ?Lasse Langwadt Christensen
 |  | |`* Re: 0.0 / 0.0 = -NAN ?Joe Gwinn
 |  | | `- Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |  | +* Re: 0.0 / 0.0 = -NAN ?John Larkin
 |  | |`- Re: 0.0 / 0.0 = -NAN ?Ricky
 |  | +* Re: 0.0 / 0.0 = -NAN ?Ricky
 |  | |+- Re: 0.0 / 0.0 = -NAN ?Joe Gwinn
 |  | |`* Re: 0.0 / 0.0 = -NAN ?none
 |  | | `- Re: 0.0 / 0.0 = -NAN ?Joe Gwinn
 |  | `* Re: 0.0 / 0.0 = -NAN ?Martin Brown
 |  |  +- Re: 0.0 / 0.0 = -NAN ?jlarkin
 |  |  `- Re: 0.0 / 0.0 = -NAN ?Joe Gwinn
 |  +* Re: 0.0 / 0.0 = -NAN ?whit3rd
 |  |`- Re: 0.0 / 0.0 = -NAN ?John Larkin
 |  `* Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |   +* Re: 0.0 / 0.0 = -NAN ?Lasse Langwadt Christensen
 |   |+* Re: 0.0 / 0.0 = -NAN ?Ricky
 |   ||`- Re: 0.0 / 0.0 = -NAN ?Lasse Langwadt Christensen
 |   |+- Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |   |`* Re: 0.0 / 0.0 = -NAN ?Martin Brown
 |   | +* Re: 0.0 / 0.0 = -NAN ?jlarkin
 |   | |`* Re: 0.0 / 0.0 = -NAN ?John Walliker
 |   | | `- Re: 0.0 / 0.0 = -NAN ?jlarkin
 |   | +* Re: 0.0 / 0.0 = -NAN ?rbowman
 |   | |+* Re: 0.0 / 0.0 = -NAN ?Lasse Langwadt Christensen
 |   | ||`- Re: 0.0 / 0.0 = -NAN ?rbowman
 |   | |`* Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |   | | `* Re: 0.0 / 0.0 = -NAN ?jlarkin
 |   | |  `- Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |   | `* Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |   |  +* Re: 0.0 / 0.0 = -NAN ?whit3rd
 |   |  |`- Re: 0.0 / 0.0 = -NAN ?Martin Brown
 |   |  `- Re: 0.0 / 0.0 = -NAN ?Martin Brown
 |   `* Re: 0.0 / 0.0 = -NAN ?John Larkin
 |    `* Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |     `* Re: 0.0 / 0.0 = -NAN ?jlarkin
 |      +* Re: 0.0 / 0.0 = -NAN ?Phil Hobbs
 |      |`- Re: 0.0 / 0.0 = -NAN ?jlarkin
 |      `- Re: 0.0 / 0.0 = -NAN ?Ricky
 `* Re: 0.0 / 0.0 = -NAN ?Ricky
  `* Re: 0.0 / 0.0 = -NAN ?Lasse Langwadt Christensen
   `- Re: 0.0 / 0.0 = -NAN ?Ricky

Pages:123
Re: 0.0 / 0.0 = -NAN ?

<44d87h156btjidn7mcjjalju5fsouloe21@4ax.com>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=96358&group=sci.electronics.design#96358

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!buffer2.nntp.dca1.giganews.com!buffer1.nntp.dca1.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Thu, 05 May 2022 15:56:25 -0500
From: joegw...@comcast.net (Joe Gwinn)
Newsgroups: sci.electronics.design
Subject: Re: 0.0 / 0.0 = -NAN ?
Date: Thu, 05 May 2022 16:56:24 -0400
Message-ID: <44d87h156btjidn7mcjjalju5fsouloe21@4ax.com>
References: <85f22bc1-17c7-46d9-b933-4c6238863740n@googlegroups.com> <4knq6h5avvjpbkd2c4mgblr3o0ns4q1tpg@4ax.com> <9607d68a-ec3b-473c-a30d-856beac3233bn@googlegroups.com> <jl6r6htkcvjsfcu27ai1ag1mp7ad2goij7@4ax.com> <e7d06869-d567-4145-ad01-f222a028033cn@googlegroups.com> <lgpv6hdhqkl6071e651cb4dd1qkf94aa48@4ax.com> <t4opqv$1fvg$1@gioia.aioe.org> <m7uv6ht5llvjffrcmfk5pau8erlnnrenaf@4ax.com> <t4tem2$1e99$1@gioia.aioe.org>
User-Agent: ForteAgent/8.00.32.1272
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Lines: 165
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-hBu/AE6oZblRYFUsKNypoBHTMdiKsT5DFnznCsgy3SpV+wvgpoCeSa58Kbtzg282WtvOL37WyS7uj6j!mYMHOltFvdYyn7/vENVLwGLCD9BrQ+g8ff+9dTAwoCFKELHYbK3NDDn8L0F1rD5J7PMFSS0=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Original-Bytes: 9270
 by: Joe Gwinn - Thu, 5 May 2022 20:56 UTC

On Wed, 4 May 2022 09:49:04 +0100, Martin Brown
<'''newspam'''@nonad.co.uk> wrote:

>On 02/05/2022 16:54, Joe Gwinn wrote:
>> On Mon, 2 May 2022 15:28:46 +0100, Martin Brown
>> <'''newspam'''@nonad.co.uk> wrote:
>>
>>> On 02/05/2022 15:10, jlarkin@highlandsniptechnology.com wrote:
>>>> On Sun, 1 May 2022 20:27:33 -0700 (PDT), whit3rd <whit3rd@gmail.com>
>>>> wrote:
>>>>
>>>>> On Saturday, April 30, 2022 at 1:23:21 PM UTC-7, legg wrote:
>>>>>> On Sat, 30 Apr 2022 10:47:30 -0700 (PDT), Ricky
>>>>>> <gnuarm.del...@gmail.com> wrote:
>>>>>>
>>>>>>> On Saturday, April 30, 2022 at 12:11:41 PM UTC-4, jla...@highlandsniptechnology.com wrote:
>>>>>
>>>>>>>> I wrote an s32.32 saturating math package for the 68K that always did
>>>>>>>> what was most reasonable.
>>>>>>>>
>>>>>>>> 0/0 = 0
>>>>>>>
>>>>>>> I'm sure no one can explain why 0/0 = 0 makes sense. Zero does not represent just exactly zero. Just as 1 is the range from 1/2 to 1-1/2, zero is the range from -1/2 to +1/2.
>>>>>>>
>>>>>>> If the denominator is not zero, as the numerator approaches zero, yes, in the limit, the result approaches zero. But if the numerator is not zero, as the denominator approaches zero, in the limit, the result approaches infinity. So why would 0/0=0 make sense?
>>>>>
>>>>>> I would have expected 0/0=1 ie no rational difference.
>>>>>
>>>>> That's the case if you consider lim x/x as x approaches zero. But,
>>>>> what of the limit of 2x/x, or -x/x, as x approaches zero? NAN is the
>>>>> best way to get a thinking human to understanding what the computer
>>>>> is trying to express.
>>>>
>>>> What does a control system do when the heater voltage is computed to
>>>> be NAN?
>>>
>>> Shut down. The situation should never arise if you have scaled the
>>> problem correctly and you should never be dividing by zero anyway.
>>>
>>> If the denominator of a division is zero then you haven't thought out
>>> the representation of your problem correctly. Testing for zero is
>>> usually quick (and often implicitly available in integer arithmetic).
>>
>> Umm. Testing for zero doesn't necessarily change anything.
>
>Yes it does. If you know you are about to divide by zero you can do
>something else instead and still save time. Divides are remarkably slow.
>(even today that still holds true).

The issue is not mathematical, it's geometric. Even if one can avoid
the actual division, the fundamental problem must still be addressed.
This requires domain knowledge, not just math, to know what's best to
do.

>I'm presently working on an algorithm that minimises divides to obtain
>higher speed - at least that was the original aim. Serendipitously I
>also found that then new schema simultaneously made the whole thing
>considerably more accurate as well as faster.
>
>Basically I can sometimes trade a hardware divide for a much more
>horrible algebraic expression involving the other fast primitive
>operations and still come out ahead on execution time and accuracy.

All true; relevance unclear.

>> I have a war story here. Many decades ago, I was the software
>> architect for the mission software of a ship self defense system that
>> shoots incoming cruise missiles down, if it can. From detection at
>> the horizon to impact on ownship is maybe twenty seconds.
>>
>> One fine day, a mob of software engineers turned up, locked in
>> argument about what to do if the engageability calculation suffered a
>> divide-by-zero exception.
>
>The important question here is is the divide by zero a real singularity
>or as seems likely a coordinate transform singularity from taking
>bearings and ranges into and out of x,y,z Cartesian coordinates.
>
>Altaz telescope mounts have exactly the same problems as gun turrets.
>Limited slew rates and allowable angles. It gets singular near the
>zenith since the scope cannot spin fast enough to track the sky there.
>This is a weak singularity but it has to be avoided.

Yes, but if the actual hardware is a gimbal, the singularity is
mechanical, not just mathematical. If avoidance is possible, that's
good. But ...

>Observation plans were always checked in simulated operation prior to
>the actual telescope run to avoid that zone.

Yep.

>> This is not a coding error per se, it's a mathematical singularity in
>> the equations - some engagement geometries will hit the singularity,
>> and the embedded realtime computers of that day could not handle the
>> more complicated math needed to avoid such things fast enough to
>> matter.
>
>But is it a true singularity or an artefact of how you are doing the
>computing? My instinct is that it is the latter or else it could only
>arise so rarely that taking the next set of measurements and processing
>them would get you out of the bind. I can see that there might be cases
>where the matrix inversion was singular for a single instant but that
>would only be true for that time slice.

I do recall doing a peer review of some algorithm design requirements
some time back. There was a vector math singularity if an airplane or
missile was flying on a line through the origin of the radar's local
coordinate system. This is a phased-array radar, so no gimbals. I
don't recall what that vector math was doing, but the solution was to
punch out a finite solid angle around that line (to accommodate
numerical noise and sensor imprecision and the like), and use special
processing there.

It does not matter if this situation is rare. Nor will the next
sample be different if the target is really flying along a radial.
Which could very well be true of say an incoming guided missile, a
situation of existential importance.

In my review example, I was lucky: with fresh eyes, I could see in
the vector math that zero divisor was possible, and from that what
physical situation would cause that to happen.

But the hazard could have been buried a bit deeper. In an algorithm I
was developing, using linear algebra, I've chased my tail trying to
figure out where random errors were coming from. Turned out to be
that one of the inputs was being wrapped into 360 degrees where the
unwrapped value was needed. Inverting a matrix involves division, and
this truncation error power was sprayed everywhere, with no error
flags thrown. The specific error pattern was the key. Recasting the
math so the angle remained unwrapped solved the problem.

>> There were two schools: Just provide a very large number and proceed,
>> praying. Stop and print out a bunch of diagnostic information.
>
>Clearly in a combat situation you can't afford to do anything other than
>reset the calculation and try again. Or if it is because you are naively
>calculating a value of tan(x) then set it to >10^18 and pray. That value
>being more than enough to ensure that x = pi to double precision.

Perhaps a reset suffices, perhaps not. The key here was domain
knowledge that a big value was more likely to work than say zero. Or
how to recast the math, if necessary.

>> Hmm. So the user, an ordinary sailor operating the self-defense
>> system is in the middle of an engagement with an incoming cruise
>> missile, and is suddenly handed a bunch or error messages, with less
>> than twenty seconds to live ... Really??? No! Just silently return
>> the best answer possible given the situation and press on, praying.
>
>Every division in safety critical or mission critical code should be
>checked for whether or not it can fail divide by zero and what if
>anything should be done about it if it does.

Yes, but the point is broader, that one should consider all corner
cases and singularities, not just divide by zero. The hard part being
to think of them all, in advance.

Joe Gwinn

Re: 0.0 / 0.0 = -NAN ?

<t52qiq$d1m$2@gioia.aioe.org>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=96380&group=sci.electronics.design#96380

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!aioe.org!woWShB6DIQvlDBD7PkJe+g.user.46.165.242.75.POSTED!not-for-mail
From: '''newsp...@nonad.co.uk (Martin Brown)
Newsgroups: sci.electronics.design
Subject: Re: 0.0 / 0.0 = -NAN ?
Date: Fri, 6 May 2022 10:42:50 +0100
Organization: Aioe.org NNTP Server
Message-ID: <t52qiq$d1m$2@gioia.aioe.org>
References: <85f22bc1-17c7-46d9-b933-4c6238863740n@googlegroups.com>
<4knq6h5avvjpbkd2c4mgblr3o0ns4q1tpg@4ax.com>
<9607d68a-ec3b-473c-a30d-856beac3233bn@googlegroups.com>
<jl6r6htkcvjsfcu27ai1ag1mp7ad2goij7@4ax.com>
<e7d06869-d567-4145-ad01-f222a028033cn@googlegroups.com>
<lgpv6hdhqkl6071e651cb4dd1qkf94aa48@4ax.com>
<31cd75e7-2c72-6923-1c33-dde5e74f13e7@electrooptical.net>
<be9971b0-243c-44bf-8cc9-a50d19905af8n@googlegroups.com>
<t4tcmq$kno$1@gioia.aioe.org>
<fc89999a-fda4-4161-c3bb-59e869c1e894@electrooptical.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="13366"; posting-host="woWShB6DIQvlDBD7PkJe+g.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.9.0
X-Notice: Filtered by postfilter v. 0.9.2
Content-Language: en-GB
 by: Martin Brown - Fri, 6 May 2022 09:42 UTC

On 04/05/2022 17:27, Phil Hobbs wrote:
> Martin Brown wrote:
>> On 02/05/2022 22:02, Lasse Langwadt Christensen wrote:
>>> mandag den 2. maj 2022 kl. 22.52.48 UTC+2 skrev Phil Hobbs:
>>>> jla...@highlandsniptechnology.com wrote:
>>>>> On Sun, 1 May 2022 20:27:33 -0700 (PDT), whit3rd <whi...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> On Saturday, April 30, 2022 at 1:23:21 PM UTC-7, legg wrote:
>>>>>>> On Sat, 30 Apr 2022 10:47:30 -0700 (PDT), Ricky
>>>>>>> <gnuarm.del...@gmail.com> wrote:
>>>>>>>
>>>>>>>> On Saturday, April 30, 2022 at 12:11:41 PM UTC-4,
>>>>>>>> jla...@highlandsniptechnology.com wrote:
>>>>>>
>>>>>>>>> I wrote an s32.32 saturating math package for the 68K that
>>>>>>>>> always did
>>>>>>>>> what was most reasonable.
>>>>>>>>>
>>>>>>>>> 0/0 = 0
>>>>>>>>
>>>>>>>> I'm sure no one can explain why 0/0 = 0 makes sense. Zero does
>>>>>>>> not represent just exactly zero. Just as 1 is the range from 1/2
>>>>>>>> to 1-1/2, zero is the range from -1/2 to +1/2.
>>>>>>>>
>>>>>>>> If the denominator is not zero, as the numerator approaches
>>>>>>>> zero, yes, in the limit, the result approaches zero. But if the
>>>>>>>> numerator is not zero, as the denominator approaches zero, in
>>>>>>>> the limit, the result approaches infinity. So why would 0/0=0
>>>>>>>> make sense?
>>>>>>
>>>>>>> I would have expected 0/0=1 ie no rational difference.
>>>>>>
>>>>>> That's the case if you consider lim x/x as x approaches zero. But,
>>>>>> what of the limit of 2x/x, or -x/x, as x approaches zero? NAN is the
>>>>>> best way to get a thinking human to understanding what the computer
>>>>>> is trying to express.
>>>>>
>>>>> What does a control system do when the heater voltage is computed to
>>>>> be NAN?
>>
>> It should worry about the skill of the programmer who wrote the code.
>>
>>>> Log it, skip the update, and press on to the next measurement.
>>
>> +1
>> Or maybe just count it. Not doing the divide saves enough time to do
>> something else that is *directly* under the programmers control.
>>
>> Divides particularly and sometimes multiplies have the possibility of
>> overflow or underflow if their inputs are unfriendly.
>>
>>> hoping that that doesn't slow the system down to much
>>
>> Division even on the current crop of fast processors is already so
>> slow that explicitly defending against division by zero and the
>> resulting trap handling recovery is invariably faster than the
>> alternative.
>
> And if it's _nearly_ singular, you can get denormals, which are really
> really slow.

Tell me about it! My first job as a graduate student was to sort out
some FLIC code that was running incredibly slowly written by a brilliant
physicist but in very unfriendly units. Scaled to hbar^3/c^2 it was
always teetering on the brink of denorms every step of the way.

It spent ~90% of its time in the Fortran denorm error handling code.

I had two solutions redefine hbar^3/c^2 == 1 or mask off denormal
interrupts so that they at least ran at full (slow) hardware speed.
Denormals are a favour granted to us by hardware engineers that makes
very small numbers marginally safer than very big ones.

The users (physicists) decided they wanted the latter solution.

They were very pleased with the 10x speed up.

--
Regards,
Martin Brown

Re: 0.0 / 0.0 = -NAN ?

<nnd$4c1792f9$25c95f8f@3794b6f69b479fd6>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=97931&group=sci.electronics.design#97931

  copy link   Newsgroups: sci.electronics.design
Newsgroups: sci.electronics.design
Subject: Re: 0.0 / 0.0 = -NAN ?
References: <85f22bc1-17c7-46d9-b933-4c6238863740n@googlegroups.com> <t4opqv$1fvg$1@gioia.aioe.org> <m7uv6ht5llvjffrcmfk5pau8erlnnrenaf@4ax.com> <90fb097e-85f0-4ca6-be35-b471d6498b32n@googlegroups.com>
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
From: alb...@cherry (none)
Originator: albert@cherry.(none) (albert)
Message-ID: <nnd$4c1792f9$25c95f8f@3794b6f69b479fd6>
Organization: KPN B.V.
Date: Mon, 30 May 2022 12:19:27 +0200
Path: i2pn2.org!i2pn.org!aioe.org!feeder1.feed.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!tr1.eu1.usenetexpress.com!94.232.112.246.MISMATCH!abe006.abavia.com!abp002.abavia.com!news.kpn.nl!not-for-mail
Lines: 93
Injection-Date: Mon, 30 May 2022 12:19:27 +0200
Injection-Info: news.kpn.nl; mail-complaints-to="abuse@kpn.com"
 by: none - Mon, 30 May 2022 10:19 UTC

In article <90fb097e-85f0-4ca6-be35-b471d6498b32n@googlegroups.com>,
Ricky <gnuarm.deletethisbit@gmail.com> wrote:
>On Monday, May 2, 2022 at 11:54:53 AM UTC-4, Joe Gwinn wrote:
>> On Mon, 2 May 2022 15:28:46 +0100, Martin Brown
>> <'''newspam'''@nonad.co.uk> wrote:
>> >On 02/05/2022 15:10, jla...@highlandsniptechnology.com wrote:
>> >> On Sun, 1 May 2022 20:27:33 -0700 (PDT), whit3rd <whi...@gmail.com>
>> >> wrote:
>> >>
>> >>> On Saturday, April 30, 2022 at 1:23:21 PM UTC-7, legg wrote:
>> >>>> On Sat, 30 Apr 2022 10:47:30 -0700 (PDT), Ricky
>> >>>> <gnuarm.del...@gmail.com> wrote:
>> >>>>
>> >>>>> On Saturday, April 30, 2022 at 12:11:41 PM UTC-4,
>jla...@highlandsniptechnology.com wrote:
>> >>>
>> >>>>>> I wrote an s32.32 saturating math package for the 68K that always did
>> >>>>>> what was most reasonable.
>> >>>>>>
>> >>>>>> 0/0 = 0
>> >>>>>
>> >>>>> I'm sure no one can explain why 0/0 = 0 makes sense. Zero does
>not represent just exactly zero. Just as 1 is the range from 1/2 to
>1-1/2, zero is the range from -1/2 to +1/2.
>> >>>>>
>> >>>>> If the denominator is not zero, as the numerator approaches
>zero, yes, in the limit, the result approaches zero. But if the
>numerator is not zero, as the denominator approaches zero, in the limit,
>the result approaches infinity. So why would 0/0=0 make sense?
>> >>>
>> >>>> I would have expected 0/0=1 ie no rational difference.
>> >>>
>> >>> That's the case if you consider lim x/x as x approaches zero. But,
>> >>> what of the limit of 2x/x, or -x/x, as x approaches zero? NAN is the
>> >>> best way to get a thinking human to understanding what the computer
>> >>> is trying to express.
>> >>
>> >> What does a control system do when the heater voltage is computed to
>> >> be NAN?
>> >
>> >Shut down. The situation should never arise if you have scaled the
>> >problem correctly and you should never be dividing by zero anyway.
>> >
>> >If the denominator of a division is zero then you haven't thought out
>> >the representation of your problem correctly. Testing for zero is
>> >usually quick (and often implicitly available in integer arithmetic).
>> Umm. Testing for zero doesn't necessarily change anything.
>>
>> I have a war story here. Many decades ago, I was the software
>> architect for the mission software of a ship self defense system that
>> shoots incoming cruise missiles down, if it can. From detection at
>> the horizon to impact on ownship is maybe twenty seconds.
>>
>> One fine day, a mob of software engineers turned up, locked in
>> argument about what to do if the engageability calculation suffered a
>> divide-by-zero exception.
>>
>> This is not a coding error per se, it's a mathematical singularity in
>> the equations - some engagement geometries will hit the singularity,
>> and the embedded realtime computers of that day could not handle the
>> more complicated math needed to avoid such things fast enough to
>> matter.
>>
>> There were two schools: Just provide a very large number and proceed,
>> praying. Stop and print out a bunch of diagnostic information.
>>
>> Hmm. So the user, an ordinary sailor operating the self-defense
>> system is in the middle of an engagement with an incoming cruise
>> missile, and is suddenly handed a bunch or error messages, with less
>> than twenty seconds to live ... Really??? No! Just silently return
>> the best answer possible given the situation and press on, praying.
>
>Was this because they could not use quaternions? I've heard of 3D
>calculations that are problematic because of issues in the math. They
>solve that in 3 dimensional control by adding a forth coordinate,
>quaternions, but obviously more calculations.

Approximately my thoughts. Incoming missiles is a geometric problem.
Dividing by zero comes about by applying goniometric formulae,
instead of using matrix algebra that doesn't have weird exceptions.
My bet is on incompetent software engineers.

>
>--
>Rick C.

Groetjes Albert
--
"in our communism country Viet Nam, people are forced to be
alive and in the western country like US, people are free to
die from Covid 19 lol" duc ha
albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst

Re: 0.0 / 0.0 = -NAN ?

<8dp99h19uqckqv6lv99p3to7iakfogp8uc@4ax.com>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=97942&group=sci.electronics.design#97942

  copy link   Newsgroups: sci.electronics.design
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!buffer2.nntp.dca1.giganews.com!buffer1.nntp.dca1.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Mon, 30 May 2022 10:42:06 -0500
From: joegw...@comcast.net (Joe Gwinn)
Newsgroups: sci.electronics.design
Subject: Re: 0.0 / 0.0 = -NAN ?
Date: Mon, 30 May 2022 11:42:05 -0400
Message-ID: <8dp99h19uqckqv6lv99p3to7iakfogp8uc@4ax.com>
References: <85f22bc1-17c7-46d9-b933-4c6238863740n@googlegroups.com> <t4opqv$1fvg$1@gioia.aioe.org> <m7uv6ht5llvjffrcmfk5pau8erlnnrenaf@4ax.com> <90fb097e-85f0-4ca6-be35-b471d6498b32n@googlegroups.com> <nnd$4c1792f9$25c95f8f@3794b6f69b479fd6>
User-Agent: ForteAgent/8.00.32.1272
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Lines: 88
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-RVUwON25HStqK8pf4OgUEbWsAT9g1JdtTysqOQENZ1pu5lKLyCl8uXWXf7vSLbHVwII1meIFdQIKkA0!q8UMIqWCXEyNGHZhhY8Ho6pK7KtVgbS00Nyk6/FsIJc1T3jBBCgdatmUr7i8m+eYCX98myw=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Original-Bytes: 5426
 by: Joe Gwinn - Mon, 30 May 2022 15:42 UTC

On Mon, 30 May 2022 12:19:27 +0200, albert@cherry.(none) (albert)
wrote:

>In article <90fb097e-85f0-4ca6-be35-b471d6498b32n@googlegroups.com>,
>Ricky <gnuarm.deletethisbit@gmail.com> wrote:
>>On Monday, May 2, 2022 at 11:54:53 AM UTC-4, Joe Gwinn wrote:
>>> On Mon, 2 May 2022 15:28:46 +0100, Martin Brown
>>> <'''newspam'''@nonad.co.uk> wrote:
>>> >On 02/05/2022 15:10, jla...@highlandsniptechnology.com wrote:
>>> >> On Sun, 1 May 2022 20:27:33 -0700 (PDT), whit3rd <whi...@gmail.com>
>>> >> wrote:
>>> >>
>>> >>> On Saturday, April 30, 2022 at 1:23:21 PM UTC-7, legg wrote:
>>> >>>> On Sat, 30 Apr 2022 10:47:30 -0700 (PDT), Ricky
>>> >>>> <gnuarm.del...@gmail.com> wrote:
>>> >>>>
>>> >>>>> On Saturday, April 30, 2022 at 12:11:41 PM UTC-4,
>>jla...@highlandsniptechnology.com wrote:
>>> >>>
>>> >>>>>> I wrote an s32.32 saturating math package for the 68K that always did
>>> >>>>>> what was most reasonable.
>>> >>>>>>
>>> >>>>>> 0/0 = 0
>>> >>>>>
>>> >>>>> I'm sure no one can explain why 0/0 = 0 makes sense. Zero does
>>not represent just exactly zero. Just as 1 is the range from 1/2 to
>>1-1/2, zero is the range from -1/2 to +1/2.
>>> >>>>>
>>> >>>>> If the denominator is not zero, as the numerator approaches
>>zero, yes, in the limit, the result approaches zero. But if the
>>numerator is not zero, as the denominator approaches zero, in the limit,
>>the result approaches infinity. So why would 0/0=0 make sense?
>>> >>>
>>> >>>> I would have expected 0/0=1 ie no rational difference.
>>> >>>
>>> >>> That's the case if you consider lim x/x as x approaches zero. But,
>>> >>> what of the limit of 2x/x, or -x/x, as x approaches zero? NAN is the
>>> >>> best way to get a thinking human to understanding what the computer
>>> >>> is trying to express.
>>> >>
>>> >> What does a control system do when the heater voltage is computed to
>>> >> be NAN?
>>> >
>>> >Shut down. The situation should never arise if you have scaled the
>>> >problem correctly and you should never be dividing by zero anyway.
>>> >
>>> >If the denominator of a division is zero then you haven't thought out
>>> >the representation of your problem correctly. Testing for zero is
>>> >usually quick (and often implicitly available in integer arithmetic).
>>> Umm. Testing for zero doesn't necessarily change anything.
>>>
>>> I have a war story here. Many decades ago, I was the software
>>> architect for the mission software of a ship self defense system that
>>> shoots incoming cruise missiles down, if it can. From detection at
>>> the horizon to impact on ownship is maybe twenty seconds.
>>>
>>> One fine day, a mob of software engineers turned up, locked in
>>> argument about what to do if the engageability calculation suffered a
>>> divide-by-zero exception.
>>>
>>> This is not a coding error per se, it's a mathematical singularity in
>>> the equations - some engagement geometries will hit the singularity,
>>> and the embedded realtime computers of that day could not handle the
>>> more complicated math needed to avoid such things fast enough to
>>> matter.
>>>
>>> There were two schools: Just provide a very large number and proceed,
>>> praying. Stop and print out a bunch of diagnostic information.
>>>
>>> Hmm. So the user, an ordinary sailor operating the self-defense
>>> system is in the middle of an engagement with an incoming cruise
>>> missile, and is suddenly handed a bunch or error messages, with less
>>> than twenty seconds to live ... Really??? No! Just silently return
>>> the best answer possible given the situation and press on, praying.
>>
>>Was this because they could not use quaternions? I've heard of 3D
>>calculations that are problematic because of issues in the math. They
>>solve that in 3 dimensional control by adding a forth coordinate,
>>quaternions, but obviously more calculations.
>
>Approximately my thoughts. Incoming missiles is a geometric problem.
>Dividing by zero comes about by applying goniometric formulae,
>instead of using matrix algebra that doesn't have weird exceptions.
>My bet is on incompetent software engineers.

Not exactly.. See earlier answers.

Joe Gwinn

Re: 0.0 / 0.0 = -NAN ?

<c933b81f-4df0-4763-ae07-3f457c42ed10n@googlegroups.com>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=97944&group=sci.electronics.design#97944

  copy link   Newsgroups: sci.electronics.design
X-Received: by 2002:a37:de0c:0:b0:69e:cd37:7646 with SMTP id h12-20020a37de0c000000b0069ecd377646mr38761417qkj.449.1653926692665;
Mon, 30 May 2022 09:04:52 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:65b:318:c009 with SMTP id q3-20020a5b0f83000000b0065b0318c009mr17304514ybh.410.1653926692440;
Mon, 30 May 2022 09:04:52 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: sci.electronics.design
Date: Mon, 30 May 2022 09:04:52 -0700 (PDT)
In-Reply-To: <9607d68a-ec3b-473c-a30d-856beac3233bn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=70.45.109.64; posting-account=I-_H_woAAAA9zzro6crtEpUAyIvzd19b
NNTP-Posting-Host: 70.45.109.64
References: <85f22bc1-17c7-46d9-b933-4c6238863740n@googlegroups.com>
<4knq6h5avvjpbkd2c4mgblr3o0ns4q1tpg@4ax.com> <9607d68a-ec3b-473c-a30d-856beac3233bn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <c933b81f-4df0-4763-ae07-3f457c42ed10n@googlegroups.com>
Subject: Re: 0.0 / 0.0 = -NAN ?
From: gnuarm.d...@gmail.com (Ricky)
Injection-Date: Mon, 30 May 2022 16:04:52 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: Ricky - Mon, 30 May 2022 16:04 UTC

On Saturday, April 30, 2022 at 1:47:35 PM UTC-4, Ricky wrote:
> On Saturday, April 30, 2022 at 12:11:41 PM UTC-4, jla...@highlandsniptechnology.com wrote:
> > On Sat, 30 Apr 2022 08:31:47 -0700 (PDT), Skybuck Flying
> > <skybuc...@gmail.com> wrote:
> >
> > >When exception masks are all enabled to stop the processor from throwing floating point exceptions the following calculation produces a somewhat strange result:
> > >
> > >0.0 / 0.0 = -nan
> > >
> > >(At least in Delphi).
> > >
> > >For now I will assume this is the case in C/C++ as well and with that I mean on x86/x64 which should and seems to be following IEEE 754 floating-point format.
> > >
> > >I am a little bit surprised by this and I want/need to know more. Where is this defined that 0.0 / 0.0 should be -NAN ?!?
> > >
> > >Problem is with the code, example:
> > >
> > >T := 0;
> > >D := 0.0 / 0.0;
> > >P := T * D;
> > >
> > >This screws up P. instead of P being zero, P is now also -NAN ?!?
> > >
> > >I find this very strange but ok.
> > >
> > >I guess a simple solution could be to set D to 0 explicitly for this case, is there perhaps another solution ? Maybe some kind of mask or rounding mode so that additional branch is not necessary ???
> > >
> > >Bye for now,
> > >Skybuck.
> > I wrote an s32.32 saturating math package for the 68K that always did
> > what was most reasonable.
> >
> > 0/0 = 0
> I'm sure no one can explain why 0/0 = 0 makes sense. Zero does not represent just exactly zero. Just as 1 is the range from 1/2 to 1-1/2, zero is the range from -1/2 to +1/2.
>
> If the denominator is not zero, as the numerator approaches zero, yes, in the limit, the result approaches zero. But if the numerator is not zero, as the denominator approaches zero, in the limit, the result approaches infinity. So why would 0/0=0 make sense?
>
> That is exactly why anything divided by zero is NAN in a good math package. If you want to produce a result for 0/0, then that should be hard coded with clear documentation of what is being done and why it is acceptable.
>
> The rationale that, "it works" means it works for the cases tested. Very sloppy indeed.

I encountered an issue where code divides by zero. In my test fixture four measurements are taken with one as a reference. The other three are converted to dB against the reference. There are hardware failures where all four measurements are zero and the three calculations produce NAN. The crosstalk test does not report a failure. Turns out the comparison operator F< returns a FALSE (not an error) when either of the inputs are NAN. So I reversed the operands and inverted the resulting flag so that now the default FALSE is a TRUE flagging an error.

Is there a convention, or is it part of the IEEE standard how NAN is handled in such comparisons?

--

Rick C.

--- Get 1,000 miles of free Supercharging
--- Tesla referral code - https://ts.la/richard11209

Re: 0.0 / 0.0 = -NAN ?

<9e62845b-edbc-40e6-901e-eb4ebd962aadn@googlegroups.com>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=97953&group=sci.electronics.design#97953

  copy link   Newsgroups: sci.electronics.design
X-Received: by 2002:ac8:7d46:0:b0:2f3:dd89:5557 with SMTP id h6-20020ac87d46000000b002f3dd895557mr44756523qtb.567.1653930140287;
Mon, 30 May 2022 10:02:20 -0700 (PDT)
X-Received: by 2002:a0d:ca56:0:b0:30c:4195:296e with SMTP id
m83-20020a0dca56000000b0030c4195296emr7559276ywd.343.1653930140144; Mon, 30
May 2022 10:02:20 -0700 (PDT)
Path: i2pn2.org!rocksolid2!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: sci.electronics.design
Date: Mon, 30 May 2022 10:02:19 -0700 (PDT)
In-Reply-To: <c933b81f-4df0-4763-ae07-3f457c42ed10n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=94.145.246.173; posting-account=mW5JKwkAAAAMyuWOVeLp8yffyAkVx0g7
NNTP-Posting-Host: 94.145.246.173
References: <85f22bc1-17c7-46d9-b933-4c6238863740n@googlegroups.com>
<4knq6h5avvjpbkd2c4mgblr3o0ns4q1tpg@4ax.com> <9607d68a-ec3b-473c-a30d-856beac3233bn@googlegroups.com>
<c933b81f-4df0-4763-ae07-3f457c42ed10n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9e62845b-edbc-40e6-901e-eb4ebd962aadn@googlegroups.com>
Subject: Re: 0.0 / 0.0 = -NAN ?
From: langw...@fonz.dk (Lasse Langwadt Christensen)
Injection-Date: Mon, 30 May 2022 17:02:20 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 4592
 by: Lasse Langwadt Chris - Mon, 30 May 2022 17:02 UTC

mandag den 30. maj 2022 kl. 18.04.57 UTC+2 skrev Ricky:
> On Saturday, April 30, 2022 at 1:47:35 PM UTC-4, Ricky wrote:
> > On Saturday, April 30, 2022 at 12:11:41 PM UTC-4, jla...@highlandsniptechnology.com wrote:
> > > On Sat, 30 Apr 2022 08:31:47 -0700 (PDT), Skybuck Flying
> > > <skybuc...@gmail.com> wrote:
> > >
> > > >When exception masks are all enabled to stop the processor from throwing floating point exceptions the following calculation produces a somewhat strange result:
> > > >
> > > >0.0 / 0.0 = -nan
> > > >
> > > >(At least in Delphi).
> > > >
> > > >For now I will assume this is the case in C/C++ as well and with that I mean on x86/x64 which should and seems to be following IEEE 754 floating-point format.
> > > >
> > > >I am a little bit surprised by this and I want/need to know more. Where is this defined that 0.0 / 0.0 should be -NAN ?!?
> > > >
> > > >Problem is with the code, example:
> > > >
> > > >T := 0;
> > > >D := 0.0 / 0.0;
> > > >P := T * D;
> > > >
> > > >This screws up P. instead of P being zero, P is now also -NAN ?!?
> > > >
> > > >I find this very strange but ok.
> > > >
> > > >I guess a simple solution could be to set D to 0 explicitly for this case, is there perhaps another solution ? Maybe some kind of mask or rounding mode so that additional branch is not necessary ???
> > > >
> > > >Bye for now,
> > > >Skybuck.
> > > I wrote an s32.32 saturating math package for the 68K that always did
> > > what was most reasonable.
> > >
> > > 0/0 = 0
> > I'm sure no one can explain why 0/0 = 0 makes sense. Zero does not represent just exactly zero. Just as 1 is the range from 1/2 to 1-1/2, zero is the range from -1/2 to +1/2.
> >
> > If the denominator is not zero, as the numerator approaches zero, yes, in the limit, the result approaches zero. But if the numerator is not zero, as the denominator approaches zero, in the limit, the result approaches infinity. So why would 0/0=0 make sense?
> >
> > That is exactly why anything divided by zero is NAN in a good math package. If you want to produce a result for 0/0, then that should be hard coded with clear documentation of what is being done and why it is acceptable.
> >
> > The rationale that, "it works" means it works for the cases tested. Very sloppy indeed.
>
> I encountered an issue where code divides by zero. In my test fixture four measurements are taken with one as a reference. The other three are converted to dB against the reference. There are hardware failures where all four measurements are zero and the three calculations produce NAN. The crosstalk test does not report a failure. Turns out the comparison operator F< returns a FALSE (not an error) when either of the inputs are NAN. So I reversed the operands and inverted the resulting flag so that now the default FALSE is a TRUE flagging an error.
>
> Is there a convention, or is it part of the IEEE standard how NAN is handled in such comparisons?
>

https://en.wikipedia.org/wiki/NaN#Comparison_with_NaN

Re: 0.0 / 0.0 = -NAN ?

<d5a00091-947f-4304-8e42-2d77bbe6c8d8n@googlegroups.com>

  copy mid

https://www.novabbs.com/tech/article-flat.php?id=97962&group=sci.electronics.design#97962

  copy link   Newsgroups: sci.electronics.design
X-Received: by 2002:a05:6214:1bc7:b0:45b:85e:e5a4 with SMTP id m7-20020a0562141bc700b0045b085ee5a4mr46781436qvc.57.1653932584745;
Mon, 30 May 2022 10:43:04 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:65b:318:c009 with SMTP id q3-20020a5b0f83000000b0065b0318c009mr17742356ybh.410.1653932584539;
Mon, 30 May 2022 10:43:04 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: sci.electronics.design
Date: Mon, 30 May 2022 10:43:04 -0700 (PDT)
In-Reply-To: <9e62845b-edbc-40e6-901e-eb4ebd962aadn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=70.45.109.64; posting-account=I-_H_woAAAA9zzro6crtEpUAyIvzd19b
NNTP-Posting-Host: 70.45.109.64
References: <85f22bc1-17c7-46d9-b933-4c6238863740n@googlegroups.com>
<4knq6h5avvjpbkd2c4mgblr3o0ns4q1tpg@4ax.com> <9607d68a-ec3b-473c-a30d-856beac3233bn@googlegroups.com>
<c933b81f-4df0-4763-ae07-3f457c42ed10n@googlegroups.com> <9e62845b-edbc-40e6-901e-eb4ebd962aadn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d5a00091-947f-4304-8e42-2d77bbe6c8d8n@googlegroups.com>
Subject: Re: 0.0 / 0.0 = -NAN ?
From: gnuarm.d...@gmail.com (Ricky)
Injection-Date: Mon, 30 May 2022 17:43:04 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: Ricky - Mon, 30 May 2022 17:43 UTC

On Monday, May 30, 2022 at 1:02:24 PM UTC-4, lang...@fonz.dk wrote:
> mandag den 30. maj 2022 kl. 18.04.57 UTC+2 skrev Ricky:
> > On Saturday, April 30, 2022 at 1:47:35 PM UTC-4, Ricky wrote:
> > > On Saturday, April 30, 2022 at 12:11:41 PM UTC-4, jla...@highlandsniptechnology.com wrote:
> > > > On Sat, 30 Apr 2022 08:31:47 -0700 (PDT), Skybuck Flying
> > > > <skybuc...@gmail.com> wrote:
> > > >
> > > > >When exception masks are all enabled to stop the processor from throwing floating point exceptions the following calculation produces a somewhat strange result:
> > > > >
> > > > >0.0 / 0.0 = -nan
> > > > >
> > > > >(At least in Delphi).
> > > > >
> > > > >For now I will assume this is the case in C/C++ as well and with that I mean on x86/x64 which should and seems to be following IEEE 754 floating-point format.
> > > > >
> > > > >I am a little bit surprised by this and I want/need to know more. Where is this defined that 0.0 / 0.0 should be -NAN ?!?
> > > > >
> > > > >Problem is with the code, example:
> > > > >
> > > > >T := 0;
> > > > >D := 0.0 / 0.0;
> > > > >P := T * D;
> > > > >
> > > > >This screws up P. instead of P being zero, P is now also -NAN ?!?
> > > > >
> > > > >I find this very strange but ok.
> > > > >
> > > > >I guess a simple solution could be to set D to 0 explicitly for this case, is there perhaps another solution ? Maybe some kind of mask or rounding mode so that additional branch is not necessary ???
> > > > >
> > > > >Bye for now,
> > > > >Skybuck.
> > > > I wrote an s32.32 saturating math package for the 68K that always did
> > > > what was most reasonable.
> > > >
> > > > 0/0 = 0
> > > I'm sure no one can explain why 0/0 = 0 makes sense. Zero does not represent just exactly zero. Just as 1 is the range from 1/2 to 1-1/2, zero is the range from -1/2 to +1/2.
> > >
> > > If the denominator is not zero, as the numerator approaches zero, yes, in the limit, the result approaches zero. But if the numerator is not zero, as the denominator approaches zero, in the limit, the result approaches infinity. So why would 0/0=0 make sense?
> > >
> > > That is exactly why anything divided by zero is NAN in a good math package. If you want to produce a result for 0/0, then that should be hard coded with clear documentation of what is being done and why it is acceptable..
> > >
> > > The rationale that, "it works" means it works for the cases tested. Very sloppy indeed.
> >
> > I encountered an issue where code divides by zero. In my test fixture four measurements are taken with one as a reference. The other three are converted to dB against the reference. There are hardware failures where all four measurements are zero and the three calculations produce NAN. The crosstalk test does not report a failure. Turns out the comparison operator F< returns a FALSE (not an error) when either of the inputs are NAN. So I reversed the operands and inverted the resulting flag so that now the default FALSE is a TRUE flagging an error.
> >
> > Is there a convention, or is it part of the IEEE standard how NAN is handled in such comparisons?
> >
> https://en.wikipedia.org/wiki/NaN#Comparison_with_NaN

Yes, I'd seen that before and forgot it. Thanks.

--

Rick C.

--+ Get 1,000 miles of free Supercharging
--+ Tesla referral code - https://ts.la/richard11209

Pages:123
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor