home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l210 / 1.ddi / EXAMPLES.ARC / CH11EX01.PRO < prev    next >
Encoding:
Prolog Source  |  1988-06-21  |  869 b   |  32 lines

  1. /*
  2.    Turbo Prolog 2.0 Chapter 11, Example Program 1
  3.    
  4.    Copyright (c) 1986, 88 by Borland International, Inc
  5.    
  6. */
  7.  
  8. predicates
  9.      solve(real, real, real)
  10.      reply(real, real, real)
  11.      mysqrt(real, real, real)
  12.      equal(real, real)
  13.  
  14. clauses
  15.      solve(A, B, C) :- D = B*B-4*A*C,  reply(A, B, D), nl.
  16.      reply(_, _, D) :- D < 0, write("No solution"), !.
  17.      reply(A, B, D) :- D = 0, X=-B/(2*A), write("x=", X), !.
  18.      reply(A, B, D) :- 
  19.          mysqrt(D, D, SqrtD),
  20.          X1 = (-B + SqrtD)/(2*A),
  21.          X2 = (-B - SqrtD)/(2*A),
  22.          write("x1 = ", X1," and x2 = ", X2).
  23.  
  24.      mysqrt(X, Guess, Root) :-
  25.          NewGuess = Guess-(Guess*Guess-X)/2/Guess,
  26.          not(equal(NewGuess, Guess)), !,
  27.          mysqrt(X, NewGuess, Root).
  28.  
  29.      mysqrt(_, Guess, Guess).
  30.  
  31.      equal(X, Y) :- X/Y > 0.99999 , X/Y < 1.00001.
  32.