Contributions SymPy - gxyd/sympy GitHub Wiki

Table of Contents

About Me

Name and Contact Info

Name: Gaurav Dhingra

University: Indian Institute of Technology, Roorkee

Major: Applied Mathematics

email: [email protected]

IRC Handle: gxyd at freenode.net

github username: gxyd

Personal Background

Hello, I am Gaurav Dhingra a third year undergraduate student at IIT Roorkee, India. I am pursuing a degree in Applied Mathematics. I work on Elementary OS Freya 0.3 (based on Ubuntu 14.04 LTS) with vim as my primary text editor. I do my work with vim since it allows me work quickly with the code. I am proficient in Python, C++. I love Python since i am a math major and Python allows me to convert mathematical ideas into code without much langauge barriers.

Contributions to SymPy

I first started contributing to SymPy in January 2015 on issue #8746 but stalled since of the lack of motivation and confidence.

Then i started contributing to SymPy again in June 2015 and here is list of all of my Contributions in chronological order:

  • (Merged) M.row_del(index) and M.col_del(index) now raise IndexError for out of bound Index #9468
  • (Unmerged) M.row_insert() and M.col_insert() now act in-place for all indices #9477
  • (Merged) y*(x*M) != x*(y*M) for non-commutative symbols x and y #9520
  • (Unmerged) transpose(MatMul(<Symbol>, Matrix)) now works properly #9507
  • (Merged) Mod(zoo, 0) now returns nan and fixed one typo #9528
  • (Merged) splitting simplify.py #9553
  • (Merged) solveset(Abs(x) + 1, x) now returns EmptySet() typo fixed #9570
  • (Merged) redudant declaration removed fixes issue #9573 #9574
  • (Unmerged) Union of set containing UniversalSet with non-intersecting Interval #9578
  • (Closed) Complement of UniversalSet with Union of Sets works #9579
  • (Merged) Limit(x, x, a).free_symbols now returns set([a]) #9581
  • (Merged) invert_real for sin and cos now operates correctly #9591
  • (Unmerged) invert_complex added for trigonometric func. #9604
  • (Merged) Interval - FiniteSet(x) is now returned unevaluated #9682
  • (Closed) Intersection(Interval, FiniteSet(m, n), FiniteSet(n)) now works correct #9683
  • (Merged) solveset_real(Eq(x, 1), x) fixed #9688
  • (Merged) combsimp for work on factorials #9711
  • (Merged) Range Function for rational functions #9719
  • (Merged) imageset for Piecewise under Interval added #9763
  • (Closed) solveset_real(abs(f1/f2), x) for f1,f2 polynomials in x #9772
  • (Merged) not_empty_in added to codomain.py #9779
  • (Merged) soleveset title_doc changed #9781
  • (Closed) ImageSet(Lambda(n, nan), any_set) now returns EmptySet #9734
  • (Merged) reference to sphinx docs for normalize_theta_set #9735
  • (Merged) solveset(1/exp(x), x) returns S.EmptySet #9735
  • (Closed) singularities((x**2 - 1)/(x**3 - 1), x) returns (1,) #9741
  • (Closed) solveset_complex(sinh(x), x) returns ImageSet(Lambda(n, n*I*pi), Integers) #9750
  • (Merged) soleveset title_doc changed #9781
  • (Closed) [WIP] matrix.rank() with unkown .is_zero raise NotImplementedError #9793
  • (Merged) solveset_real(x**3+1, x) returns FiniteSet(-1) #9804
  • (Merged) Complements of FiniteSet with Symbols returned unevaluated #9814
  • (Merged) test for solveset(Piecewise(((x - 2)**2, x >= 0), (0, True)), x, S.Reals) #9851
  • (Unmerged) [WIP] Implementation of arbitrarily indexed Unions and Intersecions #9853
  • (Merged) solveset(Abs(sin(x)) + 1, x, S.Reals) returns EmptySet #9857
  • (Merged) ConditionSet API changed #9864
  • (Merged) `symbols -> Dummy_symbols in ComplexPlane` #9867
  • (Merged) ComplexPlane->ComplexRegion name changed #9873
  • (Closed) Parenthesize printing of Unions having Complement #9878
  • (Closed) [WIP] fuzzy_set implementation #9897
  • (Merged) is_convergent method implementation for Sum #9906
  • (Closed) real_bound added to Function class #9911
  • (Merged) `solveset(2*x + 1/(x - 10)**2, x, S.Reals) works` #9930
  • (Merged) `Docstring Python escaping backslash in latex strings added` #9938
  • (Merged) is_increasing(), is_decreasing() signature changed #9951
  • (Merged) Union(Interval(-oo, oo), FiniteSet(1)) returns Interval(-oo, oo) #9958
  • (Closed) solve_univariate_inequality(x**2>=0, x) returns (-oo, oo) #9960
  • (Merged) is_convergent() for Product #9982
  • (Merged) Probability for empty set returns S.Zero #10004
  • (Merged) oo**e for non-real complex e handling #10029
  • (Merged) docs changes in rv.py #10039
  • (Merged) Implementation of Limits (different from Limit) in SymPy #10051
  • (Merged) P(X < oo) and P(X > oo) for True, False probability #10053
  • (Merged) Intersection of sets containing common symbols handled #10079
  • (Merged) X.pdf(x) for invalid x in DieDistribution raises ValueError #10083
  • (Merged) imageset of first interval of singularities included #10115
  • (Merged) pretty printing of Cycle works #10183
  • (Merged) docs and code fixes for Combinatorics module #10229
  • (Merged) .is_group for PermutationGroup now returns True #10230
  • (Merged) latex printing of Cycle, Permutation #10261
  • (Closed) [WIP] FiniteGroup in SymPy #10263
  • (Unmerged) [WIP] FreeGroup implementation in SymPy #10350
  • (Unmerged) [WIP] SymmetricGroup is now a class not function #10363
  • (Merged) Simplification of an expression with exponent containing assumption symbol #10378
  • (Merged) normalizing an open Interval now works #10421
  • (Merged) ComplexRegion satisfies the Key Invariant property #10470
  • (Closed) zeta(x) for (Re(x) - 1) nonzero is Finite #10479
  • (Unmerged) [WIP] singularities functions returns exp, log singularities #10495

My Motivation

In the previous semester i had a basic course on Abstract Algebra, in which we were taught beginning with generalized groups and then introduced to Permutation Groups from Topics in Algebra by I. N. Herstien. I somehow came across FreeGroups and started reading about it and i could relate it to some of the topics in Automata Theory. Looking at the FreeGroups led me to FpGroups. I looked at the GAP software (which is open source) but i didn't like it since it is not as fast as it can be (may be since it was written a while back in 1990's, when memory was less available). I realised the computations in even the "small" (i.e small order) FpGroup is difficult to do manually. Also i have been using SymPy for almost 1 year now, so i think adding its functionality to it would be good to SymPy and Python world in general. On the way i came across Magma software, i enjoyed its documentation (i haven't used it). Alas! it's proprietary software.

⚠️ **GitHub.com Fallback** ⚠️