I keep getting SIGFPE error when i try to run my program. Why so?

This is the easiest runtime error to debug - it is a floating point error. It is virtually always caused by a division by 0, so check any divisions or modulo operations in your code carefully.

#include<stdio.h>

long int fact(int);

int main()

{

int t,n;

scanf("%d",&t);

while(tâ€“)

{

scanf("%d",&n);

long int r,sum=0,mod=1000000007;

for(r=0;r<=(long int)(n/2.0);r++)

sum+=((fact(n)/(factÂ®*fact(n-r)))%3);
sum*=2;

if(n%2==0)

sum-=((fact(n)/(fact(n/2)*fact(n/2)))%3);

printf("%ld\n",(sum%mod));

}

return 0;

}

long int fact( int n)

{

if(n==0||n==1)

return 1;

long int pro=1;

while(n!=1)

pro*=nâ€“;

return pro;

}

i am getting the same SIGFPE error but cannot debug the program,can anyone please locate the bug

Your code fails for input:

1

68

This is because fact() function overflows resulting in fact(34)=0.

Read about Integer Overflows: http://en.wikipedia.org/wiki/Integer_overflow

SIGFPE may occur due to

- division by zero
- modulo operation by zero
- integer overflow (when the value you are trying to store exceeds the range) - trying using a bigger data type like long.

SIFFPE is very easy to debug.

Why am i getting runtime here??

# include

# include

long long int a,b,c=0;

int calc();

int mod();

int main()

{

```
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&a,&b);
printf("%lld\n",calc());
}
return 0;
```

}

int mod(){

```
if(a>b)
{
if(a%b==0)
{
return 1;
}
return 0;
}
else {
if(b%a==0)
{
return 1;
}
return 0;
}
```

}

int calc()

{

// printf(â€śaâ€ť);

if(mod()==0)

{

while(a!=b)

{

a*=2;

c++;

```
}
return c;
}
while(mod())
{
if(a%2==0)
{
a/=2;
c++;
}
else{ a=(a-1)/2;
c++;
}
}}
```

It is a signal representing core dumped means if you do any invalid operation the you will get â€śSIGFPEâ€ť

error. In case floating point error means division by 0 cause this error so please check your code and make sure that you are not operating this type of operation means make sure that you are not dividing by 0

#include<stdio.h>

#include<math.h>

int gcd(int n1, int n2)

{

int min,i, hcf;

```
min=(n1>n2)?n2:n1;
for(i=min; i>=1; --i)
{
if(n1%i==0 && n2%i==0)
{
hcf=i;
break;
}
}
// printf("%d\n",hcf);
return hcf;
```

}

int fd(int a, int b)

{

int count, i, j, total;

count=total=0;

for(i=a; i<=b; i++)

{

count=0;

for(j=1; j<i; j++)

if(gcd(i,j)==1)

count++;

```
if(i%count==0)
total++;
}
//printf("%d\n",total);
return total;
```

}

int main()

{

long long a,j, b,i=0,n, yes;

scanf("%lld", &n);

while(nâ€“)

{

scanf("%lld%lld", &a,&b);

```
yes=fd(a,b);
printf("%lld\n",yes);
}
return 0;
```

}

why i m getting sigfpe error in this programâ€¦can any1 help??

#include<stdio.h>

main()

{

long int a,b,c,d,e,j,I,n;

scanf("%ld",&a);

for(I=0;I<a;I++)

{

scanf("%ld%ld",&b,&c);

e=b*c;
for(j=e;j>1;jâ€“)
{
n=j*j;

if(e%n==0)

{

d=e/n;

printf("%ld",d);

break;

}

}

}

}I am getting sigfpe.Where is the problem in my code .Can any one to it???

Apart from other answers one more thing which causes this error is modulo operation by 1

#include

using namespace std;

int main()

{

long long int n;

cin>>n;

long long int a[n+1],mul[n+1]={1};

mul[0]=1;

for(long long int i=1;i<=n;i++)

{

cin>>a[i];

mul[i]=1;

}

for(long long int i=1;i<=n;i++)

{

mul[i]=mul[i-1]*a[i];

}

long long int t;

cin>>t;

while(tâ€“)

{

long long int re=1,li,ri,mi;

cin>>li>>ri>>mi;

re=(mul[ri])/(mul[li-1]);

if(re>=mi)

{

re=re%mi;

}

cout<<re<<endl;

}

return 0;

}

iam getting run time error what is the problem

Why am I getting RUNTIME(SIGFPE) error? can anyone help??

Link to my code: https://www.codechef.com/viewsolution/13277608

Thanks in advance!

Note:- In C++ if you fail to typecast the variables properly , you may end up facing a SIGFPE . I faced one as I was storing an int value in a vector of long long int !

use if conditions t ocheck whether anything results in 0 or not

why am i getting RUNTIME SIGFPE error?

link to my code: https://www.codechef.com/viewsolution/18629624

@ashishpm Bro keep dividing the multiplication as its increasing as it is causing Integer Overflowâ€¦you are doing whole multiplication at once which is causing To extend the long long range making it negative.