autodiff32

Automatic Differentiator


License
MIT
Install
pip install autodiff32==0.1.1

Documentation

cs207-FinalProject

Group 32: Amelia Elverson, Aaron Jacobson, Erica Moreira, Lin Zhu

Build Status

Coverage Status

Introduction

This repository contains an implementation of forward automatic differentiation. Automatic differentiation breaks down the main function into elementary functions, evaluated upon one another. It then uses the chain rule to update the derivative at each step and ends in the derivative of the entire function. Please click the link for more information: Overview and Installation Guide

TO DO: Final due 12/10 at 12pm

  1. Confirm directory structure:

cs207-FinalProject/
  README.md
  docs/  
    documentation
    milestone1
    milestone2
  autodiff32/
     ...
  1. Software Requirements
  • Code is clean and well commented. TA wants higher quality docstrings.

  • Working forward mode implementation

    • Able to handle real functions of one or more variables, including multiple functions each of multiple variables
    • Able to handle vector functions with multiple real scalar or vector inputs
    • Available to download from GitHub.org
    • Installable from PyPi - need to update when finished!
    • Requirements.txt file with dependencies - need to update when finished!
    • Users should be "able to use without difficulty"
    • Functions that must be implemented
      • Addition (commutative)
      • Subtraction
      • Multiplication (commutative)
      • Division
      • Power
      • Negation
      • _lt_ - optional
      • _gt_ - optional
      • _le_ - optional
      • _ge_ - optional
      • _eq_
      • _ne_
      • Trig functions
      • Inverse trig functions
      • Exponentials - any base, treat natural base (e) as special case
      • Hyperbolic functions
      • Logistic funciton
      • Logarithms - any base
      • Square root
  • Test suite

    • Runs with pytest
    • Runs automatically on Travis CI
    • Contains badge showing pass/fail status of build.
    • Badge must show we are passing all tests
    • Connected to CodeCov
    • Badge reporting coverage of code
    • Confirm NO TESTS fail
    • Cover > 90% - need to confirm when finished!
  • Updated/extended documentation

    • Updated documentation will be the 'final' package documentation - mix of text and hand-on demos
    • Please name it documentation. Do not name it milestone3.
    • Sections:
      • Intro - describe problem, why it's important to solve
      • Background - including extensions
      • How to use
        • How to install
        • Basic demos for user - one for auto diff, one for new feature, etc.
      • Software org
        • Directory structure - update when finished
        • Modules and what they do
        • Where do tests live? How are they run? How are they integrated?
        • How can someone install package? Should developers and consumers following different installation procedure?
      • Implementation details
        • Description of current implementation - deeper than software org
          • Such as: core data structures, core classes, important attributes, external dependencies, elementary functions, etc.
      • Extension
        • Description of extension
        • Additional information or background needed to understand - including mathematical or other concepts
        • Do we actually need to include additional stuff for the extension? We built it into the above sections. Waiting on response from TA.
  • Extension

    • Build out extension
    • Full testing of extension
    • Document extension (including motivation and concepts behind it)
  • Video deliverable

    • Must be narrated by all members of group
    • Members must speak an equal amount
    • Change speakers exactly n-1 times (everyone should speak exactly once)
    • Time distribution:
      • Intro/background - 2 mins
        • min project only
        • Don't overdo the math details - provide big ideas behind auto diff and the motivation for using it
      • Implementation details/software organization/how to use - 4 mins
        • min project only
      • Additional features and extension - 5 mins
        • include any necessary background/impelmentation/how to use, etc. for extension here.
        • May need to present math background to get audience oriented
      • Future work/possible extensions - 2 mins
    • Maximum time: 15 mins
    • Do not include actual code snippets - teaching staff has access to code.
    • Upload to YouTube as private video - share video with course staff
    • Title must include group number
    • Fill out video submission Google Form