/**
|
* taylor-serie-exp.js
|
*
|
*/
|
|
import {terminal} from "./dfhi.js";
|
|
window.main = function(...argv) {
|
let x = Number.parseFloat(argv[0]);
|
let variant1 = exp1(x);
|
let variant2 = exp2(x);
|
let variant3 = exp3(x);
|
let variant4 = exp4(x);
|
let expected = Math.exp(x);
|
terminal.printl(
|
`variant 1: ${variant1}
|
variant 2: ${variant2}
|
variant 3: ${variant3}
|
variant 4: ${variant4}
|
expected : ${expected}`
|
)
|
};
|
|
|
|
function exp1(x) {
|
let sum = 1.0;
|
const NUM_OF_TERM = 10;
|
//DEBUG: let expression = "1";
|
for(let n = 1; n <= NUM_OF_TERM; ++n){
|
let num = 1.0,
|
den = 1.0;
|
for (let i = 1; i <= n; ++i) {
|
num *= x;
|
den *= i;
|
}
|
//DEBUG: expression += ` + ${num}/${den}`
|
sum += num / den;
|
//DEBUG: console.log({n, expression});
|
}
|
return sum;
|
}
|
|
function exp2(x) {
|
let sum = 1.0;
|
const NUM_OF_TERM = 1000;
|
for(let n = 1; n <= NUM_OF_TERM; ++n){
|
let term = 1.0;
|
for (let i = 1; i <= n; ++i) {
|
term *= x/i;
|
}
|
sum += term;
|
}
|
return sum;
|
}
|
|
function exp3(x) {
|
let sum = 0.0,
|
term = 1.0;
|
for(let n = 1; sum !== sum + term; ++n) {
|
sum += term;
|
term = 1.0;
|
for (let i = 1; i <= n; ++i) {
|
term *= x/i;
|
}
|
}
|
return sum;
|
}
|
|
function exp4(x) {
|
let sum = 0.0,
|
term = 1.0;
|
for(let i = 1; sum !== sum+term; ++i) {
|
sum += term;
|
term *= x/i;
|
}
|
return sum;
|
}
|