Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

dual_number

This library provides a Ruby implementation of dual numbers, which are useful for forward mode automatic differentiation.

It is intended to accompany the article “Automatic differentiation in Ruby”.

That article explains the details, but here’s a brief demonstration:

$ irb -Ilib
>> require 'dual_number'
=> true

>> x = DualNumber(1, 2)
=> (1+2ε)

>> y = DualNumber(3, 4)
=> (3+4ε)

>> x + y
=> (4+6ε)

>> x * y
=> (3+10ε)

>> (x + 3) * 4
=> (16+8ε)

>> 3 + (4 * x)
=> (7+8ε)

One application of dual numbers is to use the second (“dual”) component to represent the derivative of the first (“real”) component. This lets us find the derivative of a function at a particular value by just passing in a dual number instead of a normal number:

>> def distance(time:)
     time * Math.sin(time * time) + 1
   end
=> :distance

>> value_and_derivative = distance(time: DualNumber(3, 1))
=> (2.2363554557252696-15.988226228682427ε)

>> value_and_derivative.real
=> 2.2363554557252696

>> value_and_derivative.dual
=> -15.988226228682427

If you have any questions, please get in touch via Twitter or email. If you find any bugs or other problems with the code, please open an issue.

About

A Ruby implementation of dual numbers.

Resources

License

Releases

No releases published

Languages

You can’t perform that action at this time.