## 6 Numerical Examples
### Scientific Computing  
We solved all tiling problems using MATLAB (R2020b) and CPLEX (12.8.0.0), a commercial optimization package, see [[https://www.ibm.com/analytics/cplex-optimizer](https://www.ibm.com/analytics/cplex-optimizer)]([https://www.ibm.com/analytics/cplex-optimizer](https://www.ibm.com/analytics/cplex-optimizer)) (accessed on 6 May 2022), run on a MacBook Pro (OS X 10.15.7) with 16 GB memory and 2.7 GHz Intel Core i7. In a previous study [46] we verified that CPLEX was very effective at solving the ILP problems arising from tiling with polyominoes, and was generally faster than two other popular high-performance optimization packages, namely Gurobi (7.5.2), see [[http://www.gurobi.com](http://www.gurobi.com)]([http://www.gurobi.com](http://www.gurobi.com)) (accessed on 6 May 2022), and SCIP (6.0.0), see [[http://scip.zib.de](http://scip.zib.de)]([http://scip.zib.de](http://scip.zib.de)) (accessed on 6 May 2022). The shell commands needed in CPLEX to find either all feasible solutions, or a single optimal solution, are given in [46].  
To solve a particular instance of a tiling problem we employed three steps:  
1. Construct the linear system in MATLAB and export the associated ILP file to CPLEX;
2. Solve the ILP file with CPLEX and export the solution file back to MATLAB;
3. Extract the solution(s) from the file produced in (ii) in a form that MATLAB can read and plot.  
We provide all necessary files for other researchers to reproduce the experimental results in this article. The collections of MATLAB files needed to carry out steps (i) and (iii) above for the polyomino and parionino tiling problems are freely available. The associated repositories are POLYOMINOES (v2.1.4), see [[https://doi.org/10.5281/zenodo.6366101](https://doi.org/10.5281/zenodo.6366101)]([https://doi.org/10.5281/zenodo.6366101](https://doi.org/10.5281/zenodo.6366101)) (accessed on 6 May 2022), and PARIOMINOES (v3.0.0), see [[https://doi.org/10.5281/zenodo.6366094](https://doi.org/10.5281/zenodo.6366094)]([https://doi.org/10.5281/zenodo.6366094](https://doi.org/10.5281/zenodo.6366094)) (accessed on 6 May 2022). For every example, we provide the appropriate MATLAB 'LP make' files. In the polyomino tiling case, solutions are plotted in MATLAB using the programs PLOT_MONO or PLOT_MULTI, depending on whether the problem is of the monohedral or multihedral type, respectively. In the parionino tiling case, solutions are plotted in MATLAB using the program PLOT_PARIOMINO. The MATLAB program DIOPHANTINE_ND_NONNEGATIVE_BOUNDED, included in the PARIOMINOES repository, was used to solve the linear Diophantine Equations (7) of Theorem 1. This program is similar in construction to the related Diophantine solvers described at [47].  
From a computational perspective, it would simplify the solution process if we could encode the parity constraints of Equation (7) directly into the ILP formulation. However, before the ILP formulation can be constructed we must first solve (7) yielding sets of parioninoes, where each set represents a separate parionino tiling subproblem. Then, for each subproblem, the MATLAB programs in the repository PARIOMINOES are used to construct an ILP file. This is a non-trivial task because before we can compute the constraints we must compute all possible placements of the parioninoes in the checkerboard coloured target region. In addition to fitting the parioninoes in the region (using a combination of rotations, reflections and translations) we also ensure that the colours of squares covered match the colours of the squares of the tiles (see Section 3 for further details).