(FILECREATED " 5-JAN-83 20:48:00" <BLISP>AARITH.;3   18482

      changes to:  (FNS ARCCOS)
		   (VARS AARITHCOMS)

      previous date: " 1-DEC-81 17:10:06" <BLISP>AARITH.;1)


(* Copyright (c) 1981, 1983 by Xerox Corporation)

(PRETTYCOMPRINT AARITHCOMS)

(RPAQQ AARITHCOMS [(FNS SIN TAN ARCSIN ARCCOS ARCCOS1 COS LOG ANTILOG FEXPT LINEAR/INTERPOLATE ARCTAN 
			ARCTAN2 ATAN)
		   (ARRAY SINE.VALUE.ARRAY ARCSINE.VALUE.ARRAY LOG.VALUE.ARRAY ANTILOG.VALUE.ARRAY)
		   (VARS DEGREESPERRADIAN)
		   (FNS CREATEFUNCTIONVALUEARRAY)
		   (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS FunctionValueTable)
			     (ADDVARS (DONTCOMPILEFNS CREATEFUNCTIONVALUEARRAY))
			     (PROP MACRO ArgumentIndex ValueIndex)
			     (GLOBALVARS SINE.VALUE.ARRAY ARCSINE.VALUE.ARRAY DEGREESPERRADIAN 
					 LOG.VALUE.ARRAY ANTILOG.VALUE.ARRAY)
			     (LOCALVARS . T)
			     (CONSTANTS (PI 3.141593])
(DEFINEQ

(SIN
  [LAMBDA (X RADIANFLG)            (* lmm "23-JUN-80 21:46")
    (LINEAR/INTERPOLATE (COND
			  ((MINUSP X)
                                   (* iremainder works differently for negative numbers.)
			    (FPLUS 360.0 (FREMAINDER (COND
						       (RADIANFLG (FTIMES X DEGREESPERRADIAN))
						       (T X))
						     360.0)))
			  (T (FREMAINDER (COND
					   (RADIANFLG (FTIMES X DEGREESPERRADIAN))
					   (T X))
					 360.0)))
			SINE.VALUE.ARRAY])

(TAN
  [LAMBDA (X RADIANSFLG)           (* lmm "23-JUN-80 21:46")
    (FQUOTIENT (SIN X RADIANSFLG)
	       (COS X RADIANSFLG])

(ARCSIN
  [LAMBDA (X RADIANSFLG)           (* rrb " 1-DEC-81 17:09")
    (COND
      ((OR (FLESSP X -1.0)
	   (FGREATERP X 1.0))
	(ERROR "ARCSIN: arg not in range" X))
      (RADIANSFLG (FQUOTIENT (LINEAR/INTERPOLATE X ARCSINE.VALUE.ARRAY)
			     DEGREESPERRADIAN))
      (T (LINEAR/INTERPOLATE X ARCSINE.VALUE.ARRAY])

(ARCCOS
  [LAMBDA (X RADIANSFLG)           (* ejs: " 5-OCT-82 19:34")
    (COND
      ((OR (FLESSP X -1.0)
	   (FGREATERP X 1.0))
	(ERROR "ARCCOS: arg not in range" X))
      (T (COND
	   ((FGREATERP (ABS X)
		       .98)        (* For X .gt. .98, the routine below is terribly inaccurate.
				   ARCCOS1 is 7 times slower (currently), but produces the correct result)
	     (ARCCOS1 X RADIANSFLG))
	   (T (FPLUS (COND
		       (RADIANSFLG (CONSTANT (FQUOTIENT PI 2.0)))
		       (T 90.0))
		     (ARCSIN (FMINUS X)
			     RADIANSFLG])

(ARCCOS1
  [LAMBDA (X RADIANSFLG)           (* ejs: " 5-OCT-82 19:34")
                                   (* Generate ARCCOS the hard way. Have to do this for X .ge.
				   .98, else we get bad results from (90-arcsin 
				   (x)))
    (FDIFFERENCE (COND
		   (RADIANSFLG (CONSTANT (FQUOTIENT PI 2.0)))
		   (T 90.0))
		 (ARCTAN [FQUOTIENT X (SQRT (FDIFFERENCE 1.0 (FTIMES X X]
			 RADIANSFLG])

(COS
  [LAMBDA (X RADIANFLG)            (* lmm "23-JUN-80 21:47")
    (SIN (FDIFFERENCE 90.0 (COND
			(RADIANFLG (FTIMES X DEGREESPERRADIAN))
			(T X])

(LOG
  [LAMBDA (X)                      (* lmm "18-AUG-80 14:29")
    (PROG ((FACTOR 0)
	   (E 2.718282)
	   (1OVERE .3678794))
          (COND
	    ((NOT (FGREATERP X 0.0))
	      (ERROR "LOG OF NON-POSITIVE NUMBER:" X)))
          (while (FGREATERP X E)
	     do (add FACTOR 1)
		(SETQ X (FTIMES X 1OVERE)))
          (while (FGREATERP 1.0 X)
	     do (add FACTOR -1)
		(SETQ X (FTIMES X E)))
          (RETURN (FPLUS FACTOR (LINEAR/INTERPOLATE X LOG.VALUE.ARRAY])

(ANTILOG
  [LAMBDA (X)                      (* lmm "18-AUG-80 14:29")
    (PROG ((FACTOR 1.0)
	   (E 2.718282)
	   (1OVERE .3678794))
          (while (FGREATERP X 1.0)
	     do (SETQ FACTOR (FTIMES FACTOR E))
		(SETQ X (FDIFFERENCE X 1.0)))
          (while (FGREATERP 0.0 X)
	     do (SETQ FACTOR (FTIMES FACTOR 1OVERE))
		(SETQ X (FPLUS X 1.0)))
          (RETURN (FTIMES FACTOR (LINEAR/INTERPOLATE X ANTILOG.VALUE.ARRAY])

(FEXPT
  [LAMBDA (X Y)                    (* lmm "18-AUG-80 14:06")
    (ANTILOG (FTIMES Y (LOG X])

(LINEAR/INTERPOLATE
  [LAMBDA (X VALUEARRAY)           (* rrb " 2-MAY-80 17:19")

          (* find the value of a function by linear interpolation on the set of value in VALUEARRAY. Entries in value array 
	  are pairs of the argument in X cell and fn{x} in N+1.)


    (COND
      ((FLESSP X (fetch FirstArgument of VALUEARRAY))
	(HELP "function argument is less than interpolation range." X)))
    (PROG ((NENTRIES (fetch NumberOfEntries of VALUEARRAY))
	   SMALLER)                (* calculate the table index of the table entry just less than the input value)
          [COND
	    ((IGREATERP [SETQ SMALLER (ADD1 (FIX (FTIMES (fetch NumberOfEntries of VALUEARRAY)
							 (FQUOTIENT (FDIFFERENCE X
										 (fetch FirstArgument
										    of VALUEARRAY))
								    (fetch ArgumentRange
								       of VALUEARRAY]
			(fetch NumberOfEntries of VALUEARRAY))
                                   (* should only happen when number passed in is the last value in table.)
	      (RETURN (ELT VALUEARRAY (ValueIndex (ADD1 (fetch NumberOfEntries of VALUEARRAY]
          (RETURN (COND
		    ((IGEQ SMALLER (fetch LastArgumentIndex of VALUEARRAY))
		      (HELP "X is greaterp than range of interpolation." X))
		    (T (FPLUS (ELT VALUEARRAY (ValueIndex SMALLER))
			      (FTIMES (FDIFFERENCE (ELT VALUEARRAY (ValueIndex (ADD1 SMALLER)))
						   (ELT VALUEARRAY (ValueIndex SMALLER)))
				      (FQUOTIENT (FDIFFERENCE X (ELT VALUEARRAY (ArgumentIndex 
											  SMALLER)))
						 (FDIFFERENCE (ELT VALUEARRAY (ArgumentIndex
								     (ADD1 SMALLER)))
							      (ELT VALUEARRAY (ArgumentIndex SMALLER])

(ARCTAN
  [LAMBDA (X RADIANSFLG)           (* rrb "14-SEP-81 17:12")
    (COND
      [(FGREATERP 0.0 X)
	(FDIFFERENCE (ATAN 1.0 X RADIANSFLG)
		     (COND
		       (RADIANSFLG PI)
		       (T 180.0]
      (T (ATAN 1.0 X RADIANSFLG])

(ARCTAN2
  [LAMBDA (X Y RADIANSFLG)         (* rrb "14-SEP-81 17:56")
                                   (* don't understand it but it agrees to several decimal places with interlisp-10 
				   -
				   rrb)
    (PROG ((MAG (ARCTAN (FQUOTIENT X Y)
			RADIANSFLG)))
          (RETURN (COND
		    [(FGREATERP 0.0 X)
		      (FDIFFERENCE MAG (COND
				     (RADIANSFLG PI)
				     (T 180.0]
		    ((EQUAL X 0.0)
                                   (* Agree with interlisp-10)
		      (COND
			((FGREATERP 0.0 Y)
			  (COND
			    (RADIANSFLG (CONSTANT (FDIFFERENCE 0.0 PI)))
			    (T -180.0)))
			(T MAG)))
		    (T MAG])

(ATAN
  [LAMBDA (X Y RADIANSFLG)         (* rrb "14-SEP-81 18:09")
                                   (* version of arctan which returns value in radians between 0 and 2 PI.)
    (PROG ((Y (FLOAT Y))
	   (X (FLOAT X))
	   ABSX ABSY TEMP TEMP2 (ANS -.004054058))
          (SETQ ABSY (ABS Y))
          (SETQ ABSX (ABS X))
          (SETQ TEMP (FQUOTIENT (FDIFFERENCE ABSY ABSX)
				(FPLUS ABSY ABSX)))
          (SETQ TEMP2 (FTIMES TEMP TEMP))
          (for MAGICVALUE in (QUOTE (.02186123 -.05590989 .09642004 -.1390853 .1994654 -.3332986 
					       .9999994))
	     do (SETQ ANS (FPLUS (FTIMES ANS TEMP2)
				 MAGICVALUE)))
          (SETQ ANS (FTIMES ANS TEMP))
          (SETQ TEMP (ABS ANS))
          [COND
	    ((OR (FLESSP .7855 TEMP)
		 (FLESSP TEMP .7853))
	      (SETQ ANS (FPLUS ANS .7853982)))
	    ((FLESSP ANS 0.0)
	      (SETQ ANS (FQUOTIENT ABSY ABSX)))
	    (T (SETQ ANS (FPLUS (FQUOTIENT ABSX ABSY)
				1.570796]
          (SETQ TEMP ANS)
          (SETQ ANS (FDIFFERENCE 3.141593 ANS))
          [COND
	    ((FLESSP 0.0 X)
	      (SETQ TEMP (PROG1 ANS (SETQ ANS TEMP]
          (SETQ TEMP (FTIMES TEMP 2))
          [COND
	    ((FLESSP Y 0.0)
	      (SETQ ANS (FPLUS ANS TEMP]
          (RETURN (COND
		    (RADIANSFLG ANS)
		    (T (FTIMES ANS (CONSTANT (FQUOTIENT 180 PI])
)
(SETQ SINE.VALUE.ARRAY (READARRAY 204 0))
(100
360.0
0.0
0.0
3.6
.06279052
7.2
.1253332
10.8
.1873813
14.4
.2486899
18.0
.309017
21.6
.3681246
25.2
.4257793
28.8
.4817537
32.4
.5358268
36.0
.5877853
39.6
.637424
43.2
.6845471
46.8
.7289686
50.4
.7705132
54.0
.809017
57.6
.8443279
61.2
.8763067
64.8
.9048271
68.4
.9297765
72.0
.9510565
75.6
.9685832
79.2
.9822872
82.8
.9921147
86.4
.9980267
90.0
1.0
93.6
.9980267
97.2
.9921147
100.8
.9822872
104.4
.9685832
108.0
.9510565
111.6
.9297765
115.2
.904827
118.8
.8763066
122.4
.8443279
126.0
.8090169
129.6
.7705132
133.2
.7289686
136.8
.684547
140.4
.6374239
144.0
.5877851
147.6
.5358267
151.2
.4817535
154.8
.4257791
158.4
.3681244
162.0
.3090168
165.6
.2486897
169.2
.1873811
172.8
.125333
176.4
.06279032
180.0
-1.872535E-7
183.6
-.06279074
187.2
-.1253334
190.8
-.1873815
194.4
-.2486901
198.0
-.3090172
201.6
-.3681248
205.2
-.4257795
208.8
-.4817539
212.4
-.535827
216.0
-.5877855
219.6
-.6374242
223.2
-.6845473
226.8
-.7289688
230.4
-.7705134
234.0
-.8090171
237.6
-.8443281
241.2
-.8763068
244.8
-.9048272
248.4
-.9297766
252.0
-.9510566
255.6
-.9685833
259.2
-.9822873
262.8
-.9921147
266.4
-.9980267
270.0
-1.0
273.6
-.9980267
277.2
-.9921147
280.8
-.9822872
284.4
-.9685831
288.0
-.9510565
291.6
-.9297764
295.2
-.904827
298.8
-.8763066
302.4
-.8443279
306.0
-.809017
309.6
-.7705132
313.2
-.7289687
316.8
-.6845472
320.4
-.6374241
324.0
-.5877853
327.6
-.5358269
331.2
-.4817538
334.8
-.4257795
338.4
-.3681248
342.0
-.3090172
345.6
-.2486902
349.2
-.1873816
352.8
-.1253335
356.4
-.06279088
360.0
0.0
NIL
)(SETQ ARCSINE.VALUE.ARRAY (READARRAY 204 0))
(100
2.0
-1.0
-90.0
-.98
-78.52166
-.96
-73.73979
-.94
-70.05156
-.92
-66.92608
-.9
-64.15807
-.88
-61.64236
-.86
-59.31658
-.84
-57.14012
-.82
-55.08479
-.8
-53.1301
-.78
-51.26057
-.76
-49.4642
-.74
-47.73141
-.72
-46.05448
-.7
-44.427
-.6799999
-42.84364
-.6599999
-41.29987
-.6399999
-39.79181
-.6199999
-38.31613
-.5999999
-36.86989
-.5799999
-35.45054
-.5599999
-34.05579
-.5399999
-32.68363
-.5199999
-31.33225
-.4999999
-29.99999
-.4799999
-28.6854
-.4599999
-27.3871
-.4399999
-26.10388
-.4199999
-24.83458
-.3999999
-23.57817
-.3799999
-22.33368
-.3599999
-21.10019
-.3399999
-19.87687
-.3199999
-18.66292
-.2999999
-17.4576
-.2799999
-16.2602
-.2599999
-15.07006
-.2399999
-13.88654
-.2199999
-12.70903
-.1999999
-11.53695
-.1799999
-10.36976
-.1599999
-9.206892
-.1399999
-8.047842
-.1199999
-6.892099
-.09999993
-5.739166
-.07999993
-4.588562
-.05999993
-3.439809
-.03999993
-2.292439
-.01999993
-1.145988
6.891787E-8
3.948703E-6
.02000007
1.145996
.04000007
2.292447
.06000007
3.439817
.08000007
4.58857
.1000001
5.739174
.1200001
6.892107
.1400001
8.04785
.1600001
9.2069
.1800001
10.36976
.2000001
11.53696
.2200001
12.70904
.2400001
13.88654
.2600001
15.07007
.2800001
16.26021
.3000001
17.45761
.3200001
18.66293
.3400001
19.87688
.3600001
21.1002
.3800001
22.33369
.4000001
23.57818
.4200001
24.83459
.4400001
26.10388
.4600001
27.38711
.4800001
28.68541
.5000001
30.0
.5200001
31.33226
.5400001
32.68364
.5600001
34.0558
.5800001
35.45055
.6000001
36.8699
.6200001
38.31614
.6400001
39.79183
.6600001
41.29988
.6800001
42.84365
.7000001
44.42701
.7200001
46.05449
.7400001
47.73143
.7600001
49.46421
.7800001
51.26059
.8000001
53.13011
.8200001
55.08481
.8400001
57.14013
.8600001
59.3166
.8800001
61.64238
.9000001
64.15808
.9200001
66.9261
.9400001
70.05158
.9600001
73.73983
.9800001
78.5217
1.0
90.0
NIL
)(SETQ LOG.VALUE.ARRAY (READARRAY 404 0))
(200
1.718282
1.0
0.0
1.008591
.008554718
1.017183
.01703686
1.025774
.02544766
1.034366
.03378832
1.042957
.04205999
1.051548
.0502638
1.06014
.05840086
1.068731
.06647224
1.077323
.074479
1.085914
.08242215
1.094506
.09030271
1.103097
.09812165
1.111688
.1058799
1.12028
.1135785
1.128871
.1212182
1.137463
.1288
1.146054
.1363248
1.154645
.1437933
1.163237
.1512065
1.171828
.1585652
1.18042
.1658701
1.189011
.173122
1.197603
.1803217
1.206194
.1874699
1.214785
.1945674
1.223377
.2016149
1.231968
.208613
1.24056
.2155625
1.249151
.2224641
1.257742
.2293184
1.266334
.2361259
1.274925
.2428875
1.283517
.2496037
1.292108
.256275
1.300699
.2629022
1.309291
.2694857
1.317882
.2760261
1.326474
.2825241
1.335065
.28898
1.343657
.2953946
1.352248
.3017683
1.360839
.3081017
1.369431
.3143951
1.378022
.3206493
1.386614
.3268645
1.395205
.3330414
1.403796
.3391803
1.412388
.3452818
1.420979
.3513462
1.429571
.3573742
1.438162
.363366
1.446754
.3693221
1.455345
.3752429
1.463936
.3811289
1.472528
.3869805
1.481119
.392798
1.489711
.3985819
1.498302
.4043325
1.506893
.4100502
1.515485
.4157354
1.524076
.4213885
1.532668
.4270098
1.541259
.4325997
1.54985
.4381585
1.558442
.4436865
1.567033
.4491842
1.575625
.4546518
1.584216
.4600897
1.592808
.4654982
1.601399
.4708776
1.60999
.4762282
1.618582
.4815503
1.627173
.4868443
1.635765
.4921103
1.644356
.4973488
1.652947
.50256
1.661539
.5077442
1.67013
.5129016
1.678722
.5180326
1.687313
.5231373
1.695904
.5282162
1.704496
.5332694
1.713087
.5382972
1.721679
.5432998
1.73027
.5482775
1.738862
.5532306
1.747453
.5581593
1.756044
.5630637
1.764636
.5679443
1.773227
.5728011
1.781819
.5776345
1.79041
.5824446
1.799001
.5872317
1.807593
.591996
1.816184
.5967377
1.824776
.6014571
1.833367
.6061542
1.841959
.6108294
1.85055
.6154828
1.859141
.6201147
1.867733
.6247253
1.876324
.6293146
1.884916
.633883
1.893507
.6384307
1.902098
.6429577
1.91069
.6474644
1.919281
.6519508
1.927873
.6564172
1.936464
.6608637
1.945055
.6652905
1.953647
.6696978
1.962238
.6740858
1.97083
.6784546
1.979421
.6828044
1.988013
.6871354
1.996604
.6914477
2.005195
.6957415
2.013787
.7000169
2.022378
.7042741
2.03097
.7085133
2.039561
.7127346
2.048152
.7169381
2.056744
.721124
2.065335
.7252925
2.073927
.7294437
2.082518
.7335778
2.09111
.7376948
2.099701
.7417949
2.108292
.7458783
2.116884
.7499451
2.125475
.7539954
2.134067
.7580293
2.142658
.7620471
2.151249
.7660488
2.159841
.7700345
2.168432
.7740044
2.177024
.7779586
2.185615
.7818973
2.194206
.7858205
2.202798
.7897283
2.211389
.793621
2.219981
.7974985
2.228572
.8013611
2.237164
.8052088
2.245755
.8090418
2.254346
.8128601
2.262938
.8166639
2.271529
.8204533
2.280121
.8242284
2.288712
.8279892
2.297303
.831736
2.305895
.8354688
2.314486
.8391878
2.323078
.8428929
2.331669
.8465844
2.340261
.8502623
2.348852
.8539267
2.357443
.8575777
2.366035
.8612154
2.374626
.86484
2.383218
.8684515
2.391809
.87205
2.4004
.8756355
2.408992
.8792083
2.417583
.8827684
2.426175
.8863158
2.434766
.8898507
2.443357
.8933731
2.451949
.8968832
2.46054
.9003809
2.469132
.9038665
2.477723
.90734
2.486315
.9108015
2.494906
.914251
2.503497
.9176887
2.512089
.9211146
2.52068
.9245288
2.529272
.9279313
2.537863
.9313224
2.546454
.9347019
2.555046
.9380701
2.563637
.941427
2.572229
.9447727
2.58082
.9481072
2.589411
.9514306
2.598003
.954743
2.606594
.9580445
2.615186
.9613351
2.623777
.9646149
2.632369
.967884
2.64096
.9711424
2.649551
.9743903
2.658143
.9776277
2.666734
.9808546
2.675326
.9840711
2.683917
.9872773
2.692508
.9904732
2.7011
.993659
2.709691
.9968347
2.718282
1.0
NIL
)(SETQ ANTILOG.VALUE.ARRAY (READARRAY 204 0))
(100
1.0
0
1.0
.01
1.01005
.02
1.020201
.03
1.030455
.04
1.040811
.05
1.051271
.06
1.061837
.07
1.072508
.08
1.083287
.09
1.094174
.1
1.105171
.11
1.116278
.12
1.127497
.13
1.138828
.14
1.150274
.15
1.161834
.16
1.173511
.17
1.185305
.18
1.197217
.19
1.20925
.2
1.221403
.21
1.233678
.22
1.246077
.23
1.2586
.24
1.271249
.25
1.284025
.26
1.29693
.27
1.309964
.28
1.32313
.29
1.336427
.3
1.349859
.31
1.363425
.32
1.377128
.33
1.390968
.34
1.404948
.35
1.419068
.36
1.433329
.37
1.447735
.38
1.462285
.39
1.476981
.4
1.491825
.41
1.506818
.42
1.521962
.43
1.537258
.44
1.552707
.45
1.568312
.46
1.584074
.47
1.599994
.48
1.616074
.49
1.632316
.5
1.648721
.51
1.665291
.52
1.682028
.53
1.698932
.54
1.716007
.55
1.733253
.56
1.750673
.57
1.768267
.58
1.786038
.59
1.803988
.6
1.822119
.61
1.840431
.62
1.858928
.63
1.877611
.64
1.896481
.65
1.915541
.66
1.934792
.67
1.954237
.68
1.973878
.69
1.993716
.7
2.013753
.71
2.033991
.72
2.054433
.73
2.075081
.74
2.095935
.75
2.117
.76
2.138276
.77
2.159766
.78
2.181472
.79
2.203396
.8
2.225541
.81
2.247908
.82
2.2705
.83
2.293319
.84
2.316367
.85
2.339647
.86
2.363161
.87
2.386911
.88
2.4109
.89
2.435129
.9
2.459603
.91
2.484322
.9199999
2.50929
.9299999
2.534509
.9399999
2.559981
.9499999
2.585709
.9599999
2.611696
.9699999
2.637944
.9799999
2.664456
.9899999
2.691234
1
2.718282
NIL
)
(RPAQQ DEGREESPERRADIAN 57.29578)
(DEFINEQ

(CREATEFUNCTIONVALUEARRAY
  [LAMBDA (FN LOW HIGH NUMBER)     (* lmm "23-JUN-80 21:38")

          (* create an array of values of a function. This is designed to run on MAXC2 to create a functionvalue array that 
	  will be shipped to the Dorado.)

                                   (* NUMBER is the number of intervals.)
    (PROG [(FVARRAY (ARRAY (IPLUS (ITIMES (ADD1 NUMBER)
					  2)
				  2]
          (replace NumberOfEntries of FVARRAY with NUMBER)
          (replace ArgumentRange of FVARRAY with (FDIFFERENCE HIGH LOW))
          (for ARG←LOW until (FGREATERP ARG HIGH) bind (INCREMENT ←(FQUOTIENT (fetch ArgumentRange
										 of FVARRAY)
									      NUMBER))
	     as INDEX from 1 to NUMBER
	     do (SETA FVARRAY (ArgumentIndex INDEX)
		      ARG)
		(SETA FVARRAY (ValueIndex INDEX)
		      (APPLY* FN ARG))
		(SETQ ARG (FPLUS ARG INCREMENT))
	     finally (SETA FVARRAY (ArgumentIndex (ADD1 NUMBER))
			   HIGH)
		     (SETA FVARRAY (ValueIndex (ADD1 NUMBER))
			   (APPLY* FN HIGH)))
          (RETURN FVARRAY])
)
(DECLARE: EVAL@COMPILE DONTCOPY 
[DECLARE: EVAL@COMPILE 

(ARRAYRECORD FunctionValueTable (NumberOfEntries ArgumentRange FirstArgument)
				[ACCESSFNS FunctionValueTable
					   ((LastArgumentIndex (ADD1 (ITIMES (fetch NumberOfEntries
										of DATUM)
									     2])
]


(ADDTOVAR DONTCOMPILEFNS CREATEFUNCTIONVALUEARRAY)


(PUTPROPS ArgumentIndex MACRO ((N)
			       (ADD1 (ITIMES N 2))))

(PUTPROPS ValueIndex MACRO ((N)
			    (ITIMES (ADD1 N)
				    2)))

(DECLARE: DOEVAL@COMPILE DONTCOPY

(ADDTOVAR GLOBALVARS SINE.VALUE.ARRAY ARCSINE.VALUE.ARRAY DEGREESPERRADIAN LOG.VALUE.ARRAY 
	  ANTILOG.VALUE.ARRAY)
)

(DECLARE: DOEVAL@COMPILE DONTCOPY

(LOCALVARS . T)
)

(DECLARE: EVAL@COMPILE 

(RPAQQ PI 3.141593)

(CONSTANTS (PI 3.141593))
)
)
(PUTPROPS AARITH COPYRIGHT ("Xerox Corporation" 1981 1983))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (885 8006 (SIN 895 . 1370) (TAN 1372 . 1515) (ARCSIN 1517 . 1852) (ARCCOS 1854 . 2414) (
ARCCOS1 2416 . 2834) (COS 2836 . 2999) (LOG 3001 . 3503) (ANTILOG 3505 . 3958) (FEXPT 3960 . 4075) (
LINEAR/INTERPOLATE 4077 . 5782) (ARCTAN 5784 . 6032) (ARCTAN2 6034 . 6681) (ATAN 6683 . 8004)) (16493 
17620 (CREATEFUNCTIONVALUEARRAY 16503 . 17618)))))
STOP