mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-25 15:07:57 +00:00
27 lines
570 B
JavaScript
27 lines
570 B
JavaScript
/**
|
|
* Calculate the arc tangent of x using a Taylor expansion
|
|
*
|
|
* arctan(x) = x - x^3/3 + x^5/5 - x^7/7 + x^9/9 - ...
|
|
* = x - x^2*x^1/3 + x^2*x^3/5 - x^2*x^5/7 + x^2*x^7/9 - ...
|
|
*
|
|
* @param {BigNumber} x
|
|
* @returns {BigNumber} arc tangent of x
|
|
*/
|
|
module.exports = function atan(x) {
|
|
var y = x;
|
|
var yPrev = NaN;
|
|
var x2 = x.times(x);
|
|
var num = x;
|
|
var add = true;
|
|
|
|
for (var k = 3; !y.equals(yPrev); k += 2) {
|
|
num = num.times(x2);
|
|
|
|
yPrev = y;
|
|
add = !add;
|
|
y = (add) ? y.plus(num.div(k)) : y.minus(num.div(k));
|
|
}
|
|
|
|
return y;
|
|
};
|