Skip to content

phetdam/math

Repository files navigation

math

./banner.png

Some mathematical work that I have done on my own for fun.

Note:

Still deciding on a new banner.

See the Building section for instructions on how to compile the repo's C++ and LaTeX sources with CMake.

Any mathematical errors are wholly my own.

Contents

examples

Contains C++ source and CMakeLists.txt for building CLI executables. These typically will compute some numerical result or demonstrate an implementation as instructed in an exercise or other application.

include

Contains C++ headers for library code used by the CLI executables in examples. There is no src directory since all the code currently written is either templated or implemented as inline.

test

Contains C++ source and CMakeLists.txt for unit tests written with GoogleTest. If tests have been built, they can be run with run_tests.sh, which is a thin convenience script around CTest.

tex

Contains the .tex source for my independent mathematical work. The exercises directory is for worked exercises from textbooks, monographs, etc., while the original directory is for my own original work. The utils directory is for LaTeX setup or command definitions, which may be used in other .tex files, typically by using \input.

Building

To perform a local build with this repo the following dependencies are required:

Note:

Dependencies on Boost and Eigen are planned to be reduced, removed, and/or made optional in the future. Originally, the C++ code was written at a time when the author had just started learning C++17 and didn't understand template metaprogramming quite as well compared to his knowledge today.

[1]The Eigen documentation used to live at eigen.tuxfamily.org but the domain no longer seems reachable. Up-to-date master branch documentation for Eigen is now hosted on their GitLab Pages.

Unit tests will be included in the build if the following are available:

The LaTeX source in the tex subdirectory will also be built inplace into PDF files in the repo tree if pdfTeX and BibTeX are locatable via find_package and/or searching the directories in your PATH.

Local builds have been tested with the following compiler + platforms:

  • GCC 9.3.0 on WSL1 Ubuntu 20.04.3 LTS
  • GCC 11.3.0 on WSL1 Ubuntu 22.04.2 LTS
  • Visual Studio 2022 on Windows 10 Home
  • Visual Studio 2022 on Windows 11 Home

For POSIX systems, use the included build.sh build script. To build a release build, use:

./build.sh -c Release

You can use the -Ca option to pass additional arguments to the CMake configuration step, e.g. hints for find_package like -DGTest_ROOT=/path/to/googletest, and so on.

On Windows, the included build.bat can be used in the same manner:

build -c Release

Note that arguments containing = have to be quoted for CMD. Therefore, CMake -D arguments should be passed in double quotes, e.g. like "-DGTest_ROOT=C:\path\to\googletest", else CMD will be confused.

Building PDFs from TeX source

Note:

Using build_tex.sh is deprecated in favor of the CMake integration which enables near-optimal minimal rebuild while correctly determining how many times pdfLaTeX and BibTeX each need to be invoked. build_tex.sh is a dumb script that simply loops through subdirectories.

Do note the CMake integration produces the exact same in-tree results as building through an editor with latexmk or using build_tex.sh; I found it difficult to reliably get all outputs written to a separate build directory because some LaTeX packages like minted don't integrate well with the pdfTeX -output-directory option.

You may compile the .tex source to PDF files using the provided build_tex.sh shell script if you have the bash shell [2] and pdflatex. After using git clone to clone the repository contents, cd into the top-level repository directory, use chmod to set permissions appropriately, for example with chmod 777 build_tex.sh, and execute

./build_tex.sh

build_tex.sh will then compile all .tex files in tex and write its output to the pdf directory, which will mirror the directory tree of tex. The pdf directory and its subdirectories will be created as needed. If you do not wish to adjust permissions, use bash build_tex.sh instead of executing with ./.

You can view help on more advanced use of build_tex.sh with build_tex.sh -h or build_tex.sh --help.

[2]The bash shell is necessary since the improved [[ is used once in build_tex.sh.

About

some independent work. any errors are wholly my own.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published