# Complex128 > 128-bit complex number.
## Usage ```javascript var Complex128 = require( '@stdlib/complex/float64' ); ``` #### Complex128( real, imag ) 128-bit complex number constructor, where `real` and `imag` are the **real** and **imaginary** components, respectively. ```javascript var z = new Complex128( 5.0, 3.0 ); // returns ``` * * * ## Properties #### Complex128.BYTES_PER_ELEMENT Size (in bytes) of each component. ```javascript var nbytes = Complex128.BYTES_PER_ELEMENT; // returns 8 ``` #### Complex128.prototype.BYTES_PER_ELEMENT Size (in bytes) of each component. ```javascript 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. ```javascript 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. ```javascript var z = new Complex128( 5.0, 3.0 ); var re = z.re; // returns 5.0 ``` #### im A **read-only** property returning the **imaginary** component. ```javascript 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. ```javascript 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][json] representation of a `Complex128` instance. [`JSON.stringify()`][mdn-json-stringify] implicitly calls this method when stringifying a `Complex128` instance. ```javascript var z = new Complex128( 5.0, -3.0 ); var o = z.toJSON(); /* { "type": "Complex128", "re": 5.0, "im": -3.0 } */ ``` To [revive][mdn-json-parse] a `Complex128` number from a [JSON][json] `string`, see [@stdlib/complex/reviver-float64][@stdlib/complex/reviver-float64].
* * *
## Notes - Both the **real** and **imaginary** components are stored as double-precision floating-point numbers.
* * *
## Examples ```javascript var Complex128 = require( '@stdlib/complex/float64' ); 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.0 console.log( 'imag: %d', z.im ); // => imag: -2.0 console.log( 'JSON: %s', JSON.stringify( z ) ); // => JSON: {"type":"Complex128","re":3,"im":-2} ```