Skip to content

kiranshila/FresnelIntegrals.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FresnelIntegrals.jl

Stable Dev Build Status Coverage

A quick Julia library for calculating Fresnel Integrals using the error function from SpecialFunctions.jl.

using FresnelIntegrals
using Plots

z = -30:0.001:30
plot(fresnelc, fresnels, z; legend=false, title="Euler Spiral", xlabel="C(z)", ylabel="S(z)")

Spiral

As expected, this is much faster than the numeric integral solution

using QuadGK
using FresnelIntegrals
using BenchmarkTools

julia> @benchmark fresnelc(1.8)
BenchmarkTools.Trial: 10000 samples with 961 evaluations.
 Range (min  max):  86.629 ns  192.074 ns  ┊ GC (min  max): 0.00%  0.00%
 Time  (median):     89.056 ns               ┊ GC (median):    0.00%
 Time  (mean ± σ):   90.710 ns ±   5.423 ns  ┊ GC (mean ± σ):  0.00% ± 0.00%

  ▆▆█▅ ▇█▃ ▁▂▄▃ ▂▃▂▁▂▁▂▂▂▂▂▁▁▁  ▁     ▁                        ▂
  ████▇███▇███████████████████████████████▇▇█▇▇▇▆▆▆▇▆▇▆▆▆▇▆▆▆▅ █
  86.6 ns       Histogram: log(frequency) by time       111 ns <

 Memory estimate: 0 bytes, allocs estimate: 0.

julia> @benchmark quadgk(t->cospi(t^2/2),0,1.8)
BenchmarkTools.Trial: 10000 samples with 201 evaluations.
 Range (min  max):  394.697 ns   2.443 μs  ┊ GC (min  max): 0.00%  79.19%
 Time  (median):     411.279 ns              ┊ GC (median):    0.00%
 Time  (mean ± σ):   424.133 ns ± 75.245 ns  ┊ GC (mean ± σ):  0.65% ±  3.09%

    ▄▄▂▂▄▇██▆▃▁▁▂▂▃▃▄▄▄▄▃▄▃▂▂▁▁▁▁▂▂▂▂▂▁▂▁                      ▂
  ▂███████████████████████████████████████████▇▇█▇█▇▇▇▇▅▅▄▅▆▅▅ █
  395 ns        Histogram: log(frequency) by time       499 ns <

 Memory estimate: 368 bytes, allocs estimate: 2.

About

Provides the sine and cosine fresnel integrals for Julia

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages