Annotation of researchv10no/libF77/r_mod.c, revision 1.1.1.1

1.1       root        1: #include "f2c.h"
                      2: 
                      3: #ifdef KR_headers
                      4: #ifdef IEEE_drem
                      5: double drem();
                      6: #else
                      7: double floor();
                      8: #endif
                      9: double r_mod(x,y) real *x, *y;
                     10: #else
                     11: #ifdef IEEE_drem
                     12: double drem(double, double);
                     13: #else
                     14: #undef abs
                     15: #include "math.h"
                     16: #endif
                     17: double r_mod(real *x, real *y)
                     18: #endif
                     19: {
                     20: #ifdef IEEE_drem
                     21:        double xa, ya, z;
                     22:        if ((ya = *y) < 0.)
                     23:                ya = -ya;
                     24:        z = drem(xa = *x, ya);
                     25:        if (xa > 0) {
                     26:                if (z < 0)
                     27:                        z += ya;
                     28:                }
                     29:        else if (z > 0)
                     30:                z -= ya;
                     31:        return z;
                     32: #else
                     33:        double quotient;
                     34:        if( (quotient = (double)*x / *y) >= 0)
                     35:                quotient = floor(quotient);
                     36:        else
                     37:                quotient = -floor(-quotient);
                     38:        return(*x - (*y) * quotient );
                     39: #endif
                     40: }

unix.superglobalmegacorp.com

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