/*Translated by FOR_C, v3.4.2 (-), on 07/09/115 at 08:33:16 */ /*FOR_C Options SET: ftn=u io=c no=p op=aimnv pf=,p_seli s=dbov str=l x=f - prototypes */ #include #include "fcrt.h" #include #include #include "p_seli.h" int main( ) { long int ierr; float alpha2, e, f, k, k2, phi, pi, r, rc, rd, rf, rj, sinphi, t, u, x, y, z; /*>>1994-10-19 DRSELI Krogh Changes to use M77CON *>>1992-03-09 DRSELI WV Snyder Create separate single and double demos. *>>1991-10-04 DRSELI WV Snyder JPL Original code. *--S 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; srcval( 1.0e0 - x*x, 1.0e0, &rc, &ierr ); if (ierr == 0) { t = asinf( x ) - x*rc; printf(" ASIN(0.5) - 0.5*RC(1-0.5**2,1) =%15.8g\n", t); } else { printf(" SRCVAL 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 = sqrtf( 0.5e0 ); k2 = 0.5e0; sinphi = 0.5e0; phi = asinf( sinphi ); r = 0.875e0; x = 0.75e0; y = 0.875e0; z = 1.0e0; selefi( phi, k, &f, &e, &ierr ); if (ierr != 0) { printf(" SELEFI returns error signal %1ld\n", ierr); goto L_99; } selpii( phi, k2, alpha2, &pi, &ierr ); if (ierr != 0) { printf(" SELPII returns error signal %1ld\n", ierr); goto L_99; } srdval( x, y, z, &rd, &ierr ); if (ierr != 0) { printf(" SRDVAL returns error signal %1ld\n", ierr); goto L_99; } srfval( x, y, z, &rf, &ierr ); if (ierr != 0) { printf(" SRFVAL returns error signal %1ld\n", ierr); goto L_99; } srjval( x, y, z, r, &rj, &ierr ); if (ierr != 0) { printf(" SRJVAL returns error signal %1ld\n", ierr); goto L_99; } u = sqrtf( 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 = sqrtf( z )*rf; t = f/sinphi; r = (u - t)/u; printf(" Equation (9), (LHS - RHS)/LHS =%15.8g\n", r); u = sqrtf( 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 */