|
|
1.1 root 1:
2: #include "complex.h"
3: #include "const.h"
4:
5: double abs(complex z)
6: {
7: register double temp;
8: register double r = z.re;
9: register double i = z.im;
10:
11: if (r < 0) r = -r;
12: if (i == 0) return r;
13:
14: if (i < 0) i = -i;
15: if (r == 0) return i;
16:
17: if (i > r) { temp = r; r = i; i = temp; }
18: temp = i/r;
19: temp = r*sqrt(1.0 + temp*temp); /*overflow!!*/
20: return temp;
21: }
22:
23: double norm(complex z)
24: {
25: register double r = z.re;
26: register double i = z.im;
27:
28: #define SAFE 6.521908912666391000e+18 /* 0.5*sqrt(GREATEST)*/
29:
30: if (r<SAFE && i<SAFE) return r*r+i*i;
31: return GREATEST;
32: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.