Skip to content

Instantly share code, notes, and snippets.

View dpiponi's full-sized avatar
🧱
In material form

Dan Piponi dpiponi

🧱
In material form
View GitHub Profile
{-# LANGUAGE FlexibleContexts #-}
-- Version 2.0
import Data.Ratio
(*!) _ 0 = 0
(*!) a b = a*b
(^+) a b = zipWith (+) a b
@dpiponi
dpiponi / log.hs
Created February 1, 2017 17:46
Compute "functional logarithm" of x -> x+x^2
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
-- Uses exact-real package
import Data.Ratio
import Data.CReal
(*!) _ 0 = 0
(*!) a b = a*b
@dpiponi
dpiponi / comb.hs
Created January 31, 2017 16:06
Compute formal power series for functional square root of sin function
import Data.Ratio
(^+) a b = zipWith (+) a b
(^-) a b = zipWith (-) a b
(a : as) `convolve` (b : bs) = (a * b) :
((map (a *) bs) ^+ (as `convolve` (b : bs)))
compose (f : fs) (0 : gs) = f : (gs `convolve` (compose fs (0 : gs)))
@dpiponi
dpiponi / pearcey.py
Created September 12, 2016 00:30
Pearcey integral
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate
# Dimension of image in pixels
N = 256
# Number of samples to use for integration
M = 33
@dpiponi
dpiponi / swallowtail.py
Created September 11, 2016 19:38
The swallowtail catastrophe with diffraction
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate
# Dimension of image in pixels
N = 256
# Number of samples to use for integration
M = 257
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate
# Dimension of image in pixels
N = 256
# Number of samples to use for integration
M = 257
@dpiponi
dpiponi / elliptic-umbilic.py
Created September 10, 2016 16:29
The elliptic umbilic caustic rendered with diffraction
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import random
import scipy.integrate as integrate
# Dimension of image in pixels
N = 129
# Number of samples to use for integration
@dpiponi
dpiponi / graph.hs
Created August 26, 2016 13:58
Perfect matchings and continued fractions
import Data.Ratio
import Data.List
import Control.Monad
-- I'm using two Haskell types for the two vertex types in
-- a bipartite graph.
-- Edges only go from type a to type b.
data BipartiteGraph a b = G [a] [b] [(a, b)]
instance (Show a, Show b) => Show (BipartiteGraph a b) where
@dpiponi
dpiponi / Main.hs
Created February 15, 2016 23:38
Haskell heat engine simulation. (Not quite complete.)
{-# LANGUAGE FlexibleContexts #-}
import Data.Array
import Data.Array.IO
import Data.Foldable
import Data.List hiding (sum)
import System.Random
import Control.Monad.State
import Prelude hiding (sum)
--import Debug.Trace
@dpiponi
dpiponi / Circle packing
Created May 12, 2015 19:41
Julia code using Divide and Concur algorithm to pack circles in a circle
function dm(Pa, Pb, y, β, n)
for i in 1:n
if i%100 == 0
print("Iteration $i/$n\n")
end
fay = (1-1/β)*Pa(y)+(1/β)*y
fby = (1+1/β)*Pb(y)-(1/β)*y
y = y+β*(Pa(fby)-Pb(fay))
# @show(y)
end