/[ascend]/trunk/base/generic/compiler/rounded.h
ViewVC logotype

Diff of /trunk/base/generic/compiler/rounded.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 53 by ben.allan, Sun Dec 26 20:06:01 2004 UTC revision 54 by jds, Tue Aug 2 11:20:09 2005 UTC
# Line 1  Line 1 
1  /**<  /*
2   *  Rounded Arithmetic Routines   *  Rounded Arithmetic Routines
3   *  by Tom Epperly   *  by Tom Epperly
4   *  Version: $Revision: 1.6 $   *  Version: $Revision: 1.6 $
# Line 26  Line 26 
26   *  Mass Ave, Cambridge, MA 02139 USA.  Check the file named COPYING.   *  Mass Ave, Cambridge, MA 02139 USA.  Check the file named COPYING.
27   */   */
28    
29    /** @file
30     *  Rounded Arithmetic Routines.
31     *  <pre>
32     *  When #including rounded.h, make sure these files are #included first:
33     *         #include "utilities/ascConfig.h"
34     *  </pre>
35     */
36    
37  #ifndef __ROUNDED_H_SEEN__  #ifndef __ROUNDED_H_SEEN__
38  #define __ROUNDED_H_SEEN__  #define __ROUNDED_H_SEEN__
39    
40  extern double DIPow(register double d, long int n);  extern double DIPow(register double d, long int n);
41  /**<  /**<
42   *  double DIPow(d,n)   *  <!--  double DIPow(d,n)                                            -->
43   *  double d;   *  <!--  double d;                                                    -->
44   *  long n;   *  <!--  long n;                                                      -->
45   *  Return d^n rounded downward.   *  Return d^n rounded downward.
46   */   */
47    
48  extern double UIPow(register double d, long int n);  extern double UIPow(register double d, long int n);
49  /**<  /**<
50   *  double UIPow(d,n)   *  <!--  double UIPow(d,n)                                            -->
51   *  double d;   *  <!--  double d;                                                    -->
52   *  long n;   *  <!--  long n;                                                      -->
53   *  Return d^n rounded upward.   *  Return d^n rounded upward.
54   */   */
55    
56  #ifndef SLOPPY  #ifndef SLOPPY
57  extern double DPow(register double d1, register double d2);  extern double DPow(register double d1, register double d2);
58  /**<  /**<
59   *  double DPow(d1,d2)   *  <!--  double DPow(d1,d2)                                           -->
60   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
61   *  Return the downward rounded result of d1^d2(d1 raised to the power d2).   *  Return the downward rounded result of d1^d2(d1 raised to the power d2).
62   */   */
63    
64  extern double UPow(register double d1, register double d2);  extern double UPow(register double d1, register double d2);
65  /**<  /**<
66   *  double UPow(d1,d2)   *  <!--  double UPow(d1,d2)                                           -->
67   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
68   *  Return the downward rounded result of d1^d2(d1 raised to the power d2).   *  Return the downward rounded result of d1^d2(d1 raised to the power d2).
69   */   */
70    
71  extern double DPlus(register double d1, register double d2);  extern double DPlus(register double d1, register double d2);
72  /**<  /**<
73   *  double DPlus(d1,d2)   *  <!--  double DPlus(d1,d2)                                          -->
74   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
75   *  Return the downward rounded addition of d1 and d2.   *  Return the downward rounded addition of d1 and d2.
76   */   */
77    
78  extern double UPlus(register double d1, register double d2);  extern double UPlus(register double d1, register double d2);
79  /**<  /**<
80   *  double UPlus(d1,d2)   *  <!--  double UPlus(d1,d2)                                          -->
81   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
82   *  Return the upward rounded addition of d1 and d2.   *  Return the upward rounded addition of d1 and d2.
83   */   */
84    
85  extern double DMinus(register double d1, register double d2);  extern double DMinus(register double d1, register double d2);
86  /**<  /**<
87   *  double DMinus(d1,d2)   *  <!--  double DMinus(d1,d2)                                         -->
88   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
89   *  Return d1-d2 with downward rounding.   *  Return d1-d2 with downward rounding.
90   */   */
91    
92  extern double UMinus(register double d1, register double d2);  extern double UMinus(register double d1, register double d2);
93  /**<  /**<
94   *  double UMinus(d1,d2)   *  <!--  double UMinus(d1,d2)                                         -->
95   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
96   *  Return d1-d2 with upward rounding.   *  Return d1-d2 with upward rounding.
97   */   */
98    
99  extern double DTimes(register double d1, register double d2);  extern double DTimes(register double d1, register double d2);
100  /**<  /**<
101   *  double DTimes(d1,d2)   *  <!--  double DTimes(d1,d2)                                         -->
102   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
103   *  return d1*d2 with downward rounding.   *  Return d1*d2 with downward rounding.
104   */   */
105    
106  extern double UTimes(register double d1, register double d2);  extern double UTimes(register double d1, register double d2);
107  /**<  /**<
108   *  double UTimes(d1,d2)   *  <!--  double UTimes(d1,d2)                                         -->
109   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
110   *  return d1*d2 with upward rounding   *  Return d1*d2 with upward rounding.
111   */   */
112    
113  extern double DDivide(register double d1, register double d2);  extern double DDivide(register double d1, register double d2);
114  /**<  /**<
115   *  double DDivide(d1,d2);   *  <!--  double DDivide(d1,d2);                                       -->
116   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
117   *  return d1/d2 with downward rounding.   *  Return d1/d2 with downward rounding.
118   */   */
119    
120  extern double UDivide(register double d1, register double d2);  extern double UDivide(register double d1, register double d2);
121  /**<  /**<
122   *  double UDivide(d1,d2);   *  <!--  double UDivide(d1,d2);                                       -->
123   *  double d1,d2;   *  <!--  double d1,d2;                                                -->
124   *  return d1/d2 with upward rounding.   *  Return d1/d2 with upward rounding.
125   */   */
126    
127  extern double DSqr(register double d);  extern double DSqr(register double d);
128  /**<  /**<
129   *  double DSqr(d)   *  <!--  double DSqr(d)                                               -->
130   *  double d;   *  <!--  double d;                                                    -->
131   *  return sqr(d) with downward rounding.   *  Return sqr(d) with downward rounding.
132   */   */
133    
134  extern double USqr(register double d);  extern double USqr(register double d);
135  /**<  /**<
136   *  double USqr(d)   *  <!--  double USqr(d)                                               -->
137   *  double d;   *  <!--  double d;                                                    -->
138   *  return sqr(d) with upward rounding.   *  Return sqr(d) with upward rounding.
139   */   */
140    
141  extern double DSqrt(register double d);  extern double DSqrt(register double d);
142  /**<  /**<
143   *  double DSqrt(d);   *  <!--  double DSqrt(d);                                             -->
144   *  double d;   *  <!--  double d;                                                    -->
145   *  return sqrt(d) with downward rounding.   *  Return sqrt(d) with downward rounding.
146   */   */
147    
148  extern double USqrt(register double d);  extern double USqrt(register double d);
149  /**<  /**<
150   *  double USqrt(d)   *  <!--  double USqrt(d)                                              -->
151   *  double d;   *  <!--  double d;                                                    -->
152   *  return sqrt(d) with upward rounding.   *  Return sqrt(d) with upward rounding.
153   */   */
154    
155  extern double DExp(register double d);  extern double DExp(register double d);
156  /**<  /**<
157   *  double DExp(d)   *  <!--  double DExp(d)                                               -->
158   *  double d;   *  <!--  double d;                                                    -->
159   *  return exp(d) with downward rounding   *  Return exp(d) with downward rounding.
160   */   */
161    
162  extern double UExp(register double d);  extern double UExp(register double d);
163  /**<  /**<
164   *  double UExp(d)   *  <!--  double UExp(d)                                               -->
165   *  double d;   *  <!--  double d;                                                    -->
166   *  return exp(d) with upward rounding.   *  Return exp(d) with upward rounding.
167   */   */
168    
169  extern double DLog(register double d);  extern double DLog(register double d);
170  /**<  /**<
171   *  double DLog(d)   *  <!--  double DLog(d)                                               -->
172   *  double d;   *  <!--  double d;                                                    -->
173   *  return log base 10 of d rounded down   *  Return log base 10 of d rounded down.
174   */   */
175    
176  extern double ULog(register double d);  extern double ULog(register double d);
177  /**<  /**<
178   *  double ULog(d)   *  <!--  double ULog(d)                                               -->
179   *  double d;   *  <!--  double d;                                                    -->
180   *  return the log base 10 of d.   *  Return the log base 10 of d.
181   */   */
182    
183  extern double DLn(register double d);  extern double DLn(register double d);
184  /**<  /**<
185   *  double DLn(d)   *  <!--  double DLn(d)                                                -->
186   *  double d;   *  <!--  double d;                                                    -->
187   *  return ln(d) (log base e) with downward rounding.   *  Return ln(d) (log base e) with downward rounding.
188   */   */
189    
190  extern double ULn(register double d);  extern double ULn(register double d);
191  /**<  /**<
192   *  double ULn(d)   *  <!--  double ULn(d)                                                -->
193   *  double d;   *  <!--  double d;                                                    -->
194   *  return ln(d) with upward rounding.   *  Return ln(d) with upward rounding.
195   */   */
196    
197  #ifdef HAVE_ERF  #ifdef HAVE_ERF
198  extern double DErf(register double d);  extern double DErf(register double d);
199  /**<  /**<
200   *  double DErf(d)   *  <!--  double DErf(d)                                               -->
201   *  double d;   *  <!--  double d;                                                    -->
202   *  return erf(d) with downward rounding.   *  Return erf(d) with downward rounding.
203   */   */
204    
205  extern double UErf(register double d);  extern double UErf(register double d);
206  /**<  /**<
207   *  double UErf(d)   *  <!--  double UErf(d)                                               -->
208   *  double d;   *  <!--  double d;                                                    -->
209   *  return erf(d) with upward rounding.   *  Return erf(d) with upward rounding.
210   */   */
211  #endif /**< HAVE_ERF */  #endif /* HAVE_ERF */
212    
213  extern double Dltod(long int l);  extern double Dltod(long int l);
214  /**<  /**<
215   *  double Dltod(l)   *  <!--  double Dltod(l)                                              -->
216   *  long l;   *  <!--  long l;                                                      -->
217     *  Convert long to double with downward rounding.
218   */   */
219    
220  extern double Ultod(long int l);  extern double Ultod(long int l);
221  /**<  /**<
222   *  double Ultod(l);   *  <!--  double Ultod(l);                                             -->
223   *  long l   *  <!--  long l                                                       -->
224     *  Convert long to double with upward rounding.
225   */   */
226  #else /**< SLOPPY */  
227    #else /* SLOPPY */
228  #define Dltod(l) ((double)l)  #define Dltod(l) ((double)l)
229  #define Ultod(l) ((double)l)  #define Ultod(l) ((double)l)
230  #define DPlus(d1,d2) ((d1)+(d2))  #define DPlus(d1,d2) ((d1)+(d2))
# Line 237  extern double Ultod(long int l); Line 248  extern double Ultod(long int l);
248  #ifdef HAVE_ERF  #ifdef HAVE_ERF
249  #define DErf(d) (erf(d))  #define DErf(d) (erf(d))
250  #define UErf(d) (erf(d))  #define UErf(d) (erf(d))
251  #endif /**< HAVE_ERF */  #endif /* HAVE_ERF */
252  #define DPow(d1,d2) (pow(d1,d2))  #define DPow(d1,d2) (pow(d1,d2))
253  #define UPow(d1,d2) (pow(d1,d2))  #define UPow(d1,d2) (pow(d1,d2))
254  #endif /**< SLOPPY */  #endif /* SLOPPY */
255    
256    #endif /* __ROUNDED_H_SEEN__ */
257    
 #endif /**< __ROUNDED_H_SEEN__ */  

Legend:
Removed from v.53  
changed lines
  Added in v.54

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22