if(fabs(x)<=1)
y=asin(x);
else
y=…
对数函数也可作类似的处理。但是如果遇到幂函数pow(x,y)时,问题就不那么简单了。仔细分析将发现:y x | 负小数 | 负整数 | 0 | 整数 | 小数 |
负小数 | 无意义 | 有意义 | 有意义 | 有意义 | 无意义 |
负整数 | 无意义 | 有意义 | 有意义 | 有意义 | 无意义 |
0 | 无意义 | 无意义 | 有意义 | 有意义 | 有意义 |
整数 | 有意义 | 有意义 | 有意义 | 有意义 | 有意义 |
小数 | 有意义 | 有意义 | 有意义 | 有意义 | 有意义 |
int _matherr( struct _exception *except );
为了利用此函数,只需在应用数学函数的地方定义一个这样的函数,例如#include <math.h>#include <stdio.h>void main(){double x,y,z;x=-1.23;y=-1;z=pow(x,y);printf("%g ",z);y=-1.1;z=pow(x,y);printf("%g ",z);}int _matherr(struct _exception *except){char* errorString[] = {"_DOMAIN","_SING", "_OVERFLOW", "_PLOSS","_TLOSS", "_UNDERFLOW"};printf("Error function name is %s ",except->name);printf("The varianbles arg1=%g,arg2=%g ",except->arg1,except->arg2);printf("The error type = %s ",errorString[except->type]);printf("The error value=%g ",except->retval);except->retval=1234;printf("After handling error value=%g ",except->retval);return 1;}