/*Translated by FOR_C, v3.4.2 (-), on 07/09/115 at 08:33:09 */ /*FOR_C Options SET: ftn=u io=c no=p op=aimnv pf=,p_deli s=dbov str=l x=f - prototypes */ #include #include "fcrt.h" #include #include #include "p_deli.h" int main( ) { long int ierr; double alpha2, e, f, k, k2, phi, pi, r, rc, rd, rf, rj, sinphi, t, u, x, y, z; /*>>1994-10-19 DRDELI Krogh Changes to use M77CON *>>1992-03-09 DRDELI WV Snyder Create separate single and double demos. *>>1991-10-04 DRDELI WV Snyder JPL Original code. *--D replaces "?": DR?ELI,?RCVAL,?ELEFI,?ELPII,?RDVAL,?RFVAL,?RJVAL * * Demonstration driver for incomplete elliptic integral procedures. * */ /* Compute arc sine x using ASIN and RC, for x = 0.5 * */ printf("Identities from write-up:\n"); x = 0.5e0; drcval( 1.0e0 - x*x, 1.0e0, &rc, &ierr ); if (ierr == 0) { t = asin( x ) - x*rc; printf(" ASIN(0.5) - 0.5*RC(1-0.5**2,1) =%15.8g\n", t); } else { printf(" DRCVAL returns error signal %1ld\n", ierr); } /* Evaluate identities given by equations (8-10) in the write-up * with k**2 = 1/2, sin(phi)**2 = 1/4, alpha**2 = 1/2, c = 1. * From this, we have a = 3/4, b = r = 7/8. * */ alpha2 = 0.5e0; k = sqrt( 0.5e0 ); k2 = 0.5e0; sinphi = 0.5e0; phi = asin( sinphi ); r = 0.875e0; x = 0.75e0; y = 0.875e0; z = 1.0e0; delefi( phi, k, &f, &e, &ierr ); if (ierr != 0) { printf(" DELEFI returns error signal %1ld\n", ierr); goto L_99; } delpii( phi, k2, alpha2, &pi, &ierr ); if (ierr != 0) { printf(" DELPII returns error signal %1ld\n", ierr); goto L_99; } drdval( x, y, z, &rd, &ierr ); if (ierr != 0) { printf(" DRDVAL returns error signal %1ld\n", ierr); goto L_99; } drfval( x, y, z, &rf, &ierr ); if (ierr != 0) { printf(" DRFVAL returns error signal %1ld\n", ierr); goto L_99; } drjval( x, y, z, r, &rj, &ierr ); if (ierr != 0) { printf(" DRJVAL returns error signal %1ld\n", ierr); goto L_99; } u = sqrt( CUBE(z) )*rd; t = 3.0e0/(k2*CUBE(sinphi))*(f - e); r = (u - t)/u; printf(" Equation (8), (LHS - RHS)/LHS =%15.8g\n", r); u = sqrt( z )*rf; t = f/sinphi; r = (u - t)/u; printf(" Equation (9), (LHS - RHS)/LHS =%15.8g\n", r); u = sqrt( CUBE(z) )*rj; t = 3/(alpha2*CUBE(sinphi))*(pi - f); r = (u - t)/u; printf(" Equation (10), (LHS - RHS)/LHS =%15.8g\n", r); L_99: exit(0); } /* end of function */