Annotation of coherent/b/lib/libm/atan.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Compute the inverse tangent function.
                      3:  * (Hart 5100, 17.24)
                      4:  */
                      5: #include <math.h>
                      6: 
                      7: #if    EMU87
                      8: #include "emumath.h"
                      9: #endif
                     10: 
                     11: static readonly double tanntab[] ={
                     12:        0.12097470017580907217240715e+04,
                     13:        0.30310745956115083044212807e+04,
                     14:        0.27617198246138834959053784e+04,
                     15:        0.11141290728455183546172942e+04,
                     16:        0.19257920144815596134742860e+03,
                     17:        0.11322159411676465523624500e+02,
                     18:        0.97627215917176330369830000e-01
                     19: };
                     20: static readonly double tanmtab[] ={
                     21:        0.12097470017580907287514197e+04,
                     22:        0.34343235961975351716547069e+04,
                     23:        0.36645449563283749893504796e+04,
                     24:        0.18216003392918464941509225e+04,
                     25:        0.42307164648090478045242060e+03,
                     26:        0.39917884248653798150199900e+02,
                     27:        0.10000000000000000000000000e+01
                     28: };
                     29: 
                     30: double
                     31: atan(x)
                     32: double x;
                     33: {
                     34:        double r;
                     35:        register int i, s;
                     36: 
                     37:        s = 0;
                     38:        i = 0;
                     39:        if (x < 0.0) {
                     40:                s = 1;
                     41:                x = -x;
                     42:        }
                     43:        if (x > 1.0) {
                     44:                i = 1;
                     45:                x = 1/x;
                     46:        }
                     47:        r = x * x;
                     48:        r = x * (_pol(r, tanntab, 7)/_pol(r, tanmtab, 7));
                     49:        if (i)
                     50:                r = PI/2.0 - r;
                     51:        if (s)
                     52:                r = -r;
                     53:        return (r);
                     54: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.