Software Organization

Directory structure

.
├── README.md
├── .travis.yml
├── autodiff-env.yml
├── .gitignore
└── docs
    ├── bfgs.ipynb
    ├── default-header.py
    ├── make.bat
    ├── Makefile
    ├── milestone1.ipynb
    ├── milestone1.md
    ├── milestone1.pdf
    ├── milestone2.pdf
    ├── optimization_example.ipynb
    ├── pandoc-minted.py
    ├── root_finding_test.ipynb
    ├── toipynb.sh
    ├── topdf.sh
    └── source
	    ├── conf.py
	    ├── How_to_install.md
	    ├── How_to_use.md
	    ├── implementation.md
	    ├── index.md
	    ├── introduction.md
	    ├── proposed-extension.md
	    ├── root_finding_test.md
	    ├── software_organization.md
	    ├── sphinx-requirements.txt
	    ├── index.rst
	    └── api-doc
	    	├── autodiff.rst
	    	└── modules.rst
	    └── examples
	    	├── bfgs.md
	    	├── index.rst
	    	└── root_finding.md
	    └── image
	    	├── equation1.svg
	    	├── equation2.svg
	    	├── milestone1_computation_graph.png
	    	├── milestone1_evaluation_table.png
	    	└── equation3.svg
	    └── test-page
	    	└── test.md
└── autodiff
    ├── __init__.py
    ├── _utlities.py
    ├── operations.py
    ├── optimizations.py
    ├── root_finding.py
    └── structures.py
└── tests
    ├── newtons_method.py
    ├── test_array.py
    ├── test_operations.py
    └── test_optimization.py

Modules

There are four modules. The autodiff package implements the forward mode of automatic differentiation. It contains structures.py module, which includes the definition of the Number and Array class, and operations.py module, which includes the implementations of the various elementary operations and the derivatives of elementary operations. The root_finding.py module and optimizations.py module performs various root-finding and optimization methods as a proposed extension. The tests package runs tests for autodiff. See below for details about testing.

Testing

All tests live in tests/test_autodiff.py. We will use both TravisCI and CodeCov to distribute reports.