설명
x**y 테스트 예외 사례 테스트 - 다른 테스트가 수행되었다고 가정합니다. 좋은 입력이 있고 예외가 없는 일반적인 경우
소형 모델 유형 :슬롯 머신
카테고리 : 슬롯 머신 테스트 라이브러리
메인 파일 : fnrpow3.gms 포함: fnset_xy.inc[html] fntest_xy.inc[html]
$title 'rpower 내장의 정확성 테스트' (FNRPOW3,SEQ=196)
* x**y 테스트
* 예외 사례 테스트 - 다른 테스트가 수행되었다고 가정합니다.
* 입력이 좋고 예외가 없는 일반적인 경우
$include fnset_xy.inc
담당자 = 2e-13;
relToInput = 0;
T / t1 * t27 / 설정;
* ecDOMAIN=1
* ecSINGULAR=2
* 에코오버플로우=3
$세트 EPP 1e-40
$세트 DF 1e10
$세트 OFLO 1.e299
*eps는 모델에서 올바른 값을 계산한다는 의미입니다.
테이블 데이터(T,V)
x y f_ fx_ fy_ fxx_ fxy_ fyy_ rc_ ec_
t1 -1 0 1 1
t2 0 -1 1 1
t3 0 0 1 2 1
t4 0 0.5 0 %DF% 0 2 1
t5 0 1 0 1 0 3 2
t6 0 1.5 0 0 0 %OFLO% 3 2
t7 0 2 0 0 0 2 3 2
t8 0 2.5 0 0 0 0 0 0
t9 %EPP% 0 1 2 1
t10 %EPP% 0.5 EPS %DF% 0 2 1
t11 %EPP% 1 EPS 1 0 3 2
t12 %EPP% 1.5 EPS 0 0 %OFLO% 3 2
t13 %EPP% 2 EPS 0 0 2 3 2
t14 %EPP% 2.5 EPS 0 0 0 0 0
t15 0.5 0.5 EPS EPS EPS EPS EPS
t16 0.5 1.5 EPS EPS EPS EPS EPS
t17 1.5 0.5 EPS EPS EPS EPS EPS
t18 1.5 1.5 EPS EPS EPS EPS EPS
* x > 1이고 몇 가지 예외가 있는 테스트 사례
t19 1e10 31 %OFLO% %OFLO% %OFLO% %OFLO% %OFLO% %OFLO% 1 3
t20 1e149 2 EPS EPS %OFLO% EPS %OFLO% %OFLO% 2 3
t21 10 298 EPS %OFLO% EPS %OFLO% %OFLO% EPS 2 3
t22 1e147 2 EPS EPS EPS EPS EPS %OFLO% 0 0
t23 10 297 EPS EPS EPS %OFLO% EPS EPS 0 0
* x < 1이고 몇 가지 예외가 있는 테스트 사례
t24 1e-10 -31 %OFLO% -%OFLO% -%OFLO% %OFLO% %OFLO% %OFLO% 1 3
t25 1e-1 -298.9 EPS -%OFLO% -%OFLO% %OFLO% %OFLO% %OFLO% 2 3
t26 1e-24 -12 EPS -%OFLO% EPS %OFLO% %OFLO% EPS 2 3
t27 1e-24 -11 EPS EPS EPS %OFLO% EPS EPS 0 0
;
TT(T)를 설정하고;
TT(T) = data(T,'f_') 및 eps = data(t,'f_');
data(TT,'f_' ) = exp(data(TT,'y')*log(data(TT,'x')));
TT(T) = data(T,'fx_') 및 eps = data(t,'fx_');
data(TT,'fx_' ) = data(TT,'f_')*(data(TT,'y')/data(TT,'x'));
TT(T) = data(T,'fy_') 및 eps = data(t,'fy_');
data(TT,'fy_' ) = data(TT,'f_')*log(data(TT,'x'));
TT(T) = data(T,'fxx_') 및 eps = data(t,'fxx_');
data(TT,'fxx_') = data(TT,'fx_')*(data(TT,'y')-1)/data(TT,'x');
TT(T) = data(T,'fxy_') 및 eps = data(t,'fxy_');
data(TT,'fxy_') = (data(TT,'fy_')*data(TT,'y')+data(TT,'f_'))/data(TT,'x');
TT(T) = data(T,'fyy_') 및 eps = data(t,'fyy_');
data(TT,'fyy_') = data(TT,'fy_')*log(data(TT,'x'));
data(T,'fxy_') = data(T,'fxy_');
루프 T,
data(T, 'f') = rpower.value( data(T,'x'),data(T,'y'));
data(T, 'fx') = rpower.grad(1: data(T,'x'),data(T,'y'));
data(T, 'fy') = rpower.grad(2: data(T,'x'),data(T,'y'));
data(T,'fxx') = rpower.hess(1:1:data(T,'x'),data(T,'y'));
data(T,'fxy') = rpower.hess(1:2:data(T,'x'),data(T,'y'));
data(T,'fyx') = rpower.hess(2:1:data(T,'x'),data(T,'y'));
data(T,'fyy') = rpower.hess(2:2:data(T,'x'),data(T,'y'));
data(T, 'rc') = mathlastrc;
data(T, 'ec') = mathlastec;
;
중단$(실행 오류 lt 10)
'x**y의 func/grad/hess를 가져오는 동안 실행 오류가 발생해야 합니다.';
실행 오류 = 0;
$include fntest_xy.inc