#include void fg(float x, float *f, float *g) { void fresnel(float, float *, float *); float absx,c,s,c1,s1,a,xinv,x3inv,c4,p,q; absx=fabs(x); if (absx <= 1.6) { fresnel(x,&c,&s); a=x*x*1.57079632679490; c1=cos(a); s1=sin(a); a = (x < 0.0) ? -0.5 : 0.5; p=a-c; q=a-s; *f = q*c1-p*s1; *g = p*c1+q*s1; } else if (absx <= 1.9) { xinv=1.0/x; a=xinv*xinv; x3inv=a*xinv; c4=a*a; p=(((1.35304235540388e1*c4+6.98534261601021e1)*c4+ 4.80340655577925e1)*c4+8.03588122803942e0)*c4+ 3.18309268504906e-1; q=(((6.55630640083916e1*c4+2.49561993805172e2)*c4+ 1.57611005580123e2)*c4+2.55491618435795e1)*c4+1.0; *f = xinv*p/q; p=((((2.05421432498501e1*c4+1.96232037971663e2)*c4+ 1.99182818678903e2)*c4+5.31122813480989e1)*c4+ 4.44533827550512e0)*c4+1.01320618810275e-1; q=((((1.01379483396003e3*c4+3.48112147856545e3)*c4+ 2.54473133181822e3)*c4+5.83590575716429e2)*c4+ 4.53925019673689e1)*c4+1.0; *g = x3inv*p/q; } else if (absx <= 2.4) { xinv=1.0/x; a=xinv*xinv; x3inv=a*xinv; c4=a*a; p=((((7.17703249365140e2*c4+3.09145161574430e3)*c4+ 1.93007640786716e3)*c4+3.39837134926984e2)*c4+ 1.95883941021969e1)*c4+3.18309881822017e-1; q=((((3.36121699180551e3*c4+1.09334248988809e4)*c4+ 6.33747155851144e3)*c4+1.08535067500650e3)*c4+ 6.18427138172887e1)*c4+1.0; *f = xinv*p/q; p=((((3.13330163068756e2*c4+1.59268006085354e3)*c4+ 9.08311749529594e2)*c4+1.40959617911316e2)*c4+ 7.11205001789783e0)*c4+1.01321161761805e-1; q=((((1.15149832376261e4*c4+2.41315567213370e4)*c4+ 1.06729678030581e4)*c4+1.49051922797329e3)*c4+ 7.17128596939302e1)*c4+1.0; *g = x3inv*p/q; } else { xinv=1.0/x; a=xinv*xinv; x3inv=a*xinv; c4=a*a; p=((((2.61294753225142e4*c4+6.13547113614700e4)*c4+ 1.34922028171857e4)*c4+8.16343401784375e2)*c4+ 1.64797712841246e1)*c4+9.67546032967090e-2; q=((((1.37012364817226e6*c4+1.00105478900791e6)*c4+ 1.65946462621853e5)*c4+9.01827596231524e3)*c4+ 1.73871690673649e2)*c4+1.0; *f = (c4*(-p)/q+0.318309886183791)*xinv; p=(((((1.72590224654837e6*c4+6.66907061668636e6)*c4+ 1.77758950838030e6)*c4+1.35678867813756e5)*c4+ 3.87754141746378e3)*c4+4.31710157823358e1)*c4+ 1.53989733819769e-1; q=(((((1.40622441123580e8*c4+9.38695862531635e7)*c4+ 1.62095600500232e7)*c4+1.02878693056688e6)*c4+ 2.69183180396243e4)*c4+2.86733194975899e2)*c4+1.0; *g = (c4*(-p)/q+0.101321183642338)*x3inv; } }