PROGRAM 3
; FILENAME: PROGRAM3.LSP AUTHOR: ANTHONY F. ORTIZ
; THIS PROGRAM COMPUTES THE REAL AND IMAGINARY PARTS OF THE ROOTS OF THE
; EQUATION (AX^2 + BX + C) (XLISP PROGRAM).
; THIS FUNCTION CALLS TWO OTHER FUNCTIONS (READ-COEFFICIENTS AND
; COMPUTE-DISPLAY-ROOTS).
(DEFUN SOLVE ()
(READ-COEFFICIENTS)
(COMPUTE-DISPLAY-ROOTS A B C))
; THIS FUNCTION READS THE THREE COEFFICIENTS OF THE EQUATION (AX^2 + BX + C).
(DEFUN READ-COEFFICIENTS ()
(PRINC "ENTER COEFFICIENTS FOR THE EQUATION AX^2 + BX + C. ")
(SETQ A (READ))
(SETQ B (READ))
(SETQ C (READ)))
; THIS FUNCTION COMPUTES AND DISPLAYS THE REAL AND IMAGINARY PARTS OF THE
; ROOTS OF THE EQUATION (AX^2 + BX + C).
(DEFUN COMPUTE-DISPLAY-ROOTS (A B C)
(LET (R1 R2 (DISC (- (* B B) (* 4 A C))))
(COND ((> DISC 0)
(SETQ R1 (/ (+ (- B) (SQRT DISC)) (* 2 A)))
(SETQ R2 (/ (+ (- B) (- (SQRT DISC))) (* 2 A)))
(SETQ I1 0)
(SETQ I2 0))
((= DISC 0)
(SETQ R1 (/ (- B) (* 2 A)))
(SETQ R2 (/ (- B) (* 2 A)))
(SETQ I1 0)
(SETQ I2 0))
((< DISC 0)
(SETQ R1 (/ (- B) (* 2 A)))
(SETQ R2 (/ (- B) (* 2 A)))
(SETQ I1 (/ (SQRT (ABS DISC)) (* 2 A)))
(SETQ I2 (- (/ (SQRT (ABS DISC)) (* 2 A))))))
(TERPRI)
(PRINC "THE REAL AND IMAGINARY PARTS OF EACH ROOT ARE ")
(TERPRI)
(TERPRI)
(LIST (LIST R1 I1) (LIST R2 I2))))
; OUTFILE: PROG3.OUT
XLISP version 2.0, Copyright (c) 1988, by David Betz
; loading "init.lsp"
> (load "program3.lsp")
; loading "program3.lsp"
T
> (solve)
ENTER COEFFICIENTS FOR THE EQUATION AX^2 + BX + C. 1.0 2.0 3.0
THE REAL AND IMAGINARY PARTS OF EACH ROOT ARE
((-1 1.414214) (-1 -1.414214))
>
BACK TO CS3120 PAGE.