Rev 8160 | Rev 8862 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8160 | Rev 8171 | ||
---|---|---|---|
Line 141... | Line 141... | ||
141 | } |
141 | } |
142 | 142 | ||
143 | /* max and min */ |
143 | /* max and min */ |
144 | double max(double d1, double d2) |
144 | double max(double d1, double d2) |
145 | { |
145 | { |
146 | if(! |
146 | if(!isfinite(d1) || !isfinite(d2)) return NAN; |
147 | if(d1<d2) return d2; else return d1; |
147 | if(d1<d2) return d2; else return d1; |
148 | } |
148 | } |
149 | double min(double d1, double d2) |
149 | double min(double d1, double d2) |
150 | { |
150 | { |
151 | if(! |
151 | if(!isfinite(d1) || !isfinite(d2)) return NAN; |
152 | if(d1<d2) return d1; else return d2; |
152 | if(d1<d2) return d1; else return d2; |
153 | } |
153 | } |
154 | 154 | ||
155 | /* gcd and lcm, not really checking errors. */ |
155 | /* gcd and lcm, not really checking errors. */ |
156 | double gcd(double n1, double n2) |
156 | double gcd(double n1, double n2) |
157 | { |
157 | { |
158 | unsigned long long int l1, l2, ll; |
158 | unsigned long long int l1, l2, ll; |
159 | n1=abs(n1); n2=abs(n2); |
159 | n1=abs(n1); n2=abs(n2); |
160 | if(! |
160 | if(!isfinite(n1) || !isfinite(n2) || n1<0 || n2<0 || |
161 | n1>1E18 || n2>1E18) return NAN; |
161 | n1>1E18 || n2>1E18) return NAN; |
162 | l1=n1; l2=n2; |
162 | l1=n1; l2=n2; |
163 | if(l1<l2) { |
163 | if(l1<l2) { |
164 | ll=l1;l1=l2;l2=ll; |
164 | ll=l1;l1=l2;l2=ll; |
165 | } |
165 | } |