Complex (function)

From APL Wiki
Jump to navigation Jump to search

Complex () is a dyadic scalar function which combines its arguments into a complex number having with the left argument as real part and the right argument as imaginary part. It was added to J as j. together with initial support for complex numbers, and was adopted in Extended Dyalog APL using the glyph because it was seen as a type of numerical composition () for the circular () domain. Complex shares its glyph with Imaginary which is equivalent to applying Complex with a left argument of 0.

The question of whether to include this function is one of Roger Hui's 50 exercises in APL language design[1]:

Complex numbers can be constructed as ordered pairs of real numbers, similar to how integers can be constructed as ordered pairs of natural numbers and rational numbers as ordered pairs of integers. For complex numbers, j. plays the same role as - for integers and ÷ for rational numbers.


Try it online!

      ¯2 9 5  3 ¯4 6
¯2J3 9J¯4 5J6



  1. Roger Hui. Some Exercises in APL Language Design. Jsoftware. 2016.
APL built-ins [edit]
Primitive functions
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollType
Dyadic AddSubtractTimesDivideResiduePower (function)LogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplex
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentitySelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexSquad Indexing
Selector Index generatorGradeIndex OfInterval IndexIndicesDeal
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialise
Primitive operators Monadic EachCommuteConstantReplicateReduceWindowed ReduceScanOuter ProductKeyI-beamSpawnFunction axis
Dyadic Inner ProductPower (operator)Rank (operator)BindBesideReverse ComposeAtopOverAtVariantStencil
Quad names
Arrays Index originMigration level