42 lines
		
	
	
		
			881 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			881 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 **********************************************************************
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *      CLP(R) Version 2.0	(Example Programs Release)
							 | 
						||
| 
								 | 
							
								 *	(C) Copyright, March 1986, Monash University
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 **********************************************************************
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% 
							 | 
						||
| 
								 | 
							
								% The rule below describes the relationship between two complex numbers 
							 | 
						||
| 
								 | 
							
								% and their product. The goal        ?- go         uses the rule
							 | 
						||
| 
								 | 
							
								% first to multiply two complex numbers, and then to divide one by another,
							 | 
						||
| 
								 | 
							
								% in two different ways.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								zmul(c(R1,I1),c(R2,I2),c(R3,I3)) :-
							 | 
						||
| 
								 | 
							
									R3 = R1 * R2 - I1 * I2 ,
							 | 
						||
| 
								 | 
							
									I3 = R1 * I2 + R2 * I1 .
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								go :- 	zmul(c(1,1),c(2,2),Z),
							 | 
						||
| 
								 | 
							
									zmul(c(1,1),Y,c(0,4)),
							 | 
						||
| 
								 | 
							
									zmul(X,c(2,2),c(0,4)),
							 | 
						||
| 
								 | 
							
									nl,
							 | 
						||
| 
								 | 
							
									write(" X = "),
							 | 
						||
| 
								 | 
							
									write(X),
							 | 
						||
| 
								 | 
							
									nl,
							 | 
						||
| 
								 | 
							
									write(" Y = "),
							 | 
						||
| 
								 | 
							
									write(Y),
							 | 
						||
| 
								 | 
							
									nl,
							 | 
						||
| 
								 | 
							
									write(" Z = "),
							 | 
						||
| 
								 | 
							
									write(Z),
							 | 
						||
| 
								 | 
							
									nl.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% Answer:
							 | 
						||
| 
								 | 
							
								%   X = c(1, 1)
							 | 
						||
| 
								 | 
							
								%   Y = c(2, 2)
							 | 
						||
| 
								 | 
							
								%   Z = c(0, 4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								?- printf("\n>>> Sample goal: go/0\n", []).
							 |