diff options
Diffstat (limited to 'media/sphinxbase/src/libsphinxbase/util/f2c_lite.c')
-rw-r--r-- | media/sphinxbase/src/libsphinxbase/util/f2c_lite.c | 551 |
1 files changed, 0 insertions, 551 deletions
diff --git a/media/sphinxbase/src/libsphinxbase/util/f2c_lite.c b/media/sphinxbase/src/libsphinxbase/util/f2c_lite.c deleted file mode 100644 index 58fbc4ee6..000000000 --- a/media/sphinxbase/src/libsphinxbase/util/f2c_lite.c +++ /dev/null @@ -1,551 +0,0 @@ -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#include "sphinxbase/f2c.h" - -#ifdef _MSC_VER -#pragma warning (disable: 4244) -#endif - - -extern void -s_wsfe(cilist * f) -{; -} -extern void -e_wsfe(void) -{; -} -extern void -do_fio(integer * c, char *s, ftnlen l) -{; -} - -/* You'll want this if you redo the *_lite.c files with the -C option - * to f2c for checking array subscripts. (It's not suggested you do that - * for production use, of course.) */ -extern int -s_rnge(char *var, int index, char *routine, int lineno) -{ - fprintf(stderr, - "array index out-of-bounds for %s[%d] in routine %s:%d\n", var, - index, routine, lineno); - fflush(stderr); - assert(2+2 == 5); - return 0; -} - - -#ifdef KR_headers -extern double sqrt(); -float -f__cabs(real, imag) -float real, imag; -#else -#undef abs - -float -f__cabs(float real, float imag) -#endif -{ - float temp; - - if (real < 0) - real = -real; - if (imag < 0) - imag = -imag; - if (imag > real) { - temp = real; - real = imag; - imag = temp; - } - if ((imag + real) == real) - return ((float) real); - - temp = imag / real; - temp = real * sqrt(1.0 + temp * temp); /*overflow!! */ - return (temp); -} - - -VOID -#ifdef KR_headers -s_cnjg(r, z) -complex *r, *z; -#else -s_cnjg(complex * r, complex * z) -#endif -{ - r->r = z->r; - r->i = -z->i; -} - - -#ifdef KR_headers -float -r_imag(z) -complex *z; -#else -float -r_imag(complex * z) -#endif -{ - return (z->i); -} - - -#define log10e 0.43429448190325182765 - -#ifdef KR_headers -double log(); -float -r_lg10(x) -real *x; -#else -#undef abs - -float -r_lg10(real * x) -#endif -{ - return (log10e * log(*x)); -} - - -#ifdef KR_headers -float -r_sign(a, b) -real *a, *b; -#else -float -r_sign(real * a, real * b) -#endif -{ - float x; - x = (*a >= 0 ? *a : -*a); - return (*b >= 0 ? x : -x); -} - - -#ifdef KR_headers -double floor(); -integer -i_dnnt(x) -real *x; -#else -#undef abs - -integer -i_dnnt(real * x) -#endif -{ - return ((*x) >= 0 ? floor(*x + .5) : -floor(.5 - *x)); -} - - -#ifdef KR_headers -double pow(); -double -pow_dd(ap, bp) -doublereal *ap, *bp; -#else -#undef abs - -double -pow_dd(doublereal * ap, doublereal * bp) -#endif -{ - return (pow(*ap, *bp)); -} - - -#ifdef KR_headers -float -pow_ri(ap, bp) -real *ap; -integer *bp; -#else -float -pow_ri(real * ap, integer * bp) -#endif -{ - float pow, x; - integer n; - unsigned long u; - - pow = 1; - x = *ap; - n = *bp; - - if (n != 0) { - if (n < 0) { - n = -n; - x = 1 / x; - } - for (u = n;;) { - if (u & 01) - pow *= x; - if (u >>= 1) - x *= x; - else - break; - } - } - return (pow); -} - -/* Unless compiled with -DNO_OVERWRITE, this variant of s_cat allows the - * target of a concatenation to appear on its right-hand side (contrary - * to the Fortran 77 Standard, but in accordance with Fortran 90). - */ -#define NO_OVERWRITE - - -#ifndef NO_OVERWRITE - -#undef abs -#ifdef KR_headers -extern char *F77_aloc(); -extern void free(); -extern void exit_(); -#else - -extern char *F77_aloc(ftnlen, char *); -#endif - -#endif /* NO_OVERWRITE */ - -VOID -#ifdef KR_headers -s_cat(lp, rpp, rnp, np, ll) -char *lp, *rpp[]; -ftnlen rnp[], *np, ll; -#else -s_cat(char *lp, char *rpp[], ftnlen rnp[], ftnlen * np, ftnlen ll) -#endif -{ - ftnlen i, nc; - char *rp; - ftnlen n = *np; -#ifndef NO_OVERWRITE - ftnlen L, m; - char *lp0, *lp1; - - lp0 = 0; - lp1 = lp; - L = ll; - i = 0; - while (i < n) { - rp = rpp[i]; - m = rnp[i++]; - if (rp >= lp1 || rp + m <= lp) { - if ((L -= m) <= 0) { - n = i; - break; - } - lp1 += m; - continue; - } - lp0 = lp; - lp = lp1 = F77_aloc(L = ll, "s_cat"); - break; - } - lp1 = lp; -#endif /* NO_OVERWRITE */ - for (i = 0; i < n; ++i) { - nc = ll; - if (rnp[i] < nc) - nc = rnp[i]; - ll -= nc; - rp = rpp[i]; - while (--nc >= 0) - *lp++ = *rp++; - } - while (--ll >= 0) - *lp++ = ' '; -#ifndef NO_OVERWRITE - if (lp0) { - memmove(lp0, lp1, L); - free(lp1); - } -#endif -} - - -/* compare two strings */ - -#ifdef KR_headers -integer -s_cmp(a0, b0, la, lb) -char *a0, *b0; -ftnlen la, lb; -#else -integer -s_cmp(char *a0, char *b0, ftnlen la, ftnlen lb) -#endif -{ - register unsigned char *a, *aend, *b, *bend; - a = (unsigned char *) a0; - b = (unsigned char *) b0; - aend = a + la; - bend = b + lb; - - if (la <= lb) { - while (a < aend) - if (*a != *b) - return (*a - *b); - else { - ++a; - ++b; - } - - while (b < bend) - if (*b != ' ') - return (' ' - *b); - else - ++b; - } - - else { - while (b < bend) - if (*a == *b) { - ++a; - ++b; - } - else - return (*a - *b); - while (a < aend) - if (*a != ' ') - return (*a - ' '); - else - ++a; - } - return (0); -} - -/* Unless compiled with -DNO_OVERWRITE, this variant of s_copy allows the - * target of an assignment to appear on its right-hand side (contrary - * to the Fortran 77 Standard, but in accordance with Fortran 90), - * as in a(2:5) = a(4:7) . - */ - - - -/* assign strings: a = b */ - -#ifdef KR_headers -VOID -s_copy(a, b, la, lb) -register char *a, *b; -ftnlen la, lb; -#else -void -s_copy(register char *a, register char *b, ftnlen la, ftnlen lb) -#endif -{ - register char *aend, *bend; - - aend = a + la; - - if (la <= lb) -#ifndef NO_OVERWRITE - if (a <= b || a >= b + la) -#endif - while (a < aend) - *a++ = *b++; -#ifndef NO_OVERWRITE - else - for (b += la; a < aend;) - *--aend = *--b; -#endif - - else { - bend = b + lb; -#ifndef NO_OVERWRITE - if (a <= b || a >= bend) -#endif - while (b < bend) - *a++ = *b++; -#ifndef NO_OVERWRITE - else { - a += lb; - while (b < bend) - *--a = *--bend; - a += lb; - } -#endif - while (a < aend) - *a++ = ' '; - } -} - - -#ifdef KR_headers -float f__cabs(); -float -z_abs(z) -complex *z; -#else -float f__cabs(float, float); -float -z_abs(complex * z) -#endif -{ - return (f__cabs(z->r, z->i)); -} - - -#ifdef KR_headers -extern void sig_die(); -VOID -z_div(c, a, b) -complex *a, *b, *c; -#else -extern void sig_die(char *, int); -void -z_div(complex * c, complex * a, complex * b) -#endif -{ - float ratio, den; - float abr, abi; - - if ((abr = b->r) < 0.) - abr = -abr; - if ((abi = b->i) < 0.) - abi = -abi; - if (abr <= abi) { - /*Let IEEE Infinties handle this ;( */ - /*if(abi == 0) - sig_die("complex division by zero", 1); */ - ratio = b->r / b->i; - den = b->i * (1 + ratio * ratio); - c->r = (a->r * ratio + a->i) / den; - c->i = (a->i * ratio - a->r) / den; - } - - else { - ratio = b->i / b->r; - den = b->r * (1 + ratio * ratio); - c->r = (a->r + a->i * ratio) / den; - c->i = (a->i - a->r * ratio) / den; - } - -} - - -#ifdef KR_headers -double sqrt(); -double f__cabs(); -VOID -z_sqrt(r, z) -complex *r, *z; -#else -#undef abs - -extern float f__cabs(float, float); -void -z_sqrt(complex * r, complex * z) -#endif -{ - float mag; - - if ((mag = f__cabs(z->r, z->i)) == 0.) - r->r = r->i = 0.; - else if (z->r > 0) { - r->r = sqrt(0.5 * (mag + z->r)); - r->i = z->i / r->r / 2; - } - else { - r->i = sqrt(0.5 * (mag - z->r)); - if (z->i < 0) - r->i = -r->i; - r->r = z->i / r->i / 2; - } -} - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef KR_headers - integer pow_ii(ap, bp) integer *ap, *bp; -#else - integer pow_ii(integer * ap, integer * bp) -#endif - { - integer pow, x, n; - unsigned long u; - - x = *ap; - n = *bp; - - if (n <= 0) { - if (n == 0 || x == 1) - return 1; - if (x != -1) - return x != 0 ? 1 / x : 0; - n = -n; - } u = n; - for (pow = 1;;) { - if (u & 01) - pow *= x; - if (u >>= 1) - x *= x; - else - break; - } - return (pow); - } -#ifdef __cplusplus -} -#endif - -#ifdef KR_headers -extern void f_exit(); -VOID -s_stop(s, n) -char *s; -ftnlen n; -#else -#undef abs -#undef min -#undef max -#ifdef __cplusplus -extern "C" { -#endif -#ifdef __cplusplus - extern "C" { -#endif - void f_exit(void); - - int s_stop(char *s, ftnlen n) -#endif - { - int i; - - if (n > 0) { - fprintf(stderr, "STOP "); - for (i = 0; i < n; ++i) - putc(*s++, stderr); - fprintf(stderr, " statement executed\n"); - } -#ifdef NO_ONEXIT - f_exit(); -#endif - exit(0); - -/* We cannot avoid (useless) compiler diagnostics here: */ -/* some compilers complain if there is no return statement, */ -/* and others complain that this one cannot be reached. */ - - return 0; /* NOT REACHED */ - } -#ifdef __cplusplus - } -#endif -#ifdef __cplusplus -} -#endif |