fresnel

Compute the Fresnel integrals S(x) and C(x).

The Fresnel integrals are defined as

StartLayout 1st Row 1st Column upper S left-parenthesis x right-parenthesis 2nd Column equals integral Subscript 0 Superscript x Baseline sine left-parenthesis StartFraction pi Over 2 EndFraction t squared right-parenthesis normal d t comma 2nd Row 1st Column upper C left-parenthesis x right-parenthesis 2nd Column equals integral Subscript 0 Superscript x Baseline cosine left-parenthesis StartFraction pi Over 2 EndFraction t squared right-parenthesis normal d t period EndLayout

Some sources define the Fresnel integrals using t2 for the argument of the sine and cosine. To get these functions, multiply the computed integrals by √(π/2) and multiply the argument x by √(2/π).

Usage

var fresnel = require( '@stdlib/math/base/special/fresnel' );

fresnel( [out,] x )

Simultaneously computes the Fresnel integrals S(x) and C(x).

var v = fresnel( 0.0 );
// returns [ ~0.0, ~0.0 ]

v = fresnel( 1.0 );
// returns [ ~0.438, ~0.780 ]

v = fresnel( Infinity );
// returns [ ~0.5, ~0.5 ]

v = fresnel( -Infinity );
// returns [ ~-0.5, ~-0.5 ]

v = fresnel( NaN );
// returns [ NaN, NaN ]

By default, the function returns the S(x) and C(x) as a two-element array. To avoid extra memory allocation, the function supports providing an output (destination) object.

var Float64Array = require( '@stdlib/array/float64' );

var out = new Float64Array( 2 );

var v = fresnel( out, 0.0 );
// returns <Float64Array>[ ~0.0, ~0.0 ]

var bool = ( v === out );
// returns true

Examples

var linspace = require( '@stdlib/math/utils/linspace' );
var fresnel = require( '@stdlib/math/base/special/fresnel' );

var x = linspace( 0.0, 10.0, 100 );
var i;

for ( i = 0; i < x.length; i++ ) {
    console.log( fresnel( x[ i ] ) );
}