function continuedFraction(n, iterations, maxNumberOfIterations, result) { var nIntegerPart = math.floor(n); var nFractionalPart = math.chain(n).subtract(nIntegerPart).done(); result.push(nIntegerPart); if (math.equal(nFractionalPart, 0) || iterations >= maxNumberOfIterations) { return result; } else { var reciprocal = math.chain(1).divide(nFractionalPart).done(); // console.log(nIntegerPart, nFractionalPart, reciprocal); return continuedFraction(reciprocal, iterations+1, maxNumberOfIterations, result); } }
console.log(math.nthRoot(27,3)); //指定開幾次根號 console.log(math.exp(2)); //指數 console.log(math.log(1024,2)); //對數 console.log(math.log10(1000)); //固定10為底對數 console.log(math.gcd(25,15,-10)); //最大公因數 console.log(math.lcm(6,21,5)); //最小公倍數 console.log(math.unit('5 cm').value); //以公尺為單位顯示大小 console.log(math.unit('5 m').value); //以公尺為單位顯示大小 console.log(math.dotMultiply([3,2],[5,7])); //矩陣乘法 console.log(math.dotDivide([9,8],[3,2])); //矩陣除法 console.log(math.dotPow([[1,2],[3,4]],2)); //矩陣乘冪 console.log('---------------------------------------'); //關係運算 console.log(math.compare(2,[1,2,3])); //比較大小(大:1,小:-1,等於:0) console.log(math.equal(2+1,[1,2,3])); //判斷是否相等(相等:true,不等:false) console.log(math.unequal(2+1,[1,2,3])); //判斷是否不等(相等:false,不等true) console.log(math.larger(2,[1,2,3])); //判斷是否大於 console.log(math.largerEq(2,[1,2,3])); //判斷是否大於等於 console.log(math.smaller(2,3)); //判斷是否小於 console.log(math.smallerEq(2,[1,2,3])); //判斷是否小於等於 console.log('---------------------------------------'); //統計運算 console.log(math.sum(2,1,4,3)); //總和 console.log(math.sum([[2,5],[4,3],[1,7]])); //矩陣總和 console.log(math.max(2,1,4,3)); //取最大值 console.log(math.max([[2,5],[4,3],[1,7]])); //矩陣取最大值 console.log(math.min(2,1,4,3)); //取最小值 console.log(math.min([[2,5],[4,3],[1,7]])); //矩陣取最小值 console.log(math.mean(2,1,4,3)); //取平均值
let mathjs = require('mathjs'); mathjs.config({number: 'Fraction'}); module.exports = { readNumber(text) { return mathjs.fraction(text); }, writeNumber(number) { return mathjs.format(number, {fraction: 'decimal', notation: 'fixed'}); }, isNumberEqual(x, y, ...rest) { for (let n of [y, ...rest]) { if (!mathjs.equal(x, n)) { return false; } } return true; }, divide(x, y, ...rest) { return [x, y, ...rest].reduce( (result, value) => mathjs.divide(result, value)); }, multiply(x, y, ...rest) { return mathjs.multiply(x, y, ...rest); },