@misc{anderskvellestadProject5FYS3150,
  title = {Project 5 --- {{FYS3150}}/{{FYS4150}} Course Material},
  author = {{Anders Kvellestad}},
  urldate = {2025-12-09},
  howpublished = {https://anderkve.github.io/FYS3150/book/projects/project5.html},
  file = {/home/lars/Zotero/storage/IVLD4EHN/project5.html}
}

@techreport{demmelSuperLUUsersGuide1999,
  title = {{{SuperLU}} Users' Guide},
  author = {Demmel, James W. and Gilbert, John R. and Li, Xiaoye S.},
  year = 1999,
  month = nov,
  number = {LBNL--44289, 751785},
  pages = {LBNL--44289, 751785},
  doi = {10.2172/751785},
  urldate = {2025-12-09},
  langid = {english},
  file = {/home/lars/Zotero/storage/8FELF93A/Demmel et al. - 1999 - SuperLU users' guide.pdf}
}

@article{harrisArrayProgrammingNumPy2020,
  title = {Array Programming with {{NumPy}}},
  author = {Harris, Charles R. and Millman, K. Jarrod and van der Walt, St{\'e}fan J. and Gommers, Ralf and Virtanen, Pauli and Cournapeau, David and Wieser, Eric and Taylor, Julian and Berg, Sebastian and Smith, Nathaniel J. and Kern, Robert and Picus, Matti and Hoyer, Stephan and van Kerkwijk, Marten H. and Brett, Matthew and Haldane, Allan and del R{\'i}o, Jaime Fern{\'a}ndez and Wiebe, Mark and Peterson, Pearu and {G{\'e}rard-Marchant}, Pierre and Sheppard, Kevin and Reddy, Tyler and Weckesser, Warren and Abbasi, Hameer and Gohlke, Christoph and Oliphant, Travis E.},
  year = 2020,
  month = sep,
  journal = {Nature},
  volume = {585},
  number = {7825},
  pages = {357--362},
  publisher = {{Springer Science and Business Media LLC}},
  doi = {10.1038/s41586-020-2649-2}
}

@article{hunterMatplotlib2DGraphics2007,
  title = {Matplotlib: {{A 2D}} Graphics Environment},
  author = {Hunter, J. D.},
  year = 2007,
  journal = {Computing in Science \& Engineering},
  volume = {9},
  number = {3},
  pages = {90--95},
  publisher = {IEEE COMPUTER SOC},
  doi = {10.1109/MCSE.2007.55},
  abstract = {Matplotlib is a 2D graphics package used for Python for application development, interactive scripting, and publication-quality image generation across user interfaces and operating systems.}
}

@article{liuCrankNicolsonMethod2022,
  title = {Crank--{{Nicolson}} Method for Solving Uncertain Heat Equation},
  author = {Liu, Jin and Hao, Yifei},
  year = 2022,
  month = feb,
  journal = {Soft Computing},
  volume = {26},
  number = {3},
  pages = {937--945},
  issn = {1433-7479},
  doi = {10.1007/s00500-021-06565-9},
  urldate = {2025-12-09},
  abstract = {For usual uncertain heat equations, it is challenging to acquire their analytic solutions. A forward difference Euler method has been used to compute the uncertain heat equations' numerical solutions. Nevertheless, the Euler scheme is instability in some cases. This paper proposes an implicit task to overcome this disadvantage, namely the Crank--Nicolson method, which is unconditional stability. An example shows that the Crank--Nicolson scheme is more stable than the previous scheme (Euler scheme). Moreover, the Crank--Nicolson method is also applied to compute two characteristics of uncertain heat equation's solution---expected value and extreme value. Some examples of uncertain heat equations are designed to show the availability of the Crank--Nicolson method.},
  langid = {english},
  keywords = {Crank-Nicolson method,Heat equation,Liu process,Numerical solution},
  file = {/home/lars/Zotero/storage/Y67L5UFB/Liu and Hao - 2022 - Crank–Nicolson method for solving uncertain heat equation.pdf}
}

@inproceedings{sandersonArmadilloEfficientFramework2025,
  title = {Armadillo: {{An Efficient Framework}} for {{Numerical Linear Algebra}}},
  shorttitle = {Armadillo},
  booktitle = {2025 17th {{International Conference}} on {{Computer}} and {{Automation Engineering}} ({{ICCAE}})},
  author = {Sanderson, Conrad and Curtin, Ryan},
  year = 2025,
  month = mar,
  eprint = {2502.03000},
  primaryclass = {cs},
  pages = {303--307},
  doi = {10.1109/ICCAE64891.2025.10980539},
  urldate = {2025-10-16},
  abstract = {A major challenge in the deployment of scientific software solutions is the adaptation of research prototypes to production-grade code. While high-level languages like MATLAB are useful for rapid prototyping, they lack the resource efficiency required for scalable production applications, necessitating translation into lower level languages like C++. Further, for machine learning and signal processing applications, the underlying linear algebra primitives, generally provided by the standard BLAS and LAPACK libraries, are unwieldy and difficult to use, requiring manual memory management and other tedium. To address this challenge, the Armadillo C++ linear algebra library provides an intuitive interface for writing linear algebra expressions that are easily compiled into efficient production-grade implementations. We describe the expression optimisations we have implemented in Armadillo, exploiting template metaprogramming. We demonstrate that these optimisations result in considerable efficiency gains on a variety of benchmark linear algebra expressions.},
  archiveprefix = {arXiv},
  keywords = {Computer Science - Mathematical Software},
  file = {/home/lars/Zotero/storage/UNJD6AR5/Sanderson and Curtin - 2025 - Armadillo An Efficient Framework for Numerical Linear Algebra.pdf;/home/lars/Zotero/storage/RHNN68A2/2502.html}
}

@article{sandersonPracticalSparseMatrices2019,
  title = {Practical {{Sparse Matrices}} in {{C}}++ with {{Hybrid Storage}} and {{Template-Based Expression Optimisation}}},
  author = {Sanderson, Conrad and Curtin, Ryan},
  year = 2019,
  month = jul,
  journal = {Mathematical and Computational Applications},
  volume = {24},
  number = {3},
  eprint = {1811.08768},
  primaryclass = {cs},
  pages = {70},
  issn = {2297-8747},
  doi = {10.3390/mca24030070},
  urldate = {2025-10-16},
  abstract = {Despite the importance of sparse matrices in numerous fields of science, software implementations remain difficult to use for non-expert users, generally requiring the understanding of underlying details of the chosen sparse matrix storage format. In addition, to achieve good performance, several formats may need to be used in one program, requiring explicit selection and conversion between the formats. This can be both tedious and error-prone, especially for non-expert users. Motivated by these issues, we present a user-friendly and open-source sparse matrix class for the C++ language, with a high-level application programming interface deliberately similar to the widely used MATLAB language. This facilitates prototyping directly in C++ and aids the conversion of research code into production environments. The class internally uses two main approaches to achieve efficient execution: (i) a hybrid storage framework, which automatically and seamlessly switches between three underlying storage formats (compressed sparse column, Red-Black tree, coordinate list) depending on which format is best suited and/or available for specific operations, and (ii) a template-based meta-programming framework to automatically detect and optimise execution of common expression patterns. Empirical evaluations on large sparse matrices with various densities of non-zero elements demonstrate the advantages of the hybrid storage framework and the expression optimisation mechanism.},
  archiveprefix = {arXiv},
  keywords = {Computer Science - Mathematical Software},
  file = {/home/lars/Zotero/storage/PZ5ZIXJU/Sanderson and Curtin - 2019 - Practical Sparse Matrices in C++ with Hybrid Storage and Template-Based Expression Optimisation.pdf;/home/lars/Zotero/storage/CQNT3AKH/1811.html}
}
