Code covered by the BSD License

### Highlights from FresnelS and FresnelC

5.0
5.0 | 1 rating Rate this file 19 Downloads (last 30 days) File Size: 2.34 MB File ID: #28765

# FresnelS and FresnelC

### John D'Errico (view profile)

19 Sep 2010 (Updated )

Efficient and accurate computation of the Fresnel sine and cosine integrals

File Information
Description

I noticed the many codes on the FEX to compute the Fresnel integrals for real arguments, and it left me wondering how I might try solving this problem in MATLAB for both high accuracy and high efficiency.

The approach I took yields a maximum error of roughly 1e-14 as far as I could get reasonable values to compare it to. (The screenshot shows the predicted error for a sampling of points.)

I've supplied functions for both the Fresnel sine and cosine integrals, as well as a .pdf file that explains the approach I took.

Evaluate the Fresnel cosine integral C(x) at x = 1.38

>> fresnelC(1.38,0)
ans =
0.562975925772444

Verify the correctness of this value using quadgk.

>> FresnelCObj = @(t) cos(pi*t.^2/2);
ans =
0.562975925772444

Now, how fast is fresnelC? Using Steve Eddins timeit code to yield an accurate estimate of the time required, we see that it is reasonably fast for scalar input.

>> timeit(@() fresnelC(1.38))
ans =
0.000193604455833333

More importantly, these functions are properly vectorized. So 1 million evaluations are easy to do, and are much faster than 1 million times the time taken for one evaluation.

>> T = rand(1000000,1);
>> tic
>> FCpred = fresnelC(T);
>> toc
Elapsed time is 0.226884 seconds.

Acknowledgements
MATLAB release MATLAB 7.10 (R2010a)
02 May 2012 John D'Errico

### John D'Errico (view profile)

New version submitted - thanks to Felipe.

Comment only
02 May 2012 Felipe

### Felipe (view profile)

Hi John. Thanks for citing ("acknowledging") related submissions. There are two new ones, that came after yours: 33577 and 34134. You might want to cite these, too. That way folks will find your submission in all cases. I'm trying to kill duplicates. I'm assuming yours is superior -- both in accuracy and speed, not to mention readability.

Comment only
12 Oct 2010 John Kot