Skip to content

Instantly share code, notes, and snippets.

View 2torus's full-sized avatar

Boris Ettinger 2torus

  • Tel Aviv, Israel
View GitHub Profile
@mikeananev
mikeananev / deps.edn
Created February 24, 2019 22:28
Clojure compress / decompress data examples
{:deps {org.clojure/clojure {:mvn/version "1.10.0"}
com.taoensso/nippy {:mvn/version "2.14.0"}
org.apache.commons/commons-compress {:mvn/version "1.18"}}}
@kmizu
kmizu / AutomaticDifferentiation.scala
Created December 4, 2011 01:09
An example of automatic differentiation in Scala. It is straightforward porting of http://www.kmonos.net/wlog/123.html#_2257111201
object AutomaticDifferentiation {
case class Dual[X](x: X, dx: X)
def dual(x: Double) = Dual(x, 1.0)
implicit val dualDoubleIsFractional: Fractional[Dual[Double]] = new Fractional[Dual[Double]] {
override def plus(x: Dual[Double], r: Dual[Double]) = Dual(x.x + r.x, x.dx * 1 + r.dx * 1)
override def minus(x: Dual[Double], r: Dual[Double]) = Dual(x.x - r.x, x.dx * 1 + r.dx * -1)
override def times(x: Dual[Double], r: Dual[Double]) = Dual(x.x * r.x, x.dx * r.x + r.dx * x.x)
override def div(x: Dual[Double], r: Dual[Double]) = Dual(x.x / r.x, x.dx * (1 / r.x) + r.dx * (- x.x / r.x / r.x))
override def fromInt(x: Int): Dual[Double] = Dual(x, 0.0)
override def negate(x: Dual[Double]): Dual[Double] = sys.error("not implemented")