# 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

]]>