lispfloat

Embed Size (px)

Citation preview

  • 8/14/2019 lispfloat

    1/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p

    R I C H A R D J . F A T E M A N

    U n i v e r s i t y o f C a l i f o r n i a , B e r k e l e y

    a n d

    K E V I N A . B R O U G H A N a n d D I A N E K . W I L L C O C K

    U n i v e r s i t y o f W a i k a t o

    a n d

    D U A N E R E T T I G

    F r a n z I n c .

    L i s p , o n e o f t h e o l d e s t h i g h e r - l e v e l p r o g r a m m i n g l a n g u a g e s 2 9 ] 2 1 ] h a s r a r e l y b e e n u s e d f o r

    f a s t n u m e r i c a l ( o a t i n g - p o i n t ) c o m p u t a t i o n . W e e x p l o r e t h e b e n e t s o f C o m m o n L i s p 3 5 ] , a n

    e m e r g i n g n e w l a n g u a g e s t a n d a r d w i t h s o m e e x c e l l e n t i m p l e m e n t a t i o n s , f o r n u m e r i c a l c o m p u t a t i o n .

    W e c o m p a r e i t t o F o r t r a n i n t e r m s o f t h e s p e e d o f e c i e n c y o f g e n e r a t e d c o d e , a s w e l l a s t h e

    s t r u c t u r e a n d c o n v e n i e n c e o f t h e l a n g u a g e . T h e r e a r e a s u r p r i s i n g n u m b e r o f a d v a n t a g e s t o L i s p ,

    e s p e c i a l l y i n c a s e s w h e r e a m i x t u r e o f s y m b o l i c a n d n u m e r i c p r o c e s s i n g i s n e e d e d .

    C a t e g o r i e s a n d S u b j e c t D e s c r i p t o r s : G . 4 M a t h e m a t i c s o f C o m p u t i n g ] : M a t h e m a t i c a l S o f t w a r e {

    e c i e n c y , p o r t a b i l i t y ; D . 3 . 4 P r o g r a m m i n g L a n g u a g e s ] : P r o c e s s o r s { c o m p i l e r s , i n t e r p r e t e r s ,

    o p t i m i z a t i o n

    G e n e r a l t e r m s : C o m m o n L i s p , F o r t r a n , C , F l o a t i n g - p o i n t a r i t h m e t i c

    A d d i t i o n a l K e y W o r d s a n d P h r a s e s : C o m p i l e r o p t i m i z a t i o n , S y m b o l i c c o m p u t a t i o n , N u m e r i c a l

    a l g o r i t h m s

    1 . I N T R O D U C T I O N

    T h e c o m b i n a t i o n o f s y m b o l i c a n d n u m e r i c c o m p u t a t i o n h a s b e c o m e p o p u l a r i n s e v -

    e r a l a p p l i c a t i o n a r e a s . T h e s e i n c l u d e , f o r e x a m p l e , m o t i o n p l a n n i n g f o r r o b o t i c s ,

    s i g n a l p r o c e s s i n g a n d i m a g e u n d e r s t a n d i n g . O n e b u r g e o n i n g a r e a i s t h e d e v e l o p -

    m e n t o f s c i e n t i c c o m p u t i n g e n v i r o n m e n t s i n c l u d i n g s y m b o l i c m a t h e m a t i c s s y s -

    t e m s , n u m e r i c a l c o m p u t i n g , a n d g r a p h i c s . T h e s e t e n d t o m i x t r a d i t i o n a l s t r e n g t h s

    o f t h e L i s p p r o g r a m m i n g l a n g u a g e : i n t e r a c t i v i t y a n d s y m b o l m a n i p u l a t i o n , w i t h

    t h e a d d i t i o n a l n e e d f o r n u m e r i c s .

    I n g e n e r a l , m a t h e m a t i c a l m o d e l i n g o f c o m p l e x p h y s i c a l p h e n o m e n a i n c l u d e s a

    s y m b o l i c m a n i p u l a t i o n p h a s e o f m o d e l f o r m u l a t i o n f o l l o w e d b y a n u m e r i c a l s o l u -

    t i o n p h a s e a n d o u t p u t v i s u a l i z a t i o n . M o d e l f o r m u l a t i o n h a s t r a d i t i o n a l l y b e e n a

    A u t h o r s ' a d d r e s s e s : R i c h a r d J . F a t e m a n , C o m p u t e r S c i e n c e D i v i s i o n , U n i v e r s i t y o f C a l i f o r n i a ,

    B e r k e l e y , C A , 9 4 7 2 0 U S A ; K e v i n A . B r o u g h a n a n d D i a n e K . W i l l c o c k , D e p t . o f M a t h e m a t i c s a n d

    S t a t i s t i c s , U n i v e r s i t y o f W a i k a t o , P r i v a t e B a g 3 1 0 5 , H a m i l t o n , N Z ;

    D u a n e R e t t i g , F r a n z I n c . 1 9 9 5 U n i v e r s i t y A v e . , B e r k e l e y , C A , 9 4 7 0 4 U S A ; e m a i l : f a t e -

    m a n @ p e o p l e s p a r c . B e r k e l e y . e d u ; k a b @ w a i k a t o . a c . n z ; d u a n e @ f r a n z . c o m .

    P e r m i s s i o n t o c o p y w i t h o u t f e e a l l o r p a r t o f t h i s m a t e r i a l i s g r a n t e d p r o v i d e d t h a t t h e c o p i e s a r e

    n o t m a d e o r d i s t r i b u t e d f o r d i r e c t c o m m e r c i a l a d v a n t a g e , t h e A C M c o p y r i g h t n o t i c e a n d t h e t i t l e

    o f t h e p u b l i c a t i o n a n d i t s d a t e a p p e a r , a n d n o t i c e i s g i v e n t h a t c o p y i n g i s b y p e r m i s s i o n o f t h e

    A s s o c i a t i o n f o r C o m p u t i n g M a c h i n e r y . T o c o p y o t h e r w i s e , o r t o r e p u b l i s h , r e q u i r e s a f e e a n d / o r

    s p e c i c p e r m i s s i o n .

  • 8/14/2019 lispfloat

    2/35

    2 R . J . F a t e m a n e t a l .

    p e n c i l - a n d - p a p e r a c t i v i t y b u t i n r e c e n t y e a r s c o m p u t e r a l g e b r a s y s t e m s h a v e a s -

    s i s t e d i n a n a l y s i s a n d s u b s e q u e n t \ F o r t r a n c o d e g e n e r a t i o n " f o r n u m e r i c a l c o m p u -

    t a t i o n . S i n c e d i e r e n t l a n g u a g e s a r e b e i n g u s e d f o r t h e a n a l y s i s a n d n a l e x e c u t i o n ,

    t h i s a p p r o a c h p r e c l u d e s t h e d e v e l o p m e n t o f a l g o r i t h m s w h i c h u s e m i x e d s y m b o l i c -

    n u m e r i c p r o c e s s i n g a t a d e e p e r l e v e l . A b e t t e r a r r a n g m e n t w o u l d a l l o w t h e a n a l y s i s

    a n d e x e c u t i o n p h a s e s t o e x i s t s i m u l t a n e o u s l y , a l l o w i n g e a c h t o i n t e r a c t w i t h t h e

    o t h e r . S t i l l , e v e n i f t h e s y m b o l i c a n d n u m e r i c p h a s e s c o - e x i s t , a s a p r a c t i c a l m a t -

    t e r , e r r o r s o r e x c e p t i o n a l c o n d i t i o n s o n o n e s i d e o f t h e s o f t w a r e b o u n d a r y t e n d t o

    b e d e a l t w i t h i n c o n v e n i e n t l y o n t h e o t h e r s i d e : s u c h e v e n t s i n c l u d e o a t i n g - p o i n t

    e x c e p t i o n s , k e y b o a r d o r m o u s e - g e n e r a t e d i n t e r r u p t s , o p e r a t i n g s y s t e m a c t i o n s , a n d

    s t o r a g e - r e c l a m a t i o n p r o c e s s i n g ( g a r b a g e c o l l e c t i o n i n L i s p ) . A b e t t e r m e t h o d o f

    j o i n i n g t h e t w o k i n d s o f p r o c e s s i n g w i t h o u t d e s c e n d i n g t o l o w - l e v e l i m p l e m e n t a t i o n

    c o d i n g w o u l d b e u s e f u l .

    F o r s o m e t i m e n o w , t h e n e e d f o r a s y m b o l i c - n u m e r i c m i x t u r e h a s b e e n w e l l -

    r e c o g n i z e d b y d e s i g n e r s o f c o m p u t e r a l g e b r a s y s t e m s . S o m e t i m e s t h i s n e e d i s m e t

    e n t i r e l y i n t h e L i s p s y s t e m e n v i r o n m e n t b y w r i t i n g i n L i s p . S o m e t i m e s t h e n u m e r i c

    o r g r a p h i c a l r o u t i n e s a r e l o a d e d f r o m a s t a n d a r d l i b r a r y o r w r i t t e n i n a d v a n c e u s i n g

    C o r F o r t r a n , b u t i n t e g r a t e d a t c o m p i l e o r l o a d t i m e w i t h t h e c o m p u t e r a l g e b r a

    s y s t e m . S o m e t i m e s t h e n e e d f o r n u m e r i c a l c o d e i s o n l y s a t i s e d b y p r o d u c i n g \ o n

    t h e y " F o r t r a n s o u r c e - c o d e , c o m p i l i n g a n d l o a d i n g i t b a c k i n t o L i s p . T h i s l a s t

    a p p r o a c h t e n d s t o b e d e l i c a t e ; b u t s e v e r a l s y s t e m s h a v e b e e n b u i l t a r o u n d t h e

    u s e o f s y m b o l i c s y s t e m s t o h e l p c o d e F o r t r a n s u b r o u t i n e s w h i c h a r e t h e n t i n t o

    t e m p l a t e s o f o t h e r F o r t r a n c o d e t o p r o d u c e c o m p l e t e p a c k a g e s . S o m e r e c e n t w o r k

    i n c l u d e s w o r k b y W i r t h 3 9 ] , L a n a m 2 5 ] , W a n g 3 6 ] , B r o u g h a n 7 ] , C o o k 1 9 ] , a n d

    K a j l e r 2 3 ] ) .

    A s a p r i n c i p a l e x a m p l e o f t h e a p p r o a c h o f l i n k i n g L i s p p r o g r a m s w i t h n u m e r i c s ,

    c o n s i d e r t h e d e v e l o p m e n t o f s y m b o l i c - n u m e r i c a l g o r i t h m s f o r t h e S e n a c e n v i r o n -

    m e n t , u n d e r w a y a t t h e U n i v e r s i t y o f W a i k a t o ( N e w Z e a l a n d ) M a t h e m a t i c a l S o f t -

    w a r e P r o j e c t . T h e g o a l o f t h i s d e v e l o p m e n t h a s b e e n t o c o m b i n e c o m p u t e r a l g e b r a

    l a n g u a g e s w i t h n u m e r i c a n d g r a p h i c s u b r o u t i n e l i b r a r i e s . T h e c o m b i n a t i o n h a s ,

    u n t i l r e c e n t l y , b e e n a c h i e v e d u s i n g L i s p - b a s e d a l g e b r a l a n g u a g e s c o m b i n e d w i t h

    F o r t r a n - b a s e d n u m e r i c a n d g r a p h i c s c o d e . T h e l i n k i n g o f t h e s e s y s t e m s h a s o f -

    t e n e m p l o y e d L i s p \ f o r e i g n f u n c t i o n i n t e r f a c e s " t o C - a n d F o r t r a n - l a n g u a g e c o d e .

    S u c h l i n k s t o \ f o r e i g n f u n c t i o n s " a r e i n c l u d e d i n a n u m b e r o f m o d e r n L i s p s y s t e m s ,

    a l t h o u g h t h e l i n k a g e s p e c i c a t i o n s y n t a x i s n o t y e t s t a n d a r d i z e d .

    A n o t h e r t e c h n i q u e s o m e t i m e s u s e d i s t o s e t u p i n t e r p r o c e s s c o m m u n i c a t i o n ( I P C )

    b e t w e e n d i e r e n t p r o c e s s e s . T h e I P C m a y i n f a c t l i n k p r o g r a m s r u n n i n g o n d i e r e n t

    c o m p u t e r s . E i t h e r t e c h n i q u e p r o v i d e s a n a l t e r n a t i v e t o t h e t r a d i t i o n a l c o n c e p t o f

    t h e u s e r ' s e x p l i c i t e d i t i n g o f s y m b o l i c m a t h e m a t i c a l t e x t i n t o a n u m e r i c s o u r c e

    p r o g r a m , a l t h o u g h t h e I P C t e c h n i q u e i s e v e n l e s s l i k e l y t o b e r o b u s t i n t h e f a c e o f

    e r r o r s t h a n t h e f o r e i g n - f u n c t i o n l i n k a g e .

    U s i n g b o t h o f t h e s e m e t h o d s , t h e W a i k a t o g r o u p h a s w r i t t e n a n u m b e r o f i n -

    t e r f a c e s . N a g l i n k : 1 3 , 1 4 , 1 5 ] w a s w r i t t e n b e t w e e n M a c s y m a 2 8 ] a n d t h e N A G

    L i b r a r y 2 2 ] ; N u m l i n k : 8 , 1 0 , 1 1 , 1 2 ] b e t w e e n S e n a c a n d G r a i n k 7 ] a n d t h e N A G

    F o r t r a n L i b r a r y a n d G r a p h i c s L i b r a r y .

    T h e s e r e f e r e n c e s d e s c r i b e h o w c o m p o n e n t s h a v e b e e n i n t e g r a t e d t o p r o v i d e a v e r y

    h i g h l y a u t o m a t e d p r o b l e m - s o l v i n g e n v i r o n m e n t , c o m b i n i n g s y m b o l i c , n u m e r i c a n d

    g r a p h i c t o o l s . A s e x p e c t e d , t h e a p p r o a c h e s r e t a i n t h e e c i e n c y a n d r o b u s t n e s s o f

  • 8/14/2019 lispfloat

    3/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 3

    t h e F o r t r a n c o d e . T h e y a u t o m a t e , u s i n g i n t e r f a c e p r o g r a m s w r i t t e n i n L i s p , t h e

    c a l l i n g a n d r e t u r n p r o c e s s e s , a n d ` u s e r - w r i t t e n " s u b r o u t i n e s d e m a n d e d b y s o m e

    F o r t r a n p a c k a g e s ( e . g . n u m e r i c a l i n t e g r a t i o n , m i n i m i z a t i o n ) c a n i n f a c t b e w r i t t e n

    b y S e n a c r a t h e r t h a n t h e u s e r . A n a d d i t i o n a l b e n e t o f t h e S e n a c a p p r o a c h i s t h a t

    t h e u s e r n e e d n o t a t t e n d t o t h e t e d i o u s r e q u i r e m e n t s t o p r o v i d e o u t p u t f o r m a t t i n g .

    I n s p i t e o f s u c c e s s i n r e s e a r c h e n v i r o n m e n t s , t h e r e h a v e b e e n o b s t a c l e s t o t h e

    w i d e s p r e a d p r o p a g a t i o n a n d g e n e r a l i z a t i o n o f t h e s e c o n c e p t s . T h e y i n c l u d e

    ( 1 ) T h e l a c k o f a l a n g u a g e s t a n d a r d f o r f o r e i g n f u n c t i o n i n t e r f a c e s i n C o m m o n L i s p .

    ( S t a n d a r d i z a t i o n o n t h i s t o p i c i s a r g u a b l y t o o d i c u l t o r c o n t r o v e r s i a l t o h o l d

    o u t m u c h e x p e c t a t i o n f o r a s t a n d a r d s o o n . )

    ( 2 ) T h e l o w s t a n d a r d o f m a i n t e n a n c e o f ( i m p l e m e n t a t i o n d e p e n d e n t ) f o r e i g n f u n c -

    t i o n i n t e r f a c e s a n d l i n k e r s i n g e n e r a l b y l a n g u a g e a n d o p e r a t i n g s y s t e m ( o r

    h a r d w a r e ) v e n d o r s . T h e W a i k a t o e x p e r i e n c e h a s b e e n t h a t o f g r a p p l i n g w i t h a

    s u c c e s s i o n o f s e r i o u s b u g s .

    ( 3 ) L a c k o f c o m p a t i b i l i t y b e t w e e n l i b r a r i e s f o r d i e r e n t l a n g u a g e c o m p i l e r s , a n d

    b e t w e e n o b j e c t - c o d e f o r m a t s f o r t h e s a m e c o m p i l e r a t d i e r e n t r e v i s i o n l e v e l s .

    T h i s d i v e r s i t y h a s c r e a t e d a d e g r e e o f i n s e c u r i t y f o r t h i s a n d o t h e r c o m p o s i t e -

    l a n g u a g e e n v i r o n m e n t d e v e l o p e r s .

    ( 4 ) O p e r a t i n g s y s t e m d e f e c t s . W e c o n t i n u e t o s e e m a j o r c o m p u t e r c o r p o r a t i o n s

    r e l e a s i n g v e r s i o n s o f t h e i r o p e r a t i n g s y s t e m s f o r h i g h - s p e e d w o r k s t a t i o n s w i t h

    n o p r o v i s i o n f o r d y n a m i c l i n k i n g .

    I n t h i s p a p e r w e e x p l o r e a n a p p r o a c h w h i c h e n a b l e s a l l o f t h e p r o b l e m s l i s t e d

    a b o v e t o b e s o l v e d a t a s i n g l e s t r o k e : u s e L i s p a s t h e s o u r c e l a n g u a g e f o r t h e

    n u m e r i c a n d g r a p h i c a l c o d e !

    T h i s i s n o t a n e w i d e a | i t w a s t r i e d a t M I T a n d U C B i n t h e 1 9 7 0 ' s . W h i l e

    t h e s e e x p e r i m e n t s w e r e m o d e s t l y s u c c e s s f u l , t h e p a r t i c u l a r s y s t e m s a r e o b s o l e t e .

    F o r t u n a t e l y , s o m e o f t h o s e i d e a s u s e d i n M a c l i s p 3 7 ] , N I L 3 8 ] a n d F r a n z L i s p 2 0 ]

    w e r e i n c o r p o r a t e d i n t h e s u b s e q u e n t s t a n d a r d i z a t i o n o f C o m m o n L i s p ( C L ) 3 5 ] .

    I n t h i s n e w s e t t i n g i t i s a p p r o p r i a t e t o r e - e x a m i n e t h e t h e o r e t i c a l a n d p r a c t i c a l

    i m p l i c a t i o n s o f w r i t i n g n u m e r i c c o d e i n L i s p .

    T h e p o p u l a r c o n c e p t i o n s o f L i s p ' s i n e c i e n c y f o r n u m e r i c s h a v e b e e n b a s e d o n

    r u m o r , s u p p o s i t i o n , a n d e x p e r i e n c e w i t h e a r l y a n d ( i n f a c t ) i n e c i e n t i m p l e m e n -

    t a t i o n s . I t i s c e r t a i n l y p o s s i b l e t o c o n t i n u e t o w r i t e i n e c i e n t p r o g r a m s : A s o n e

    e x a m p l e o f t h e r e s u l t s o f d e - e m p h a s i z i n g n u m e r i c s i n t h e d e s i g n , c o n s i d e r t h e s i t u -

    a t i o n o f t h e b a s i c a r i t h m e t i c o p e r a t o r s . T h e d e n i t i o n s o f t h e s e f u n c t i o n s r e q u i r e

    t h a t t h e y a r e g e n e r i c , ( e . g . \ + " m u s t b e a b l e t o a d d a n y c o m b i n a t i o n o f s e v e r a l p r e -

    c i s i o n s o f o a t s , a r b i t r a r y - p r e c i s i o n i n t e g e r s , r a t i o n a l n u m b e r s , a n d c o m p l e x e s ) , T h e

    v e r y s i m p l e w a y o f i m p l e m e n t i n g t h i s a r i t h m e t i c { b y s u b r o u t i n e c a l l s { i s a l s o v e r y

    i n e c i e n t . E v e n w i t h a p p r o p r i a t e d e c l a r a t i o n s t o e n a b l e m o r e s p e c i c t r e a t m e n t o f

    n u m e r i c t y p e s , c o m p i l e r s a r e f r e e t o i g n o r e d e c l a r a t i o n s a n d s u c h i m p l e m e n t a t i o n s

    n a t u r a l l y d o n o t a c c o m m o d a t e t h e n e e d s o f i n t e n s i v e n u m b e r - c r u n c h i n g . ( S e e t h e

    a p p e n d i x f o r f u r t h e r d i s c u s s i o n o f d e c l a r a t i o n s ) .

    B e t h i s a s i t m a y , t h e s i t u a t i o n w i t h r e s p e c t t o L i s p h a s c h a n g e d f o r t h e b e t t e r

    i n r e c e n t y e a r s . W i t h t h e a d v e n t o f A N S I s t a n d a r d C o m m o n L i s p , s e v e r a l a c t i v e

    v e n d o r s o f i m p l e m e n t a t i o n s a n d o n e a c t i v e u n i v e r s i t y r e s e a r c h g r o u p ( C a r n e g i e M e l -

    l o n ) , t h e r e h a s b e e n a s i g n i c a n t i m p r o v e m e n t i n t h e q u a l i t y a n d e c i e n c y o f t h e

  • 8/14/2019 lispfloat

    4/35

    4 R . J . F a t e m a n e t a l .

    n u m e r i c f a c i l i t i e s a v a i l a b l e i n L i s p s y s t e m s . B a s e d o n o u r e x p e r i e n c e r e p o r t e d i n

    p a r t i n t h i s p a p e r , w e e x p e c t t h a t c o d e f r o m C o m m o n L i s p c o m p i l e r s c a n d e m o n -

    s t r a t e c o m p a r a b l e e c i e n c y t o t h a t o f g o o d F o r t r a n a n d C c o m p i l e r s .

    A n o t h e r r e c e n t d e v e l o p m e n t m a k e s i t i m p o r t a n t t o a d d r e s s n u m e r i c a l L i s p p r o -

    c e s s i n g . I t i s t h e n o w n e a r l y - u n i v e r s a l a d o p t i o n o f t h e I E E E - 7 5 4 b i n a r y o a t i n g -

    p o i n t a r i t h m e t i c s t a n d a r d b y h a r d w a r e m a n u f a c t u r e r s . S t a n d a r d s f o r s e m a n t i c s

    f o r L i s p a r i t h m e t i c , a s w e l l a s t h e s p e e d o f c o m p i l e d c o d e , i n u e n c e e a c h o t h e r .

    A l t h o u g h w e w i l l n o t d i s c u s s i t i n t h i s p a p e r , c l e a r l y a l a n g u a g e d e s i g n s h o u l d n o t

    e n f o r c e a r i t h m e t i c s e m a n t i c s a t o d d s w i t h t h e d a t a t y p e s , o p e r a t i o n s , a n d e r r o r

    c o n t r o l o f t h e u n d e r l y i n g h a r d w a r e .

    G i v e n t h e s e d e v e l o p m e n t s w e a r e t h e r e f o r e e n c o u r a g e d t o e x p l o r e n u m e r i c e n -

    v i r o n m e n t s i n L i s p s o a s t o c o m b i n e s o u n d l y - b a s e d a n d e a s y - t o - u s e p r o g r a m m i n g

    e n v i r o n m e n t s w i t h n e w d e s i g n s f o r g o o d o a t i n g - p o i n t i m p l e m e n t a t i o n s o f C o m -

    m o n L i s p . F u r t h e r e n c o u r a g e m e n t c o m e s f r o m t h e o b s e r v a t i o n t h a t l a n g u a g e s w i t h

    L i s p ' s f u n c t i o n a l a n d o b j e c t - o r i e n t e d p r o g r a m m i n g s t y l e a n d e x i b l e s t o r a g e a l l o -

    c a t i o n a r e b e i n g p r o p o s e d f o r t o d a y ' s m o r e c h a l l e n g i n g p r o g r a m m i n g t a s k s , e v e n

    t h o s e t h a t h a v e b e e n s e e n a s p r i m a r i l y n u m e r i c a l . L i s p m a y e m e r g e a s a n e s p e c i a l l y

    s t r o n g c o n t e n d e r i n s u c h a c o m p e t i t i o n .

    T h e p l a n o f t h i s p a p e r i s a s f o l l o w s : i n s e c t i o n 2 w e b r i e y r e v i e w t h o s e f e a t u r e s

    o f C o m m o n L i s p a s a l a n g u a g e w h i c h m i g h t r e a s o n a b l y b e p i c k e d o u t a s e s p e -

    c i a l l y a d v a n t a g e o u s o r d i s a d v a n t a g e o u s f o r n u m e r i c p r o g r a m m i n g . S e c t i o n 3 t h e n

    e l a b o r a t e s o n o u r g e n e r a l m o t i v a t i o n f o r s e r i o u s l y c o n s i d e r i n g L i s p f o r n u m e r i c a l

    p r o g r a m m i n g . S e c t i o n 4 d i s c u s s e s s o m e o f t h e i n t e r a c t i o n b e t w e e n t h e l a n g u a g e ,

    i t s s p e c i c a t i o n s ( i n c l u d i n g t h e u s e o f d e c l a r a t i o n s ) a n d m a c h i n e a r c h i t e c t u r e s . I n

    s e c t i o n 5 w e c o n s i d e r a t s o m e l e n g t h t h e k i n d s o f d e m a n d s w e m i g h t m a k e o n a

    m o d e r n L i s p c o m p i l e r , i n g e n e r a l , a n d t h e n m o r e s p e c i c a l l y u s i n g s e v e r a l g r a d e d

    e x a m p l e s : c l e a r i n g a n a r r a y , m u l t i p l y i n g m a t r i c e s , a n d n a l l y s i n g u l a r - v a l u e d e -

    c o m p o s i t i o n . W e e x a m i n e t h e d i e r e n c e s b e t w e e n c o m p i l e d L i s p a n d F o r t r a n c o d e ,

    a s w e l l a s r u n t i m e s . I n s e c t i o n 6 w e r e p o r t o n t h e d e s i g n a n d i m p l e m e n t a t i o n o f a n

    a u t o m a t e d F o r t r a n - t o - L i s p t r a n s l a t o r , t o g e t h e r w i t h s o m e i d e a s f o r i t s e x t e n s i o n .

    F i n a l l y , s e c t i o n 7 p r o v i d e s s o m e c o n c l u s i o n s .

    T o a n t i c i p a t e o u r c o n c l u s i o n s , w e i n t e n d t o s h o w :

    a . M a n y f e a t u r e s o f C L a r e u s e f u l i n t h e c o n t e x t o f n u m e r i c c o m p u t i n g ;

    b . C L c o d e a s p r o d u c e d b y c u r r e n t c o m p i l e r s i s r e a l l y f a i r l y g o o d ;

    c . E v e n m o r e i m p r o v e d b a s i c n u m e r i c c a p a b i l i t i e s c a n b e i n c o r p o r a t e d i n C L ;

    d . C o n v e r t i n g e x i s t i n g F o r t r a n - l i k e n u m e r i c c o d e t o L i s p c a n b e a u t o m a t e d ;

    e N u m e r i c a l R e c i p e s 3 3 ] o r o t h e r n u m e r i c a l c o d e l i b r a r i e s c a n b e w r i t t e n i n L i s p

    a n d m a y b e v i a b l e a l t e r n a t i v e s t o v e r s i o n s i n F o r t r a n o r C .

    2 . L A N G U A G E F E A T U R E S A N D N U M E R I C A L P R O G R A M M I N G

    2 . 1 I n t r o d u c t i o n

    I n t h i s s e c t i o n w e d e a l p r i m a r i l y w i t h t h e C o m m o n L i s p ( C L ) l a n g u a g e a s d e s c r i b e d

    i n f o r m a l l y b y S t e e l e 3 5 ] , a n d t h e s u b j e c t o f a f o r t h c o m i n g l a n g u a g e s t a n d a r d ( t h e

    A N S I X 3 J 1 3 c o m m i t t e e ) . W e o c c a s i o n a l l y d e a l w i t h i s s u e s ( o f t e n m i s c o n c e p t i o n s )

    a b o u t t h e e a r l i e r l a n g u a g e d e s i g n d a t i n g b a c k t o M c C a r t h y 2 9 ] . O u r o b j e c t i v e

    i s t o e x a m i n e t h e m a j o r r e a s o n s f o r a n d a g a i n s t n u m e r i c a l p r o g r a m m i n g i n L i s p .

  • 8/14/2019 lispfloat

    5/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 5

    I n c o m p a r i n g f e a t u r e s o f C L a n d \ F o r t r a n , " i t i s i m p o r t a n t t o r e a l i z e t h a t m a n y

    p r o g r a m m e r s u s e i m p l e m e n t a t i o n s o f F o r t r a n 7 7 ( o r e v e n F o r t r a n 6 6 l a n g u a g e s t a n -

    d a r d s ) . T h e p r e s e n c e o f a p a r t i c u l a r f e a t u r e i n F o r t r a n 9 0 d o e s n o t m e a n t h a t

    F o r t r a n p r o g r a m m e r s , o f t e n c o m m i t t e d t o p o r t a b i l i t y a n d b a c k w a r d c o m p a t i b i l i t y ,

    c a n u s e i t .

    I n d e e d , t o r e m e d y s o m e f a i l i n g s o f F o r t r a n , s o m e p r o g r a m m e r s a r e m o v i n g n o t t o

    F o r t r a n 9 0 b u t t o C o r C + + . O t h e r s a r e u s i n g i n t e r a c t i v e \ h i g h - l e v e l " n u m e r i c a l

    c o m p u t a t i o n s y s t e m s l i k e M a t l a b , M a t h C a d , G a u s s , e t c . a s w e l l a s c o m p u t e r a l g e -

    b r a s y s t e m s s u c h a s M a p l e o r M a t h e m a t i c a . I t a p p e a r s t h a t C a n d C + + a r e n o t

    e n t i r e l y s a t i s f a c t o r y s u b s t i t u t e s f o r F o r t r a n ; t h e y a p p e a r t o b e d i s p l a c i n g F o r t r a n

    i n o n l y s p e c i a l i z e d c o n t e x t s . W h i l e w e v i e w t h e s u c c e s s o f i n t e r a c t i v e s y s t e m s t a r -

    g e t e d f o r s c i e n t i c c o m p u t i n g a s a v e r y p o s i t i v e d e v e l o p m e n t , t h e y g e n e r a l l y f a i l t o

    s u p p o r t t h e d e v e l o p m e n t a n d i n t e g r a t i o n o f n e w f a s t \ c o m p i l e d " c o d e i n t h e s a m e

    i n t e r a c t i v e l a n g u a g e .

    W e e m p h a s i z e t h i s l a s t p o i n t : w i t h o u t e c i e n t u s e r - p r o d u c e d c o m p i l e d c o d e ,

    i t i s d i c u l t t o e x t e n d t h e a p p l i c a t i o n o f s y s t e m s b e y o n d t h e b o u n d a r i e s o f t h e i r

    p r e d e n e d c a p a b i l i t i e s . S u c h a b a r r i e r l i m i t s t h e c o n v e n i e n t g r o w t h o f e n v i r o n m e n t s

    f o r s c i e n t i c c o m p u t i n g t o n e w a p p l i c a t i o n s w h e r e p e r f o r m a n c e i s a n i m p o r t a n t

    c o m p o n e n t .

    W i t h t h i s i n m i n d , c a n L i s p a c c o m m o d a t e t h e n e e d s o f n u m e r i c c o m p u t i n g ?

    2 . 2 P o s i t i v e a s p e c t s o f C L

    F i r s t o f a l l w e w i l l l i s t s o m e o f t h e m o r e i m p o r t a n t f e a t u r e s , v i e w e d f r o m a n u m e r i c a l

    c o m p u t i n g p e r s p e c t i v e . I n s e c t i o n 3 w e g i v e m o r e d e t a i l s o f o u r m o t i v a t i o n a n d i n

    s e c t i o n 5 , a d d i t i o n a l e x a m p l e s .

    L i s p p r o v i d e s t h e u s e r w i t h :

    ( 1 ) A r i c h e n v i r o n m e n t i n c l u d i n g a c c e s s t o i n t e r a c t i v e a n d c o m p i l e d c o d e w i t h

    t h e s a m e d y n a m i c b e h a v i o r , i n t e r a c t i v e d e b u g g i n g i n t h e s a m e e n v i r o n m e n t a n d

    i n s t a n t t u r n a r o u n d f o r t e s t i n g a n d s e l f - e d u c a t i o n .

    ( 2 ) L a n g u a g e f e a t u r e s s u p p o r t i n g f u n c t i o n a l p r o g r a m m i n g , l e x i c a l s c o p i n g , c l o -

    s u r e s a n d l o c a l f u n c t i o n s , u s e r o r s y s t e m d e n e d g e n e r i c f u n c t i o n s , u n i f o r m c o n t e x t -

    i n d e p e n d e n t s y n t a x , e x i b l e f u n c t i o n - d e n i n g m e c h a n i s m s a l l o w i n g k e y - w o r d , o p -

    t i o n a l o r a n a r b i t r a r y n u m b e r o f a r g u m e n t s a n d p o w e r f u l m a c r o d e n i t i o n c a p a b i l -

    i t i e s .

    ( 3 ) A d a t a t y p e s y s t e m i n c l u d i n g s u p p o r t f o r s t r u c t u r e s , v e c t o r s , b i t - v e c t o r s ,

    s t r i n g s , a r r a y s , l e s , h a s h - t a b l e s , \ r e a d - t a b l e s " . T h e r e i s a l s o a n e l a b o r a t e s y s -

    t e m f o r o b j e c t - o r i e n t e d p r o g r a m m i n g ( g e n e r i c f u n c t i o n s w i t h i n h e r i t a n c e ) .

    ( 4 ) A l i b r a r y o f p r o g r a m s a n d p r e - d e n e d d a t a t y p e s c o v e r i n g a l a r g e n u m b e r o f

    s u p p o r t e d a r i t h m e t i c c o m p o n e n t s . T h e s e i n c l u d e e x a c t i n t e g e r , r a t i o n a l , c o m p l e x

    r a t i o n a l , c o m p l e x i n t e g e r , s i n g l e o a t , d o u b l e o a t , c o m p l e x , b u i l t - i n e l e m e n t a r y ,

    t r i g o n o m e t r i c , h y p e r b o l i c , l o g i c a l a n d o t h e r f u n c t i o n s .

    ( 5 ) D e c l a r a t i o n s ( w h i c h a r e i n f a c t h i n t s f o r t h e c o m p i l e r ) . A l t h o u g h t h e s e a r e

    o p t i o n a l t h e y c a n i n m o s t i m p l e m e n t a t i o n s b e u s e d t o s p e c i f y t h e d e s i r a b i l i t y o f

    v a r i o u s a t t r i b u t e s o f t h e c o m p i l e d c o d e , i n c l u d i n g s p e e d , s i z e , e r r o r - c h e c k i n g . ( S e e

    a p p e n d i x f o r f u r t h e r c o m m e n t s ) .

  • 8/14/2019 lispfloat

    6/35

    6 R . J . F a t e m a n e t a l .

    2 . 3 N e g a t i v e a s p e c t s o f C L

    W e n o w c o n s i d e r s o m e o f t h e r e a s o n s u s u a l l y g i v e n a g a i n s t n u m e r i c a l p r o g r a m m i n g

    i n L i s p , a n d a b r i e f o u t l i n e o f o u r r e s p o n s e s . F u l l e r d e t a i l s f o l l o w i n S e c t i o n s 4 a n d

    5 b e l o w .

    ( 1 ) T r a d i t i o n : M o s t e n g i n e e r s l e a r n F o r t r a n , n o t L i s p . M o s t p r o g r a m s t h a t m u s t

    b e m a i n t a i n e d i n s c i e n t i c a p p l i c a t i o n s a r e w r i t t e n i n F o r t r a n ( o f t e n F o r t r a n 6 6 ! ) .

    R e s p o n s e : T i m e s a r e c h a n g i n g .

    ( 2 ) S p e e d : L i s p i s s l o w f o r n u m e r i c a l c o m p u t a t i o n . R e s p o n s e : L i s p c o m p i l e d c o d e

    s t i l l s e e m s s o m e w h a t i n f e r i o r t o t h a t o f t h e b e s t o p t i m i z e d F o r t r a n . S p e e d m a y b e

    o n l y o n e c r i t e r i o n , h o w e v e r , a n d w e a l s o e x p e c t t h a t L i s p w i l l g e t f a s t e r . W e p r o v i d e

    m o r e d e t a i l o n t h i s i n S e c t i o n 5 b e l o w .

    ( 3 ) S i z e : L i s p p r o g r a m s h a v e a l a r g e r u n - t i m e s i z e c o m p a r e d t o s t a n d - a l o n e C o r

    F o r t r a n . R e s p o n s e : O f c o u r s e t h o s e o t h e r s y s t e m s a r e g e t t i n g b i g g e r ; i n s o m e c a s e s

    m e m o r y p r i c e s a r e l o w c o m p a r e d t o s o f t w a r e , a n d e v e n \ s m a l l " c o m p u t e r s c a n b e

    l o a d e d w i t h s u b s t a n t i a l R A M ; n a l l y , L i s p v e n d o r s a r e p a y i n g m o r e a t t e n t i o n t o

    s i z e r e d u c t i o n e s p e c i a l l y f o r \ r u n t i m e d e l i v e r y s y s t e m s " .

    ( 4 ) I n p u t / O u t p u t : S o m e t y p e s o f r a w i n p u t o r o u t p u t a r e n o t a v a i l a b l e i n L i s p .

    R e s p o n s e : W e d o n ' t i n t e n d t o a d d r e s s t h i s i s s u e h e r e . I f n e c e s s a r y , s p e c i a l I / O c a n

    b e a c h i e v e d u s i n g \ f o r e i g n f u n c t i o n s " t o m o v e d a t a i n t o o r o u t o f m e m o r y .

    ( 5 ) G a r b a g e C o l l e c t i o n : L i s p ' s s t o r a g e r e c l a m a t i o n c o n s t i t u t e s a n u n i n t e r r u p t a b l e

    a n d l e n g t h y p a u s e i n \ r e a l " p r o c e s s i n g . R e s p o n s e : t h i s h a s b e e n l a r g e l y o v e r c o m e

    t e c h n i c a l l y b y s o - c a l l e d g e n e r a t i o n - s c a v e n g i n g g a r b a g e c o l l e c t i o n . U s i n g L i s p f o r

    r e a l - t i m e p r o c e s s i n g i s s t i l l n o t p o p u l a r , b u t t h e n , m o s t t i m e - s h a r i n g s y s t e m s u s e d

    t o s u p p o r t L i s p a r e n o t t r u l y r e a l - t i m e , a n y w a y . M y f a v o r i t e t e x t e d i t o r h a s a

    s l i g h t l y m o r e n o t i c e a b l e m e m o r y a l l o c a t i o n b e h a v i o r : I f a p a u s e f o r a s e c o n d e v e r y

    f e w m i n u t e s i s s t r o n g l y o b j e c t i o n a b l e , y o u m i g h t i n d e e d r e g i s t e r a n o b j e c t i o n t o

    t i m e s h a r i n g a s w e l l a s L i s p .

    ( 6 ) S y n t a x : T h e l a n g u a g e p e r m i t s a b s t r u s e p r o g r a m s . R e s p o n s e : W e h o p e t o s h o w

    t h i s i s a m a t t e r o f f a m i l i a r i t y t h a t i s e a s i l y s o l v e d , a n d t h a t t h e r e a r e a d v a n t a g e s

    t o L i s p ' s s y n t a x .

    ( 7 ) S e m a n t i c s : T h e r e a r e i n d e e d s o m e l a n g u a g e f e a t u r e s i n t h e C L d e s i g n t h a t

    c a n l e a d t o s o m e i n e c i e n t p r o g r a m s a n d p r o g r a m i n t e r f a c e s . H . B a k e r c l a i m s ,

    \ T h e p o l y m o r p h i c t y p e c o m p l e x i t y o f t h e C o m m o n L i s p l i b r a r y f u n c t i o n s i s m o s t l y

    g r a t u i t o u s , a n d b o t h t h e e c i e n c y o f c o m p i l e d c o d e a n d t h e e c i e n c y o f t h e p r o -

    g r a m m e r c o u l d b e i n c r e a s e d b y r a t i o n a l i z i n g t h i s c o m p l e x i t y . " 5 ] F o r e x a m p l e t h e

    t y p e o f t h e r e s u l t o f t h e s o m e f u n c t i o n s ( e . g . s q r t o r l o g ) c a n n o t b e c o m p u t e d

    b a s e d s o l e l y o n t h e t y p e o f a r g u m e n t . O n e m u s t k n o w s o m e t h i n g a b o u t t h e v a l u e

    a n e g a t i v e a r g u m e n t t o s q r t w i l l r e s u l t i n a c o m p l e x n u m b e r . D e t e r m i n i n g t y p e s

    a t c o m p i l e - t i m e i s i m p o r t a n t f o r e c i e n t c o d e

    1

    . O n e r e m e d y , w o u l d b e t o u s e s p e -

    c i a l i z e d v e r s i o n s o f s q u a r e - r o o t , f o r e x a m p l e r e a l - d o u b l e - s q r t w h i c h w i l l e i t h e r

    r e t u r n a d o u b l e - o a t o r s i g n a l a n e r r o r f o r a n e g a t i v e a r g u m e n t . R o b M a c L a c h l a n

    p o i n t e d o u t a n o t h e r p o s s i b i l i t y u s e d i n C M U - C L : u s e a r a n g e - l i m i t i n g d e c l a r a t i o n .

    1

    R e g a r d i n g t h e s q u a r e - r o o t : I f t h e a r g u m e n t i s t h e s q u a r e o f a n i n t e g e r , t h e r e s u l t m a y b e ( a p -

    p a r e n t l y a t t h e o p t i o n o f t h e i m p l e m e n t o r ) e i t h e r a n i n t e g e r o r a o a t . T h u s ( s q r t - 4 ) m a y b e

    # c ( 0 . 0 2 . 0 ) o r # c ( 0 2 )

  • 8/14/2019 lispfloat

    7/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 7

    T h a t i s , ( s q r t ( t h e ( d o u b l e - f l o a t 0 d 0 ) x ) ) a s s e r t s t o t h e c o m p i l e r t h a t t h e

    a r g u m e n t i s n o n - n e g a t i v e , a n d s o i t c a n c o m p i l e i t a s a c a l l t o r e a l - d o u b l e - s q r t

    T o s o l v e s o m e o f t h e p r o b l e m B a k e r i d e n t i e s , o n e c a n a l s o u s e o v e r l o a d i n g , a s

    d i s t i n c t f r o m p o l y m o r p h i s m , a n d d e m a n d t h a t t h e c o m p i l e r b e s u c i e n t l y c l e v e r .

    A s a n e x a m p l e , c o n s i d e r t h i s e x a m p l e f r o m B a k e r 5 ]

    ( d e f u n a s i n h ( z )

    ( t y p e c a s e z

    ( s i n g l e - f l o a t ( l o g ( + z ( s q r t ( 1 + ( * z z ) ) ) ) ) )

    ( d o u b l e - f l o a t ( l o g ( + z ( s q r t ( 1 + ( * z z ) ) ) ) ) )

    ( ( c o m p l e x s i n g l e - f l o a t ) ( l o g ( + z ( s q r t ( 1 + ( * z z ) ) ) ) ) )

    ; ; e t c . . .

    ) )

    w h e r e e a c h o f t h e a p p a r e n t l y i d e n t i c a l \ a r m s " o f t h e t y p e c a s e a r e c o m p i l e d q u i t e

    d i e r e n t l y b e c a u s e t h e t y p e o f z d i e r s i n e a c h c a s e . I n t h e c a s e o f i n - l i n e e x p a n s i o n

    t h e C M U - C L 3 2 ] c o m p i l e r c a n , g i v e n a p p r o p r i a t e d e c l a r a t i o n s , r e m o v e t h e t y p e

    c h e c k a s w e l l a s t h e d e a d c o d e f r o m t h e u n u s e d a r m s o f t h e t y p e c a s e . ( S e e t h e

    a p p e n d i x f o r f u r t h e r d i s c u s s i o n ) .

    3 . M O T I V A T I O N F O R N U M E R I C A L L I S P

    W e c o n t e n d t h a t L i s p f e a t u r e s a r e u s e f u l f o r n u m e r i c a l p r o g r a m s s p e c i c a l l y , a s

    w e l l a s p r o g r a m m i n g i n g e n e r a l . S o m e o f t h e s e f e a t u r e s , a l t h o u g h o f t e n i n a n

    a t t e n u a t e d f o r m , m a y b e f o u n d i n C o r C + + , a n d t h u s o u r a r g u m e n t s m a y p r o v i d e

    s o m e a m m u n i t i o n a s w e l l f o r a r g u i n g i n f a v o r o f C o r o t h e r m o d e r n l a n g u a g e s

    v e r s u s F o r t r a n . N e v e r t h e l e s s t h e s e p a r t i c u l a r m o t i v a t i n g e x a m p l e s i n t h i s s e c t i o n

    h e l p s u p p o r t o u r c o n t e n t i o n .

    3 . 1 S c o p i n g , i n f o r m a t i o n h i d i n g a n d s h a r i n g

    H e r e i s a n e x a m p l e o f a s i m p l e b u t n e a t u s e o f l e x i c a l s c o p i n g : G r o u p s o f F o r t r a n

    p r o g r a m s s o m e t i m e s n e e d p r i v a t e c o p i e s o f c o n s t a n t s o r n e e d a c c e s s t o s h a r e d b u t

    n o t p u b l i c w o r k s p a c e . T h e t r a d i t i o n a l u s e o f c o m m o n a n d / o r d a t a s t a t e m e n t s i n

    F o r t r a n a r e f o r ( a ) c o n s t a n t s t o b e s e t a t l o a d t i m e , o r s e t i n o n e i n i t i a l i z a t i o n

    p r o g r a m a n d u s e d b y o t h e r s ; o r ( b ) s h a r e d m e m o r y f o r c o m m u n i c a t i o n o f v a l u e s

    a m o n g s t s o m e s u b s e t o f p r o g r a m s . T h i s l e a d s t o r a t h e r u n w i e l d y a n d e r r o r - p r o n e

    p r o g r a m s . A n y c h a n g e s i n c o m m o n s t a t e m e n t s i n s u b p r o g r a m s m u s t b e c o o r d i n a t e d ;

    i t c a n a l s o b e i n s e c u r e s i n c e u n i n t e n t i o n a l c h a n g e s o f \ s h a r e d " v a l u e s m a y o c c u r

    t h r o u g h a l i a s i n g o r e r r o r s .

    S o f a r a s w e c a n t e l l , t h e u s e o f p o s i t i o n a l i n f o r m a t i o n i n c o m m o n a n d d a t a

    s t a t e m e n t s i s j u s t a r e g r e t t a b l e d e s i g n . T h e m o s t n e a r l y e q u i v a l e n t o p t i o n i n L i s p

    w o u l d b e t o u s e t h e p a c k a g e s y s t e m , w h i c h p r o v i d e s s e p a r a t e n a m e s p a c e s b u t

    a l l o w s a c c e s s t o s y m b o l s i n d i e r e n t p a c k a g e s b y t h e p a c k a g e : : s y m b o l s y n t a x .

    B u t t h e r e i s a m u c h s t r o n g e r i n f o r m a t i o n - h i d i n g m e c h a n i s m i n L i s p . I t a l l o w s

    d e n i t i o n s o f v a r i a b l e s i n s h a r e d b u t r e s t r i c t e d s c o p e b y u s i n g l e x i c a l c l o s u r e s .

    ( l e t ( ( w o r k ( m a k e - a r r a y 1 0 0 0 : e l e m e n t - t y p e ' d o u b l e - f l o a t

    : i n i t i a l - e l e m e n t 0 d 0 ) ) )

    ; ; t h e a r r a y w o r k i s k n o w n o n l y t o f , g a n d h

    ( d e f u n f ( x ) . . . u s e w o r k . . . )

  • 8/14/2019 lispfloat

    8/35

    8 R . J . F a t e m a n e t a l .

    ( d e f u n g ( y z ) . . . u s e w o r k . . . )

    ( d e f u n h ( x ) . . . u s e w o r k . . . ) )

    T h i s t e c h n i q u e c a n b e u s e d t o s h a r e d a t a a m o n g a s e l e c t e d f a m i l y o f f u n c t i o n s w h i l e

    p r o t e c t i n g i t f r o m a n y o t h e r s . I t p r o v i d e s a l e v e l o f i n f o r m a t i o n h i d i n g t h a t c a n b e

    u s e d a l s o f o r a p p l i c a t i o n s s u c h a s s e e d - s e t t i n g w i t h r a n d o m n u m b e r g e n e r a t o r s :

    ( l e t ( ( s e e d 0 ) )

    ( d e f u n i n i t i a l i z e - s e e d ( r ) ( s e t f s e e d r ) )

    ( d e f u n r a n d o m - g e n e r a t o r ( )

    " c o m p u t e a r a n d o m n u m b e r a s a f u n c t i o n o f t h e s e e d "

    . . . . ) )

    N o t e t h a t a n y p r o g r a m c a n c a l l r a n d o m - g e n e r a t o r b u t o n l y i t a n d i n i t i a l i z e - s e e d

    c a n d i r e c t l y a e c t s e e d

    3 . 2 S y s t e m t o o l s

    M o s t m o d e r n C L s y s t e m s p r o v i d e s y s t e m - b u i l d i n g t o o l s s o t h a t w h o l e n e w p a c k a g e s

    o r e v e n s u b - l a n g u a g e s m i g h t b e w r i t t e n i n L i s p . E x a m p l e s o f i n t e r a c t i v e a p p l i c a t i o n

    l a n g u a g e s b u i l t o n L i s p d i a l e c t s i n c l u d e A u t o c a d , D e r i v e , E m a c s , I n t e r l e a f , J a c a l ,

    M a c s y m a ( a n d v a r i a t i o n s o f i t { M a x i m a , P a r a m a x ) , R e d u c e , S e n a c a n d A x i o m .

    T o o l s f o r t o k e n - s c a n n n i n g a n d l a n g u a g e p a r s i n g a r e e a s i l y a t h a n d : t e m p o r a r i l y

    m o d i f y i n g t h e L i s p r e a d - t a b l e s o t h a t i n d i v i d u a l c h a r a c t e r s o r g r o u p s o f t h e m t a k e

    o n s p e c i a l s i g n i c a n c e a s s i s t s i n t e l l i g e n t p a r s i n g f o r n e w \ u s e r " l a n g u a g e s . F o r

    e x a m p l e , t h e c o n c a t e n a t i o n o f c h a r a c t e r s t o f o r m a n i d e n t i e r \ t o k e n " o r t h e i n -

    t e r p r e t a t i o n o f d i g i t s , c o m m a s , o r o t h e r c h a r a c t e r s w i t h i n n u m b e r s , c a n b e e a s i l y

    c h a n g e d . ( e . g . 2 x c o u l d b e p a r s e d a s 2 t i m e s x )

    T h e C L p a c k a g e m e c h a n i s m a s s i s t s i n a v o i d i n g i n a d v e r t e n t n a m e - c l a s h e s t h a t

    m i g h t d e v e l o p f r o m m u l t i p l e i n d e p e n d e n t p r o g r a m m e r s , d i e r e n t s y s t e m v e r s i o n s

    c o e x i s t i n g , o r i m p o r t i n g f r o m m u l t i p l e l i b r a r i e s . F o r e x a m p l e , o n e c o u l d n d n a m e s

    l i k e s o l v e - b a n d e d - l i n e a r - e q u a t i o n i n b o t h N A G a n d L A P A C K p a c k a g e s i n t h e

    s a m e C L i m a g e . T h e y m i g h t r e f e r t o e a c h o t h e r i f n e c e s s a r y u s i n g p r e x e s n a g : :

    a n d l a p a c k : : . T h e p r o g r a m m e r d o e s n o t o r d i n a r i l y n e e d p r e x e s w i t h i n a s i n g l e

    p a c k a g e e x c e p t w h e n s y m b o l s a r e i m p o r t e d o r e x p o r t e d .

    M o s t i m p l e m e n t a t i o n s i n c l u d e o t h e r ( a l t h o u g h n o t s t a n d a r d i z e d ) t o o l s f o r p r o l -

    i n g , d e b u g g i n g , a n d i n t e r f a c e s t o f u n c t i o n s w r i t t e n i n o t h e r l a n g u a g e s . T h e r e a r e

    n u m e r o u s g r a p h i c s p a c k a g e s w r i t t e n f o r a c c e s s f r o m C o m m o n L i s p ; s e v e r a l v e n d o r s

    h a v e s t a n d a r d i z e d o n C L I M ( C o m m o n L i s p I n t e r f a c e M a n a g e r ) f o r u s e r i n t e r f a c e

    c o d e .

    3 . 3 P a r a m e t e r s , o p t i o n a l a n d n a m e d

    I n a F o r t r a n p r o g r a m w e m i g h t s e e a P A R A M E T E R s t a t e m e n t f o r s e t t i n g s i z e s o f a r r a y s

    a n d o t h e r v a r i a b l e s .

    P A R A M E T E R ( A = 4 d 0 , N = 2 0 0 , M = 5 0 0 )

    C h a n g e s t o t h e v a l u e s o f t h e s e v a r i a b l e s r e q u i r e s e d i t i n g s o u r c e c o d e . W h i l e L i s p

    h a s a d e f p a r a m e t e r f u n c t i o n f o r s u c h u s e s , i t i s o u r f e e l i n g t h a t F o r t r a n ' s p a r a m e t e r

    s t a t e m e n t s a r e m o r e o f t e n u s e d f o r a s s i g n i n g v a l u e s t o \ e x t r a " s u b r o u t i n e p a r a m -

    e t e r s . I n L i s p s u c h v a l u e s c a n b e d i r e c t l y i n d i c a t e d p a s s e d t o a f u n c t i o n t h r o u g h

    o p t i o n a l o r k e y w o r d a r g u m e n t s w h i c h m a y b e g i v e n d e f a u l t s a t t h e t i m e a f u n c t i o n

  • 8/14/2019 lispfloat

    9/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 9

    i s d e n e d . T h e n i f t h e d e f a u l t s e t t i n g n e e d s t o b e o v e r r i d d e n , t h e p a r a m e t e r v a l u e

    c a n b e s p e c i e d a s a n o p t i o n a v a i l a b l e w i t h e a c h c a l l t o t h e f u n c t i o n . I n t h e e x a m -

    p l e b e l o w t h e f u n c t i o n f u s e s t h e d e f a u l t s o n t h e r s t c a l l b u t c h a n g e s t h e v a l u e s

    o f a a n d m o n t h e s e c o n d .

    ( d e f u n f ( x y & k e y ( a 4 d 0 ) ( n 2 0 0 ) ( m 5 0 0 ) ) . . . )

    ( f 2 3 )

    ( f 2 3 : a 2 d 0 : m 1 0 0 0 )

    3 . 4 F u n c t i o n a l p r o g r a m m i n g s u p p o r t

    A c o l l e c t i o n o f f u n c t i o n s t h a t o p e r a t e u s i n g \ f u n c t i o n s a s d a t a " p r o v i d e a n a l t e r n a -

    t i v e a n d o f t e n v e r y s i m p l e v i e w o f c o m p l e x o p e r a t i o n s . A s a s i m p l e e x a m p l e , i f v i s

    a v e c t o r o f n u m b e r s , t h e n t o p r o d u c e a n e w v e c t o r o f t h e a b s o l u t e v a l u e s o f t h o s e

    n u m b e r s , t y p e ( m a p ` v e c t o r # ' a b s v )

    T o p r o d u c e a n e w v e c t o r o f e a c h v a l u e v

    3

    i

    + 1 , j u s t a b i t m o r e p r o g r a m m i n g i s

    n e e d e d . W e c a n d e n e a f u n c t i o n C u b e P l u s 1 a n d t h e n m a p t h a t o v e r v

    ( d e f u n C u b e P l u s 1 ( x ) ( + ( ^ x 3 ) 1 ) )

    ( m a p ' ( v e c t o r s i n g l e - f l o a t ) # ' C u b e P l u s 1 v )

    T h e n e x t s t a t e m e n t p e r f o r m s t h e o p e r a t i o n i n \ o n e g u l p " u s i n g a \ l a m b d a e x p r e s -

    s i o n " . T h e a d v a n t a g e t o t h e p r o g r a m m e r , o n e w h i c h o n l y b e c o m e s a p p a r e n t a f t e r

    s o m e e x p e r i e n c e , i s t h a t n o n e w \ o n e - t i m e - u s e " f u n c t i o n n a m e s y m b o l n e e d b e i n -

    t r o d u c e d . T h e s e l a m b d a - e x p r e s s i o n s c a n b e w r i t t e n a s a n y o t h e r k i n d o f p r o g r a m

    c o m p o n e n t ; o c c a s i o n a l l y ( r a r e l y ) i t i s u s e f u l { t h o u g h q u i t e p o s s i b l e t o b u i l d s u c h

    a n a n o n y m o u s l a m b d a - e x p r e s s i o n a t r u n t i m e , a n d e v e n c o m p i l e i t i n t o e c i e n t

    c o d e : L i s p ' s i n h e r e n t s y m b o l i c m a n i p u l a t i o n f a c i l i t i e s c a n t r e a t d a t a a s p r o g r a m s

    a n d v i c e v e r s a .

    ( m a p # ' ( l a m b d a ( x ) ( + ( ^ x 3 ) 1 ) ) v )

    3 . 5 S y n t a x , m a c r o - e x p a n s i o n , e x p r e s s i o n a l i t y

    A d v o c a t e s o f L i s p o f t e n h e a r c o m p l a i n t s b y n o n - L i s p p r o g r a m m e r s t h a t t h e s y n t a x

    i s p o o r . M a n y o f t h e c o m p l a i n t s a r e p r o b a b l y b a s e d o n a s u p p o s i t i o n t h a t h u m a n

    L i s p p r o g r a m m e r s a r e f o r c e d t o c o u n t p a r e n t h e s e s t o m a k e t h e m b a l a n c e . I n f a c t ,

    c o m p u t e r s d o a n e x c e l l e n t j o b o f t h i s . T h e y a l s o a r e e x c e l l e n t a t i n d e n t i n g p r o g r a m s

    t o s h o w s t r u c t u r e , w h e t h e r t h e l a n g u a g e i s C , F o r t r a n o r L i s p . O n e r a p i d l y b e c o m e s

    a c c u s t o m e d t o s e e i n g p a r e n t h e s e s r a t h e r t h a n t h e \ b e g i n { e n d " o r \ d o { o d " p a i r s o f

    w o r d i e r l a n g u a g e s .

    H e r e ' s a n e x t r a c t o f F o r t r a n f r o m N u m e r i c a l R e c i p e s 3 3 ] ( p . 1 7 8 ) c o m p u t i n g a n

    a p p r o x i m a t i o n t o a B e s s e l f u n c t i o n :

    D A T A Q 1 , Q 2 , Q 3 , Q 4 , Q 5 , Q 6 , Q 7 , Q 8 , Q 9 / 0 . 3 9 8 9 4 2 2 8 D 0 , - 0 . 3 9 8 8 0 2 4 D - 1 ,

    * - 0 . 3 6 2 0 1 8 D - 2 , 0 . 1 6 3 8 0 1 D - 2 , - 0 . 1 0 3 1 5 5 5 D - 1 , 0 . 2 2 8 2 9 6 7 D - 1 ,

    * - 0 . 2 8 9 5 3 1 2 D - 1 , 0 . 1 7 8 7 6 5 4 D - 1 , - 0 . 4 2 0 0 5 9 D - 2 /

    B E S S I 1 = ( E X P ( A X ) / S Q R T ( A X ) ) * ( Q 1 + Y * ( Q 2 + Y * ( Q 3 + Y * ( Q 4 +

    * Y * ( Q 5 + Y * ( Q 6 + Y * ( Q 7 + Y * ( Q 8 + Y * Q 9 ) ) ) ) ) ) ) )

    T h e a s s i g n m e n t s t a t e m e n t h a s 1 1 p a i r s o f p a r e n t h e s e s , a n d d o e s n o t m a k e e a s y

    r e a d i n g . I f t h e r e w e r e a n e r r o r i n i t , w o u l d y o u n o t i c e ?

  • 8/14/2019 lispfloat

    10/35

    1 0 R . J . F a t e m a n e t a l .

    I t f a i l s t o b e e x p r e s s i v e b e c a u s e , a l t h o u g h t h e v a l u e s o f Q a r e i n i t i a l i z e d i n a

    d a t a s t a t e m e n t , i t i s n o t c l e a r t h a t t h e y a r e c o n s t a n t s . T h e y m i g h t b e i n i t i a l

    v a l u e s o f v a r i a b l e s . I f t h e c o m p i l e r k n e w t h e y w e r e n e v e r g o i n g t o b e c h a n g e d ,

    i t m i g h t m a k e s o m e s i m p l i c a t i o n s . P e r h a p s i f Q 4 w e r e z e r o , i t c o u l d e v e n s a v e

    a n a d d i t i o n . F u r t h e r m o r e , t h e F o r t r a n f a i l s t o e x p r e s s t h e i n t e n t a c c u r a t e l y : t h e

    c o n s t a n t s a p p e a r t o b e d o u b l e p r e c i s i o n ( f o r e x a m p l e Q 1 i s 0 . 3 9 8 9 4 2 2 8 d 0 ) a n d y e t

    Q 1 i s p r e s u m a b l y a c c u r a t e t o o n l y 8 d e c i m a l p l a c e s . W e e x p e c t t h a t Q 1 i s d e c l a r e d

    t o b e d o u b l e p r e c i s i o n s o l e l y t o p r o m o t e t h e u s e o f d o u b l e - p r e c i s i o n a r i t h m e t i c l a t e r

    o n

    H e r e i s t h e s a m e a s s i g n m e n t s t a t e m e n t i n L i s p . I t h a s 2 1 p a i r s o f p a r e n t h e s e s .

    W h i c h i s e a s i e r t o r e a d ? W h i c h h a s i t s s t r u c t u r e d i s p l a y e d m o r e c l e a r l y ? Y o u a r e

    e n t i t l e d t o y o u r o p i n i o n , b u t k e e p r e a d i n g p l e a s e .

    ( s e t f

    b e s s i 0

    ( * ( / ( e x p a x ) ( s q r t a x ) )

    ( + q 1

    ( * y

    ( + q 2

    ( * y

    ( + q 3

    ( * y

    ( + q 4

    ( * y

    ( + q 5

    ( * y

    ( + q 6

    ( * y

    ( + q 7

    ( * y

    ( + q 8 ( * y q 9 ) ) ) )

    ) ) ) ) ) ) ) ) ) ) ) ) ) )

    S u c h i n d e n t a t i o n s a n d p a r e n t h e s i s c o u n t i n g i s a l m o s t a l w a y s d o n e b y e d i t p r o -

    g r a m s , n o t b y p r o g r a m m e r s . B u t c o n s i d e r a n o t h e r v e r s i o n

    ( s e t f

    b e s s i 0

    ( * ( / ( e x p a x ) ( s q r t a x ) )

    ( p o l y - e v a l y

    ( 0 . 3 9 8 9 4 2 2 8 d 0 - 0 . 3 9 8 8 0 2 4 d - 1 - 0 . 3 6 2 0 1 8 d - 2 0 . 1 6 3 8 0 1 d - 2

    - 0 . 1 0 3 1 5 5 5 d - 1 0 . 2 2 8 2 9 6 7 d - 1 - 0 . 2 8 9 5 3 1 2 d - 1 0 . 1 7 8 7 6 5 4 d - 1

    - 0 . 4 2 0 0 5 9 d - 2 ) ) ) )

    T h i s i s m u c h s i m p l e r t o v i e w , a n d w e h a v e n o t n e c e s s a r i l y c o m m i t t e d o u r s e l v e s t o

    a p a r t i c u l a r w a y o f e v a l u a t i n g t h e g i v e n c o n s t a n t - c o e c i e n t p o l y n o m i a l . W e c o u l d

    d e n e p o l y - e v a l b y m a c r o - e x p a n s i o n t o g e n e r a t e e x a c t l y t h e s a m e f o r m ( H o r n e r ' s

    r u l e ) a s a b o v e .

    T o i l l u s t r a t e t h e v i r t u o s i t y o f L i s p h e r e i s o n e s u c h d e n i t i o n o f p o l y - e v a l 4

  • 8/14/2019 lispfloat

    11/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 1 1

    l i n e s , o n e o f w h i c h i s a c o m m e n t .

    ( d e f m a c r o p o l y - e v a l ( y l )

    " E x p a n d o u t H o r n e r ' s R u l e f o r p ( y ) = a 0 + a 1 * y + . . .

    w h e r e l = ( a 0 a 1 . . . ) "

    ( i f ( e n d p ( r e s t l ) ) ( f i r s t l )

    ` ( + ( * , y ( p o l y - e v a l , y , ( r e s t l ) ) ) , ( f i r s t l ) ) ) )

    T h e n u m e r i c a l l a n g u a g e p r o g r a m m e r w r i t i n g i n L i s p n e e d n o t b e c o n c e r n e d w i t h

    t h e d e t a i l s o f s u c h a m a c r o e x p a n s i o n .

    I n f a c t a \ p r o f e s s i o n a l " v e r s i o n o f t h i s m i g h t b e m o r e e l a b o r a t e , a l t h o u g h j u s t

    a s e a s y t o u s e : i t w o u l d p u t t y p e d e c l a r a t i o n s i n a l l a p p r o p r i a t e p l a c e s

    2

    , m a k e

    c o n v e r s i o n s a t c o m p i l e - t i m e f r o m r a t i o n a l s o r i n t e g e r s t o s i n g l e - o r d o u b l e - o a t s a s

    a p p r o p r i a t e , c h e c k f o r v a r i o u s e r r o n e o u s u s e s a n d s i m p l i f y a w a y a d d i t i o n s o f 0 . I t

    a l s o a s s u r e s t h a t y i s e v a l u a t e d o n l y o n c e . I t c o u l d e v e n b e u s e d a s a w a y o f g e n e r a t -

    i n g m a c h i n e c o d e i n s o m e h i g h l y o p t i m i z e d f a s h i o n , t a k i n g i n t o a c c o u n t o v e r l a p p i n g

    o f m u l t i p l i c a t i o n , a d d i t i o n , a n d l o a d i n g o f o a t i n g p o i n t r e g i s t e r s , o r g e n e r a t i n g a

    c a l l t o a p o l y n o m i a l - e v a l u a t i o n i n s t r u c t i o n a v a i l a b l e o n s o m e c o m p u t e r s ( s u c h a s

    t h e D E C V A X ) .

    B u t p e r h a p s w e c o u l d d o s o m e t h i n g b e t t e r . I n f a c t b y n o t c o m m i t t i n g t o a p a r t i c -

    u l a r i m p l e m e n t a t i o n o f p o l y - e v a l f o r a l l m a c h i n e s , w e m i g h t b e a b l e t o s a v e t i m e

    o n s o m e a r c h i t e c t u r e s . F o r s o m e n e w e r a r c h i t e c t u r e s , r e d u c i n g t h e n u m b e r o f m u l -

    t i p l i c a t i o n / a d d i t i o n o p e r a t i o n s ( e v e n b y a f a c t o r o f t w o ) m a y n o t b e a s i m p o r t a n t

    a s c o m p u t i n g t h e b e s t o r d e r i n g o f o p e r a t i o n s f o r t h e o v e r l a p o f m e m o r y a c c e s s e s

    w i t h r e g i s t e r - t o - r e g i s t e r i n s t r u c t i o n s . T h e r e f o r e i m p l e m e n t a t i o n s o f p o l y - e v a l m a y

    d i e r f o r L i s p s i n t e n d e d f o r s u c h a r c h i t e c t u r e s .

    3

    O n a n o t h e r t a c k , w e c a n t a k e t h e s a m e h i g h e r - l e v e l s y n t a x o f p o l y - e v a l a n d

    c o n s i d e r o n e o f a n u m b e r o f d i e r e n t t e c h n i q u e s f o r p o l y n o m i a l e v a l u a t i o n t h a t a r e

    t h e o r e t i c a l l y a n d p r a c t i c a l l y f a s t e r t h a n H o r n e r ' s r u l e

    4

    2

    I m p l e m e n t a t i o n s o f C o m m o n L i s p v a r y s i g n i c a n t l y i n t h e i r a b i l i t y t o i n f e r t y p e s f r o m d e c l a r a -

    t i o n s . S o m e a r e f a i r l y c l e v e r ( C M U - C L ) , a n d o t h e r s ( K y o t o C L ) r e q u i r e d e c l a r a t i o n s o f v i r t u a l l y

    e v e r y o c c u r r e n c e o f a s y m b o l . A u s e f u l f e a t u r e i n s o m e c o m p i l e r s i s a n \ e x p l a n a t i o n " f a c i l i t y w h e r e

    t h e c o m p i l e r ' s i n a b i l i t y t o d e t e r m i n e a s p e c i c t y p e r e s u l t s i n a w a r n i n g m e s s a g e . s u g g e s t i n g t h a t

    m o r e e c i e n t c o d e c o u l d b e g e n e r a t e d i f t h e p r o g r a m m e r w e r e t o k n o w e n o u g h a b o u t t h e t y p e s

    o f a r g u m e n t s t o i n s e r t a d e c l a r a t i o n . A t l e a s t o n e L i s p s y s t e m ( C M U - C L ) t a k e s t h e v i e w t h a t

    c o m p i l a t i o n , w i t h i t s s t a t i c a n a l y s i s o f t h e p r o g r a m , p r o v i d e s b e t t e r d e b u g g i n g i n f o r m a t i o n t h a n

    t h e i r i n t e r p r e t e r . O t h e r i m p l e m e n t a t i o n s p l a c e a h e a v i e r d e b u g g i n g b u r d e n o n t h e i n t e r p r e t e r

    w h i l e a s s u m i n g t h e c o m p i l e r i s u s e d o n l y o n c o d e t h a t i s c o r r e c t . T h e s e a p p r o a c h e s a r e n o t m u -

    t u a l l y e x c l u s i v e : s e v e r a l s y s t e m s s u p p o r t v a r i a n t s o f c o m p i l e r s a n d / o r i n t e r p r e t e r s w i t h d i e r e n t

    o b j e c t i v e s c o n t r o l l e d b y \ o p t i m i z a t i o n " d i r e c t i v e s .

    3

    I n o n e t e s t o n o n e c o m p i l e r , w e f o u n d t h a t w r i t i n g o u t H o r n e r ' s r u l e a s a l o o p s t e p p i n g t h r o u g h a n

    a r r a y w a s 1 0 % f a s t e r t h a n t h e i n - l i n e e x p a n s i o n f o r a p o l y n o m i a l o f d e g r e e 1 0 0 . T h i s w a s c o u n t e r -

    i n t u i t i v e , s o w e e x p l o r e d f u r t h e r : B y r e v e r s i n g t h e o r d e r o f a r g u m e n t s t o t h e \ + " i n t h e m a c r o ,

    w e r e d u c e d t h e t i m e f o r t h e i n - l i n e e x p a n s i o n b y m o r e t h a n a f a c t o r o f t w o . T h e e x p l a n a t i o n i s

    a c t u a l l y s i m p l e : t h e L i s p c o m p i l e r w a s e v a l u a t i n g a n d s a v i n g t h e a r g u m e n t s t o \ + " l e f t - t o - r i g h t ,

    a n d t h e n a d d i n g t h e m . T h u s w e h a v e a h e u r i s t i c f o r c o m p l i c a t e d e x p r e s s i o n s : i n t h e c a s e o f

    c o m m u t a t i v e a r g u m e n t s ( t o + a n d * ) , i t i s p r e f e r a b l e t o p l a c e t h e m o s t e l a b o r a t e a r g u m e n t ( t o

    c o m p i l e ) o n t h e l e f t .

    4

    A l t h o u g h H o r n e r ' s r u l e i s b o t h a d m i r a b l y s t a b l e n u m e r i c a l l y a n d i n o n e s e n s e \ o p t i m a l " , i n t h a t

    i t u s e s t h e f e w e s t n u m b e r o f o p e r a t i o n s , i f q 1 t h r o u g h q 9 a r e n o t k n o w n u n t i l r u n t i m e , i t d o e s

    N O T u s e t h e f e w e s t n u m b e r o f o p e r a t i o n s i f a p r e - c o n d i t i o n i n g c o m p u t a t i o n w i t h t h e c o e c i e n t s

  • 8/14/2019 lispfloat

    12/35

    1 2 R . J . F a t e m a n e t a l .

    T h e s m a l l e s t c a s e i n w h i c h t h i s m a t t e r s i s t h e g e n e r a l 4 t h d e g r e e p o l y n o m i a l

    w h i c h c a n b e e v a l u a t e d w i t h 3 r a t h e r t h a n 4 m u l t i p l i c a t i o n s .

    I n f a c t , w e c a n e x p a n d t h e e x a m p l e p o l y n o m i a l f r o m b e s s i 0 a b o v e t o t h e f o l -

    l o w i n g L i s p p r o g r a m , w h i c h u s e s o n l y 6 m u l t i p l i c a t i o n s a n d 8 a d d s i n s t e a d o f t h e

    e x p e c t e d 8 e a c h

    5

    ( p o l y - e v a l x ( 0 . 3 9 8 9 4 2 2 8 d 0 - 0 . 3 9 8 8 0 2 4 d - 1 - 0 . 3 6 2 0 1 8 d - 2 0 . 1 6 3 8 0 1 d - 2

    - 0 . 1 0 3 1 5 5 5 d - 1 0 . 2 2 8 2 9 6 7 d - 1 - 0 . 2 8 9 5 3 1 2 d - 1 0 . 1 7 8 7 6 5 4 d - 1

    - 0 . 4 2 0 0 5 9 d - 2 ) )

    e x p a n d t o

    ( l e t * ( ( z ( + ( * ( + x - 0 . 4 4 7 4 2 0 2 4 6 8 9 1 6 6 2 d 0 ) x ) 0 . 5 5 5 5 5 7 4 4 4 5 8 4 1 1 4 3 d 0 ) )

    ( w ( + ( * ( + x - 2 . 1 8 0 4 4 0 3 6 3 1 6 5 4 9 7 d 0 ) z ) 1 . 7 5 9 2 9 1 8 0 9 1 0 6 7 3 4 d 0 ) ) )

    ( * ( + ( * x ( + ( * x ( + ( * w ( + - 1 . 7 4 5 9 8 6 5 6 8 8 1 4 3 4 5 d 0 w z ) )

    1 . 2 1 3 8 7 1 2 8 0 8 6 2 9 6 8 d 0 ) )

    9 . 4 9 3 9 6 1 5 6 2 5 4 2 4 d 0 ) )

    - 9 4 . 9 7 2 9 1 5 7 0 9 4 5 9 8 d 0 )

    - 0 . 0 0 4 2 0 0 5 9 d 0 ) )

    H a n d l i n g p o l y n o m i a l s o f s p e c i c l o w o r d e r s a s w e l l a s t h e g e n e r a l n t h o r d e r

    p o l y n o m i a l c a n a l s o b e p r o g r a m m e d , a s p a r t o f a n e l a b o r a t e c o m p i l e - t i m e e x p a n s i o n

    o f p o l y - e v a l . P r e - c o n d i t i o n e d f o r m s c a n m a g n i f y o a t i n g - p o i n t r o u n d - o e r r o r s

    b y c a n c e l l a t i o n s , a l t h o u g h e v e n H o r n e r ' s r u l e c a n h a v e b a d e v a l u a t i o n p o i n t s . T o

    b e e s p e c i a l l y c a u t i o u s , o n e c o u l d a t t e m p t a c a r e f u l a n a l y s i s o f t h e r a n g e f o r t h e

    i n d e p e n d e n t v a r i a b l e a n d t h e f o r m u l a ' s n u m e r i c a l a c c u r a c y . I n t h i s c a s e , k n o w i n g

    t h a t t h i s p o l y n o m i a l i s u s e d o n l y f o r x

  • 8/14/2019 lispfloat

    13/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 1 3

    l a n g u a g e . T h i s w o u l d h a v e a c o m p l e m e n t a r y r o l e t o p l a y , a l o n g w i t h m o r e c o n v e n -

    t i o n a l n u m e r i c a l l i b r a r i e s .

    3 . 6 O t h e r L i s p f e a t u r e s

    A l t h o u g h w e w i l l n o t d w e l l o n t h e s e f e a t u r e s , w e s h o u l d m e n t i o n a n u m b e r o f o t h e r

    a s p e c t s o f t h e l a n g u a g e .

    T h e r e a r e s u b s t a n t i a l l i b r a r i e s o f ( o f t e n f r e e ) s o f t w a r e f o r s o p h i s t i c a t e d m a n i p u -

    l a t i o n o f t e x t , d a t a , p r o g r a m s . T h e s e i n c l u d e p a c k a g e s f o r g r a p h i c s , s t a t i s t i c s , i m -

    a g e u n d e r s t a n d i n g , s y m b o l i c m a t h e m a t i c s , c o m b i n a t o r i c s , p a r s i n g o f c o m p u t e r l a n -

    g u a g e s , n a t u r a l l a n g u a g e p a r s i n g , k n o w l e d g e r e p r e s e n t a t i o n , e x p e r t s y s t e m s h e l l s ,

    e t c .

    T h e C L O b j e c t S y s t e m ( C L O S ) i s q u i t e p o w e r f u l . A d d i n g t o t h e c o r e f a c i l i -

    t i e s o f t h e l a n g u a g e u s i n g t h i s e x t e n s i o n f a c i l i t y c a n b e r e l a t i v e l y c o n v e n i e n t a n d

    s t r a i g h t f o r w a r d .

    T h e r e a r e n u m e r o u s b u i l t - i n f u n c t i o n c a p a b i l i t i e s d e a l i n g w i t h n u m e r i c a n d n o n -

    n u m e r i c t y p e s ; p e r h a p s w o r t h y o f s p e c i a l n o t e i n t h e c o n t e x t o f o a t i n g p o i n t

    a r i t h m e t i c i s t h e p r o v i s i o n f o r h a n d l i n g t r a p s a n d o t h e r n o n - s t a n d a r d o w o f c o n t r o l

    c o n s t r u c t s .

    S t r e n g t h e n i n g t h e p o s i t i o n o f t h e l a n g u a g e a s a v e h i c l e f o r p o r t a b l e p r o g r a m m i n g

    i s t h e d e t a i l e d d e n i t i o n a n d s t a n d a r d i z a t i o n t h a t i s w e l l u n d e r w a y .

    4 . S Y S T E M A R C H I T E C T U R E A N D N U M B E R R E P R E S E N T A T I O N I N L I S P

    I n t h i s s e c t i o n w e c o n s i d e r s o m e o f t h e d e e p e r i s s u e s c o n c e r n i n g L i s p c o m p i l a t i o n

    a n d h o w t h e s p e e d o f c o m p i l e d c o d e f o r n u m e r i c p r o b l e m s m i g h t b e i m p r o v e d .

    4 . 1 P o i n t e r s a n d n u m b e r v a l u e s

    I n o r d e r t o b e c o n s i s t e n t w i t h L i s p ' s u s u a l m e m o r y m o d e l o n a s t o c k - h a r d w a r e

    c o m p u t e r

    6

    , i t i s o f t e n n e c e s s a r y t o m a n i p u l a t e p o i n t e r s ( i . e . a d d r e s s e s ) o f o b j e c t s ,

    r a t h e r t h a n o b j e c t s o r v a l u e s t h e m s e l v e s . T h a t i s , ( s e t f x 3 . 1 4 d 0 ) s t o r e s i n t h e

    \ v a l u e c e l l " o f t h e s y m b o l x , a p o i n t e r t o a l o c a t i o n ( o f t e n r e f e r r e d t o i n L i s p

    l i t e r a t u r e a s a \ b o x " ) i n m e m o r y w h e r e 6 4 b i t s o f 3 . 1 4 i s s t o r e d a s a o a t i n g - p o i n t

    n u m b e r . W h y t h e i n d i r e c t i o n ? T h e g e n e r a l i t y o f t h e c o n c e p t o f \ v a l u e " i n L i s p

    r e q u i r e s t h a t x ' s v a l u e c o u l d b e a n o b j e c t o f a n y s i z e { a s i n g l e - p r e c i s i o n o a t , a n

    a r r a y , a s t r u c t u r e , e t c . T h i s i s u s u a l l y h a n d l e d b y p o i n t i n g t o t h e \ r e a l " v a l u e f r o m

    t h e \ v a l u e c e l l " o f t h e s y m b o l x / A s u s u a l l y i m p l e m e n t e d , t h e p o i n t e r p r o v i d e s s o m e

    s p a c e ( i n t h e h i g h o r l o w b i t s o f t h e a d d r e s s ) t o m a r k w h a t k i n d o f o b j e c t i s b e i n g

    a d d r e s s e d . T h i s t y p e i n f o r m a t i o n i s v i t a l t o m a i n t a i n L i s p ' s m e m o r y c o n s i s t e n c y

    { h o w e l s e t o t r a c e t h r o u g h m e m o r y c e l l s i n u s e ? O n e m u s t b e a b l e t o d i s t i n g u i s h

    b e t w e e n a p o i n t e r ( w h i c h m u s t b e f o l l o w e d d u r i n g g a r b a g e c o l l e c t i o n i n o r d e r t o

    m a r k o t h e r a c c e s s i b l e d a t a ) a n d i n t e g e r o r a o a t ( i n w h i c h c a s e \ t h e b u c k s t o p s

    h e r e " ) . I t i s a l s o u s e f u l f o r e r r o r c h e c k i n g b a s e d o n t y p e s .

    B u t w h a t i f w e k n o w t h a t x ' s v a l u e i s c o n s t r a i n e d t o b e a d o u b l e - o a t ? F o r

    e c i e n c y ' s s a k e ( e s p e c i a l l y i f w e a r e c o m p e t i n g w i t h F o r t r a n w h i c h h a s n o s u c h

    o v e r h e a d ) , w e m u s t t r y t o t a k e a d v a n t a g e o f t h i s k n o w l e d g e a n d e l i m i n a t e t h e

    i n d i r e c t n e s s o f p o i n t e r s .

    6

    A s o p p o s e d t o s p e c i a l \ L i s p m a c h i n e s " w i t h t a g g e d a r c h i t e c t u r e s .

  • 8/14/2019 lispfloat

    14/35

    1 4 R . J . F a t e m a n e t a l .

    4 . 1 . 1 I n t e g e r s . T h e r s t w a y o u t o f t h i s i n d i r e c t n e s s i s t o e s t a b l i s h a s e t o f 3 2 b i t

    7

    v a l u e s t h a t c o u l d n o t p o s s i b l y b e i n t e r p r e t e d a s a d d r e s s e s t h e m s e l v e s . T h e s e b i t

    p a t t e r n s t h e n c a n b e u s e d t o e n c o d e ( s m a l l ) i n t e g e r s . F o r e x a m p l e , i f p o i n t e r s m u s t

    a l w a y s p o i n t t o d o u b l e - w o r d ( 6 4 - b i t ) b o u n d a r i e s , w e a r e u s i n g o n l y t h e b i t p a t t e r n s

    w i t h l o w - o r d e r 0 ' s . A l t e r n a t i v e l y , p e r h a p s a d d r e s s e s m u s t b e n o n - n e g a t i v e , s o w e

    h a v e a l l n e g a t i v e i n t e g e r s t o u s e . S u c h a n e n c o d i n g l e a v e s u s w i t h a g e n e r a l l y l o w -

    c o s t i m p l e m e n t a t i o n o f i m m e d i a t e n u m b e r - l i k e o b j e c t s ( s o m e t i m e s c a l l e d I N O B S ) :

    a r r a y i n d e x e s , c o u n t e r s , a n d r u n - o f - t h e - m i l l x e d - p r e c i s i o n \ s m a l l " i n t e g e r s . T h e s e

    a r e o f s u b - t y p e f i x n u m i n C o m m o n L i s p . T y p i c a l l y t h e s e c a n a c c o m m o d a t e v a l u e s

    t h a t a r e i n t h e r a n g e 2

    n

    t o 2

    n

    1 w h e r e n , i n a 3 2 - b i t i m p l e m e n t a t i o n , i s l i k e l y

    t o b e 2 9 o r 3 0 . T h e r e m a i n i n g f e w b i t s a r e g e n e r a l l y u s e d f o r s o m e k i n d o f \ x n u m

    t a g " . F o r o b j e c t s t o b e f i x n u m t y p e , t h e y m u s t b e d e c l a r e d t o t h e L i s p c o m p i l e r ,

    s i n c e a n \ u n d e c l a r e d " i n t e g e r v a l u e c o u l d b e o u t s i d e t h i s r a n g e . N o t e t h a t t h e

    C o m m o n L i s p s t a n d a r d r e q u i r e s a n a r b i t r a r y - p r e c i s i o n r a n g e f o r i n t e g e r s .

    T h e p o i n t h e r e i s t h a t d e c l a r i n g i n t e g e r s a s f i x n u m s c a n c u t d o w n o n t h e o v e r h e a d

    o f p o i n t e r s a n d b o x e s f o r s t o r i n g n u m b e r s , g i v e n a s u i t a b l e c o m p i l e r t o p e r f o r m t h a t

    e l i m i n a t i o n . S o m e s y s t e m s h a v e f u l l 3 2 - b i t \ u n - b o x e d " i n t e g e r s a v a i l a b l e a s w e l l :

    t h e a d v a n t a g e h e r e i s u n r e s t r i c t e d d i r e c t a c c e s s t o t h e i n t e g e r a r i t h m e t i c o n t h e

    h o s t m a c h i n e w i t h o u t d d l i n g w i t h h i g h o r l o w o r d e r b i t s .

    4 . 1 . 2 A r r a y s a n d o a t s , u n b o x e d . T h e s e c o n d i m p o r t a n t t y p e o f d e c l a r a t i o n f o r

    F o r t r a n - l i k e c o d e i s t h a t o f o a t i n g - p o i n t a r r a y s . C o m m o n L i s p i m p l e m e n t a t i o n s

    m a y h a v e s e v e r a l o a t i n g - p o i n t t y p e s , b u t f o r c o n c r e t e n e s s l e t ' s u s e d o u b l e - f l o a t

    M o s t i m p l e m e n t a t i o n s t r e a t s u c h a n u m b e r a s a 6 4 b i t q u a n t i t y . A 1 0 - e l e m e n t

    s i n g l e - i n d e x e d a r r a y o f d o u b l e - o a t s D c a n b e a l l o c a t e d b y ( s e t f D ( m a k e - a r r a y

    1 0 : e l e m e n t - t y p e ' d o u b l e - f l o a t ) ) a n d p r o g r a m s u s i n g D b u t c o m p i l e d o u t o f

    v i e w o f t h e a l l o c a t i o n c a n c o n t a i n t h e d e c l a r a t i o n ( d e c l a r e ( t y p e ( s i m p l e - a r r a y

    d o u b l e - f l o a t 1 0 ) D ) ) . T h i s a n n o t a t i o n , i f p r o p e r l y t r e a t e d b y t h e c o m p i l e r , i n -

    d i c a t e s t h a t e a c h e n t r y o f D c a n b e t r e a t e d a s a d o u b l e - o a t . N o t a s a p o i n t e r t o

    a d o u b l e - o a t , b u t t h e 6 4 - b i t q u a n t i t y i t s e l f . S u c h a n a r r a y i s s a i d t o c o n t a i n \ u n -

    b o x e d " o a t s

    8

    . A c l e v e r e n o u g h c o m p i l e r c a n t h e r e f o r e g e n e r a t e c o d e t o a d d t w o

    e l e m e n t s i n D a n d s t o r e i n a t h i r d e l e m e n t w i t h t h e s a m e e c i e n c y a s i n F o r t r a n .

    A m a j o r g r o s s t r a n s f o r m a t i o n o f a n y F o r t r a n - s t y l e o a t i n g - p o i n t a r i t h m e t i c t o

    e c i e n t L i s p r e p r e s e n t a t i o n s i s t h e r e f o r e p o s s i b l e i f w e a r e w i l l i n g t o f o r e g o t h e

    u s e f u l n e s s o f i n d i v i d u a l o a t i n g p o i n t n a m e s l i k e x , a n d t r e a t a l l o p e r a t i o n s a s d i -

    r e c t m a n i p u l a t i o n s o n e l e m e n t s i n s o m e a r r a y o f o a t i n g - p o i n t n u m b e r s . T h a t i s ,

    i n s t e a d o f w r i t i n g L i s p ' s v e r s i o n o f t h e F o r t r a n X = Y + Z a s ( s e t f x ( + y z ) ) w e

    m u s t d o t h i s b y a r r a y r e f e r e n c e s . I n r a w L i s p t h i s w o u l d l o o k l i k e ( s e t f ( a r e f

    d i ) ( + ( a r e f d j ) ( a r e f d k ) ) ) w h e r e t h e i n d e x e s f i , j , k g d e n o t e t h e l o c a -

    t i o n s o f f x , y , z g r e s p e c t i v e l y i n t h e a r r a y d , w h i c h i s i t s e l f a k i n d o f a l i a s f o r

    \ a l l m e m o r y u s e d t o s t o r e d o u b l e - p r e c i s i o n n u m b e r " . . T h i s a r r a y r e f e r e n c e a l i a s

    b u s i n e s s s h o u l d c e r t a i n l y b e h i d d e n f r o m t h e o r d i n a r y p r o g r a m m e r , w h o s h o u l d

    b e a b l e , b y a p p r o p r i a t e m a p p i n g s e a s i l y a c c o m p l i s h e d i n L i s p , t o w r i t e ( s e t f x

    ( + y z ) ) o r e v e n X = Y + Z f o r t h a t m a t t e r . I t c o u l d b e i n c o r p o r a t e d i n t o o n e o f

    t h e o p t i m i z a t i o n s t a g e s o f f 2 c l d e s c r i b e d b e l o w , a n d c o u l d b e c a r r i e d t h r o u g h t o

    7

    o r w h a t e v e r t h e b a s i c a d d r e s s s p a c e d i c t a t e s

    8

    O n e m i g h t m o r e c o r r e c t l y v i e w t h e s i t u a t i o n a s h a v i n g t h e w h o l e a r r a y p r o t e c t e d f r o m t h e

    a t t e n t i o n s o f t h e g a r b a g e c o l l e c t o r b y b e i n g s t o r e d a l l i n o n e b o x .

  • 8/14/2019 lispfloat

    15/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 1 5

    i n c l u d e t h e t r a n s m i s s i o n o f o a t i n g p o i n t o r i n t e g e r a r g u m e n t s t o s u b r o u t i n e s , e t c .

    A s a t a r g e t f o r t h e c o m p i l e r , w e c o u l d m a p t h e u s e r ' s p r o g r a m i n t o a s e v e r e l y

    o v e r - d e c l a r e d p r o g r a m a s i l l u s t r a t e d b y t h e f r a g m e n t s

    ( d e c l a r e ( o p t i m i z e s p e e d ( s a f e t y 0 ) )

    ( t y p e ( s i m p l e - a r r a y d o u b l e - f l o a t 1 0 ) d )

    ( t y p e f i x n u m i j k ) )

    ( s e t f ( a r e f n i )

    ( t h e d o u b l e - f l o a t

    ( * ( t h e d o u b l e - f l o a t ( a r e f d j ) )

    ( t h e d o u b l e - f l o a t ( a r e f d k ) ) ) ) )

    B e c a u s e i t w o u l d s u b s t a n t i a l l y a l t e r t h e r e a d a b i l i t y o f o u r n u m e r i c a l p r o g r a m s ,

    w e h a v e n o t u s e d t h e t e c h n i q u e o u t l i n e d a b o v e i n t h e r e s t o f t h i s p a p e r . I t c o u l d ,

    h o w e v e r , b e u s e d f o r s i t u a t i o n s i n w h i c h a h u m a n n e v e r l o o k s a t t h e c o d e a g a i n .

    A m o r e s u b t l e w a y o f a c h i e v i n g s o m e o f t h e s a m e e e c t f o r i n d i v i d u a l v a r i a b l e s

    i s f o r t h e c o m p i l e r a n d r u n - t i m e s y s t e m t o a l l o w f o r s o m e s t o r a g e f o r u n b o x e d l o c a l

    v a r i a b l e s i n a s e c t i o n o f t h e s t a c k - f r a m e f o r a f u n c t i o n . T h a t i s , t h e s t a c k l o c a l

    v a r i a b l e s a r e a i s d i v i d e d , f o r p u r p o s e o f t h e g a r b a g e c o l l e c t o r , i n t o t w o s e c t i o n s :

    o n e w h i c h t h e g c l o o k s a t , a n d o n e w h i c h i t d o e s n ' t . U n b o x e d o a t s a r e p l a c e d i n t o

    t h e l a t t e r . S o m e c o m p i l e r s i m p l e m e n t t h i s r i g h t n o w . S e e a l s o t h e d i s c u s s i o n i n

    s e c t i o n 4 . 3 b e l o w a b o u t f u n c t i o n c a l l s .

    4 . 2 L o o p s

    O n e c o m p i l e r f o r o u r S p a r c m a c h i n e t y p i c a l l y u s e s 2 i n s t r u c t i o n s t o g e t ( a r e f d j )

    i n a o a t i n g - p o i n t r e g i s t e r ; t h e w h o l e o p e r a t i o n a l p a r t o f t h e e x p r e s s i o n a b o v e i s 2 o f

    t h e s e s e q u e n c e s , a o a t i n g - p o i n t m u l t i p l i c a t i o n , a n d a n o t h e r 2 i n s t r u c t i o n s t o s t o r e

    i n t h e r i g h t p l a c e . A l o o p t o c o m p u t e a v e c t o r c r o s s - p r o d u c t a d d s 3 i n s t r u c t i o n s :

    a t e s t , a n i n c r e m e n t , a l o o p b a c k . A t o t a l o f 1 0 i n s t r u c t i o n s . ( B y a m i n o r h a c k i n

    i n d e x c a l c u l a t i o n s , i t a p p e a r s t o b e 9 . )

    T h i s i s n e i t h e r t h e s h o r t e s t n o r t h e f a s t e s t s e q u e n c e { t h e r e a r e s u b s t a n t i a l s u b -

    t l e t i e s i n o r d e r i n g o f o p e r a t i o n c o d e s t o a l l o w f o r m a x i m u m o v e r l a p , b e s t u s e o f

    c a c h e s , e t c . T h e p a r t i c u l a r i m p l e m e n t a t i o n o f t h e S P A R C a r c h i t e c t u r e i s a l s o r e l -

    e v a n t ! H o w e v e r , t h e c o d e p r o d u c e d b y t h e L i s p c o m p i l e r i s n o t o u t r i g h t s t u p i d {

    i t i s s h o r t e r a n d p r o b a b l y f a s t e r t h a n t h e 1 5 o p e r a t i o n s , ( i n c l u d i n g o n e n o p i n t h e

    m a i n l o o p ) p r o d u c e d b y t h e s t a n d a r d F o r t r a n c o m p i l e r f 7 7 f r o m t h i s c o d e :

    D I M E N S I O N U ( 1 0 ) , V ( 1 0 ) , W ( 1 0 )

    D O 1 0 I = 1 , 1 0

    1 0 U ( I ) = V ( I ) + W ( I )

    E N D

    B u t t h e L i s p c o d e ( a t l e a s t f r o m A l l e g r o C L 4 . 1 ) i s s l i g h t l y l o n g e r t h a n t h e 7

    o p e r a t i o n s o b t a i n e d f r o m t h e o p t i m i z e d f 7 7 - f a s t o p t i o n .

    B y h a n d c o d i n g w e c a n r e m o v e o n e m o r e i n s t r u c t i o n ; w h e t h e r t h i s r u n s f a s t e r o r

    n o t , a n d w h e t h e r i t s h o u l d b e u n r o l l e d 2 ] f o r s p e e d , d e p e n d s o n t h e h a r d w a r e i n

    w a y s w e a r e n o t p r e p a r e d t o e x p l a i n h e r e .

  • 8/14/2019 lispfloat

    16/35

    1 6 R . J . F a t e m a n e t a l .

    T h e L i s p c o m p i l e r g e n e r a t i n g t h e c o d e d o e s n o t u s e s o p h i s t i c a t e d t e c h n i q u e s f o r

    o a t i n g - p o i n t , a n d i n f a c t d o e s n o c o m m o n s u b e x p r e s s i o n s e l i m i n a t i o n . B u t i t i s n o t

    a b a d b a s e t o b u i l d u p o n , a n d i t i s p l a u s i b l e t h a t w e c a n , b y a g r e e m e n t o n p a r t i c u l a r

    r e s t r i c t e d t y p e s o f s o u r c e - c o d e i d i o m s , g e t t h e c o m p i l e r w r i t e r s t o p r o d u c e e x c e l l e n t

    c o d e f o r t h o s e s e q u e n c e s .

    B e c a u s e l o o p s , i n c l u d i n g o u r e x a m p l e a b o v e , g e n e r a l l y i n v o l v e a r r a y a c c e s s i n g

    w h e r e t h e i n d e x d e p e n d s o n t h e l o o p v a r i a b l e , t h i s d i s c u s s i o n c o n t i n u e s i n s e c t i o n

    4 . 7 o n a r r a y s i n d e x i n g .

    4 . 3 F u n c t i o n C a l l s

    W h e n o n e L i s p f u n c t i o n c a l l s a n o t h e r , t h e y c a n a g r e e , i n p r i n c i p l e , o n t h e t y p e o f

    t h e a r g u m e n t s a n d t h e r e t u r n v a l u e . T h e y c a n t h e n a g r e e t o l e a v e t h e m u n b o x e d .

    B y p a s s i n g a r r a y s o f k n o w n t y p e i n t o r e c e i v e r e s u l t s , w e a r e i m p l e m e n t i n g t h i s i n a

    m a n n e r t h a t r e q u i r e s l e s s e l a b o r a t i o n o n t h e p a r t o f t h e c o m p i l e r w r i t e r . A n d i t i s

    a g e n e r a l l y s t i c k y p o i n t t o c o m p i l e a p p r o p r i a t e i n t e r f a c e s t o f u n c t i o n s i n L i s p : L i s p

    i s t o o e x i b l e . G i v e n f u n c t i o n s f o o a n d b a r , w h e r e f o o c a l l s b a r , t h e u s e r i s f r e e t o

    r e d e n e e i t h e r f o o o r b a r o n t h e y . T h u s i t i s h a r d t o f o r c e t h e c o n s i s t e n c y b e t w e e n

    f o r m a l a n d a c t u a l a r g u m e n t s o r r e t u r n v a l u e s v i a c o m p i l e r c h e c k s ; i t i s i m p o s s i b l e

    f o r t h e c o m p i l e r t o k n o w w i t h o u t s o m e e x p l i c i t d e c l a r a t i o n h o w t o c o m p i l e t h e

    a r g u m e n t s . F o r e x a m p l e , i f o n e d e n e s b a r t o a c c e p t t w o a r g u m e n t s , a n i n t e g e r

    a n d a d o u b l e - o a t , t h e c o m p i l e r d o e s n ' t n e c e s s a r i l y k n o w w h e t h e r t o r e c e i v e t h e

    o a t a r g u m e n t a s u n b o x e d o r n o t . I n p a r t i c u l a r , f o o m a y n o t y e t h a v e b e e n s e e n

    b y t h e c o m p i l e r , o r f o r t h a t m a t t e r , f o o m a y n o t y e t h a v e b e e n w r i t t e n !

    S u c h c l o s e l y l i n k e d c a l l s c a n b e h a n d l e d ; i n d e e d , t h e A l l e g r o 4 . 2 c o m p i l e r a l -

    l o w s ( t h r o u g h s u i t a b l e p r i o r d e c l a r a t i o n ) p a s s i n g u n b o x e d v a l u e s d i r e c t l y t o f o r e i g n

    f u n c t i o n s

    9

    . T h e C M U - C L c o m p i l e r a l l o w s b l o c k c o m p i l a t i o n , a n d s p e c i a l f a s t c a l l s

    t o \ i n t e r n a l " p r o g r a m s d e n e d i n a l a b e l s l i s t . T h e d i c u l t y i s c u l t u r a l : i t i s a n

    u n u s u a l b u r d e n t o p l a c e o n L i s p p r o g r a m m e r s t h a t t h e y m u s t d e c l a r e t h e e x t e r n a l

    i n t e r f a c e t o a p r o g r a m p r i o r t o t h e c o m p i l a t i o n o f a n y p r o g r a m t h a t u s e s i t . O f

    c o u r s e m a n y o t h e r p r o g r a m m i n g l a n g u a g e s ( i n c l u d i n g P a s c a l , M o d u l a , a n d A d a )

    r e q u i r e t h i s .

    4 . 4 A s i m p l e m o d e l f o r a r i t h m e t i c c o m p u t a t i o n

    W h a t , t h e n , s h o u l d o u r i d i o m a t i c L i s p a r i t h m e t i c s o u r c e c o d e l o o k l i k e ? I d e a l l y i t

    w o u l d p r o v i d e a n i n t e r m e d i a t e f o r m s u i t a b l e f o r e x p r e s s i n g a l l t h e m a t h e m a t i c a l

    c o m p u t a t i o n , b u t m i g h t a l s o i n c l u d e s o m e l e v e l o f h i n t s ( a s a c o n c e s s i o n t o t h e

    L i s p c o m p i l e r w r i t e r w h o m i g h t n o t w i s h t o s p e n d t i m e a n a l y z i n g o a t i n g - p o i n t

    c o d e ) . S u c h h i n t s h a v e a m i x e d h i s t o r y { e a r l y C i m p l e m e n t a t i o n s u s e d r e g i s t e r

    d e c l a r a t i o n s ; m o d e r n i m p l e m e n t a t i o n s t e n d t o i g n o r e t h e m o n t h e g r o u n d s t h a t t h e

    c o m p i l e r s c a n g e n e r a l l y m a k e b e t t e r c h o i c e s t h a n t h e p r o g r a m m e r i n s u c h m a t t e r s .

    I d e a l l y w e c o u l d d e s i g n s u c h a s o u r c e c o d e l e v e l t h a t i s i n d e p e n d e n t o f t h e t a r g e t

    a r c h i t e c t u r e , a n d c a n r u n i n a n u m b e r o f L i s p c o m p i l e r s . W e m u s t t h e n m a k e

    p r o v i s i o n f o r t h e m a p p i n g f r o m t h e u s e r s ' l i s p - f o r t r a n i s h i n t o t h e p r i m i t i v e f o r m s .

    I n L i s p t h i s w o u l d o r d i n a r i l y b e d o n e b y m a c r o - e x p a n s i o n , o p t i o n a l l y f o l l o w e d b y

    c o m p i l a t i o n .

    F o r e x p o s i t i o n p u r p o s e s , w e w i l l m a k e s o m e s i m p l i f y i n g a s s u m p t i o n s w h i c h c a n ,

    9

    v a : c a l l - d i r e c t

  • 8/14/2019 lispfloat

    17/35

    F a s t F l o a t i n g - P o i n t P r o c e s s i n g i n C o m m o n L i s p 1 7

    h o w e v e r b e r e m o v e d w i t h o u t c o n c e p t u a l d i c u l t y . W e a s s u m e o n l y o n e o a t i n g -

    p o i n t n u m e r i c f o r m a t , ( 3 o r m o r e a r e p o s s i b l e i n C L ) . W e w i l l a s s u m e r e a l ( a s

    o p p o s e d t o c o m p l e x ) a r i t h m e t i c i s o f p r i m a r y i n t e r e s t . W e w i l l a s s u m e t h a t e x -

    a c t a r b i t r a r y - p r e c i s i o n i n t e g e r a r i t h m e t i c a n d r a t i o s ( e x a c t f r a c t i o n s ) n e e d n o t b e

    h a n d l e d e s p e c i a l l y r a p i d l y . W e w i l l a s s u m e t h a t s u b s c r i p t c a l c u l a t i o n s , l o o p i n d i c e s

    a n d d e c i s i o n - m a k i n g c a n b e d o n e w i t h t h e f i x n u m t y p e .

    T w o m o d e l s e m e r g e f r o m m a c h i n e a r c h i t e c t u r e c o n s i d e r a t i o n s . M a c h i n e s w i t h

    o a t i n g - p o i n t s t a c k m o d e l s l i k e t h e I n t e l 8 0 8 7 a n d i t s s u c c e s s o r s p r o v i d e o n e m o d e l .

    M a c h i n e s w i t h a r e g i s t e r o r i e n t a t i o n ( l i k e t h e S P A R C ) h a v e a n o t h e r . T h e s e m o d e l s

    a r e c o m p u t a t i o n a l l y e q u i v a l e n t , b u t a t t h e l e v e l o f e c i e n t m a c h i n e i n s t r u c t i o n

    i s s u e , i t m i g h t p a y t o a d d r e s s e a c h s e p a r a t e l y .

    A n y m o d e l s h o u l d u l t i m a t e l y p r o d u c e o p t i m a l c o d e o n a f e w o a t i n g - p o i n t c o n -

    s t r u c t i o n s s u c h a s a s i m p l e a s s i g n m e n t :

    ( s e t f y ( + 3 ( * 2 x ) ) )

    a v e c t o r c r o s s - p r o d u c t :

    ( d o t i m e s ( i k ) ( s e t f ( a r e f u i ) ( * ( a r e f v i ) ( a r e f w i ) ) ) )

    a n d a p o l y n o m i a l e v a l u a t i o n .

    4 . 5 R P N a r i t h m e t i c a n d a o a t i n g p o i n t s t a c k

    G e n e r a t i n g R e v e r s e P o l i s h N o t a t i o n ( R P N ) f o r c o m p u t a t i o n w i t h a s t a c k i s w e l l

    k n o w n , a n d m a y b e m o s t a p p r o p r i a t e i f w e c o n s i d e r t h a t t h e r e i s a c o - p r o c e s s o r

    w h i c h i m p l e m e n t s t h e f o l l o w i n g o p e r a t i o n s ( l o o k a t t h e I n t e l 8 0 8 7 c o - p r o c e s s o r

    a r c h i t e c t u r e , f o r e x a m p l e ) :

    ( 1 ) p u s h n ( p u s h a r r a y n ] o n s t a c k )

    ( 2 ) p o p n ( p o p a n d s t o r e t o p i n a r r a y n ] )

    ( 3 ) j u m p - f g t , g e , l t , l e , e q , n e , n o t - c o m p a r a b l e g

    ( 4 ) s w a p ( s w a p t o p t w o i t e m s o n s t a c k )

    ( 5 ) p l u s , c h a n g e s i g n , s u b t r a c t , r e v e r s e - s u b t r a c t , t i m e s , i n v e r t , d i v i d e ,

    r e v e r s e - d i v i d e , s q u a r e , s q u a r e - r o o t , s i n , c o s , e x p , l o g

    I n t h e a b s e n c e o f a n y o t h e r e o r t s t o w a r d o a t i n g - p o i n t e c i e n c y , e a c h o f t h e s e

    c o u l d b e i m p l e m e n t e d a s a c o m p i l e r - m a c r o i n t h e L I S P c o m p i l e r i n s u c h a f o r m a s

    t o e m i t n o m o r e c o d e t h a n n e c e s s a r y .

    A f u n c t i o n w h i c h c o m p u t e s y = 2 * x + 3 f o r o a t i n g p o i n t x c o u l d b e w r i t t e n i n C L ,

    ( w h e r e n 1 , n 2 , a n d n 3 w e r e a p p r o p r i a t e i n d e x e s ) , a s ( p u s h n 1 ) ( p u s h n 2 ) ( p u s h

    n 3 ) ( t i m e s ) ( p l u s ) . R e p r e s e n t a t i o n s f o r x a n d f o r t h e l o c a t i o n o f t h e r e s u l t ( o n

    t h e t o p o f t h e o a t i n g - p o i n t s t a c k ) m u s t b e t a k e n i n t o a c c o u n t a t t h e t r a n s i t i o n

    p o i n t s b e t w e e n \ n o r m a l " L i s p a n d n u m e r i c a l l y - o r i e n t e d L i s p . M o r e s o p h i s t i c a t e d

    t r a n s l a t i o n c a n e a s i l y b e c o n s t r u c t e d u s i n g t e c h n i q u e s i n m a n y t e x t s ( e . g . 2 ] ) o n

    p r o g r a m m i n g l a n g u a g e c o m p i l a t i o n .

    4 . 6 R e g i s t e r o r o t h e r m o d e l s

    I n f a c t , o n e c o u l d a r g u e t h a t t h e L i s p c o m p i l e r w r i t e r s c o u l d v e r y w e l l d i r e c t l y

    c o m p u t e a t r a n s l a t i o n f r o m d e l i m i t e d p r e x a r i t h m e t i c n o t a t i o n ( t h a t i s , n o r m a l

    L i s p ) t o a c o n v e n t i o n a l n - r e g i s t e r m o d e l , a n d t h u s t h e i n t e r m e d i a t e d e s c r i p t i o n i n

    t h e p r e v i o u s s e c t i o n i s n o t n e c e s s a r y o r e v e n d e s i r a b l e .

  • 8/14/2019 lispfloat

    18/35

    1 8 R . J . F a t e m a n e t a l .

    S o m e c o m p i l e r s e m i t C - l a n g u a g e c o d e o r s o m e k i n d o f b y t