code 35027; procedure FRESNEL(X, C, S); value X; real X, C, S; begin real ABSX, X3, X4, A, P, Q, F, G, C1, S1; ABSX:= ABS(X); if ABSX <= 1.2 then begin A:= X * X; X3:= A * X; X4:= A * A; P:= (((5.47711 38568 2687"-6 * X4 - 5.28079 65137 2623"-4) * X4 + 1.76193 95254 3491"-2) * X4 - 1.99460 89882 6184"-1) * X4 + 1; Q:= (((1.18938 90142 2876"-7 * X4 + 1.55237 88527 6994"-5) * X4 + 1.09957 21502 5642"-3) * X4 + 4.72792 11201 0453"-2) * X4 + 1; C:= X * P / Q; P:= (((6.71748 46662 5141"-7 * X4 - 8.45557 28435 2777"-5) * X4 + 3.87782 12346 3683"-3) * X4 - 7.07489 91514 4523"-2) * X4 + 5.23598 77559 8299"-1; Q:= (((5.95281 22767 8410"-8 * X4 + 9.62690 87593 9034"-6) * X4 + 8.17091 94215 2134"-4) * X4 + 4.11223 15114 2384"-2) * X4 + 1; S:= X3 * P / Q end else if ABSX <= 1.6 then begin A:= X * X; X3:= A * X; X4:= A * A; P:=((((-5.68293 31012 1871"-8 * X4 + 1.02365 43505 6106"-5) * X4 - 6.71376 03469 4922"-4) * X4 + 1.91870 27943 1747"-2) * X4 - 2.07073 36033 5324"-1) * X4 + 1.00000 00000 0111"+0; Q:=((((4.41701 37406 5010"-10 * X4 + 8.77945 37789 2369"-8) * X4 + 1.01344 63086 6749"-5) * X4 + 7.88905 24505 2360"-4) * X4 + 3.96667 49695 2323"-2) * X4 + 1; C:= X * P / Q; P:=((((-5.76765 81559 3089"-9 * X4 + 1.28531 04374 2725"-6) * X4 - 1.09540 02391 1435"-4) * X4 + 4.30730 52650 4367"-3) * X4 - 7.37766 91401 0191"-2) * X4 + 5.23598 77559 8344"-1; Q:=((((2.05539 12445 8580"-10 * X4 + 5.03090 58124 6612"-8) * X4 + 6.87086 26571 8620"-6) * X4 + 6.18224 62019 5473"-4) * X4 + 3.53398 34276 7472"-2) * X4 + 1; S:= X3 * P / Q end else if ABSX < "15 then begin FG(X, F, G); A:= X * X; A:= (A - ENTIER(A / 4) * 4) * 1.57079 63267 9490; C1:= COS(A); S1:= SIN(A); A:= if X < 0 then -0.5 else 0.5; C:= F * S1 - G * C1 + A; S:= -F * C1 - G * S1 + A end else C:= S:= SIGN(X) * 0.5 end FRESNEL; eop