fix(Types): Move distinct types into distinct identifiers
This allows types to be collected; prior to this commit they were conflicting from different modules. Uses this fix to extend sqrt to bigint, with the convention that it is undefined for non-perfect squares when 'predictable' is false and is the "best" approximation to the square root when 'predictable' is true. Furthermore, for negative bigints, you might get a Gaussian integer when predictable is false; or you will just get your argument back when 'predictable' is true because what other bigint could you give back for a negative bigint? Also had to modify tests on the sign in sqrt(Complex) and add functions 'zero' and 'one' to get types to match, as expected in #27. Adds numerous tests. Resolves #26. Resolves #27.
This commit is contained in:
parent
b21d2b59fa
commit
f68c7bd1fb
44 changed files with 287 additions and 109 deletions
|
@ -9,6 +9,9 @@ describe('complex', () => {
|
|||
assert.deepStrictEqual(
|
||||
math.sqrt(math.complex(0,1)),
|
||||
math.complex(math.sqrt(0.5), math.sqrt(0.5)))
|
||||
assert.deepStrictEqual(
|
||||
math.sqrt(math.complex(5, 12)),
|
||||
math.complex(3, 2))
|
||||
math.config.predictable = true
|
||||
assert.deepStrictEqual(math.sqrt(math.complex(1,0)), math.complex(1,0))
|
||||
assert.deepStrictEqual(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue