• Status: Solved
• Priority: Medium
• Security: Public
• Views: 381

# why 1/Double.Epsilon gives infinity?

why 1/Double.Epsilon gives infinity?
0
• 6
• 4
1 Solution

Freelance programmer / ConsultantCommented:
I was just about to say that in response to your (just deleted) question.
0

Freelance programmer / ConsultantCommented:
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 Commented:
well the other question was complicated i wanted to make it simpler lol.
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

Author Commented:
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 Commented:
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));
}
}
``````
0

Freelance programmer / ConsultantCommented:
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

Freelance programmer / ConsultantCommented:
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 Commented:
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 Commented:
yes exactly I am computing the gaussian function to weight my values.
0

Author Commented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.