Quadratic equation in Lisp
            Example for versions 
            
                Corman Common Lisp 3.0, 
            
                SBCL 1.0.1, 
            
                SBCL 1.0.29, 
            
                clisp 2.47, 
            
                gcl 2.6.6
            
            
                
                        
	        
        
    
Common Lisp provides complex numbers as datatype, printed as #C(real imag). write-to-string converts a number into a string. 
Note that for interactive evaluation it’s enough to add (quadratic-roots-2 1 0 1) to see the result of calculation, while for compiled execution you’ll have to wrap call of this function in printing command, like (format t (quadratic-roots-2 1 0 1)).
(defun quadratic-roots-2 (A B C)
  (cond ((= A 0) (string "Not a quadratic equation."))
    (t
    (let ((D (- (* B B) (* 4 A C))))
      (cond ((= D 0) (concatenate 'string "x = " (write-to-string (/ (+ (- B) (sqrt D)) (* 2 A)))))
        (t
        (values (concatenate 'string "x1 = " (write-to-string (/ (+ (- B) (sqrt D)) (* 2 A))))
                (concatenate 'string "x2 = " (write-to-string (/ (- (- B) (sqrt D)) (* 2 A)))))))))))
Comments
]]>blog comments powered by Disqus
]]>