10adic指数関数と対数関数
10adic対数関数は「こちら」の定義を採用します。 10adic指数関数$e^x$はべき級数で \[ e^x = \sum_{n=0}^\infty \frac{x^n}{n!} \] と定義します。
10adic指数関数
\[ \sum_{k=0}^n \frac{x^k}{k!} \quad \pmod{10^m} \] を計算し、分子と分母にわけて、分子×(分母の合同式の逆数)として計算します。
tExp(x,n,m):=block( f(x,n):=sum(x^k/k!,k,0,n), mod(num(f(x,n))*inv_mod(denom(f(x,n)),10^m),10^m) ); tExp(100,50,50);
実行結果.
18131597153735653309273180234027821900070921005101
numは分子、denomは分母を取得する命令です。
10adic対数関数
定義をほぼそのまま利用します。
例
tLog(x,n,m):= (power_mod(x,10^n,10^(n+m))-1)/10^n; tLog(3,100,100);
実行結果.
2091622745050815564300996166883116727166018267123490019823112848576493439314850693280080844278655220
注意
10adicの世界では、常に \[\exp(\log(x))=x\] が言えるわけではありません。 例えば、 \[\exp(\log(7)) = 7 \cdot\sqrt[4]{1}\] となり、$\sqrt[4]{1}=\cdots2943$ だけずれます。