1 /* ******************************************************
 2    *                                                    *
 3    *                                                    *
 4    * Copyright (c) 1972 by Massachusetts Institute of   *
 5    * Technology and Honeywell Information Systems, Inc. *
 6    *                                                    *
 7    *                                                    *
 8    ****************************************************** */
 9 
10 cexp_: proc (number) returns (complex float bin (27));
11 
12 dcl (number, a, r) complex float bin (27);
13 dcl       (abs, cos, exp, imag, real, sin) builtin;
14 dcl  code_ ext entry (fixed bin (17));
15 
16           a = number + 0.0e0;
17 
18           if real (a)>88.028e0
19                then do;
20                call code_ (26);
21 
22                real (a) = 170141182.0e30;
23           end;
24           else real (a) = exp (real (a));
25 
26           if abs (imag (a)) >= 134217728.0e0
27                then do;
28                call code_ (27);
29 
30                return (0.0e0);
31           end;
32 
33           imag (r) = sin (imag (a))*real (a);
34           real (r) = cos (imag (a))*real (a);
35 
36           return (r);
37 
38      end cexp_;