# Invert-unit-series procedure

Let `S` be a power series (exercise 3.59 ) whose constant term is `1` . Suppose we want to find the power series `1/S` , that is, the series `X` such that `S · X = 1` . Write `S = 1 + SR` where `SR` is the part of `S` after the constant term. Then we can solve for `X` as follows: In other words, `X` is the power series whose constant term is `1` and whose higher-order terms are given by the negative of `SR` times `X` . Use this idea to write a procedure `invert-unit-series` that computes `1/S` for a power series `S` with constant term `1` . You will need to use `mul-series` from exercise 3.60

##### Authentication required

``````(define (stream-car stream) (car stream))

(define (stream-cdr stream) (force (cdr stream)))

define (stream-ref s n)
(if (= n 0)
(stream-car s)
(stream-ref (stream-cdr s) (- n 1))))

(define (stream-map proc . list-of-stream)
(if (null? (car list-of-stream))
'()
(cons-stream
(apply proc
(map (lambda (s)
(stream-car s))
list-of-stream))
(apply stream-map
(cons proc (map (lambda (s)
(stream-cdr s))
list-of-stream))))))

(define (scale-stream stream factor)
(stream-map (lambda (x) (* x factor)) stream))

(stream-map + s1 s2))

(define (mul-streams s1 s2)
(stream-map * s1 s2))

(define (div-streams s1 s2)
(stream-map / s1 s2))

(define ones (cons-stream 1 ones))

(define integers (cons-stream 1 (add-streams ones integers)))

(define exp-series
(cons-stream 1 (integrate-series exp-series)))

(check-equal? (stream-ref (invert-unit-series exp-series) 0) 1)
(check-equal? (stream-ref (invert-unit-series exp-series) 1) -1)
(check-equal? (stream-ref (invert-unit-series exp-series) 2) 1/2)``````