GSoC : This week in SymPy #4 & #5
Open Source · GSoC · SymPyHi there! It’s been five weeks into GSoC, This week, I worked on polishing my previous PR’s to improve coverage and fixing some bugs.
Progress of Week 4 & 5
During the last couple of weeks my ComplexPlane
Class PR #9438
finally got Merged thanks to Harsh for thoroughly reviewing it and suggesting constructive changes.
For this I Managed to improve it’s coverage to perfect 100%, which is indeed satisfying, as it depicts all the new code being pushed is completely tested.
This week I also improved the Exception handling and coverage in my linsolve
PR, It also have a 100% coverage.
Coverage Report
- [1]
gauss_jordan_solve
100 % - [2]
linsolve
: 100: %
Ref:
- [1] http://iamit.in/sympy/coverage-report/matrices/
- [2] http://iamit.in/sympy/coverage-report/solveset/
It’s good to be Merged now.
Blocking Issue: Intersection’s of FiniteSet with symbolic elements
During Week 5, While working on transcendental equation solver in solveset.py
, I discovered a blocking issue in FiniteSets
, which is with the Intersection of FiniteSet
containing symbolic elements, for example:
In [2] a = Symbol('a', real=True)
In [3]: FiniteSet(log(a)).intersect(S.Reals)
Out[3]: EmptySet()
Currently, either FiniteSet
is able to evaluate intersection otherwise it, returns an EmptySet()
.
(See 9536 & 8217).
To fix this, I have opened the PR #9540.
Currently It fixes both the issues (9536 & 8217), but there are some failing tests using the current behaviour of FiniteSet
.
####For example:
In [16]: x, y, z = symbols('x y z', integer=True)
In [19]: f1 = FiniteSet(x, y)
In [20]: f2 = FiniteSet(x, z)
- In Master:
In [23]: f1.intersect(f2)
Out[23]: {x}
- It should rather be:
In [5]: f1.intersect(f2)
Out[5]: {x} U Intersection({y}, {x, z})
The current behavior of FiniteSet in Master is non-acceptable, since in the above example x, y, z
are integer symbols, so they can be any integer, but in the Master , they are assumed to be distinct, which is wrong.
There are such failing tests in test_wester.py
here, which is updated here: aktech@e8e6a0b to incorporate with the right behaviour.
As of now there are a couple of failing tests, which needs to passed, before we can Merge #9540
####TODO Failing Tests:
from __future__ import plan Week #6:
This week I plan to Fix Intersection’s of FiniteSet with symbolic elements & start working on LambertW
solver in solveset
.
$ git log
PR #9540 : Intersection’s of FiniteSet with symbolic elements
- PR #9438 : Linsolve
- PR #9463 : ComplexPlane
- PR #9527 : Printing of ProductSets
- PR # 9524 : Fix solveset returned solution making denom zero
That’s all for now, looking forward for week #6. :grinning: