josdejong/mathjs

math.rationalize silently ignores imaginary numbers

Open

#2,375 opened on Jan 6, 2022

 (4 comments) (0 reactions) (0 assignees)JavaScript (1,314 forks)batch import
bughelp wanted

Repository metrics

Stars
 (15,065 stars)
PR merge metrics
 (PR metrics pending)

Description

Currently, math.rationalize seems to ignore imaginary numbers:

// math.js version 9.5.1

// complex coefficient a = (2 + complex(3, 4))
let a = new math.OperatorNode("+", "add", [new math.ConstantNode(2), new math.ConstantNode(math.complex(3, 4))]);
console.log(a.evaluate()); // {re: 5, im: 4}

// polynomial a * x
let poly = new math.OperatorNode("*", "multiply", [a, new math.SymbolNode("x")]);

let coefficients = math.rationalize(poly, true).coefficients;
console.log(coefficients); // [0, 5]

I would expect coefficients to be [0, 5+4i] or for rationalize to throw an error.

Contributor guide