설명
sqlog10(x,S) = log_10(x) if x >= S
(1/log 10) (ln(S) + r/S - 1/S^2) 그렇지 않으면 r = x - S
S >= 1e-150의 경우 기본값 S = 1e-150입니다.
기고자: Steve, 2017년 3월
소형 모델 유형 :무료 슬롯 게임
카테고리 : 무료 슬롯 게임 테스트 라이브러리
메인 파일 : fnsqlog102.gms 포함: fnset_xy.inc[html] fntest_xy.inc[html]
$title 'sqlog10 내장의 정확성 테스트' (FNSQLOG102,SEQ=724)
$onText
x >= S인 경우 sqllog10(x,S) = log_10(x)
(1/log 10) (ln(S) + r/S - 1/S^2) 그렇지 않으면 r = x - S
S >= 1e-150의 경우 기본값 S = 1e-150입니다.
기고자: Steve, 2017년 3월
$offText
$include fnset_xy.inc
담당자 = 8e-16;
세트
티/
t1 * t6,
t11 * t16
t21 * t26
/
torig(t) '평활화되지 않은 입력'
;
* y = 1e-150으로 무엇이든 하는 것은 꽤 쓸모가 없습니다. 두 번째 파생은 다음과 같습니다.
* 너무 크다
테이블 데이터(T,V)
x y f_ fx_ fxx_ rc_ ec_
t1 1 1e-140
t2 1e-136 1e-140
t3 1e-139 1e-140
t4 1e-160 1e-140
t5 EPS 1e-140
t6 -1e1 1e-140
t11 1 1e-20
t12 1e-19 1e-20
t13 1e-20 1e-20
t14 1e-120 1e-20
t15 EPS 1e-20
t16 -1e40 1e-20
t21 4000 2000
t22 2001 2000
t23 2000 2000
t24 1999.999 2000
t25 EPS 2000
t26 -1e100 2000
;
스칼라
아르
L10
lnS
;
* 중단점에서 정확하게 테스트하는 데 문제가 있습니다. 두 번째 파생 항목이 0이어야 합니다.
* 아니면 매끄러운 부분에서 가져왔나요?
루프T$[data(T,'x') = 데이터(T,'y')],
데이터(T,'x') = (1+4e-16) * 데이터(T,'x');
;
torig(t) = [data(T,'x') > data(T,'y')];
L10 = 로그(10);
루프torig(T),
데이터(T, 'f_') = log(데이터(T,'x')) / L10;
data(T, 'fx_') = 1 / (data(T,'x') * L10);
data(T,'fxx_') = (-1 / data(T,'x')) / (data(T,'x')*L10);
;
루프t$[torig(t) 아님],
lnS = log(data(t,'y'));
r = 데이터(t,'x') - 데이터(t,'y');
데이터(t, 'f_') = (lnS + r/data(t,'y') - 0.5*sqr(r/data(t,'y'))) / L10;
data(t, 'fx_') = (1 - r/data(t,'y')) / (data(t,'y')*L10);
data(T,'fxx_') = (-1 / data(t,'y')) / (data(t,'y')*L10);
;
루프 T,
data(T,'fxy_') = data(T,'fxy_');
data(T, 'f') = sqlog10.value( data(T,'x'),data(T,'y'));
data(T, 'fx') = sqlog10.grad(1: data(T,'x'),data(T,'y'));
data(T, 'fy') = sqlog10.grad(2: data(T,'x'),data(T,'y'));
data(T,'fxx') = sqlog10.hess(1:1:data(T,'x'),data(T,'y'));
data(T,'fxy') = sqlog10.hess(1:2:data(T,'x'),data(T,'y'));
data(T,'fyx') = sqlog10.hess(2:1:data(T,'x'),data(T,'y'));
data(T,'fyy') = sqlog10.hess(2:2:data(T,'x'),data(T,'y'));
data(T, 'rc') = mathlastrc;
data(T, 'ec') = mathlastec;
;
데이터 표시;
$include fntest_xy.inc