Solved

why 1/Double.Epsilon gives infinity?

Posted on 2011-03-02
10
371 Views
Last Modified: 2012-05-11
why 1/Double.Epsilon gives infinity?
0
Comment
Question by:dadadude
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
10 Comments
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 35019856
I was just about to say that in response to your (just deleted) question.
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 35019875
Basically epsilon is the smallest number that can be represented by a double, just a fraction above zero.  Trying to divide one by epsilon just isn't handled by the .net framework.

Back to your original question - you need to set a limit below which the function isn't being called, rather than trying to hack around it by adding epsilon
0
 

Author Comment

by:dadadude
ID: 35019879
well the other question was complicated i wanted to make it simpler lol.
i found that on google:
double.Epsilon is denormalized, so it is smaller than 2**(min exponent). There is no equivalent of denormalization for extremely large values, so the reciprocal is too large to be representable.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:dadadude
ID: 35019892
Andy what do u mean by:
Back to your original question - you need to set a limit below which the function isn't being called, rather than trying to hack around it by adding epsilon
0
 

Author Comment

by:dadadude
ID: 35019914
Do you mean that there might be something wrong in the function.?
actually sigma is the Standard deviation:
public static double StandardDeviation(List<double> num)
    {
        double SumOfSqrs = 0;

        double avg = num.Average();

        for (int i = 0; i < num.Count; i++)
        {
            SumOfSqrs += Math.Pow(((double)num[i] - avg), 2);
        }

        double n = (double)num.Count;
        if (n == 1)
        {
            return Math.Sqrt(SumOfSqrs);
        }
        else
        {
            return Math.Sqrt(SumOfSqrs / (n - 1));
        }
    }

Open in new window

0
 
LVL 44

Accepted Solution

by:
AndyAinscow earned 500 total points
ID: 35019925
Your other question where you attempted to add the value epsilon to prevent a divide by zero error.
Instead you need to check if the value you are going to divide by is below a limit (up to you how much it is) and then return a suitable default value.
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 35019949
public static double StandardDeviation(List<double> num)
That looks OK, but that isn't the function in the deleted question:

I am having a problem with non-numerical
if sigma = 0;
it is always giving Non-numerica even if i add Double.Epsilon
   double weight = (1.0 /( Math.Sqrt(2.0 * Math.PI * sigma + Double.Epsilon)+Double.Epsilon))*Math.Exp(-Math.Pow((double)s1.Count-mu,2.0)/(Math.Pow(sigma+Double.Epsilon,2.0)));
0
 

Author Comment

by:dadadude
ID: 35019962
oh ok I understand.
yes i think that you are right.
anyway thanks for your help. always a pleasure.
i finish my work on the code today, i still have to normilize  the matrix.

Take care.
0
 

Author Comment

by:dadadude
ID: 35019974
yes exactly I am computing the gaussian function to weight my values.
0
 

Author Comment

by:dadadude
ID: 35019986
The formula is very complicated . I posted it many times in here. but i got no answer for weeks sometimes.
if u are interested you can check: Levine-nazif Inter cluster contrast and intra-cluster uniformity.
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question