fnatan2x.gms : arctan2 내장 예외의 정확성 테스트

설명

arctan2(y,x) = arctan(y/x), 그러나 올바른 사분면에 맞게 조정됨
따라서 벡터 (x,y)가 (1,0)과 이루는 각도를 반환합니다.

열거형 값
---- ---
RCOK 0
RCFUNC 1
RCGRAD 2
RCHESS 3
RC시스템 4

에코OK 0
ECDOMAIN 1
특별 2
에코오버플로우 3

소형 모델 유형 :슬롯 무료체험


카테고리 : 슬롯 무료체험 테스트 라이브러리


메인 파일 : fnatan2x.gms 포함: fnset_xy.inc[htmlfntest_xy.inc[html]

$title 'arctan2 고유 예외의 정확성 테스트' (FNATAN2X,SEQ=276)

$onText

arctan2(y,x) = arctan(y/x), 그러나 올바른 사분면에 맞게 조정됨
따라서 벡터 (x,y)가 (1,0)과 이루는 각도를 반환합니다.

열거형 값
---- ---
RCOK 0
RCFUNC 1
RCGRAD 2
RCHESS 3
RC시스템 4

에코OK 0
ECDOMAIN 1
특별 2
에코오버플로우 3

$offText

$include fnset_xy.inc

담당자 = 2e-13;
relToInput = 0;
T / t1 * t23, t31 * t34 / 설정;

$세트 OFLO 1.e299

테이블 데이터(T,V)
        y x f_ fy_ fx_ fyy_ fyx_ fxx_ rc_ ec_
t1 0 0 1 2
t2 -2 0 -1.5707963267949 0 0.5 0 0.25 0
t3 0 4 0 0.25 0 0 -0.0625 0
t4 1e-160 0 1.5707963267949 0 -1e160 0 %OFLO% 0 3 2
t5 1e40 1 1.5707963267949 1e-80 -1e-40 -2e-120 1e-80 2e-120
t6 1e-200 1e-220 1.5707963267949 1e180 -1e200 -%OFLO% %OFLO% %OFLO% 3 2
t7 1e-160 1e-200 1.5707963267949 1e120 -1e160 -2e280 %OFLO% 2e280 3 2
t8 1e-180 1e-192 1.5707963267939 1e168 -1e180 -%OFLO% %OFLO% %OFLO% 3 2
t9 1e-148 1e-140 1e-8 1e140 -1e132 -2e272 -1e280 2e272
t10 1e-149 1e-140 1e-9 1e140 -1e131 -2e271 -1e280 2e271
t11 1e-152 1e-140 1e-12 1e140 -1e128 -2e268 -1e280 2e268
t12 1e-170 1e-160 1e-10 1e160 -1e150 -%OFLO% -%OFLO% %OFLO% 3 2
t13 1e-165 1e-155 1e-10 1e155 -1e145 -%OFLO% -%OFLO% %OFLO% 3 2
t14 1e-160 1e-150 1e-10 1e150 -1e140 -2e290 -%OFLO% 2e290 3 2
t15 1e-155 1e-145 1e-10 1e145 -1e135 -2e280 -1e290 2e280

t16 1e-149 1e-149 .7853981633974 5e148 -5e148 -5e297 0 5e297
t17 1e-150 1e-150 .7853981633974 5e149 -5e149 -%OFLO% 0 %OFLO% 3 2
t18 1e-155 1e-155 .7853981633974 5e154 -5e154 -%OFLO% 0 %OFLO% 3 2
t19 1e-160 1e-160 .7853981633974 5e159 -5e159 -%OFLO% 0 %OFLO% 3 2

t20 1e-200 1e+200 0 1e-200 0 0 0 0
t21 1e+200 1e-200 1.5707963267949 0 -1e-200 0 0 0
t22 2 0 1.5707963267949 0 -0.5 0 0.25 0
t23 0 -4 3.1415926535898 -0.25 0 0 -.0625 0

* y x f_ fy_ fx_ fyy_ fyx_ fxx_
t31 1 1 .7853981633974483 0.5 -0.5 -0.5 0 0.5
t32 -1 1 -.7853981633974483 0.5 0.5 0.5 0 -0.5
t33 1 -1 2.356194490192345 -0.5 -0.5 0.5 0 -0.5
t34 -1 -1 -2.356194490192345 -0.5 0.5 -0.5 0 0.5
;

data(T,'fxy_') = data(T,'fyx_');

루프 T,
  data(T, 'f') = arctan2.value( data(T,'y'),data(T,'x'));
  data(T, 'fy') = arctan2.grad(1: data(T,'y'),data(T,'x'));
  data(T, 'fx') = arctan2.grad(2: data(T,'y'),data(T,'x'));
  data(T,'fyy') = arctan2.hess(1:1:data(T,'y'),data(T,'x'));
  data(T,'fyx') = arctan2.hess(1:2:data(T,'y'),data(T,'x'));
  data(T,'fxy') = arctan2.hess(2:1:data(T,'y'),data(T,'x'));
  data(T,'fxx') = arctan2.hess(2:2:data(T,'y'),data(T,'x'));
  data(T, 'rc') = mathlastrc;
  data(T, 'ec') = mathlastec;
;

중단$(실행 오류 lt 10)
 'arctan2(y,x)의 func/grad/hess를 가져오는 동안 실행 오류가 발생해야 합니다.';
실행 오류 = 0;

$include fntest_xy.inc