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( 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 ]

fresnel.assign( x, out, stride, offset )

Simultaneously computes the Fresnel integrals S(x) and C(x) and assigns results to a provided output array.

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

var out = new Float64Array( 2 );

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

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

Examples

var linspace = require( '@stdlib/array/base/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 ] ) );
}

C APIs

Usage

#include "stdlib/math/base/special/fresnel.h"

stdlib_base_fresnel( x, &S, &C )

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

double S;
double C;

stdlib_base_fresnel( 4.0, &S, &C );

The function accepts the following arguments:

  • x: [in] double input value.
  • S: [out] double* destination for S(x).
  • C: [out] double* destination for C(x).
void stdlib_base_fresnel( const double x, double *S, double *C );

Examples

#include "stdlib/math/base/special/fresnel.h"
#include <stdio.h>

int main( void ) {
    const double x[] = { 0.0, 1.57, 3.14, 6.28 };

    double S;
    double C;
    int i;
    for ( i = 0; i < 4; i++ ) {
        stdlib_base_fresnel( x[ i ], &S, &C );
        printf( "x: %lf => S(x): %lf, C(x): %lf\n", x[ i ], S, C );
    }
}
Did you find this page helpful?