<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
	<title>Sidhant Nagpal</title>
	<description>Hi, I am Sidhant Nagpal. Welcome to my blog.
</description>
	<link>https://sidhantnagpal.github.io</link>
	<link>https://sidhantnagpal.github.io</link>
	<lastBuildDate>2026-04-26T02:36:37+00:00</lastBuildDate>
	<pubDate>2026-04-26T02:36:37+00:00</pubDate>
	<ttl>1800</ttl>


	<item>
		<title>Concluding GSoC 2018: SymPy</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This post summarises the work that I have done during GSoC for SymPy. The links to the Pull Requests are in chronological order under each header. For following the progress made during GSoC, see my &lt;a href=&quot;https://sidhantnagpal.github.io/blog&quot;&gt;weekly posts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This summer has been a great learning experience and has helped me get a good exposure of test-driven development. I plan to actively review the work that has went into this project and continue contributing to SymPy. I am grateful to my mentors, &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; and &lt;a href=&quot;https://github.com/asmeurer&quot;&gt;Aaron&lt;/a&gt; for reviewing my work, giving me valuable suggestions, and being readily available for discussions.&lt;/p&gt;

&lt;h2 id=&quot;pull-requests&quot;&gt;Pull Requests&lt;/h2&gt;

&lt;p&gt;This is the &lt;a href=&quot;https://github.com/sympy/sympy/pulls?q=is%3Apr+author%3Asidhantnagpal+is%3Aclosed&quot;&gt;list&lt;/a&gt; of merged Pull Requests.&lt;/p&gt;

&lt;h4 id=&quot;major-additions&quot;&gt;Major Additions&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14725&quot;&gt;sympy/sympy#14725&lt;/a&gt;: Add discrete module, and transforms sub-module including Fast Fourier Transform, Number Theoretic Transform, and include docstring, doctests, unit-tests.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14745&quot;&gt;sympy/sympy#14745&lt;/a&gt;: Add convolution sub-module including &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_fft&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_ntt&lt;/code&gt; and a general method &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; for identifying the type of convolution and handling the cyclic convolution case, and include docstring, doctests, unit-tests.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14765&quot;&gt;sympy/sympy#14765&lt;/a&gt;: Implement Walsh Hadamard Transform and include doctests, unit-tests, docstring for the same.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14783&quot;&gt;sympy/sympy#14783&lt;/a&gt;: Implement &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_fwht&lt;/code&gt; and add support for keyword &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dyadic&lt;/code&gt; in the general &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; method, and include docstring, doctests, unit-tests.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14816&quot;&gt;sympy/sympy#14816&lt;/a&gt;: Add a method &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linrec&lt;/code&gt; which allows evaluation of linear recurrences without obtaining closed form expressions, and include tests for the same.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14853&quot;&gt;sympy/sympy#14853&lt;/a&gt;: Implement Möbius Transform using Yate’s Dynamic Programming method while having &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;subset&lt;/code&gt; keyword for flexibility of the implementation, and include docstring, doctests, unit-tests.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14878&quot;&gt;sympy/sympy#14878&lt;/a&gt;: Implement subset convolution and include docstring, doctests, unit-tests.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14928&quot;&gt;sympy/sympy#14928&lt;/a&gt;: Add covering product in convolutions sub-module and include docstring, doctests, unit-tests.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14954&quot;&gt;sympy/sympy#14954&lt;/a&gt;: Add intersecting product in convolutions sub-module and include docstring, doctests, unit-tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;documentation-and-code-refinements&quot;&gt;Documentation and Code Refinements&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14969&quot;&gt;sympy/sympy#14969&lt;/a&gt;: Improve Sphinx &lt;a href=&quot;http://docs.sympy.org/&quot;&gt;docs&lt;/a&gt; for SymPy, use plural module names - &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolutions&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;recurrences&lt;/code&gt;, refine the documentation for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14994&quot;&gt;sympy/sympy#14994&lt;/a&gt;: Add reStructuredText file for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module for inclusion in Sphinx docs, which can be referred &lt;a href=&quot;http://docs.sympy.org/dev/modules/discrete.html&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/15025&quot;&gt;sympy/sympy#15025&lt;/a&gt;: Refine &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module to fix tests using floats instead of Rationals, adding warning about sequence size for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fft&lt;/code&gt; and other improvements.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;additional-improvements&quot;&gt;Additional Improvements&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14712&quot;&gt;sympy/sympy#14712&lt;/a&gt;: Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.rewrite(exp)&lt;/code&gt; capability for instances of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Pow&lt;/code&gt; and fix bugs in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;solvers&lt;/code&gt; module.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy/pull/14907&quot;&gt;sympy/sympy#14907&lt;/a&gt;: Fix exception handling for factorial modulo and refine the signature for general &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; method.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sympy/sympy-bot/pull/18&quot;&gt;sympy/sympy-bot#18&lt;/a&gt;: Fix the issue of incorrect links being referred in wiki by explicitly specifying the links instead of using relative paths.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;future-work&quot;&gt;Future Work&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Adding a user-facing public method that internally calls &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete.recurrences.linrec&lt;/code&gt; and possibly extending it for different types of recurrences as well.&lt;/li&gt;
  &lt;li&gt;Making methods &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fft&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_fft&lt;/code&gt; efficient for both symbolic and numeric variants, as some discussion and benchmarking has been done for it and there is some work done by &lt;a href=&quot;https://github.com/cbm755&quot;&gt;Colin&lt;/a&gt; for implementing a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ComplexFloat&lt;/code&gt; class in &lt;a href=&quot;https://github.com/sympy/sympy/pull/12192&quot;&gt;sympy/sympy#12192&lt;/a&gt; which would be very helpful for the same.&lt;/li&gt;
&lt;/ul&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/08/gsoc-conclusion</link>
		<guid>https://sidhantnagpal.github.io/2018/08/gsoc-conclusion</guid>
		<pubDate>2018-08-14T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 12</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The final week of Coding Period has completed.&lt;/p&gt;

&lt;p&gt;This week, the work was mainly concerned with the documentation and refinements in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module.
I started by opening PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14994&quot;&gt;#14994&lt;/a&gt; to update Sphinx docs for SymPy.
&lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; and &lt;a href=&quot;https://github.com/asmeurer&quot;&gt;Aaron&lt;/a&gt; were kind enough to review the PR and help refine it for the final merge. The documentation for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module is now part of the SymPy docs and can be referred &lt;a href=&quot;http://docs.sympy.org/dev/modules/discrete.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Late this week, I opened PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/15025&quot;&gt;#15025&lt;/a&gt; for improvements in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module.
&lt;a href=&quot;https://github.com/cbm755&quot;&gt;Colin&lt;/a&gt; helped fix accidental floats in unit tests (which should have been Rationals). After the review, the PR was merged successfully.&lt;/p&gt;

&lt;p&gt;Future work would include - addition of a user-facing public method for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linrec&lt;/code&gt; and making methods &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fft&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_fft&lt;/code&gt; efficient for both symbolic and numeric variants, as some discussion and benchmarking has been done for it and there is some work done by &lt;a href=&quot;https://github.com/cbm755&quot;&gt;Colin&lt;/a&gt; for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ComplexFloat&lt;/code&gt; class in PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/12192&quot;&gt;#12192&lt;/a&gt; which would be helpful for the same.&lt;/p&gt;

&lt;p&gt;Looking forward to the concluding phase, where I will be wrapping up GSoC and preparing the report for the final evaluation.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/08/gsoc-week12</link>
		<guid>https://sidhantnagpal.github.io/2018/08/gsoc-week12</guid>
		<pubDate>2018-08-07T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 11</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This week, I started working on adding the final method to convolution module for Intersecting Product. PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14954&quot;&gt;#14954&lt;/a&gt; dealt with the addition of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;intersection_product&lt;/code&gt; method. Intersecting Product was implemented using Möbius Transform with superset enumeration (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mobius_transform(..., subset=False)&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;inverse_mobius_transform(..., subset=False)&lt;/code&gt;). After minor documentation improvements, the PR was merged successfully. The proposed transforms and convolutions are now part of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sympy.discrete&lt;/code&gt;. The basic usage for the method is:&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;I&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;intersecting_product&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;u v x y z&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;intersecting_product&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;intersecting_product&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Late this week, I started working on improving the documentation for SymPy’s Sphinx docs (&lt;a href=&quot;http://docs.sympy.org/dev/index.html&quot;&gt;http://docs.sympy.org/dev/index.html&lt;/a&gt;) and other minor changes in the PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14969&quot;&gt;#14969&lt;/a&gt;. Also, issue &lt;a href=&quot;https://github.com/sympy/sympy/issues/14964&quot;&gt;#14964&lt;/a&gt; was opened to discuss the possibility of using LaTeX in docstrings for SymPy documentation. The following changes were part of the PR:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Use LaTeX for docstrings in functions.combinatorial (reference to &lt;a href=&quot;https://github.com/sympy/sympy/issues/14964&quot;&gt;#14964&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Include genocchi and partition numbers in sphinx docs&lt;/li&gt;
  &lt;li&gt;Improve docstrings with single and double backticks for sphinx docs&lt;/li&gt;
  &lt;li&gt;Use plural module names under discrete (discrete.convolutions and discrete.recurrences)&lt;/li&gt;
  &lt;li&gt;Add graphviz as a prerequisite in sympy/doc/README.rst for Debian/Ubuntu&lt;/li&gt;
  &lt;li&gt;Fix links in references containing rounded braces and unicode chars for sphinx docs&lt;/li&gt;
  &lt;li&gt;Miscellaneous improvements to documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Successive reviews and discussions were helpful in finalizing the Pull Requests.&lt;/p&gt;

&lt;p&gt;Looking forward to the final week of Coding Period.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/07/gsoc-week11</link>
		<guid>https://sidhantnagpal.github.io/2018/07/gsoc-week11</guid>
		<pubDate>2018-07-28T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 10</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This week SymPy 1.2 was released, which included the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module. The complete changelog for the SymPy 1.2 is &lt;a href=&quot;https://github.com/sympy/sympy/wiki/Release-Notes-for-1.2&quot;&gt;here&lt;/a&gt;. I started the week by cleaning up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module, improving the API of public &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; method by attending to reviews by &lt;a href=&quot;https://github.com/asmeurer&quot;&gt;Aaron&lt;/a&gt; and &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; and fixing issue &lt;a href=&quot;https://github.com/sympy/sympy/issues/14901&quot;&gt;#14901&lt;/a&gt; reported by &lt;a href=&quot;https://github.com/asmeurer&quot;&gt;Aaron&lt;/a&gt; in &lt;a href=&quot;https://github.com/sympy/sympy/pull/14907&quot;&gt;PR #14907&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/sympy/sympy/pull/14907&quot;&gt;PR #14907&lt;/a&gt; has been merged successfully and will be part of SymPy 1.2.1.&lt;/p&gt;

&lt;p&gt;Late this week, I started working on the convolution module for inclusion of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;covering_product&lt;/code&gt;.
The &lt;a href=&quot;https://github.com/sympy/sympy/pull/14928&quot;&gt;PR #14298&lt;/a&gt; included the same with documentation, doctests and unit tests.
The implementation of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;covering_product&lt;/code&gt; uses Möbius Transform with subset enumeration (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mobius_transform(..., subset=True)&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;inverse_mobius_transform(..., subset=True)&lt;/code&gt;). As included in the PR, the usage for the same is:&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;covering_product&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;u v x y z&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;covering_product&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;covering_product&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Looking forward to the next week, where I will be implementing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;intersecting_product&lt;/code&gt; as the final method for the convolution module.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/07/gsoc-week10</link>
		<guid>https://sidhantnagpal.github.io/2018/07/gsoc-week10</guid>
		<pubDate>2018-07-21T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 9</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The second phase of Coding Period has concluded.&lt;/p&gt;

&lt;p&gt;This week I worked on implementing Subset Convolution for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module.
PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14878&quot;&gt;#14878&lt;/a&gt; was opened for the same. The PR included unit tests, documentation, and correspondingly &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;subset&lt;/code&gt; keyword was added for public &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;After discussing the implementation details and references with &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt;, the approach was finalized. The PR has been merged successfully. The usage for the same is:&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy.discrete.convolutions&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;convolution&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;convolution_subset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;u v x y z&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;convolution_subset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;convolution&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;subset&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;convolution&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;subset&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cycle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Plan for this phase has executed well, and the second evaluation has been successful.&lt;/p&gt;

&lt;p&gt;Looking forward to the final phase of Coding Period.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/07/gsoc-week9</link>
		<guid>https://sidhantnagpal.github.io/2018/07/gsoc-week9</guid>
		<pubDate>2018-07-14T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 8</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This week I started working on adding Möbius Transform to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt; module using Yate’s DP (Dynamic Programming) method for implementation as part of PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14853&quot;&gt;#14853&lt;/a&gt;. The proposed transforms are part of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sympy.discrete.transforms&lt;/code&gt; module.&lt;/p&gt;

&lt;p&gt;After discussing with &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt;, the methods implementing this transform were added with appropriate names. The keyword &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;subset&lt;/code&gt; is used as a boolean to choose whether enumeration is done over subsets or supersets. The usage for the transform is:&lt;/p&gt;
&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mobius_transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inverse_mobius_transform&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;seq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;w x y z&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mobius_transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;seq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inverse_mobius_transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inverse_mobius_transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;seq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;subset&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mobius_transform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;subset&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The PR was merged successfully, after inclusion of docstring and unit tests for the transform.&lt;/p&gt;

&lt;p&gt;Looking forward to another exciting week.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/07/gsoc-week8</link>
		<guid>https://sidhantnagpal.github.io/2018/07/gsoc-week8</guid>
		<pubDate>2018-07-06T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 6 & 7</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The second phase of Coding Period has started.&lt;/p&gt;

&lt;p&gt;I started this phase working on recurrence submodule under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt;. After having an initial discussion with &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; regarding the functionality to be implemented, I did the proof-of-concept for the same on a remote branch.&lt;/p&gt;

&lt;p&gt;After the approach was finalized, the implementation was polished before opening the PR. The PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14816&quot;&gt;#14816&lt;/a&gt; also included documentation, doctests, and unit tests for the module.&lt;/p&gt;

&lt;p&gt;The method &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linrec(coeffs, init, n)&lt;/code&gt; takes coefficients, initial values and point of evaluation for the linear recurrence. Usage for a recurrence like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;f(n) = f(n - 7) + f(n - 13) + f(n - 17)&lt;/code&gt; (having order &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;17&lt;/code&gt;) would be:&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;In&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;coeffs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;init&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;In&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;coeffs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;coeffs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;coeffs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;In&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;linrec&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;coeffs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;Out&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;35&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;41&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;41&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;In&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;...:&lt;/span&gt;     &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;...:&lt;/span&gt;         &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;...:&lt;/span&gt;     &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;...:&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;In&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;Out&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;35&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;41&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;41&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As suggested by &lt;a href=&quot;https://github.com/asmeurer&quot;&gt;Aaron&lt;/a&gt;, it will be good to have a user-facing method that calls &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linrec&lt;/code&gt; internally for performing the computation.&lt;/p&gt;

&lt;p&gt;Looking forward to another exciting week.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/06/gsoc-week6and7</link>
		<guid>https://sidhantnagpal.github.io/2018/06/gsoc-week6and7</guid>
		<pubDate>2018-06-28T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 5</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The first phase of Coding Period has concluded.&lt;/p&gt;

&lt;p&gt;This week, I started working on the convolution for &lt;img src=&quot;http://latex.codecogs.com/svg.latex?\dpi{300}&amp;space;\large&amp;space;2^n&quot; title=&quot;\large 2^n&quot; /&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-group&lt;/code&gt; using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fwht&lt;/code&gt; - Dyadic (XOR) Convolution. The PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14783&quot;&gt;#14783&lt;/a&gt; dealt with this addition to the module.&lt;/p&gt;

&lt;p&gt;I had a useful discussion with &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; for clearing the API and naming convention. &lt;br /&gt;
The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; method uses &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dyadic=True&lt;/code&gt; as the hint which uses &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_fwht&lt;/code&gt; for the implementation. Appropriate documentation, doctests and unit tests are also included.&lt;/p&gt;

&lt;p&gt;Successive reviews helped in refining the PR, before the final merge later in the week.&lt;/p&gt;

&lt;p&gt;The usage for the same is:&lt;/p&gt;
&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy.discrete.convolutions&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;convolution&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;convolution_fwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;u v x y&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;convolution&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dyadic&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;convolution_fwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;v&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;
&lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Plan for this phase has executed according to the timeline, and the first evaluation has been successful.&lt;/p&gt;

&lt;p&gt;Looking forward to the next phase of Coding Period.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/06/gsoc-week5</link>
		<guid>https://sidhantnagpal.github.io/2018/06/gsoc-week5</guid>
		<pubDate>2018-06-15T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 4</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Another week of Coding Period has concluded.&lt;/p&gt;

&lt;p&gt;Starting this week, I worked on PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14765&quot;&gt;#14765&lt;/a&gt; for implementing Fast Walsh Hadamard Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fwht&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;As pointed out by &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt;, symbolic coefficients could be supported by this transform as the general Kronecker matrix only contains &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+/-1&lt;/code&gt;, which means it essentialy requires only addition or subtraction to perform the transformation. Also, the PR review helped fix a minor issue related to string concatenation.&lt;/p&gt;

&lt;p&gt;Usage for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fwht&lt;/code&gt; looks like:&lt;/p&gt;
&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;a b c d&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifwht&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Documentation, doctests, and unit tests are also added for this transform.&lt;/p&gt;

&lt;p&gt;Looking forward to next week, where I will be implementing XOR convolution using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fwht&lt;/code&gt;.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/06/gsoc-week4</link>
		<guid>https://sidhantnagpal.github.io/2018/06/gsoc-week4</guid>
		<pubDate>2018-06-09T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 3</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The third week of Coding Period has concluded.&lt;/p&gt;

&lt;p&gt;I started the week by finalizing the PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14745&quot;&gt;#14745&lt;/a&gt;. The PR has been merged successfully. The master branch of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sympy&lt;/code&gt; now contains transforms and convolution submodules under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;discrete&lt;/code&gt;. I have tested corner cases as well. Documentation and Doctests are complete for the transforms and types of convolution that are currently part of master.&lt;/p&gt;

&lt;p&gt;Late this week, I pushed commits to &lt;a href=&quot;https://github.com/sympy/sympy/pull/14712&quot;&gt;PR #14712&lt;/a&gt; with the aim of fixing failing tests in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_util.py&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_inequalities.py&lt;/code&gt; due to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;solveset&lt;/code&gt;. The remaining tests are failing as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;solvers&lt;/code&gt; can not currently solve the transcendental equations when rewritten in exponential form.&lt;/p&gt;

&lt;p&gt;Looking forward to next week, where I will be working on the Fast Walsh Hadamard Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fwht&lt;/code&gt;).&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/06/gsoc-week3</link>
		<guid>https://sidhantnagpal.github.io/2018/06/gsoc-week3</guid>
		<pubDate>2018-06-03T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 2</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The second week of Coding Period has concluded.&lt;/p&gt;

&lt;p&gt;I started the week by finalizing the PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14725&quot;&gt;#14725&lt;/a&gt;. The PR has been merged successfully. Fast Walsh Hadamard Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fwht&lt;/code&gt;) will be added along with XOR Convolution at a later point of time.&lt;/p&gt;

&lt;p&gt;Late this week, I started working on the convolution module &lt;a href=&quot;https://github.com/sympy/sympy/pull/14745&quot;&gt;PR #14745&lt;/a&gt; with the aim of adding the following along with appropriate tests.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Convolution using Fast Fourier Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_fft&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;Convolution using Number Theoretic Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution_ntt&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;General Convolution method (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; and &lt;a href=&quot;https://github.com/asmeurer&quot;&gt;Aaron&lt;/a&gt; suggested using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; as the name for the methods instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;conv&lt;/code&gt;.
I had a detailed discussion with &lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; regarding the API of the methods, the need to tie convolution with DFT (Discrete Fourier Transform), and handling the cyclic convolution case.&lt;/p&gt;

&lt;p&gt;Successive reviews helped in the following changes to PR:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;including &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cycle&lt;/code&gt; for general &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; method&lt;/li&gt;
  &lt;li&gt;usage of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;**hints&lt;/code&gt; argument in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;convolution&lt;/code&gt; for flexibility of the API&lt;/li&gt;
  &lt;li&gt;handling empty list &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[]&lt;/code&gt; cases&lt;/li&gt;
  &lt;li&gt;defaulting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cycle=0&lt;/code&gt; as normal convolution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking forward to another exciting week.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/05/gsoc-week2</link>
		<guid>https://sidhantnagpal.github.io/2018/05/gsoc-week2</guid>
		<pubDate>2018-05-29T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Week 1</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The first week of Coding Period has concluded.&lt;/p&gt;

&lt;p&gt;I started the week working on the PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14712&quot;&gt;#14712&lt;/a&gt; to fix existing issues &lt;a href=&quot;https://github.com/sympy/sympy/issues/14262&quot;&gt;#14262&lt;/a&gt; and &lt;a href=&quot;https://github.com/sympy/sympy/issues/12744&quot;&gt;#12744&lt;/a&gt;. There were some complications caused by the PR as it was affecting the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;solvers&lt;/code&gt; module. The failing tests on travis revealed some bugs and issues in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;solvers&lt;/code&gt;. The bugs are fixed, though minor issues still persist.&lt;/p&gt;

&lt;p&gt;Late this week, I started working on the first PR &lt;a href=&quot;https://github.com/sympy/sympy/pull/14725&quot;&gt;#14725&lt;/a&gt; as part of my project with the aim of adding the following along with appropriate tests.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Discrete Module&lt;/li&gt;
  &lt;li&gt;Transforms Module&lt;/li&gt;
  &lt;li&gt;Fast Fourier Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fft&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;Number Theoretic Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ntt&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;Fast Walsh Hadamard Transform (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fwht&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/jksuom&quot;&gt;Kalevi&lt;/a&gt; brought up an important point about complicated symbolic expressions when using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fft&lt;/code&gt;. &lt;a href=&quot;https://github.com/asmeurer&quot;&gt;Aaron&lt;/a&gt; helped me fix a minor import issue. &lt;br /&gt;
Successive reviews helped in the following changes to PR:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iterable(...)&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hasattr(..., &apos;__iter__&apos;)&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;adding doctests&lt;/li&gt;
  &lt;li&gt;improving documentation&lt;/li&gt;
  &lt;li&gt;fixing precision issues in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fft&lt;/code&gt; using argument &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dps&lt;/code&gt; for decimal places or using unevaluated symbols in the first place (by passing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dps=None&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking forward to another exciting week.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/05/gsoc-week1</link>
		<guid>https://sidhantnagpal.github.io/2018/05/gsoc-week1</guid>
		<pubDate>2018-05-23T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>GSoC 2018: SymPy - Community Bonding</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The community bonding period has concluded. As proposed, I have gone through the existing modules and have thought about various aspects of the implementation which needed to be taken care of. The discussion for the project will take place on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gitter&lt;/code&gt; under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sympy/discrete&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Discussion for API is premature but it will shape as the Coding Period commences. Meanwhile, I have control of what all needs to be done in accordance with the proposed timeline.&lt;/p&gt;

&lt;p&gt;Being familiar with the development workflow and having contributed to SymPy, I assisted new contributors and also helped review existing PRs - &lt;a href=&quot;https://github.com/sympy/sympy/pull/14679&quot;&gt;#14679&lt;/a&gt;, &lt;a href=&quot;https://github.com/sympy/sympy/pull/14698&quot;&gt;#14698&lt;/a&gt; and &lt;a href=&quot;https://github.com/sympy/sympy/pull/14707&quot;&gt;#14707&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Looking forward to Coding Period.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/05/gsoc-community-bonding</link>
		<guid>https://sidhantnagpal.github.io/2018/05/gsoc-community-bonding</guid>
		<pubDate>2018-05-16T00:00:00+00:00</pubDate>
	</item>

	<item>
		<title>Selected for GSoC 2018: SymPy</title>
		<description>&lt;p&gt;&lt;img src=&quot;/files/gsoc-sympy.png&quot; style=&quot;width:75%; height:75%; float:left; margin-left:55px;&quot; /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I am extremely glad to inform that my &lt;a href=&quot;https://summerofcode.withgoogle.com/projects/5222530349006848&quot;&gt;proposal&lt;/a&gt; ‘Transforms, Convolution &amp;amp; Linear Recurrence Evaluation’ has been accepted by SymPy for Google Summer of Code 2018.
&lt;!-- https://summerofcode.withgoogle.com/dashboard/project/5222530349006848/overview --&gt;
For those unfamiliar, SymPy is a Computer Algebra System (CAS) written entirely in Python. SymPy was started as a project by Ondrej Certik (&lt;a href=&quot;https://github.com/certik&quot;&gt;certik&lt;/a&gt;) in 2006. SymPy has participated in every Google Summer of Code since 2007.&lt;/p&gt;

&lt;p&gt;My official mentors are Aaron Meurer (&lt;a href=&quot;https://github.com/asmeurer&quot;&gt;asmeurer&lt;/a&gt;) and Kalevi Suominen (&lt;a href=&quot;https://github.com/jksuom&quot;&gt;jksuom&lt;/a&gt;). Aaron (who also joined from GSoC) is the lead developer of SymPy since 2011. Kalevi (SymPy Member) has mentored for Google Summer of Code in 2016 and 2017. I am extremely lucky to have gotten an opportunity to work with such experienced developers.&lt;/p&gt;

&lt;p&gt;During the Community Bonding Period, I will complete the following tasks:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Setting up the blog with RSS feed for GSoC posts (for &lt;a href=&quot;http://planet.sympy.org&quot;&gt;planet.sympy.org&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;Discussing the possible modes of communication, and getting information for timings and weekly meetings.&lt;/li&gt;
  &lt;li&gt;Resolving any other issues that might arise during the Coding Period.&lt;/li&gt;
  &lt;li&gt;Getting the details for expected work to be done, discussing the API of the modules to be implemented and studying the existing modules which might be used.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I would like to thank the SymPy team, especially my mentors - Aaron Meurer and Kalevi Suominen.&lt;/p&gt;

&lt;p&gt;Looking forward to a great summer.&lt;/p&gt;
</description>
		<link>https://sidhantnagpal.github.io/2018/04/gsoc-selection</link>
		<guid>https://sidhantnagpal.github.io/2018/04/gsoc-selection</guid>
		<pubDate>2018-04-24T00:00:00+00:00</pubDate>
	</item>


</channel>
</rss>
