jbarnette-johnson 1.0.0.200806240111 → 1.0.0.200807291507

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. data/MANIFEST +1 -0
  2. data/Rakefile +3 -10
  3. data/bin/johnson +2 -1
  4. data/ext/spidermonkey/context.c +3 -4
  5. data/ext/spidermonkey/context.h +1 -1
  6. data/ext/spidermonkey/conversions.c +39 -33
  7. data/ext/spidermonkey/debugger.c +5 -5
  8. data/ext/spidermonkey/immutable_node.c.erb +11 -11
  9. data/ext/spidermonkey/jroot.h +4 -4
  10. data/ext/spidermonkey/js_land_proxy.c +9 -8
  11. data/ext/spidermonkey/ruby_land_proxy.c +5 -4
  12. data/ext/spidermonkey/runtime.c +1 -1
  13. data/johnson.gemspec +36 -0
  14. data/lib/hoe.rb +0 -7
  15. data/lib/johnson/cli/options.rb +10 -4
  16. data/lib/johnson/spidermonkey/runtime.rb +2 -2
  17. data/lib/johnson/version.rb +4 -2
  18. data/lib/johnson.rb +1 -0
  19. data/test/johnson/runtime_test.rb +11 -0
  20. data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +6 -0
  21. data/vendor/spidermonkey/.cvsignore +9 -0
  22. data/vendor/spidermonkey/Makefile.in +462 -0
  23. data/vendor/spidermonkey/Makefile.ref +364 -0
  24. data/vendor/spidermonkey/README.html +820 -0
  25. data/vendor/spidermonkey/SpiderMonkey.rsp +12 -0
  26. data/vendor/spidermonkey/Y.js +19 -0
  27. data/vendor/spidermonkey/build.mk +43 -0
  28. data/vendor/spidermonkey/config/AIX4.1.mk +65 -0
  29. data/vendor/spidermonkey/config/AIX4.2.mk +64 -0
  30. data/vendor/spidermonkey/config/AIX4.3.mk +65 -0
  31. data/vendor/spidermonkey/config/Darwin.mk +83 -0
  32. data/vendor/spidermonkey/config/Darwin1.3.mk +81 -0
  33. data/vendor/spidermonkey/config/Darwin1.4.mk +41 -0
  34. data/vendor/spidermonkey/config/Darwin5.2.mk +81 -0
  35. data/vendor/spidermonkey/config/Darwin5.3.mk +81 -0
  36. data/vendor/spidermonkey/config/HP-UXB.10.10.mk +77 -0
  37. data/vendor/spidermonkey/config/HP-UXB.10.20.mk +77 -0
  38. data/vendor/spidermonkey/config/HP-UXB.11.00.mk +80 -0
  39. data/vendor/spidermonkey/config/IRIX.mk +87 -0
  40. data/vendor/spidermonkey/config/IRIX5.3.mk +44 -0
  41. data/vendor/spidermonkey/config/IRIX6.1.mk +44 -0
  42. data/vendor/spidermonkey/config/IRIX6.2.mk +44 -0
  43. data/vendor/spidermonkey/config/IRIX6.3.mk +44 -0
  44. data/vendor/spidermonkey/config/IRIX6.5.mk +44 -0
  45. data/vendor/spidermonkey/config/Linux_All.mk +103 -0
  46. data/vendor/spidermonkey/config/Mac_OS10.0.mk +82 -0
  47. data/vendor/spidermonkey/config/OSF1V4.0.mk +72 -0
  48. data/vendor/spidermonkey/config/OSF1V5.0.mk +69 -0
  49. data/vendor/spidermonkey/config/SunOS4.1.4.mk +101 -0
  50. data/vendor/spidermonkey/config/SunOS5.10.mk +50 -0
  51. data/vendor/spidermonkey/config/SunOS5.3.mk +91 -0
  52. data/vendor/spidermonkey/config/SunOS5.4.mk +92 -0
  53. data/vendor/spidermonkey/config/SunOS5.5.1.mk +44 -0
  54. data/vendor/spidermonkey/config/SunOS5.5.mk +87 -0
  55. data/vendor/spidermonkey/config/SunOS5.6.mk +89 -0
  56. data/vendor/spidermonkey/config/SunOS5.7.mk +44 -0
  57. data/vendor/spidermonkey/config/SunOS5.8.mk +44 -0
  58. data/vendor/spidermonkey/config/SunOS5.9.mk +44 -0
  59. data/vendor/spidermonkey/config/WINNT4.0.mk +117 -0
  60. data/vendor/spidermonkey/config/WINNT5.0.mk +117 -0
  61. data/vendor/spidermonkey/config/WINNT5.1.mk +117 -0
  62. data/vendor/spidermonkey/config/WINNT5.2.mk +117 -0
  63. data/vendor/spidermonkey/config/WINNT6.0.mk +117 -0
  64. data/vendor/spidermonkey/config/dgux.mk +64 -0
  65. data/vendor/spidermonkey/config.mk +192 -0
  66. data/vendor/spidermonkey/editline/Makefile.ref +144 -0
  67. data/vendor/spidermonkey/editline/README +83 -0
  68. data/vendor/spidermonkey/editline/editline.3 +175 -0
  69. data/vendor/spidermonkey/editline/editline.c +1369 -0
  70. data/vendor/spidermonkey/editline/editline.h +135 -0
  71. data/vendor/spidermonkey/editline/sysunix.c +182 -0
  72. data/vendor/spidermonkey/editline/unix.h +82 -0
  73. data/vendor/spidermonkey/fdlibm/.cvsignore +7 -0
  74. data/vendor/spidermonkey/fdlibm/Makefile.in +127 -0
  75. data/vendor/spidermonkey/fdlibm/Makefile.ref +192 -0
  76. data/vendor/spidermonkey/fdlibm/e_acos.c +147 -0
  77. data/vendor/spidermonkey/fdlibm/e_acosh.c +105 -0
  78. data/vendor/spidermonkey/fdlibm/e_asin.c +156 -0
  79. data/vendor/spidermonkey/fdlibm/e_atan2.c +165 -0
  80. data/vendor/spidermonkey/fdlibm/e_atanh.c +110 -0
  81. data/vendor/spidermonkey/fdlibm/e_cosh.c +133 -0
  82. data/vendor/spidermonkey/fdlibm/e_exp.c +202 -0
  83. data/vendor/spidermonkey/fdlibm/e_fmod.c +184 -0
  84. data/vendor/spidermonkey/fdlibm/e_gamma.c +71 -0
  85. data/vendor/spidermonkey/fdlibm/e_gamma_r.c +70 -0
  86. data/vendor/spidermonkey/fdlibm/e_hypot.c +173 -0
  87. data/vendor/spidermonkey/fdlibm/e_j0.c +524 -0
  88. data/vendor/spidermonkey/fdlibm/e_j1.c +523 -0
  89. data/vendor/spidermonkey/fdlibm/e_jn.c +315 -0
  90. data/vendor/spidermonkey/fdlibm/e_lgamma.c +71 -0
  91. data/vendor/spidermonkey/fdlibm/e_lgamma_r.c +347 -0
  92. data/vendor/spidermonkey/fdlibm/e_log.c +184 -0
  93. data/vendor/spidermonkey/fdlibm/e_log10.c +134 -0
  94. data/vendor/spidermonkey/fdlibm/e_pow.c +386 -0
  95. data/vendor/spidermonkey/fdlibm/e_rem_pio2.c +222 -0
  96. data/vendor/spidermonkey/fdlibm/e_remainder.c +120 -0
  97. data/vendor/spidermonkey/fdlibm/e_scalb.c +89 -0
  98. data/vendor/spidermonkey/fdlibm/e_sinh.c +122 -0
  99. data/vendor/spidermonkey/fdlibm/e_sqrt.c +497 -0
  100. data/vendor/spidermonkey/fdlibm/fdlibm.h +273 -0
  101. data/vendor/spidermonkey/fdlibm/fdlibm.mak +1453 -0
  102. data/vendor/spidermonkey/fdlibm/fdlibm.mdp +0 -0
  103. data/vendor/spidermonkey/fdlibm/k_cos.c +135 -0
  104. data/vendor/spidermonkey/fdlibm/k_rem_pio2.c +354 -0
  105. data/vendor/spidermonkey/fdlibm/k_sin.c +114 -0
  106. data/vendor/spidermonkey/fdlibm/k_standard.c +785 -0
  107. data/vendor/spidermonkey/fdlibm/k_tan.c +170 -0
  108. data/vendor/spidermonkey/fdlibm/s_asinh.c +101 -0
  109. data/vendor/spidermonkey/fdlibm/s_atan.c +175 -0
  110. data/vendor/spidermonkey/fdlibm/s_cbrt.c +133 -0
  111. data/vendor/spidermonkey/fdlibm/s_ceil.c +120 -0
  112. data/vendor/spidermonkey/fdlibm/s_copysign.c +72 -0
  113. data/vendor/spidermonkey/fdlibm/s_cos.c +118 -0
  114. data/vendor/spidermonkey/fdlibm/s_erf.c +356 -0
  115. data/vendor/spidermonkey/fdlibm/s_expm1.c +267 -0
  116. data/vendor/spidermonkey/fdlibm/s_fabs.c +70 -0
  117. data/vendor/spidermonkey/fdlibm/s_finite.c +71 -0
  118. data/vendor/spidermonkey/fdlibm/s_floor.c +121 -0
  119. data/vendor/spidermonkey/fdlibm/s_frexp.c +99 -0
  120. data/vendor/spidermonkey/fdlibm/s_ilogb.c +85 -0
  121. data/vendor/spidermonkey/fdlibm/s_isnan.c +74 -0
  122. data/vendor/spidermonkey/fdlibm/s_ldexp.c +66 -0
  123. data/vendor/spidermonkey/fdlibm/s_lib_version.c +73 -0
  124. data/vendor/spidermonkey/fdlibm/s_log1p.c +211 -0
  125. data/vendor/spidermonkey/fdlibm/s_logb.c +79 -0
  126. data/vendor/spidermonkey/fdlibm/s_matherr.c +64 -0
  127. data/vendor/spidermonkey/fdlibm/s_modf.c +132 -0
  128. data/vendor/spidermonkey/fdlibm/s_nextafter.c +124 -0
  129. data/vendor/spidermonkey/fdlibm/s_rint.c +131 -0
  130. data/vendor/spidermonkey/fdlibm/s_scalbn.c +107 -0
  131. data/vendor/spidermonkey/fdlibm/s_signgam.c +40 -0
  132. data/vendor/spidermonkey/fdlibm/s_significand.c +68 -0
  133. data/vendor/spidermonkey/fdlibm/s_sin.c +118 -0
  134. data/vendor/spidermonkey/fdlibm/s_tan.c +112 -0
  135. data/vendor/spidermonkey/fdlibm/s_tanh.c +122 -0
  136. data/vendor/spidermonkey/fdlibm/w_acos.c +78 -0
  137. data/vendor/spidermonkey/fdlibm/w_acosh.c +78 -0
  138. data/vendor/spidermonkey/fdlibm/w_asin.c +80 -0
  139. data/vendor/spidermonkey/fdlibm/w_atan2.c +79 -0
  140. data/vendor/spidermonkey/fdlibm/w_atanh.c +81 -0
  141. data/vendor/spidermonkey/fdlibm/w_cosh.c +77 -0
  142. data/vendor/spidermonkey/fdlibm/w_exp.c +88 -0
  143. data/vendor/spidermonkey/fdlibm/w_fmod.c +78 -0
  144. data/vendor/spidermonkey/fdlibm/w_gamma.c +85 -0
  145. data/vendor/spidermonkey/fdlibm/w_gamma_r.c +81 -0
  146. data/vendor/spidermonkey/fdlibm/w_hypot.c +78 -0
  147. data/vendor/spidermonkey/fdlibm/w_j0.c +105 -0
  148. data/vendor/spidermonkey/fdlibm/w_j1.c +106 -0
  149. data/vendor/spidermonkey/fdlibm/w_jn.c +128 -0
  150. data/vendor/spidermonkey/fdlibm/w_lgamma.c +85 -0
  151. data/vendor/spidermonkey/fdlibm/w_lgamma_r.c +81 -0
  152. data/vendor/spidermonkey/fdlibm/w_log.c +78 -0
  153. data/vendor/spidermonkey/fdlibm/w_log10.c +81 -0
  154. data/vendor/spidermonkey/fdlibm/w_pow.c +99 -0
  155. data/vendor/spidermonkey/fdlibm/w_remainder.c +77 -0
  156. data/vendor/spidermonkey/fdlibm/w_scalb.c +95 -0
  157. data/vendor/spidermonkey/fdlibm/w_sinh.c +77 -0
  158. data/vendor/spidermonkey/fdlibm/w_sqrt.c +77 -0
  159. data/vendor/spidermonkey/javascript-trace.d +73 -0
  160. data/vendor/spidermonkey/js.c +3951 -0
  161. data/vendor/spidermonkey/js.mak +4438 -0
  162. data/vendor/spidermonkey/js.mdp +0 -0
  163. data/vendor/spidermonkey/js.msg +307 -0
  164. data/vendor/spidermonkey/js.pkg +2 -0
  165. data/vendor/spidermonkey/js3240.rc +79 -0
  166. data/vendor/spidermonkey/jsOS240.def +654 -0
  167. data/vendor/spidermonkey/jsapi.c +5836 -0
  168. data/vendor/spidermonkey/jsapi.h +2624 -0
  169. data/vendor/spidermonkey/jsarena.c +450 -0
  170. data/vendor/spidermonkey/jsarena.h +318 -0
  171. data/vendor/spidermonkey/jsarray.c +2988 -0
  172. data/vendor/spidermonkey/jsarray.h +124 -0
  173. data/vendor/spidermonkey/jsatom.c +1045 -0
  174. data/vendor/spidermonkey/jsatom.h +442 -0
  175. data/vendor/spidermonkey/jsbit.h +253 -0
  176. data/vendor/spidermonkey/jsbool.c +176 -0
  177. data/vendor/spidermonkey/jsbool.h +73 -0
  178. data/vendor/spidermonkey/jsclist.h +139 -0
  179. data/vendor/spidermonkey/jscntxt.c +1348 -0
  180. data/vendor/spidermonkey/jscntxt.h +1120 -0
  181. data/vendor/spidermonkey/jscompat.h +57 -0
  182. data/vendor/spidermonkey/jsconfig.h +248 -0
  183. data/vendor/spidermonkey/jsconfig.mk +181 -0
  184. data/vendor/spidermonkey/jscpucfg.c +383 -0
  185. data/vendor/spidermonkey/jscpucfg.h +212 -0
  186. data/vendor/spidermonkey/jsdate.c +2398 -0
  187. data/vendor/spidermonkey/jsdate.h +124 -0
  188. data/vendor/spidermonkey/jsdbgapi.c +1799 -0
  189. data/vendor/spidermonkey/jsdbgapi.h +464 -0
  190. data/vendor/spidermonkey/jsdhash.c +868 -0
  191. data/vendor/spidermonkey/jsdhash.h +592 -0
  192. data/vendor/spidermonkey/jsdtoa.c +3167 -0
  193. data/vendor/spidermonkey/jsdtoa.h +130 -0
  194. data/vendor/spidermonkey/jsdtracef.c +317 -0
  195. data/vendor/spidermonkey/jsdtracef.h +77 -0
  196. data/vendor/spidermonkey/jsemit.c +6909 -0
  197. data/vendor/spidermonkey/jsemit.h +741 -0
  198. data/vendor/spidermonkey/jsexn.c +1371 -0
  199. data/vendor/spidermonkey/jsexn.h +96 -0
  200. data/vendor/spidermonkey/jsfile.c +2736 -0
  201. data/vendor/spidermonkey/jsfile.h +56 -0
  202. data/vendor/spidermonkey/jsfile.msg +90 -0
  203. data/vendor/spidermonkey/jsfun.c +2634 -0
  204. data/vendor/spidermonkey/jsfun.h +254 -0
  205. data/vendor/spidermonkey/jsgc.c +3554 -0
  206. data/vendor/spidermonkey/jsgc.h +403 -0
  207. data/vendor/spidermonkey/jshash.c +476 -0
  208. data/vendor/spidermonkey/jshash.h +151 -0
  209. data/vendor/spidermonkey/jsify.pl +485 -0
  210. data/vendor/spidermonkey/jsinterp.c +6981 -0
  211. data/vendor/spidermonkey/jsinterp.h +521 -0
  212. data/vendor/spidermonkey/jsinvoke.c +43 -0
  213. data/vendor/spidermonkey/jsiter.c +1067 -0
  214. data/vendor/spidermonkey/jsiter.h +122 -0
  215. data/vendor/spidermonkey/jskeyword.tbl +124 -0
  216. data/vendor/spidermonkey/jskwgen.c +460 -0
  217. data/vendor/spidermonkey/jslibmath.h +266 -0
  218. data/vendor/spidermonkey/jslock.c +1309 -0
  219. data/vendor/spidermonkey/jslock.h +313 -0
  220. data/vendor/spidermonkey/jslocko.asm +60 -0
  221. data/vendor/spidermonkey/jslog2.c +94 -0
  222. data/vendor/spidermonkey/jslong.c +264 -0
  223. data/vendor/spidermonkey/jslong.h +412 -0
  224. data/vendor/spidermonkey/jsmath.c +568 -0
  225. data/vendor/spidermonkey/jsmath.h +57 -0
  226. data/vendor/spidermonkey/jsnum.c +1228 -0
  227. data/vendor/spidermonkey/jsnum.h +283 -0
  228. data/vendor/spidermonkey/jsobj.c +5266 -0
  229. data/vendor/spidermonkey/jsobj.h +709 -0
  230. data/vendor/spidermonkey/jsopcode.c +5245 -0
  231. data/vendor/spidermonkey/jsopcode.h +394 -0
  232. data/vendor/spidermonkey/jsopcode.tbl +523 -0
  233. data/vendor/spidermonkey/jsotypes.h +202 -0
  234. data/vendor/spidermonkey/jsparse.c +6680 -0
  235. data/vendor/spidermonkey/jsparse.h +511 -0
  236. data/vendor/spidermonkey/jsprf.c +1262 -0
  237. data/vendor/spidermonkey/jsprf.h +150 -0
  238. data/vendor/spidermonkey/jsproto.tbl +128 -0
  239. data/vendor/spidermonkey/jsprvtd.h +267 -0
  240. data/vendor/spidermonkey/jspubtd.h +744 -0
  241. data/vendor/spidermonkey/jsregexp.c +4352 -0
  242. data/vendor/spidermonkey/jsregexp.h +183 -0
  243. data/vendor/spidermonkey/jsreops.tbl +145 -0
  244. data/vendor/spidermonkey/jsscan.c +2003 -0
  245. data/vendor/spidermonkey/jsscan.h +387 -0
  246. data/vendor/spidermonkey/jsscope.c +1948 -0
  247. data/vendor/spidermonkey/jsscope.h +418 -0
  248. data/vendor/spidermonkey/jsscript.c +1832 -0
  249. data/vendor/spidermonkey/jsscript.h +287 -0
  250. data/vendor/spidermonkey/jsshell.msg +50 -0
  251. data/vendor/spidermonkey/jsstddef.h +83 -0
  252. data/vendor/spidermonkey/jsstr.c +5004 -0
  253. data/vendor/spidermonkey/jsstr.h +641 -0
  254. data/vendor/spidermonkey/jstypes.h +475 -0
  255. data/vendor/spidermonkey/jsutil.c +345 -0
  256. data/vendor/spidermonkey/jsutil.h +157 -0
  257. data/vendor/spidermonkey/jsxdrapi.c +800 -0
  258. data/vendor/spidermonkey/jsxdrapi.h +218 -0
  259. data/vendor/spidermonkey/jsxml.c +8471 -0
  260. data/vendor/spidermonkey/jsxml.h +349 -0
  261. data/vendor/spidermonkey/lock_SunOS.s +119 -0
  262. data/vendor/spidermonkey/perfect.js +39 -0
  263. data/vendor/spidermonkey/plify_jsdhash.sed +36 -0
  264. data/vendor/spidermonkey/prmjtime.c +846 -0
  265. data/vendor/spidermonkey/prmjtime.h +103 -0
  266. data/vendor/spidermonkey/resource.h +15 -0
  267. data/vendor/spidermonkey/rules.mk +197 -0
  268. data/vendor/spidermonkey/win32.order +384 -0
  269. metadata +4 -3
@@ -0,0 +1,523 @@
1
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Mozilla Communicator client code, released
17
+ * March 31, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Sun Microsystems, Inc.
21
+ * Portions created by the Initial Developer are Copyright (C) 1998
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ *
26
+ * Alternatively, the contents of this file may be used under the terms of
27
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
28
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
+ * in which case the provisions of the GPL or the LGPL are applicable instead
30
+ * of those above. If you wish to allow use of your version of this file only
31
+ * under the terms of either the GPL or the LGPL, and not to allow others to
32
+ * use your version of this file under the terms of the MPL, indicate your
33
+ * decision by deleting the provisions above and replace them with the notice
34
+ * and other provisions required by the GPL or the LGPL. If you do not delete
35
+ * the provisions above, a recipient may use your version of this file under
36
+ * the terms of any one of the MPL, the GPL or the LGPL.
37
+ *
38
+ * ***** END LICENSE BLOCK ***** */
39
+
40
+ /* @(#)e_j1.c 1.3 95/01/18 */
41
+ /*
42
+ * ====================================================
43
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
44
+ *
45
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
46
+ * Permission to use, copy, modify, and distribute this
47
+ * software is freely granted, provided that this notice
48
+ * is preserved.
49
+ * ====================================================
50
+ */
51
+
52
+ /* __ieee754_j1(x), __ieee754_y1(x)
53
+ * Bessel function of the first and second kinds of order zero.
54
+ * Method -- j1(x):
55
+ * 1. For tiny x, we use j1(x) = x/2 - x^3/16 + x^5/384 - ...
56
+ * 2. Reduce x to |x| since j1(x)=-j1(-x), and
57
+ * for x in (0,2)
58
+ * j1(x) = x/2 + x*z*R0/S0, where z = x*x;
59
+ * (precision: |j1/x - 1/2 - R0/S0 |<2**-61.51 )
60
+ * for x in (2,inf)
61
+ * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x1)-q1(x)*sin(x1))
62
+ * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
63
+ * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
64
+ * as follow:
65
+ * cos(x1) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
66
+ * = 1/sqrt(2) * (sin(x) - cos(x))
67
+ * sin(x1) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
68
+ * = -1/sqrt(2) * (sin(x) + cos(x))
69
+ * (To avoid cancellation, use
70
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
71
+ * to compute the worse one.)
72
+ *
73
+ * 3 Special cases
74
+ * j1(nan)= nan
75
+ * j1(0) = 0
76
+ * j1(inf) = 0
77
+ *
78
+ * Method -- y1(x):
79
+ * 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN
80
+ * 2. For x<2.
81
+ * Since
82
+ * y1(x) = 2/pi*(j1(x)*(ln(x/2)+Euler)-1/x-x/2+5/64*x^3-...)
83
+ * therefore y1(x)-2/pi*j1(x)*ln(x)-1/x is an odd function.
84
+ * We use the following function to approximate y1,
85
+ * y1(x) = x*U(z)/V(z) + (2/pi)*(j1(x)*ln(x)-1/x), z= x^2
86
+ * where for x in [0,2] (abs err less than 2**-65.89)
87
+ * U(z) = U0[0] + U0[1]*z + ... + U0[4]*z^4
88
+ * V(z) = 1 + v0[0]*z + ... + v0[4]*z^5
89
+ * Note: For tiny x, 1/x dominate y1 and hence
90
+ * y1(tiny) = -2/pi/tiny, (choose tiny<2**-54)
91
+ * 3. For x>=2.
92
+ * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
93
+ * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
94
+ * by method mentioned above.
95
+ */
96
+
97
+ #include "fdlibm.h"
98
+
99
+ #ifdef __STDC__
100
+ static double pone(double), qone(double);
101
+ #else
102
+ static double pone(), qone();
103
+ #endif
104
+
105
+ #ifdef __STDC__
106
+ static const double
107
+ #else
108
+ static double
109
+ #endif
110
+ really_big = 1e300,
111
+ one = 1.0,
112
+ invsqrtpi= 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
113
+ tpi = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
114
+ /* R0/S0 on [0,2] */
115
+ r00 = -6.25000000000000000000e-02, /* 0xBFB00000, 0x00000000 */
116
+ r01 = 1.40705666955189706048e-03, /* 0x3F570D9F, 0x98472C61 */
117
+ r02 = -1.59955631084035597520e-05, /* 0xBEF0C5C6, 0xBA169668 */
118
+ r03 = 4.96727999609584448412e-08, /* 0x3E6AAAFA, 0x46CA0BD9 */
119
+ s01 = 1.91537599538363460805e-02, /* 0x3F939D0B, 0x12637E53 */
120
+ s02 = 1.85946785588630915560e-04, /* 0x3F285F56, 0xB9CDF664 */
121
+ s03 = 1.17718464042623683263e-06, /* 0x3EB3BFF8, 0x333F8498 */
122
+ s04 = 5.04636257076217042715e-09, /* 0x3E35AC88, 0xC97DFF2C */
123
+ s05 = 1.23542274426137913908e-11; /* 0x3DAB2ACF, 0xCFB97ED8 */
124
+
125
+ static double zero = 0.0;
126
+
127
+ #ifdef __STDC__
128
+ double __ieee754_j1(double x)
129
+ #else
130
+ double __ieee754_j1(x)
131
+ double x;
132
+ #endif
133
+ {
134
+ fd_twoints un;
135
+ double z, s,c,ss,cc,r,u,v,y;
136
+ int hx,ix;
137
+
138
+ un.d = x;
139
+ hx = __HI(un);
140
+ ix = hx&0x7fffffff;
141
+ if(ix>=0x7ff00000) return one/x;
142
+ y = fd_fabs(x);
143
+ if(ix >= 0x40000000) { /* |x| >= 2.0 */
144
+ s = fd_sin(y);
145
+ c = fd_cos(y);
146
+ ss = -s-c;
147
+ cc = s-c;
148
+ if(ix<0x7fe00000) { /* make sure y+y not overflow */
149
+ z = fd_cos(y+y);
150
+ if ((s*c)>zero) cc = z/ss;
151
+ else ss = z/cc;
152
+ }
153
+ /*
154
+ * j1(x) = 1/sqrt(pi) * (P(1,x)*cc - Q(1,x)*ss) / sqrt(x)
155
+ * y1(x) = 1/sqrt(pi) * (P(1,x)*ss + Q(1,x)*cc) / sqrt(x)
156
+ */
157
+ if(ix>0x48000000) z = (invsqrtpi*cc)/fd_sqrt(y);
158
+ else {
159
+ u = pone(y); v = qone(y);
160
+ z = invsqrtpi*(u*cc-v*ss)/fd_sqrt(y);
161
+ }
162
+ if(hx<0) return -z;
163
+ else return z;
164
+ }
165
+ if(ix<0x3e400000) { /* |x|<2**-27 */
166
+ if(really_big+x>one) return 0.5*x;/* inexact if x!=0 necessary */
167
+ }
168
+ z = x*x;
169
+ r = z*(r00+z*(r01+z*(r02+z*r03)));
170
+ s = one+z*(s01+z*(s02+z*(s03+z*(s04+z*s05))));
171
+ r *= x;
172
+ return(x*0.5+r/s);
173
+ }
174
+
175
+ #ifdef __STDC__
176
+ static const double U0[5] = {
177
+ #else
178
+ static double U0[5] = {
179
+ #endif
180
+ -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
181
+ 5.04438716639811282616e-02, /* 0x3FA9D3C7, 0x76292CD1 */
182
+ -1.91256895875763547298e-03, /* 0xBF5F55E5, 0x4844F50F */
183
+ 2.35252600561610495928e-05, /* 0x3EF8AB03, 0x8FA6B88E */
184
+ -9.19099158039878874504e-08, /* 0xBE78AC00, 0x569105B8 */
185
+ };
186
+ #ifdef __STDC__
187
+ static const double V0[5] = {
188
+ #else
189
+ static double V0[5] = {
190
+ #endif
191
+ 1.99167318236649903973e-02, /* 0x3F94650D, 0x3F4DA9F0 */
192
+ 2.02552581025135171496e-04, /* 0x3F2A8C89, 0x6C257764 */
193
+ 1.35608801097516229404e-06, /* 0x3EB6C05A, 0x894E8CA6 */
194
+ 6.22741452364621501295e-09, /* 0x3E3ABF1D, 0x5BA69A86 */
195
+ 1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
196
+ };
197
+
198
+ #ifdef __STDC__
199
+ double __ieee754_y1(double x)
200
+ #else
201
+ double __ieee754_y1(x)
202
+ double x;
203
+ #endif
204
+ {
205
+ fd_twoints un;
206
+ double z, s,c,ss,cc,u,v;
207
+ int hx,ix,lx;
208
+
209
+ un.d = x;
210
+ hx = __HI(un);
211
+ ix = 0x7fffffff&hx;
212
+ lx = __LO(un);
213
+ /* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
214
+ if(ix>=0x7ff00000) return one/(x+x*x);
215
+ if((ix|lx)==0) return -one/zero;
216
+ if(hx<0) return zero/zero;
217
+ if(ix >= 0x40000000) { /* |x| >= 2.0 */
218
+ s = fd_sin(x);
219
+ c = fd_cos(x);
220
+ ss = -s-c;
221
+ cc = s-c;
222
+ if(ix<0x7fe00000) { /* make sure x+x not overflow */
223
+ z = fd_cos(x+x);
224
+ if ((s*c)>zero) cc = z/ss;
225
+ else ss = z/cc;
226
+ }
227
+ /* y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x0)+q1(x)*cos(x0))
228
+ * where x0 = x-3pi/4
229
+ * Better formula:
230
+ * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
231
+ * = 1/sqrt(2) * (sin(x) - cos(x))
232
+ * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
233
+ * = -1/sqrt(2) * (cos(x) + sin(x))
234
+ * To avoid cancellation, use
235
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
236
+ * to compute the worse one.
237
+ */
238
+ if(ix>0x48000000) z = (invsqrtpi*ss)/fd_sqrt(x);
239
+ else {
240
+ u = pone(x); v = qone(x);
241
+ z = invsqrtpi*(u*ss+v*cc)/fd_sqrt(x);
242
+ }
243
+ return z;
244
+ }
245
+ if(ix<=0x3c900000) { /* x < 2**-54 */
246
+ return(-tpi/x);
247
+ }
248
+ z = x*x;
249
+ u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4])));
250
+ v = one+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4]))));
251
+ return(x*(u/v) + tpi*(__ieee754_j1(x)*__ieee754_log(x)-one/x));
252
+ }
253
+
254
+ /* For x >= 8, the asymptotic expansions of pone is
255
+ * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x.
256
+ * We approximate pone by
257
+ * pone(x) = 1 + (R/S)
258
+ * where R = pr0 + pr1*s^2 + pr2*s^4 + ... + pr5*s^10
259
+ * S = 1 + ps0*s^2 + ... + ps4*s^10
260
+ * and
261
+ * | pone(x)-1-R/S | <= 2 ** ( -60.06)
262
+ */
263
+
264
+ #ifdef __STDC__
265
+ static const double pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
266
+ #else
267
+ static double pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
268
+ #endif
269
+ 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
270
+ 1.17187499999988647970e-01, /* 0x3FBDFFFF, 0xFFFFFCCE */
271
+ 1.32394806593073575129e+01, /* 0x402A7A9D, 0x357F7FCE */
272
+ 4.12051854307378562225e+02, /* 0x4079C0D4, 0x652EA590 */
273
+ 3.87474538913960532227e+03, /* 0x40AE457D, 0xA3A532CC */
274
+ 7.91447954031891731574e+03, /* 0x40BEEA7A, 0xC32782DD */
275
+ };
276
+ #ifdef __STDC__
277
+ static const double ps8[5] = {
278
+ #else
279
+ static double ps8[5] = {
280
+ #endif
281
+ 1.14207370375678408436e+02, /* 0x405C8D45, 0x8E656CAC */
282
+ 3.65093083420853463394e+03, /* 0x40AC85DC, 0x964D274F */
283
+ 3.69562060269033463555e+04, /* 0x40E20B86, 0x97C5BB7F */
284
+ 9.76027935934950801311e+04, /* 0x40F7D42C, 0xB28F17BB */
285
+ 3.08042720627888811578e+04, /* 0x40DE1511, 0x697A0B2D */
286
+ };
287
+
288
+ #ifdef __STDC__
289
+ static const double pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
290
+ #else
291
+ static double pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
292
+ #endif
293
+ 1.31990519556243522749e-11, /* 0x3DAD0667, 0xDAE1CA7D */
294
+ 1.17187493190614097638e-01, /* 0x3FBDFFFF, 0xE2C10043 */
295
+ 6.80275127868432871736e+00, /* 0x401B3604, 0x6E6315E3 */
296
+ 1.08308182990189109773e+02, /* 0x405B13B9, 0x452602ED */
297
+ 5.17636139533199752805e+02, /* 0x40802D16, 0xD052D649 */
298
+ 5.28715201363337541807e+02, /* 0x408085B8, 0xBB7E0CB7 */
299
+ };
300
+ #ifdef __STDC__
301
+ static const double ps5[5] = {
302
+ #else
303
+ static double ps5[5] = {
304
+ #endif
305
+ 5.92805987221131331921e+01, /* 0x404DA3EA, 0xA8AF633D */
306
+ 9.91401418733614377743e+02, /* 0x408EFB36, 0x1B066701 */
307
+ 5.35326695291487976647e+03, /* 0x40B4E944, 0x5706B6FB */
308
+ 7.84469031749551231769e+03, /* 0x40BEA4B0, 0xB8A5BB15 */
309
+ 1.50404688810361062679e+03, /* 0x40978030, 0x036F5E51 */
310
+ };
311
+
312
+ #ifdef __STDC__
313
+ static const double pr3[6] = {
314
+ #else
315
+ static double pr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
316
+ #endif
317
+ 3.02503916137373618024e-09, /* 0x3E29FC21, 0xA7AD9EDD */
318
+ 1.17186865567253592491e-01, /* 0x3FBDFFF5, 0x5B21D17B */
319
+ 3.93297750033315640650e+00, /* 0x400F76BC, 0xE85EAD8A */
320
+ 3.51194035591636932736e+01, /* 0x40418F48, 0x9DA6D129 */
321
+ 9.10550110750781271918e+01, /* 0x4056C385, 0x4D2C1837 */
322
+ 4.85590685197364919645e+01, /* 0x4048478F, 0x8EA83EE5 */
323
+ };
324
+ #ifdef __STDC__
325
+ static const double ps3[5] = {
326
+ #else
327
+ static double ps3[5] = {
328
+ #endif
329
+ 3.47913095001251519989e+01, /* 0x40416549, 0xA134069C */
330
+ 3.36762458747825746741e+02, /* 0x40750C33, 0x07F1A75F */
331
+ 1.04687139975775130551e+03, /* 0x40905B7C, 0x5037D523 */
332
+ 8.90811346398256432622e+02, /* 0x408BD67D, 0xA32E31E9 */
333
+ 1.03787932439639277504e+02, /* 0x4059F26D, 0x7C2EED53 */
334
+ };
335
+
336
+ #ifdef __STDC__
337
+ static const double pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
338
+ #else
339
+ static double pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
340
+ #endif
341
+ 1.07710830106873743082e-07, /* 0x3E7CE9D4, 0xF65544F4 */
342
+ 1.17176219462683348094e-01, /* 0x3FBDFF42, 0xBE760D83 */
343
+ 2.36851496667608785174e+00, /* 0x4002F2B7, 0xF98FAEC0 */
344
+ 1.22426109148261232917e+01, /* 0x40287C37, 0x7F71A964 */
345
+ 1.76939711271687727390e+01, /* 0x4031B1A8, 0x177F8EE2 */
346
+ 5.07352312588818499250e+00, /* 0x40144B49, 0xA574C1FE */
347
+ };
348
+ #ifdef __STDC__
349
+ static const double ps2[5] = {
350
+ #else
351
+ static double ps2[5] = {
352
+ #endif
353
+ 2.14364859363821409488e+01, /* 0x40356FBD, 0x8AD5ECDC */
354
+ 1.25290227168402751090e+02, /* 0x405F5293, 0x14F92CD5 */
355
+ 2.32276469057162813669e+02, /* 0x406D08D8, 0xD5A2DBD9 */
356
+ 1.17679373287147100768e+02, /* 0x405D6B7A, 0xDA1884A9 */
357
+ 8.36463893371618283368e+00, /* 0x4020BAB1, 0xF44E5192 */
358
+ };
359
+
360
+ #ifdef __STDC__
361
+ static double pone(double x)
362
+ #else
363
+ static double pone(x)
364
+ double x;
365
+ #endif
366
+ {
367
+ #ifdef __STDC__
368
+ const double *p,*q;
369
+ #else
370
+ double *p,*q;
371
+ #endif
372
+ fd_twoints un;
373
+ double z,r,s;
374
+ int ix;
375
+ un.d = x;
376
+ ix = 0x7fffffff&__HI(un);
377
+ if(ix>=0x40200000) {p = pr8; q= ps8;}
378
+ else if(ix>=0x40122E8B){p = pr5; q= ps5;}
379
+ else if(ix>=0x4006DB6D){p = pr3; q= ps3;}
380
+ else if(ix>=0x40000000){p = pr2; q= ps2;}
381
+ z = one/(x*x);
382
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
383
+ s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
384
+ return one+ r/s;
385
+ }
386
+
387
+
388
+ /* For x >= 8, the asymptotic expansions of qone is
389
+ * 3/8 s - 105/1024 s^3 - ..., where s = 1/x.
390
+ * We approximate pone by
391
+ * qone(x) = s*(0.375 + (R/S))
392
+ * where R = qr1*s^2 + qr2*s^4 + ... + qr5*s^10
393
+ * S = 1 + qs1*s^2 + ... + qs6*s^12
394
+ * and
395
+ * | qone(x)/s -0.375-R/S | <= 2 ** ( -61.13)
396
+ */
397
+
398
+ #ifdef __STDC__
399
+ static const double qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
400
+ #else
401
+ static double qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
402
+ #endif
403
+ 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
404
+ -1.02539062499992714161e-01, /* 0xBFBA3FFF, 0xFFFFFDF3 */
405
+ -1.62717534544589987888e+01, /* 0xC0304591, 0xA26779F7 */
406
+ -7.59601722513950107896e+02, /* 0xC087BCD0, 0x53E4B576 */
407
+ -1.18498066702429587167e+04, /* 0xC0C724E7, 0x40F87415 */
408
+ -4.84385124285750353010e+04, /* 0xC0E7A6D0, 0x65D09C6A */
409
+ };
410
+ #ifdef __STDC__
411
+ static const double qs8[6] = {
412
+ #else
413
+ static double qs8[6] = {
414
+ #endif
415
+ 1.61395369700722909556e+02, /* 0x40642CA6, 0xDE5BCDE5 */
416
+ 7.82538599923348465381e+03, /* 0x40BE9162, 0xD0D88419 */
417
+ 1.33875336287249578163e+05, /* 0x4100579A, 0xB0B75E98 */
418
+ 7.19657723683240939863e+05, /* 0x4125F653, 0x72869C19 */
419
+ 6.66601232617776375264e+05, /* 0x412457D2, 0x7719AD5C */
420
+ -2.94490264303834643215e+05, /* 0xC111F969, 0x0EA5AA18 */
421
+ };
422
+
423
+ #ifdef __STDC__
424
+ static const double qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
425
+ #else
426
+ static double qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
427
+ #endif
428
+ -2.08979931141764104297e-11, /* 0xBDB6FA43, 0x1AA1A098 */
429
+ -1.02539050241375426231e-01, /* 0xBFBA3FFF, 0xCB597FEF */
430
+ -8.05644828123936029840e+00, /* 0xC0201CE6, 0xCA03AD4B */
431
+ -1.83669607474888380239e+02, /* 0xC066F56D, 0x6CA7B9B0 */
432
+ -1.37319376065508163265e+03, /* 0xC09574C6, 0x6931734F */
433
+ -2.61244440453215656817e+03, /* 0xC0A468E3, 0x88FDA79D */
434
+ };
435
+ #ifdef __STDC__
436
+ static const double qs5[6] = {
437
+ #else
438
+ static double qs5[6] = {
439
+ #endif
440
+ 8.12765501384335777857e+01, /* 0x405451B2, 0xFF5A11B2 */
441
+ 1.99179873460485964642e+03, /* 0x409F1F31, 0xE77BF839 */
442
+ 1.74684851924908907677e+04, /* 0x40D10F1F, 0x0D64CE29 */
443
+ 4.98514270910352279316e+04, /* 0x40E8576D, 0xAABAD197 */
444
+ 2.79480751638918118260e+04, /* 0x40DB4B04, 0xCF7C364B */
445
+ -4.71918354795128470869e+03, /* 0xC0B26F2E, 0xFCFFA004 */
446
+ };
447
+
448
+ #ifdef __STDC__
449
+ static const double qr3[6] = {
450
+ #else
451
+ static double qr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
452
+ #endif
453
+ -5.07831226461766561369e-09, /* 0xBE35CFA9, 0xD38FC84F */
454
+ -1.02537829820837089745e-01, /* 0xBFBA3FEB, 0x51AEED54 */
455
+ -4.61011581139473403113e+00, /* 0xC01270C2, 0x3302D9FF */
456
+ -5.78472216562783643212e+01, /* 0xC04CEC71, 0xC25D16DA */
457
+ -2.28244540737631695038e+02, /* 0xC06C87D3, 0x4718D55F */
458
+ -2.19210128478909325622e+02, /* 0xC06B66B9, 0x5F5C1BF6 */
459
+ };
460
+ #ifdef __STDC__
461
+ static const double qs3[6] = {
462
+ #else
463
+ static double qs3[6] = {
464
+ #endif
465
+ 4.76651550323729509273e+01, /* 0x4047D523, 0xCCD367E4 */
466
+ 6.73865112676699709482e+02, /* 0x40850EEB, 0xC031EE3E */
467
+ 3.38015286679526343505e+03, /* 0x40AA684E, 0x448E7C9A */
468
+ 5.54772909720722782367e+03, /* 0x40B5ABBA, 0xA61D54A6 */
469
+ 1.90311919338810798763e+03, /* 0x409DBC7A, 0x0DD4DF4B */
470
+ -1.35201191444307340817e+02, /* 0xC060E670, 0x290A311F */
471
+ };
472
+
473
+ #ifdef __STDC__
474
+ static const double qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
475
+ #else
476
+ static double qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
477
+ #endif
478
+ -1.78381727510958865572e-07, /* 0xBE87F126, 0x44C626D2 */
479
+ -1.02517042607985553460e-01, /* 0xBFBA3E8E, 0x9148B010 */
480
+ -2.75220568278187460720e+00, /* 0xC0060484, 0x69BB4EDA */
481
+ -1.96636162643703720221e+01, /* 0xC033A9E2, 0xC168907F */
482
+ -4.23253133372830490089e+01, /* 0xC04529A3, 0xDE104AAA */
483
+ -2.13719211703704061733e+01, /* 0xC0355F36, 0x39CF6E52 */
484
+ };
485
+ #ifdef __STDC__
486
+ static const double qs2[6] = {
487
+ #else
488
+ static double qs2[6] = {
489
+ #endif
490
+ 2.95333629060523854548e+01, /* 0x403D888A, 0x78AE64FF */
491
+ 2.52981549982190529136e+02, /* 0x406F9F68, 0xDB821CBA */
492
+ 7.57502834868645436472e+02, /* 0x4087AC05, 0xCE49A0F7 */
493
+ 7.39393205320467245656e+02, /* 0x40871B25, 0x48D4C029 */
494
+ 1.55949003336666123687e+02, /* 0x40637E5E, 0x3C3ED8D4 */
495
+ -4.95949898822628210127e+00, /* 0xC013D686, 0xE71BE86B */
496
+ };
497
+
498
+ #ifdef __STDC__
499
+ static double qone(double x)
500
+ #else
501
+ static double qone(x)
502
+ double x;
503
+ #endif
504
+ {
505
+ #ifdef __STDC__
506
+ const double *p,*q;
507
+ #else
508
+ double *p,*q;
509
+ #endif
510
+ fd_twoints un;
511
+ double s,r,z;
512
+ int ix;
513
+ un.d = x;
514
+ ix = 0x7fffffff&__HI(un);
515
+ if(ix>=0x40200000) {p = qr8; q= qs8;}
516
+ else if(ix>=0x40122E8B){p = qr5; q= qs5;}
517
+ else if(ix>=0x4006DB6D){p = qr3; q= qs3;}
518
+ else if(ix>=0x40000000){p = qr2; q= qs2;}
519
+ z = one/(x*x);
520
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
521
+ s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
522
+ return (.375 + r/s)/x;
523
+ }