マイナスを使ってはいけない理由を教えてください。
マクローリン級数展開をコンピュータで計算する際に、マイナスの値を使うとできない計算があります。具体的な式は、e=1+x+xの2乗/2の階乗+xの3乗/3の階乗+xの4乗/4の階乗....xのn乗/nの階乗。
この計算をプログラムでやると正しいeの値がでません。私の作ったプログラムを以下に載せます。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NUMBER 1.e-15
main()
{
double c,x,y,total,myexp();
x=-10;
y = myexp(x);
total=exp(x);
printf(\"input=%f\\n\",x);
printf(\"myexp=%.10e\\n\",y);
printf(\" exp =%.10e\\n\",total);
printf(\" \\n\");
}
double myexp(double x)
{
int count=1;
double total,i,ex,hiritu;
total = 1.0;
ex= 1.0;
hiritu=1.0;
// if(x < 0 ){
// x=x*-1;
// i=1;
// }
while(fabs(hiritu) >= NUMBER){
hiritu = total/ex;
printf(\"count= %d \",count);
total *= x/count++;
printf(\" total=%.10e \",total);
ex += total;
printf(\" ex =%.10e \",ex);
printf(\"\\n\");
}
// if(i == 1){
// ex = 1/ex;
// }
return(ex);
}
//の行をコメントではなくすると、マイナスの値を入れたときでも、正確な値を出すプログラムになります。デバックの行なども入っていますが、コンピュータで、このプログラムを用いて、マクローリン級数展開をすると、マイナスの値で正確な値がでない理由を知りたいです。ヒントでもいいのでお願いします。