Harry H. Cheng
The handling of complex numbers in the CH programming language will be described in this paper. Complex is a built-in data type in CH. The I/O, arithmetic and relational operations, and built-in mathematical functions are defined for both regular complex numbers and complex metanumbers of ComplexZero, ComplexInf, and ComplexNaN. Due to polymorphism, the syntax of complex arithmetic and relational operations, and built-in mathematical functions are the same as those for real numbers. Besides polymorphism, the built-in mathematical functions are implemented with a variable number of arguments, which greatly simplies computations of different branches of multiple-valued complex functions. The valid lvalues related to complex numbers are defined. Rationales for the design of complex features in CH are discussed from language design, implementation, and application points of views. Sample CH programs show that a computer language which does not distinguish the sign of zeros in complex numbers can also handle the branch cuts of multiple-valued complex functions effectively so long as it is appropriately designed and implemented.