summaryrefslogtreecommitdiff
path: root/libm/double/revers.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-11-22 14:04:29 +0000
committerEric Andersen <andersen@codepoet.org>2001-11-22 14:04:29 +0000
commit7ce331c01ce6eb7b3f5c715a38a24359da9c6ee2 (patch)
tree3a7e8476e868ae15f4da1b7ce26b2db6f434468c /libm/double/revers.c
parentc117dd5fb183afb1a4790a6f6110d88704be6bf8 (diff)
Totally rework the math library, this time based on the MacOs X
math library (which is itself based on the math lib from FreeBSD). -Erik
Diffstat (limited to 'libm/double/revers.c')
-rw-r--r--libm/double/revers.c156
1 files changed, 0 insertions, 156 deletions
diff --git a/libm/double/revers.c b/libm/double/revers.c
deleted file mode 100644
index 370bdb5d6..000000000
--- a/libm/double/revers.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* revers.c
- *
- * Reversion of power series
- *
- *
- *
- * SYNOPSIS:
- *
- * extern int MAXPOL;
- * int n;
- * double x[n+1], y[n+1];
- *
- * polini(n);
- * revers( y, x, n );
- *
- * Note, polini() initializes the polynomial arithmetic subroutines;
- * see polyn.c.
- *
- *
- * DESCRIPTION:
- *
- * If
- *
- * inf
- * - i
- * y(x) = > a x
- * - i
- * i=1
- *
- * then
- *
- * inf
- * - j
- * x(y) = > A y ,
- * - j
- * j=1
- *
- * where
- * 1
- * A = ---
- * 1 a
- * 1
- *
- * etc. The coefficients of x(y) are found by expanding
- *
- * inf inf
- * - - i
- * x(y) = > A > a x
- * - j - i
- * j=1 i=1
- *
- * and setting each coefficient of x , higher than the first,
- * to zero.
- *
- *
- *
- * RESTRICTIONS:
- *
- * y[0] must be zero, and y[1] must be nonzero.
- *
- */
-
-/*
-Cephes Math Library Release 2.8: June, 2000
-Copyright 1984, 1987, 1989, 1992, 2000 by Stephen L. Moshier
-*/
-
-#include <math.h>
-
-extern int MAXPOL; /* initialized by polini() */
-
-#ifdef ANSIPROT
-/* See polyn.c. */
-void polmov ( double *, int, double * );
-void polclr ( double *, int );
-void poladd ( double *, int, double *, int, double * );
-void polmul ( double *, int, double *, int, double * );
-void * malloc ( long );
-void free ( void * );
-#else
-void polmov(), polclr(), poladd(), polmul();
-void * malloc();
-void free ();
-#endif
-
-void revers( y, x, n)
-double y[], x[];
-int n;
-{
-double *yn, *yp, *ysum;
-int j;
-
-if( y[1] == 0.0 )
- mtherr( "revers", DOMAIN );
-/* printf( "revers: y[1] = 0\n" );*/
-j = (MAXPOL + 1) * sizeof(double);
-yn = (double *)malloc(j);
-yp = (double *)malloc(j);
-ysum = (double *)malloc(j);
-
-polmov( y, n, yn );
-polclr( ysum, n );
-x[0] = 0.0;
-x[1] = 1.0/y[1];
-for( j=2; j<=n; j++ )
- {
-/* A_(j-1) times the expansion of y^(j-1) */
- polmul( &x[j-1], 0, yn, n, yp );
-/* The expansion of the sum of A_k y^k up to k=j-1 */
- poladd( yp, n, ysum, n, ysum );
-/* The expansion of y^j */
- polmul( yn, n, y, n, yn );
-/* The coefficient A_j to make the sum up to k=j equal to zero */
- x[j] = -ysum[j]/yn[j];
- }
-free(yn);
-free(yp);
-free(ysum);
-}
-
-
-#if 0
-/* Demonstration program
- */
-#define N 10
-double y[N], x[N];
-double fac();
-
-main()
-{
-double a, odd;
-int i;
-
-polini( N-1 );
-a = 1.0;
-y[0] = 0.0;
-odd = 1.0;
-for( i=1; i<N; i++ )
- {
-/* sin(x) */
-/*
- if( i & 1 )
- {
- y[i] = odd/fac(i);
- odd = -odd;
- }
- else
- y[i] = 0.0;
-*/
- y[i] = 1.0/fac(i);
- }
-revers( y, x, N-1 );
-for( i=0; i<N; i++ )
- printf( "%2d %.10e %.10e\n", i, x[i], y[i] );
-}
-#endif