Complex128
128-bit complex number.
Usage
var Complex128 = require( '@stdlib/complex/float64/ctor' );
Complex128( real, imag )
128-bit complex number constructor, where real and imag are the real and imaginary components, respectively.
var z = new Complex128( 5.0, 3.0 ); // returns <Complex128>
Properties
Complex128.name
Static property returning the constructor name.
var str = Complex128.name; // returns 'Complex128'
Complex128.BYTES_PER_ELEMENT
Size (in bytes) of each component.
var nbytes = Complex128.BYTES_PER_ELEMENT; // returns 8
Complex128.prototype.BYTES_PER_ELEMENT
Size (in bytes) of each component.
var z = new Complex128( 5.0, 3.0 ); var nbytes = z.BYTES_PER_ELEMENT; // returns 8
Complex128.prototype.byteLength
Length (in bytes) of a complex number.
var z = new Complex128( 5.0, 3.0 ); var nbytes = z.byteLength; // returns 16
Instance
A Complex128 instance has the following properties...
re
A read-only property returning the real component.
var z = new Complex128( 5.0, 3.0 ); var re = z.re; // returns 5.0
im
A read-only property returning the imaginary component.
var z = new Complex128( 5.0, -3.0 ); var im = z.im; // returns -3.0
Methods
Accessor Methods
These methods do not mutate a Complex128 instance and, instead, return a complex number representation.
Complex128.prototype.toString()
Returns a string representation of a Complex128 instance.
var z = new Complex128( 5.0, 3.0 ); var str = z.toString(); // returns '5 + 3i' z = new Complex128( -5.0, -3.0 ); str = z.toString(); // returns '-5 - 3i'
Complex128.prototype.toJSON()
Returns a JSON representation of a Complex128 instance. JSON.stringify() implicitly calls this method when stringifying a Complex128 instance.
var z = new Complex128( 5.0, -3.0 ); var o = z.toJSON(); /* { "type": "Complex128", "re": 5.0, "im": -3.0 } */
To revive a Complex128 number from a JSON string, see @stdlib/complex/float64/reviver.
Notes
- Both the real and imaginary components are stored as double-precision floating-point numbers.
Examples
var Complex128 = require( '@stdlib/complex/float64/ctor' ); var z = new Complex128( 3.0, -2.0 ); console.log( 'type: %s', typeof z ); // => 'type: object' console.log( 'str: %s', z ); // => 'str: 3 - 2i' console.log( 'real: %d', z.re ); // => 'real: 3' console.log( 'imaginary: %d', z.im ); // => 'imaginary: -2' console.log( 'JSON: %s', JSON.stringify( z ) ); // => 'JSON: {"type":"Complex128","re":3,"im":-2}'
C APIs
Usage
#include "stdlib/complex/float64/ctor.h"
stdlib_complex128_t
An opaque type definition for a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128( 5.0, 2.0 );
stdlib_complex128_parts_t
An opaque type definition for a union for accessing the real and imaginary parts of a double-precision complex floating-point number.
double real( const stdlib_complex128_t z ) { stdlib_complex128_parts_t v; // Assign a double-precision complex floating-point number: v.value = z; // Extract the real component: double re = v.parts[ 0 ]; return re; } // ... // Create a complex number: stdlib_complex128_t z = stdlib_complex128( 5.0, 2.0 ); // ... // Access the real component: double re = real( z ); // returns 5.0
The union has the following members:
-
value:
stdlib_complex128_tdouble-precision complex floating-point number. -
parts:
double[]array having the following elements:- 0:
doublereal component. - 1:
doubleimaginary component.
- 0:
stdlib_complex128( real, imag )
Returns a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128( 5.0, 2.0 );
The function accepts the following arguments:
- real:
[in] doublereal component. - imag:
[in] doubleimaginary component.
stdlib_complex128_t stdlib_complex128( const double real, const double imag );
stdlib_complex128_from_float32( real )
Converts a single-precision floating-point number to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_float32( 5.0f );
The function accepts the following arguments:
- real:
[in] floatreal component.
stdlib_complex128_t stdlib_complex128_from_float32( const float real );
stdlib_complex128_from_float64( real )
Converts a double-precision floating-point number to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_float64( 5.0 );
The function accepts the following arguments:
- real:
[in] doublereal component.
stdlib_complex128_t stdlib_complex128_from_float64( const double real );
stdlib_complex128_from_complex64( z )
Converts a single-precision complex floating-point number to a double-precision complex floating-point number.
#include "stdlib/complex/float32/ctor.h" stdlib_complex64_t z1 = stdlib_complex64( 5.0f, 3.0f ); stdlib_complex128_t z2 = stdlib_complex128_from_complex64( z1 );
The function accepts the following arguments:
- z:
[in] stdlib_complex64_tsingle-precision complex floating-point number.
stdlib_complex128_t stdlib_complex128_from_complex64( const stdlib_complex64_t z );
stdlib_complex128_from_complex128( z )
Converts (copies) a double-precision complex floating-point number to a double-precision complex floating-point number.
stdlib_complex128_t z1 = stdlib_complex128( 5.0, 3.0 ); stdlib_complex128_t z2 = stdlib_complex128_from_complex128( z1 );
The function accepts the following arguments:
- z:
[in] stdlib_complex128_tdouble-precision complex floating-point number.
stdlib_complex128_t stdlib_complex128_from_complex128( const stdlib_complex128_t z );
stdlib_complex128_from_int8( real )
Converts a signed 8-bit integer to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_int8( 5 );
The function accepts the following arguments:
- real:
[in] int8_treal component.
stdlib_complex128_t stdlib_complex128_from_int8( const int8_t real );
stdlib_complex128_from_uint8( real )
Converts an unsigned 8-bit integer to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_uint8( 5 );
The function accepts the following arguments:
- real:
[in] uint8_treal component.
stdlib_complex128_t stdlib_complex128_from_uint8( const uint8_t real );
stdlib_complex128_from_int16( real )
Converts a signed 16-bit integer to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_int16( 5 );
The function accepts the following arguments:
- real:
[in] int16_treal component.
stdlib_complex128_t stdlib_complex128_from_int16( const int16_t real );
stdlib_complex128_from_uint16( real )
Converts an unsigned 16-bit integer to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_uint16( 5 );
The function accepts the following arguments:
- real:
[in] uint16_treal component.
stdlib_complex128_t stdlib_complex128_from_uint16( const uint16_t real );
stdlib_complex128_from_int32( real )
Converts a signed 32-bit integer to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_int32( 5 );
The function accepts the following arguments:
- real:
[in] int32_treal component.
stdlib_complex128_t stdlib_complex128_from_int32( const int32_t real );
stdlib_complex128_from_uint32( real )
Converts an unsigned 32-bit integer to a double-precision complex floating-point number.
stdlib_complex128_t z = stdlib_complex128_from_uint32( 5 );
The function accepts the following arguments:
- real:
[in] uint32_treal component.
stdlib_complex128_t stdlib_complex128_from_uint32( const uint32_t real );
stdlib_complex128_to_complex64( z )
Converts a double-precision complex floating-point number to a single-precision complex floating-point number.
#include "stdlib/complex/float32/ctor.h" stdlib_complex128_t z1 = stdlib_complex128( 5.0, 3.0 ); stdlib_complex64_t z2 = stdlib_complex128_to_complex64( z1 );
The function accepts the following arguments:
- z:
[in] stdlib_complex64_tdouble-precision complex floating-point number.
stdlib_complex64_t stdlib_complex128_to_complex64( const stdlib_complex128_t z );
Examples
#include "stdlib/complex/float64/ctor.h" #include <stdint.h> #include <stdio.h> /** * Return the real component of a double-precision complex floating-point number. * * @param z complex number * @return real component */ static double real( const stdlib_complex128_t z ) { stdlib_complex128_parts_t v; // Assign a double-precision complex floating-point number: v.value = z; // Extract the real component: double re = v.parts[ 0 ]; return re; } /** * Return the imaginary component of a double-precision complex floating-point number. * * @param z complex number * @return imaginary component */ static double imag( const stdlib_complex128_t z ) { stdlib_complex128_parts_t v; // Assign a double-precision complex floating-point number: v.value = z; // Extract the imaginary component: double im = v.parts[ 1 ]; return im; } int main( void ) { const stdlib_complex128_t x[] = { stdlib_complex128( 5.0, 2.0 ), stdlib_complex128( -2.0, 1.0 ), stdlib_complex128( 0.0, -0.0 ), stdlib_complex128( 0.0/0.0, 0.0/0.0 ) }; stdlib_complex128_t v; int i; for ( i = 0; i < 4; i++ ) { v = x[ i ]; printf( "%lf + %lfi\n", real( v ), imag( v ) ); } }
See Also
@stdlib/complex/cmplx: create a complex number.@stdlib/complex/float32/ctor: 64-bit complex number.