\set ECHO None \set c1 (1,2)::complex \set c2 (1,1)::complex \set c3 (3,4)::complex \set c4 (3,8)::complex select 1::complex as a, (1::int8)::complex as b, 1.0::complex as c; a | b | c -------+-------+------- (1,0) | (1,0) | (1,0) (1 row) select (1,2)::complex as a, -(1,2)::complex as b, ~(1,2)::complex as c; a | b | c -------+---------+-------- (1,2) | (-1,-2) | (1,-2) (1 row) select :c1 + (3,4)::complex as a, 3 + :c1 as b, :c1 + 3 as c; a | b | c -------+-------+------- (4,6) | (4,2) | (4,2) (1 row) select :c1 - (3,6)::complex as a, 3 - :c1 as b, :c1 - 3 as c; a | b | c ---------+--------+-------- (-2,-4) | (2,-2) | (-2,2) (1 row) select :c1 * (3,5)::complex as a, 3 * :c1 as b, :c1 * 3 as c; a | b | c ---------+-------+------- (-7,11) | (3,6) | (3,6) (1 row) select :c1 * (3,5)::complex as a, 3.0::double precision * :c1 as b, :c1 * 3.0 as c; a | b | c ---------+-------+------- (-7,11) | (3,6) | (3,6) (1 row) select :c4 / :c1 as a, (:c4 / :c1) * :c1 = :c4 as b; a | b -----------+--- (3.8,0.4) | t (1 row) select :c4 / (2,0)::complex as a, (2,0)::complex * (:c4 / (2,0)::complex) = :c4 as b; a | b ---------+--- (1.5,4) | t (1 row) select :c4 / (0,2)::complex as a, (0,2)::complex * (:c4 / (0,2)::complex) = :c4 as b; a | b ----------+--- (4,-1.5) | t (1 row) select :c4 / 3 as a, 3 * (:c4 / 3) = :c4 as b; a | b ----------------------+--- (1,2.66666666666667) | t (1 row) select 3 / :c4 as a, :c4 * (3 / :c4) = (3,0)::complex as b; a | b ----------------------------------------+--- (0.123287671232877,-0.328767123287671) | t (1 row) -- -- check magnitude -- select magnitude(:c1) as magnitude; magnitude ------------------ 2.23606797749979 (1 row) select magnitude(:c2) as magnitude; magnitude ----------------- 1.4142135623731 (1 row) select magnitude(:c3) as magnitude; magnitude ----------- 5 (1 row) ROLLBACK;