prolog中两个复数的乘法

prolog中两个复数的乘法,prolog,Prolog,我想知道如何将两个复数相乘,但我知道这与普通的复数相乘方法完全不同。我做了两个复数的加法,有人能帮我做乘法吗 %%Z1=X1+Y1 and Z2=X2+Y2. add(a(X1,X2), a(Y1,Y2), a(Z1,Z2)) :- Z1 is X1 + Y1, Z2 is X2 + Y2. 与其说是序言问题,不如说是数学问题: (x1 + ix2) x (y1 + iy2) = x1(y1 + iy2) + ix2(y1+iy2) =

我想知道如何将两个复数相乘,但我知道这与普通的复数相乘方法完全不同。我做了两个复数的加法,有人能帮我做乘法吗

%%Z1=X1+Y1 and Z2=X2+Y2.
add(a(X1,X2), a(Y1,Y2), a(Z1,Z2)) :-
  Z1 is X1 + Y1,
  Z2 is X2 + Y2.

与其说是序言问题,不如说是数学问题:

(x1 + ix2) x (y1 + iy2) = x1(y1 + iy2) + ix2(y1+iy2)
                        = x1y1 + ix1y2 + ix2y1 - x2y2
                        = (x1y1-x2y2) + i(x1y2+x2y1)
因此,规则:

%%Z1=x1y1-x2y2 and Z2=x1y2+x2y1.
multiply(a(X1,X2), a(Y1,Y2), a(Z1,Z2)) :-
  Z1 is X1 * Y1 - X2 * Y2,
  Z2 is X1* Y2 + X2 * Y1.

也就是说,最好嵌入符号计算的规则,并利用定理证明来应用这些规则?这毕竟是序言。。。