Code

Code written by me for various research projects or as part of a larger effort to build software packages.

Research code

  1. Fast Macaulay null space algorithm (Julia). An efficient algorithm to compute null spaces of Macaulay matrices of bivariate polynomial systems. As discussed in “A fast algorithm for computing Macaulay null spaces of bivariate polynomial systems”, the null space of the matrix is obtained by converting the Macaulay matrix into a Cauchy-like matrix and using the Schur algorithm (with approximate total pivoting) to compute a rank-revealing LU factorization. (Repository)
  2. Spline-based separable expansions (Matlab). An implementation of a supervised learning framework that employs splines with sums of separable functions to perform both regression and classification tasks. As covered in the paper “Regression and classification with spline-based separable expansions”, the discretization of the approximant by both a B-spline and a low rank polyadic decomposition result in an efficient procedure for approximating functions in many variables. (Download link Tensorlab+)
  3. CSS matrices (Julia). Code to construct and solve Cycle Semi-Separable (CSS) matrices. As discussed in the paper “Minimal rank completions for overlapping blocks”, the construction involves solves solving a minimum rank completion problem. (Repository)
  4. Periodic Approximation (Matlab). An implementation of the periodic approximation technique for computing spectra of the Koopman operator for measure-preserving dynamical systems. The theory behind these methods are discussed in the companion papers “On the approximation of Koopman spectra of measure-preserving flows” and “On the approximation of Koopman spectra for measure preserving transformations”. The code base caters both to the discrete-time and continuous-time case, but is limited to systems that only preserve the Lebesgue measure. (Repository)
  5. Hybrid Pendulum (Matlab). Code associated with the paper “An operator-theoretic viewpoint to non-smooth dynamical systems: Koopman analysis of a hybrid pendulum” to plot Koopman eigenfunctions of the Hybrid pendulum. (Repository)

Packages

  1. PyTensorlab (Python). I am currently involved in a huge undertaking to translate the Tensorlab software package in Matlab to Python. This is software package for computing tensor decompositions (e.g., CPD, multi-linear SVD, LMLRA). I am one of the main contributing developers. (IN DEVELOPMENT PHASE)
  2. SSSMatrices (Julia). Computational routines for Sequentially Semi-Separable (SSS) matrices. The package allows one to convert dense matrix into SSS representations, add SSS matrices, and solve linear systems involving SSS matrices. (Repository)