fntest_x.inc : f(x)에 대한 내장 테스트

파일 : fntest_x.inc 다음 사용자: fnsqr.gms[html]  fnexp.gms[htmlfnlog.gms[html]  fnlog2.gms[htmlfnlog10.gms[html]  fnsqrt.gms[htmlfncos.gms[html]  fnsin.gms[htmlfnsinh.gms[html]  fncosh.gms[htmlfntanh.gms[html]  fnfact.gms[htmlfngamma.gms[html]  fngamma2.gms[html]  fnatan.gms[htmlfnerrf.gms[html]  fnerrf2.gms[htmlfnentro.gms[html]  fnentro2.gms[html]  fnsigmo.gms[htmlfnsigmo2.gms[html]  fntan.gms[htmlfnacos.gms[html]  fnacosx.gms[htmlfnasin.gms[html]  fnasinx.gms[htmlfncentr.gms[html]  fncentr2.gms[html]  fncentr3.gms[html]  fnloggamma.gms[html]  fnlogit.gms[html]

* 주의사항  이 파일은 여러 번 포함될 수 있습니다.
* 따라서 필요한 경우 fnset_x.inc에 선언을 넣으세요.

$ 정의되지 않은 경우 담당자 담당자 = 0;
$정의되지 않은 경우 담당자0 담당자0 = 담당자;
$정의되지 않은 경우 담당자1 담당자1 = 담당자;
$정의되지 않은 경우 담당자2 담당자2 = 담당자;
$ 정의되지 않은 경우 aeps aeps = 0;
$ 정의되지 않은 경우 aeps0 aeps0 = aeps;
$ 정의되지 않은 경우 aeps1 aeps1 = aeps;
$ 정의되지 않은 경우 aeps2 aeps2 = aeps;
$ 정의되지 않은 경우 relToInput relToInput = 0;

* 옵션 zeroRes = 2.0e-299;
TT(T)를 설정하고;

data(T, 'f_a') = abs(data(T, 'f')-data(T, 'f_'));
data(T, 'fx_a') = abs(data(T, 'fx')-data(T, 'fx_'));
data(T,'fxx_a') = abs(data(T,'fxx')-data(T,'fxx_'));
if relToInput,
  tmp(T) = max(1,abs(data(T,'x')));
  데이터(T, 'f_r') = 데이터(T, 'f_a') / tmp(T);
  데이터(T, 'fx_r') = 데이터(T, 'fx_a') / tmp(T);
  데이터(T,'fxx_r') = 데이터(T,'fxx_a') / tmp(T);
그렇지 않으면
  tmp(T) = abs(data(T,'f_'));
  TT(T) = tmp(T) > 0;
  데이터(T, 'f_r') = INF;
  data(T , 'f_r')$(data(T, 'f_a') eq 0) = 0;
  데이터(TT, 'f_r') = 데이터(TT, 'f_a') / tmp(TT);

  tmp(T) = abs(data(T,'fx_'));
  TT(T) = tmp(T) > 0;
  데이터(T, 'fx_r') = INF;
  data(T , 'fx_r')$(data(T, 'fx_a') eq 0) = 0;
  데이터(TT, 'fx_r') = 데이터(TT, 'fx_a') / tmp(TT);

  tmp(T) = abs(data(T,'fxx_'));
  TT(T) = tmp(T) > 0;
  데이터(T, 'fxx_r') = INF;
  data(T ,'fxx_r')$(data(T,'fxx_a') eq 0) = 0;
  data(TT,'fxx_r') = 데이터(TT, 'fxx_a') / tmp(TT);
;
data(T,'rc_e') = abs(data(T,'rc')-data(T,'rc_'));
data(T,'ec_e') = abs(data(T,'ec')-data(T,'ec_'));

badTV(T,V) = 아니요;
badTV(T,fV(V)) = ((data(T, 'f_a') > aeps0) and (data(T, 'f_r') > reps0));
badTV(T,fxV(V)) = ((data(T, 'fx_a') > aeps1) and (data(T, 'fx_r') > reps1));
badTV(T,fxxV(V)) = ((data(T,'fxx_a') > aeps2) 및 (data(T,'fxx_r') > reps2));
badTV(T,rcV(V)) = data(T,'rc_e');
badTV(T,ecV(V)) = data(T,'ec_e');
badT(T) = sumbadTV(T,V), 예;
badTV(badT,inV) = 예;
실패(T,V) = 0;
실패2(T,V) = 0;
실패(나쁜T,V) = 데이터(나쁜T,V);
실패2(나쁜TV) = 실패(나쁜TV);
'실패한 테스트' 표시, 실패, 실패2;
* 데이터 표시;
스칼라 nTests, nErrors;
nTests = 카드(T);
nErrors = 카드(나쁜T);
'절대 공차 표시: ', aeps0, aeps1, aeps2;
'상대적 공차: ', reps0, reps1, reps2를 표시합니다.
'테스트된 데이터 포인트 표시: ', nTests;
' 오류 표시: ', nErrors;
$if set FAILGDX 실행_언로드 '%FAILGDX%', badT, 실패, 실패2, aeps, aeps0, aeps1, aeps2, 담당자, 담당자, 담당자0, 담당자1, 담당자2;

abort$(nErrors) '오류가 발생했습니다.';