ngsolve 6.2.2506.post74.dev0__cp314-cp314-macosx_10_15_universal2.whl
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.
Potentially problematic release.
This version of ngsolve might be problematic. Click here for more details.
- netgen/include/analytic_integrals.hpp +10 -0
- netgen/include/arnoldi.hpp +55 -0
- netgen/include/bandmatrix.hpp +334 -0
- netgen/include/basematrix.hpp +957 -0
- netgen/include/basevector.hpp +1268 -0
- netgen/include/bdbequations.hpp +2805 -0
- netgen/include/bdbintegrator.hpp +1660 -0
- netgen/include/bem_diffops.hpp +475 -0
- netgen/include/bessel.hpp +1064 -0
- netgen/include/bilinearform.hpp +963 -0
- netgen/include/bla.hpp +29 -0
- netgen/include/blockalloc.hpp +95 -0
- netgen/include/blockjacobi.hpp +328 -0
- netgen/include/bspline.hpp +116 -0
- netgen/include/calcinverse.hpp +141 -0
- netgen/include/cg.hpp +368 -0
- netgen/include/chebyshev.hpp +44 -0
- netgen/include/cholesky.hpp +720 -0
- netgen/include/clapack.h +7254 -0
- netgen/include/code_generation.hpp +296 -0
- netgen/include/coefficient.hpp +2033 -0
- netgen/include/coefficient_impl.hpp +19 -0
- netgen/include/coefficient_stdmath.hpp +167 -0
- netgen/include/commutingAMG.hpp +106 -0
- netgen/include/comp.hpp +79 -0
- netgen/include/compatibility.hpp +41 -0
- netgen/include/complex_wrapper.hpp +73 -0
- netgen/include/compressedfespace.hpp +110 -0
- netgen/include/contact.hpp +235 -0
- netgen/include/diagonalmatrix.hpp +154 -0
- netgen/include/differentialoperator.hpp +276 -0
- netgen/include/diffop.hpp +1286 -0
- netgen/include/diffop_impl.hpp +328 -0
- netgen/include/diffopwithfactor.hpp +123 -0
- netgen/include/discontinuous.hpp +84 -0
- netgen/include/dump.hpp +949 -0
- netgen/include/ectypes.hpp +121 -0
- netgen/include/eigen.hpp +60 -0
- netgen/include/eigensystem.hpp +18 -0
- netgen/include/elasticity_equations.hpp +595 -0
- netgen/include/elementbyelement.hpp +195 -0
- netgen/include/elementtopology.hpp +1760 -0
- netgen/include/elementtransformation.hpp +339 -0
- netgen/include/evalfunc.hpp +405 -0
- netgen/include/expr.hpp +1686 -0
- netgen/include/facetfe.hpp +175 -0
- netgen/include/facetfespace.hpp +180 -0
- netgen/include/facethofe.hpp +111 -0
- netgen/include/facetsurffespace.hpp +112 -0
- netgen/include/fe_interfaces.hpp +32 -0
- netgen/include/fem.hpp +87 -0
- netgen/include/fesconvert.hpp +14 -0
- netgen/include/fespace.hpp +1449 -0
- netgen/include/finiteelement.hpp +286 -0
- netgen/include/globalinterfacespace.hpp +77 -0
- netgen/include/globalspace.hpp +115 -0
- netgen/include/gridfunction.hpp +525 -0
- netgen/include/h1amg.hpp +124 -0
- netgen/include/h1hofe.hpp +188 -0
- netgen/include/h1hofe_impl.hpp +1262 -0
- netgen/include/h1hofefo.hpp +148 -0
- netgen/include/h1hofefo_impl.hpp +185 -0
- netgen/include/h1hofespace.hpp +167 -0
- netgen/include/h1lofe.hpp +1240 -0
- netgen/include/h1lumping.hpp +41 -0
- netgen/include/hcurl_equations.hpp +1381 -0
- netgen/include/hcurlcurlfe.hpp +2241 -0
- netgen/include/hcurlcurlfespace.hpp +78 -0
- netgen/include/hcurlfe.hpp +259 -0
- netgen/include/hcurlfe_utils.hpp +107 -0
- netgen/include/hcurlhdiv_dshape.hpp +857 -0
- netgen/include/hcurlhdivfes.hpp +308 -0
- netgen/include/hcurlhofe.hpp +175 -0
- netgen/include/hcurlhofe_impl.hpp +1871 -0
- netgen/include/hcurlhofespace.hpp +193 -0
- netgen/include/hcurllofe.hpp +1146 -0
- netgen/include/hdiv_equations.hpp +880 -0
- netgen/include/hdivdivfe.hpp +2923 -0
- netgen/include/hdivdivsurfacespace.hpp +76 -0
- netgen/include/hdivfe.hpp +206 -0
- netgen/include/hdivfe_utils.hpp +717 -0
- netgen/include/hdivfes.hpp +75 -0
- netgen/include/hdivhofe.hpp +447 -0
- netgen/include/hdivhofe_impl.hpp +1107 -0
- netgen/include/hdivhofefo.hpp +229 -0
- netgen/include/hdivhofespace.hpp +177 -0
- netgen/include/hdivhosurfacefespace.hpp +106 -0
- netgen/include/hdivlofe.hpp +773 -0
- netgen/include/hidden.hpp +74 -0
- netgen/include/householder.hpp +181 -0
- netgen/include/hypre_ams_precond.hpp +123 -0
- netgen/include/hypre_precond.hpp +73 -0
- netgen/include/integrator.hpp +2012 -0
- netgen/include/integratorcf.hpp +253 -0
- netgen/include/interpolate.hpp +49 -0
- netgen/include/intrule.hpp +2542 -0
- netgen/include/intrules_SauterSchwab.hpp +25 -0
- netgen/include/irspace.hpp +49 -0
- netgen/include/jacobi.hpp +153 -0
- netgen/include/kernels.hpp +762 -0
- netgen/include/l2hofe.hpp +194 -0
- netgen/include/l2hofe_impl.hpp +564 -0
- netgen/include/l2hofefo.hpp +542 -0
- netgen/include/l2hofespace.hpp +344 -0
- netgen/include/la.hpp +38 -0
- netgen/include/linearform.hpp +266 -0
- netgen/include/matrix.hpp +2140 -0
- netgen/include/memusage.hpp +41 -0
- netgen/include/meshaccess.hpp +1359 -0
- netgen/include/mgpre.hpp +204 -0
- netgen/include/mp_coefficient.hpp +145 -0
- netgen/include/mptools.hpp +2281 -0
- netgen/include/multigrid.hpp +42 -0
- netgen/include/multivector.hpp +447 -0
- netgen/include/mumpsinverse.hpp +187 -0
- netgen/include/mycomplex.hpp +361 -0
- netgen/include/ng_lapack.hpp +1661 -0
- netgen/include/ngblas.hpp +1232 -0
- netgen/include/ngs_defines.hpp +30 -0
- netgen/include/ngs_stdcpp_include.hpp +106 -0
- netgen/include/ngs_utils.hpp +121 -0
- netgen/include/ngsobject.hpp +1019 -0
- netgen/include/ngsstream.hpp +113 -0
- netgen/include/ngstd.hpp +72 -0
- netgen/include/nodalhofe.hpp +96 -0
- netgen/include/nodalhofe_impl.hpp +141 -0
- netgen/include/normalfacetfe.hpp +223 -0
- netgen/include/normalfacetfespace.hpp +98 -0
- netgen/include/normalfacetsurfacefespace.hpp +84 -0
- netgen/include/order.hpp +251 -0
- netgen/include/parallel_matrices.hpp +222 -0
- netgen/include/paralleldofs.hpp +340 -0
- netgen/include/parallelngs.hpp +23 -0
- netgen/include/parallelvector.hpp +269 -0
- netgen/include/pardisoinverse.hpp +200 -0
- netgen/include/periodic.hpp +129 -0
- netgen/include/plateaufespace.hpp +25 -0
- netgen/include/pml.hpp +275 -0
- netgen/include/pmltrafo.hpp +631 -0
- netgen/include/postproc.hpp +142 -0
- netgen/include/potentialtools.hpp +22 -0
- netgen/include/precomp.hpp +60 -0
- netgen/include/preconditioner.hpp +602 -0
- netgen/include/prolongation.hpp +377 -0
- netgen/include/python_comp.hpp +107 -0
- netgen/include/python_fem.hpp +89 -0
- netgen/include/python_linalg.hpp +58 -0
- netgen/include/python_ngstd.hpp +386 -0
- netgen/include/recursive_pol.hpp +4896 -0
- netgen/include/recursive_pol_tet.hpp +395 -0
- netgen/include/recursive_pol_trig.hpp +492 -0
- netgen/include/reorderedfespace.hpp +81 -0
- netgen/include/sample_sort.hpp +105 -0
- netgen/include/scalarfe.hpp +335 -0
- netgen/include/shapefunction_utils.hpp +113 -0
- netgen/include/simd_complex.hpp +329 -0
- netgen/include/smoother.hpp +253 -0
- netgen/include/solve.hpp +89 -0
- netgen/include/sparsecholesky.hpp +313 -0
- netgen/include/sparsematrix.hpp +1038 -0
- netgen/include/sparsematrix_dyn.hpp +90 -0
- netgen/include/sparsematrix_impl.hpp +1013 -0
- netgen/include/special_matrix.hpp +463 -0
- netgen/include/specialelement.hpp +125 -0
- netgen/include/statushandler.hpp +33 -0
- netgen/include/stringops.hpp +12 -0
- netgen/include/superluinverse.hpp +136 -0
- netgen/include/symbolicintegrator.hpp +850 -0
- netgen/include/symmetricmatrix.hpp +144 -0
- netgen/include/tangentialfacetfe.hpp +224 -0
- netgen/include/tangentialfacetfespace.hpp +91 -0
- netgen/include/tensor.hpp +522 -0
- netgen/include/tensorcoefficient.hpp +446 -0
- netgen/include/tensorproductintegrator.hpp +113 -0
- netgen/include/thcurlfe.hpp +128 -0
- netgen/include/thcurlfe_impl.hpp +380 -0
- netgen/include/thdivfe.hpp +80 -0
- netgen/include/thdivfe_impl.hpp +492 -0
- netgen/include/tpdiffop.hpp +461 -0
- netgen/include/tpfes.hpp +133 -0
- netgen/include/tpintrule.hpp +224 -0
- netgen/include/triangular.hpp +465 -0
- netgen/include/tscalarfe.hpp +245 -0
- netgen/include/tscalarfe_impl.hpp +1029 -0
- netgen/include/umfpackinverse.hpp +148 -0
- netgen/include/vector.hpp +1273 -0
- netgen/include/voxelcoefficientfunction.hpp +41 -0
- netgen/include/vtkoutput.hpp +198 -0
- netgen/include/vvector.hpp +208 -0
- netgen/include/webgui.hpp +92 -0
- netgen/libngbla.dylib +0 -0
- netgen/libngcomp.dylib +0 -0
- netgen/libngfem.dylib +0 -0
- netgen/libngla.dylib +0 -0
- netgen/libngsbem.dylib +0 -0
- netgen/libngsolve.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/TensorProductTools.py +210 -0
- ngsolve/__console.py +94 -0
- ngsolve/__expr.py +181 -0
- ngsolve/__init__.py +148 -0
- ngsolve/__init__.pyi +233 -0
- ngsolve/_scikit_build_core_dependencies.py +30 -0
- ngsolve/bla.pyi +1153 -0
- ngsolve/bvp.py +78 -0
- ngsolve/bvp.pyi +32 -0
- ngsolve/cmake/NGSolveConfig.cmake +102 -0
- ngsolve/cmake/ngsolve-targets-release.cmake +79 -0
- ngsolve/cmake/ngsolve-targets.cmake +163 -0
- ngsolve/comp/__init__.pyi +5449 -0
- ngsolve/comp/pml.pyi +89 -0
- ngsolve/config/__init__.py +1 -0
- ngsolve/config/__init__.pyi +43 -0
- ngsolve/config/__main__.py +4 -0
- ngsolve/config/config.py +60 -0
- ngsolve/config/config.pyi +45 -0
- ngsolve/demos/TensorProduct/__init__.py +0 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
- ngsolve/demos/__init__.py +0 -0
- ngsolve/demos/howto/__init__.py +0 -0
- ngsolve/demos/howto/hhj.py +44 -0
- ngsolve/demos/howto/hybrid_dg.py +53 -0
- ngsolve/demos/howto/mixed.py +30 -0
- ngsolve/demos/howto/nonlin.py +29 -0
- ngsolve/demos/howto/pickling.py +26 -0
- ngsolve/demos/howto/pml.py +31 -0
- ngsolve/demos/howto/taskmanager.py +20 -0
- ngsolve/demos/howto/tdnns.py +47 -0
- ngsolve/demos/howto/timeDG-skeleton.py +45 -0
- ngsolve/demos/howto/timeDG.py +38 -0
- ngsolve/demos/howto/timeDGlap.py +42 -0
- ngsolve/demos/howto/timeDGwave.py +61 -0
- ngsolve/demos/intro/__init__.py +0 -0
- ngsolve/demos/intro/adaptive.py +123 -0
- ngsolve/demos/intro/cmagnet.py +59 -0
- ngsolve/demos/intro/elasticity.py +76 -0
- ngsolve/demos/intro/navierstokes.py +74 -0
- ngsolve/demos/intro/poisson.ipynb +170 -0
- ngsolve/demos/intro/poisson.py +41 -0
- ngsolve/demos/mpi/__init__.py +0 -0
- ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
- ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
- ngsolve/demos/mpi/mpi_poisson.py +89 -0
- ngsolve/demos/mpi/mpi_timeDG.py +82 -0
- ngsolve/directsolvers.py +26 -0
- ngsolve/directsolvers.pyi +15 -0
- ngsolve/eigenvalues.py +364 -0
- ngsolve/eigenvalues.pyi +30 -0
- ngsolve/fem.pyi +1647 -0
- ngsolve/internal.py +89 -0
- ngsolve/krylovspace.py +1013 -0
- ngsolve/krylovspace.pyi +298 -0
- ngsolve/la.pyi +1230 -0
- ngsolve/meshes.py +748 -0
- ngsolve/ngs2petsc.py +310 -0
- ngsolve/ngscxx.py +42 -0
- ngsolve/ngslib.so +0 -0
- ngsolve/ngstd.pyi +59 -0
- ngsolve/nonlinearsolvers.py +203 -0
- ngsolve/nonlinearsolvers.pyi +95 -0
- ngsolve/preconditioners.py +11 -0
- ngsolve/preconditioners.pyi +7 -0
- ngsolve/solve.pyi +109 -0
- ngsolve/solve_implementation.py +168 -0
- ngsolve/solve_implementation.pyi +42 -0
- ngsolve/solvers.py +7 -0
- ngsolve/solvers.pyi +14 -0
- ngsolve/timestepping.py +185 -0
- ngsolve/timestepping.pyi +28 -0
- ngsolve/timing.py +108 -0
- ngsolve/timing.pyi +54 -0
- ngsolve/utils.py +167 -0
- ngsolve/utils.pyi +273 -0
- ngsolve/webgui.py +670 -0
- ngsolve-6.2.2506.post74.dev0.data/data/Netgen.icns +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngscxx +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsld +13 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsolve.tcl +648 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngspy +2 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.geo +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.vol +240 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.in2d +41 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.vol +614 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.geo +12 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.vol +2560 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.geo +19 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.vol +1832 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.geo +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.in2d +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.vol +149 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/METADATA +13 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/RECORD +315 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/WHEEL +5 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/licenses/LICENSE +504 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,1064 @@
|
|
|
1
|
+
/* j0.c
|
|
2
|
+
*
|
|
3
|
+
* Bessel function of order zero
|
|
4
|
+
*
|
|
5
|
+
* thanks to Thorsten Hohage
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* SYNOPSIS:
|
|
9
|
+
*
|
|
10
|
+
* double x, y, j0();
|
|
11
|
+
*
|
|
12
|
+
* y = j0( x );
|
|
13
|
+
*
|
|
14
|
+
*
|
|
15
|
+
*
|
|
16
|
+
* DESCRIPTION:
|
|
17
|
+
*
|
|
18
|
+
* Returns Bessel function of order zero of the argument.
|
|
19
|
+
*
|
|
20
|
+
* The domain is divided into the intervals [0, 5] and
|
|
21
|
+
* (5, infinity). In the first interval the following rational
|
|
22
|
+
* approximation is used:
|
|
23
|
+
*
|
|
24
|
+
*
|
|
25
|
+
* 2 2
|
|
26
|
+
* (w - r ) (w - r ) P (w) / Q (w)
|
|
27
|
+
* 1 2 3 8
|
|
28
|
+
*
|
|
29
|
+
* 2
|
|
30
|
+
* where w = x and the two r's are zeros of the function.
|
|
31
|
+
*
|
|
32
|
+
* In the second interval, the Hankel asymptotic expansion
|
|
33
|
+
* is employed with two rational functions of degree 6/6
|
|
34
|
+
* and 7/7.
|
|
35
|
+
*
|
|
36
|
+
*
|
|
37
|
+
*
|
|
38
|
+
* ACCURACY:
|
|
39
|
+
*
|
|
40
|
+
* Absolute error:
|
|
41
|
+
* arithmetic domain # trials peak rms
|
|
42
|
+
* DEC 0, 30 10000 4.4e-17 6.3e-18
|
|
43
|
+
* IEEE 0, 30 60000 4.2e-16 1.1e-16
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
/* y0.c
|
|
47
|
+
*
|
|
48
|
+
* Bessel function of the second kind, order zero
|
|
49
|
+
*
|
|
50
|
+
*
|
|
51
|
+
*
|
|
52
|
+
* SYNOPSIS:
|
|
53
|
+
*
|
|
54
|
+
* double x, y, y0();
|
|
55
|
+
*
|
|
56
|
+
* y = y0( x );
|
|
57
|
+
*
|
|
58
|
+
*
|
|
59
|
+
*
|
|
60
|
+
* DESCRIPTION:
|
|
61
|
+
*
|
|
62
|
+
* Returns Bessel function of the second kind, of order
|
|
63
|
+
* zero, of the argument.
|
|
64
|
+
*
|
|
65
|
+
* The domain is divided into the intervals [0, 5] and
|
|
66
|
+
* (5, infinity). In the first interval a rational approximation
|
|
67
|
+
* R(x) is employed to compute
|
|
68
|
+
* y0(x) = R(x) + 2 * log(x) * j0(x) / PI.
|
|
69
|
+
* Thus a call to j0() is required.
|
|
70
|
+
*
|
|
71
|
+
* In the second interval, the Hankel asymptotic expansion
|
|
72
|
+
* is employed with two rational functions of degree 6/6
|
|
73
|
+
* and 7/7.
|
|
74
|
+
*
|
|
75
|
+
*
|
|
76
|
+
*
|
|
77
|
+
* ACCURACY:
|
|
78
|
+
*
|
|
79
|
+
* Absolute error, when y0(x) < 1; else relative error:
|
|
80
|
+
*
|
|
81
|
+
* arithmetic domain # trials peak rms
|
|
82
|
+
* DEC 0, 30 9400 7.0e-17 7.9e-18
|
|
83
|
+
* IEEE 0, 30 30000 1.3e-15 1.6e-16
|
|
84
|
+
*
|
|
85
|
+
*/
|
|
86
|
+
/*
|
|
87
|
+
Cephes Math Library Release 2.1: January, 1989
|
|
88
|
+
Copyright 1984, 1987, 1989 by Stephen L. Moshier
|
|
89
|
+
Direct inquiries to 30 Frost Street, Cambridge, MA 02140
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
/* Note: all coefficients satisfy the relative error criterion
|
|
93
|
+
* except YP, YQ which are designed for absolute error. */
|
|
94
|
+
|
|
95
|
+
//#include "mconf.h"
|
|
96
|
+
#define UNK
|
|
97
|
+
#ifdef UNK
|
|
98
|
+
static double PP[7] = {
|
|
99
|
+
7.96936729297347051624E-4,
|
|
100
|
+
8.28352392107440799803E-2,
|
|
101
|
+
1.23953371646414299388E0,
|
|
102
|
+
5.44725003058768775090E0,
|
|
103
|
+
8.74716500199817011941E0,
|
|
104
|
+
5.30324038235394892183E0,
|
|
105
|
+
9.99999999999999997821E-1,
|
|
106
|
+
};
|
|
107
|
+
static double PQ[7] = {
|
|
108
|
+
9.24408810558863637013E-4,
|
|
109
|
+
8.56288474354474431428E-2,
|
|
110
|
+
1.25352743901058953537E0,
|
|
111
|
+
5.47097740330417105182E0,
|
|
112
|
+
8.76190883237069594232E0,
|
|
113
|
+
5.30605288235394617618E0,
|
|
114
|
+
1.00000000000000000218E0,
|
|
115
|
+
};
|
|
116
|
+
#endif
|
|
117
|
+
#ifdef DEC
|
|
118
|
+
static unsigned short PP[28] = {
|
|
119
|
+
0035520,0164604,0140733,0054470,
|
|
120
|
+
0037251,0122605,0115356,0107170,
|
|
121
|
+
0040236,0124412,0071500,0056303,
|
|
122
|
+
0040656,0047737,0045720,0045263,
|
|
123
|
+
0041013,0172143,0045004,0142103,
|
|
124
|
+
0040651,0132045,0026241,0026406,
|
|
125
|
+
0040200,0000000,0000000,0000000,
|
|
126
|
+
};
|
|
127
|
+
static unsigned short PQ[28] = {
|
|
128
|
+
0035562,0052006,0070034,0134666,
|
|
129
|
+
0037257,0057055,0055242,0123424,
|
|
130
|
+
0040240,0071626,0046630,0032371,
|
|
131
|
+
0040657,0011077,0032013,0012731,
|
|
132
|
+
0041014,0030307,0050331,0006414,
|
|
133
|
+
0040651,0145457,0065021,0150304,
|
|
134
|
+
0040200,0000000,0000000,0000000,
|
|
135
|
+
};
|
|
136
|
+
#endif
|
|
137
|
+
#ifdef IBMPC
|
|
138
|
+
static unsigned short PP[28] = {
|
|
139
|
+
0x6b27,0x983b,0x1d30,0x3f4a,
|
|
140
|
+
0xd1cf,0xb35d,0x34b0,0x3fb5,
|
|
141
|
+
0x0b98,0x4e68,0xd521,0x3ff3,
|
|
142
|
+
0x0956,0xe97a,0xc9fb,0x4015,
|
|
143
|
+
0x9888,0x6940,0x7e8c,0x4021,
|
|
144
|
+
0x25a1,0xa594,0x3684,0x4015,
|
|
145
|
+
0x0000,0x0000,0x0000,0x3ff0,
|
|
146
|
+
};
|
|
147
|
+
static unsigned short PQ[28] = {
|
|
148
|
+
0x9737,0xce03,0x4a80,0x3f4e,
|
|
149
|
+
0x54e3,0xab54,0xebc5,0x3fb5,
|
|
150
|
+
0x069f,0xc9b3,0x0e72,0x3ff4,
|
|
151
|
+
0x62bb,0xe681,0xe247,0x4015,
|
|
152
|
+
0x21a1,0xea1b,0x8618,0x4021,
|
|
153
|
+
0x3a19,0xed42,0x3965,0x4015,
|
|
154
|
+
0x0000,0x0000,0x0000,0x3ff0,
|
|
155
|
+
};
|
|
156
|
+
#endif
|
|
157
|
+
#ifdef MIEEE
|
|
158
|
+
static unsigned short PP[28] = {
|
|
159
|
+
0x3f4a,0x1d30,0x983b,0x6b27,
|
|
160
|
+
0x3fb5,0x34b0,0xb35d,0xd1cf,
|
|
161
|
+
0x3ff3,0xd521,0x4e68,0x0b98,
|
|
162
|
+
0x4015,0xc9fb,0xe97a,0x0956,
|
|
163
|
+
0x4021,0x7e8c,0x6940,0x9888,
|
|
164
|
+
0x4015,0x3684,0xa594,0x25a1,
|
|
165
|
+
0x3ff0,0x0000,0x0000,0x0000,
|
|
166
|
+
};
|
|
167
|
+
static unsigned short PQ[28] = {
|
|
168
|
+
0x3f4e,0x4a80,0xce03,0x9737,
|
|
169
|
+
0x3fb5,0xebc5,0xab54,0x54e3,
|
|
170
|
+
0x3ff4,0x0e72,0xc9b3,0x069f,
|
|
171
|
+
0x4015,0xe247,0xe681,0x62bb,
|
|
172
|
+
0x4021,0x8618,0xea1b,0x21a1,
|
|
173
|
+
0x4015,0x3965,0xed42,0x3a19,
|
|
174
|
+
0x3ff0,0x0000,0x0000,0x0000,
|
|
175
|
+
};
|
|
176
|
+
#endif
|
|
177
|
+
|
|
178
|
+
#ifdef UNK
|
|
179
|
+
static double QP[8] = {
|
|
180
|
+
-1.13663838898469149931E-2,
|
|
181
|
+
-1.28252718670509318512E0,
|
|
182
|
+
-1.95539544257735972385E1,
|
|
183
|
+
-9.32060152123768231369E1,
|
|
184
|
+
-1.77681167980488050595E2,
|
|
185
|
+
-1.47077505154951170175E2,
|
|
186
|
+
-5.14105326766599330220E1,
|
|
187
|
+
-6.05014350600728481186E0,
|
|
188
|
+
};
|
|
189
|
+
static double QQ[7] = {
|
|
190
|
+
/* 1.00000000000000000000E0,*/
|
|
191
|
+
6.43178256118178023184E1,
|
|
192
|
+
8.56430025976980587198E2,
|
|
193
|
+
3.88240183605401609683E3,
|
|
194
|
+
7.24046774195652478189E3,
|
|
195
|
+
5.93072701187316984827E3,
|
|
196
|
+
2.06209331660327847417E3,
|
|
197
|
+
2.42005740240291393179E2,
|
|
198
|
+
};
|
|
199
|
+
#endif
|
|
200
|
+
#ifdef DEC
|
|
201
|
+
static unsigned short QP[32] = {
|
|
202
|
+
0136472,0035021,0142451,0141115,
|
|
203
|
+
0140244,0024731,0150620,0105642,
|
|
204
|
+
0141234,0067177,0124161,0060141,
|
|
205
|
+
0141672,0064572,0151557,0043036,
|
|
206
|
+
0142061,0127141,0003127,0043517,
|
|
207
|
+
0142023,0011727,0060271,0144544,
|
|
208
|
+
0141515,0122142,0126620,0143150,
|
|
209
|
+
0140701,0115306,0106715,0007344,
|
|
210
|
+
};
|
|
211
|
+
static unsigned short QQ[28] = {
|
|
212
|
+
/*0040200,0000000,0000000,0000000,*/
|
|
213
|
+
0041600,0121272,0004741,0026544,
|
|
214
|
+
0042526,0015605,0105654,0161771,
|
|
215
|
+
0043162,0123155,0165644,0062645,
|
|
216
|
+
0043342,0041675,0167576,0130756,
|
|
217
|
+
0043271,0052720,0165631,0154214,
|
|
218
|
+
0043000,0160576,0034614,0172024,
|
|
219
|
+
0042162,0000570,0030500,0051235,
|
|
220
|
+
};
|
|
221
|
+
#endif
|
|
222
|
+
#ifdef IBMPC
|
|
223
|
+
static unsigned short QP[32] = {
|
|
224
|
+
0x384a,0x38a5,0x4742,0xbf87,
|
|
225
|
+
0x1174,0x3a32,0x853b,0xbff4,
|
|
226
|
+
0x2c0c,0xf50e,0x8dcf,0xc033,
|
|
227
|
+
0xe8c4,0x5a6d,0x4d2f,0xc057,
|
|
228
|
+
0xe8ea,0x20ca,0x35cc,0xc066,
|
|
229
|
+
0x392d,0xec17,0x627a,0xc062,
|
|
230
|
+
0x18cd,0x55b2,0xb48c,0xc049,
|
|
231
|
+
0xa1dd,0xd1b9,0x3358,0xc018,
|
|
232
|
+
};
|
|
233
|
+
static unsigned short QQ[28] = {
|
|
234
|
+
/*0x0000,0x0000,0x0000,0x3ff0,*/
|
|
235
|
+
0x25ac,0x413c,0x1457,0x4050,
|
|
236
|
+
0x9c7f,0xb175,0xc370,0x408a,
|
|
237
|
+
0x8cb5,0xbd74,0x54cd,0x40ae,
|
|
238
|
+
0xd63e,0xbdef,0x4877,0x40bc,
|
|
239
|
+
0x3b11,0x1d73,0x2aba,0x40b7,
|
|
240
|
+
0x9e82,0xc731,0x1c2f,0x40a0,
|
|
241
|
+
0x0a54,0x0628,0x402f,0x406e,
|
|
242
|
+
};
|
|
243
|
+
#endif
|
|
244
|
+
#ifdef MIEEE
|
|
245
|
+
static unsigned short QP[32] = {
|
|
246
|
+
0xbf87,0x4742,0x38a5,0x384a,
|
|
247
|
+
0xbff4,0x853b,0x3a32,0x1174,
|
|
248
|
+
0xc033,0x8dcf,0xf50e,0x2c0c,
|
|
249
|
+
0xc057,0x4d2f,0x5a6d,0xe8c4,
|
|
250
|
+
0xc066,0x35cc,0x20ca,0xe8ea,
|
|
251
|
+
0xc062,0x627a,0xec17,0x392d,
|
|
252
|
+
0xc049,0xb48c,0x55b2,0x18cd,
|
|
253
|
+
0xc018,0x3358,0xd1b9,0xa1dd,
|
|
254
|
+
};
|
|
255
|
+
static unsigned short QQ[28] = {
|
|
256
|
+
/*0x3ff0,0x0000,0x0000,0x0000,*/
|
|
257
|
+
0x4050,0x1457,0x413c,0x25ac,
|
|
258
|
+
0x408a,0xc370,0xb175,0x9c7f,
|
|
259
|
+
0x40ae,0x54cd,0xbd74,0x8cb5,
|
|
260
|
+
0x40bc,0x4877,0xbdef,0xd63e,
|
|
261
|
+
0x40b7,0x2aba,0x1d73,0x3b11,
|
|
262
|
+
0x40a0,0x1c2f,0xc731,0x9e82,
|
|
263
|
+
0x406e,0x402f,0x0628,0x0a54,
|
|
264
|
+
};
|
|
265
|
+
#endif
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
#ifdef UNK
|
|
269
|
+
static double YP[8] = {
|
|
270
|
+
1.55924367855235737965E4,
|
|
271
|
+
-1.46639295903971606143E7,
|
|
272
|
+
5.43526477051876500413E9,
|
|
273
|
+
-9.82136065717911466409E11,
|
|
274
|
+
8.75906394395366999549E13,
|
|
275
|
+
-3.46628303384729719441E15,
|
|
276
|
+
4.42733268572569800351E16,
|
|
277
|
+
-1.84950800436986690637E16,
|
|
278
|
+
};
|
|
279
|
+
static double YQ[7] = {
|
|
280
|
+
/* 1.00000000000000000000E0,*/
|
|
281
|
+
1.04128353664259848412E3,
|
|
282
|
+
6.26107330137134956842E5,
|
|
283
|
+
2.68919633393814121987E8,
|
|
284
|
+
8.64002487103935000337E10,
|
|
285
|
+
2.02979612750105546709E13,
|
|
286
|
+
3.17157752842975028269E15,
|
|
287
|
+
2.50596256172653059228E17,
|
|
288
|
+
};
|
|
289
|
+
#endif
|
|
290
|
+
#ifdef DEC
|
|
291
|
+
static unsigned short YP[32] = {
|
|
292
|
+
0043563,0120677,0042264,0046166,
|
|
293
|
+
0146137,0140371,0113444,0042260,
|
|
294
|
+
0050241,0175707,0100502,0063344,
|
|
295
|
+
0152144,0125737,0007265,0164526,
|
|
296
|
+
0053637,0051621,0163035,0060546,
|
|
297
|
+
0155105,0004416,0107306,0060023,
|
|
298
|
+
0056035,0045133,0030132,0000024,
|
|
299
|
+
0155603,0065132,0144061,0131732,
|
|
300
|
+
};
|
|
301
|
+
static unsigned short YQ[28] = {
|
|
302
|
+
/*0040200,0000000,0000000,0000000,*/
|
|
303
|
+
0042602,0024422,0135557,0162663,
|
|
304
|
+
0045030,0155665,0044075,0160135,
|
|
305
|
+
0047200,0035432,0105446,0104005,
|
|
306
|
+
0051240,0167331,0056063,0022743,
|
|
307
|
+
0053223,0127746,0025764,0012160,
|
|
308
|
+
0055064,0044206,0177532,0145545,
|
|
309
|
+
0056536,0111375,0163715,0127201,
|
|
310
|
+
};
|
|
311
|
+
#endif
|
|
312
|
+
#ifdef IBMPC
|
|
313
|
+
static unsigned short YP[32] = {
|
|
314
|
+
0x898f,0xe896,0x7437,0x40ce,
|
|
315
|
+
0x8896,0x32e4,0xf81f,0xc16b,
|
|
316
|
+
0x4cdd,0xf028,0x3f78,0x41f4,
|
|
317
|
+
0xbd2b,0xe1d6,0x957b,0xc26c,
|
|
318
|
+
0xac2d,0x3cc3,0xea72,0x42d3,
|
|
319
|
+
0xcc02,0xd1d8,0xa121,0xc328,
|
|
320
|
+
0x4003,0x660b,0xa94b,0x4363,
|
|
321
|
+
0x367b,0x5906,0x6d4b,0xc350,
|
|
322
|
+
};
|
|
323
|
+
static unsigned short YQ[28] = {
|
|
324
|
+
/*0x0000,0x0000,0x0000,0x3ff0,*/
|
|
325
|
+
0xfcb6,0x576d,0x4522,0x4090,
|
|
326
|
+
0xbc0c,0xa907,0x1b76,0x4123,
|
|
327
|
+
0xd101,0x5164,0x0763,0x41b0,
|
|
328
|
+
0x64bc,0x2b86,0x1ddb,0x4234,
|
|
329
|
+
0x828e,0xc57e,0x75fc,0x42b2,
|
|
330
|
+
0x596d,0xdfeb,0x8910,0x4326,
|
|
331
|
+
0xb5d0,0xbcf9,0xd25f,0x438b,
|
|
332
|
+
};
|
|
333
|
+
#endif
|
|
334
|
+
#ifdef MIEEE
|
|
335
|
+
static unsigned short YP[32] = {
|
|
336
|
+
0x40ce,0x7437,0xe896,0x898f,
|
|
337
|
+
0xc16b,0xf81f,0x32e4,0x8896,
|
|
338
|
+
0x41f4,0x3f78,0xf028,0x4cdd,
|
|
339
|
+
0xc26c,0x957b,0xe1d6,0xbd2b,
|
|
340
|
+
0x42d3,0xea72,0x3cc3,0xac2d,
|
|
341
|
+
0xc328,0xa121,0xd1d8,0xcc02,
|
|
342
|
+
0x4363,0xa94b,0x660b,0x4003,
|
|
343
|
+
0xc350,0x6d4b,0x5906,0x367b,
|
|
344
|
+
};
|
|
345
|
+
static unsigned short YQ[28] = {
|
|
346
|
+
/*0x3ff0,0x0000,0x0000,0x0000,*/
|
|
347
|
+
0x4090,0x4522,0x576d,0xfcb6,
|
|
348
|
+
0x4123,0x1b76,0xa907,0xbc0c,
|
|
349
|
+
0x41b0,0x0763,0x5164,0xd101,
|
|
350
|
+
0x4234,0x1ddb,0x2b86,0x64bc,
|
|
351
|
+
0x42b2,0x75fc,0xc57e,0x828e,
|
|
352
|
+
0x4326,0x8910,0xdfeb,0x596d,
|
|
353
|
+
0x438b,0xd25f,0xbcf9,0xb5d0,
|
|
354
|
+
};
|
|
355
|
+
#endif
|
|
356
|
+
|
|
357
|
+
#ifdef UNK
|
|
358
|
+
/* 5.783185962946784521175995758455807035071 */
|
|
359
|
+
static double DR1 = 5.78318596294678452118E0;
|
|
360
|
+
/* 30.47126234366208639907816317502275584842 */
|
|
361
|
+
static double DR2 = 3.04712623436620863991E1;
|
|
362
|
+
#endif
|
|
363
|
+
|
|
364
|
+
#ifdef DEC
|
|
365
|
+
static unsigned short R1[] = {0040671,0007734,0001061,0056734};
|
|
366
|
+
#define DR1 *(double *)R1
|
|
367
|
+
static unsigned short R2[] = {0041363,0142445,0030416,0165567};
|
|
368
|
+
#define DR2 *(double *)R2
|
|
369
|
+
#endif
|
|
370
|
+
|
|
371
|
+
#ifdef IBMPC
|
|
372
|
+
static unsigned short R1[] = {0x2bbb,0x8046,0x21fb,0x4017};
|
|
373
|
+
#define DR1 *(double *)R1
|
|
374
|
+
static unsigned short R2[] = {0xdd6f,0xa621,0x78a4,0x403e};
|
|
375
|
+
#define DR2 *(double *)R2
|
|
376
|
+
#endif
|
|
377
|
+
|
|
378
|
+
#ifdef MIEEE
|
|
379
|
+
static unsigned short R1[] = {0x4017,0x21fb,0x8046,0x2bbb};
|
|
380
|
+
#define DR1 *(double *)R1
|
|
381
|
+
static unsigned short R2[] = {0x403e,0x78a4,0xa621,0xdd6f};
|
|
382
|
+
#define DR2 *(double *)R2
|
|
383
|
+
#endif
|
|
384
|
+
|
|
385
|
+
#ifdef UNK
|
|
386
|
+
static double RP[4] = {
|
|
387
|
+
-4.79443220978201773821E9,
|
|
388
|
+
1.95617491946556577543E12,
|
|
389
|
+
-2.49248344360967716204E14,
|
|
390
|
+
9.70862251047306323952E15,
|
|
391
|
+
};
|
|
392
|
+
static double RQ[8] = {
|
|
393
|
+
/* 1.00000000000000000000E0,*/
|
|
394
|
+
4.99563147152651017219E2,
|
|
395
|
+
1.73785401676374683123E5,
|
|
396
|
+
4.84409658339962045305E7,
|
|
397
|
+
1.11855537045356834862E10,
|
|
398
|
+
2.11277520115489217587E12,
|
|
399
|
+
3.10518229857422583814E14,
|
|
400
|
+
3.18121955943204943306E16,
|
|
401
|
+
1.71086294081043136091E18,
|
|
402
|
+
};
|
|
403
|
+
#endif
|
|
404
|
+
#ifdef DEC
|
|
405
|
+
static unsigned short RP[16] = {
|
|
406
|
+
0150216,0161235,0064344,0014450,
|
|
407
|
+
0052343,0135216,0035624,0144153,
|
|
408
|
+
0154142,0130247,0003310,0003667,
|
|
409
|
+
0055411,0173703,0047772,0176635,
|
|
410
|
+
};
|
|
411
|
+
static unsigned short RQ[32] = {
|
|
412
|
+
/*0040200,0000000,0000000,0000000,*/
|
|
413
|
+
0042371,0144025,0032265,0136137,
|
|
414
|
+
0044451,0133131,0132420,0151466,
|
|
415
|
+
0046470,0144641,0072540,0030636,
|
|
416
|
+
0050446,0126600,0045042,0044243,
|
|
417
|
+
0052365,0172633,0110301,0071063,
|
|
418
|
+
0054215,0032424,0062272,0043513,
|
|
419
|
+
0055742,0005013,0171731,0072335,
|
|
420
|
+
0057275,0170646,0036663,0013134,
|
|
421
|
+
};
|
|
422
|
+
#endif
|
|
423
|
+
#ifdef IBMPC
|
|
424
|
+
static unsigned short RP[16] = {
|
|
425
|
+
0x8325,0xad1c,0xdc53,0xc1f1,
|
|
426
|
+
0x990d,0xc772,0x7751,0x427c,
|
|
427
|
+
0x00f7,0xe0d9,0x5614,0xc2ec,
|
|
428
|
+
0x5fb4,0x69ff,0x3ef8,0x4341,
|
|
429
|
+
};
|
|
430
|
+
static unsigned short RQ[32] = {
|
|
431
|
+
/*0x0000,0x0000,0x0000,0x3ff0,*/
|
|
432
|
+
0xb78c,0xa696,0x3902,0x407f,
|
|
433
|
+
0x1a67,0x36a2,0x36cb,0x4105,
|
|
434
|
+
0x0634,0x2eac,0x1934,0x4187,
|
|
435
|
+
0x4914,0x0944,0xd5b0,0x4204,
|
|
436
|
+
0x2e46,0x7218,0xbeb3,0x427e,
|
|
437
|
+
0x48e9,0x8c97,0xa6a2,0x42f1,
|
|
438
|
+
0x2e9c,0x7e7b,0x4141,0x435c,
|
|
439
|
+
0x62cc,0xc7b6,0xbe34,0x43b7,
|
|
440
|
+
};
|
|
441
|
+
#endif
|
|
442
|
+
#ifdef MIEEE
|
|
443
|
+
static unsigned short RP[16] = {
|
|
444
|
+
0xc1f1,0xdc53,0xad1c,0x8325,
|
|
445
|
+
0x427c,0x7751,0xc772,0x990d,
|
|
446
|
+
0xc2ec,0x5614,0xe0d9,0x00f7,
|
|
447
|
+
0x4341,0x3ef8,0x69ff,0x5fb4,
|
|
448
|
+
};
|
|
449
|
+
static unsigned short RQ[32] = {
|
|
450
|
+
/*0x3ff0,0x0000,0x0000,0x0000,*/
|
|
451
|
+
0x407f,0x3902,0xa696,0xb78c,
|
|
452
|
+
0x4105,0x36cb,0x36a2,0x1a67,
|
|
453
|
+
0x4187,0x1934,0x2eac,0x0634,
|
|
454
|
+
0x4204,0xd5b0,0x0944,0x4914,
|
|
455
|
+
0x427e,0xbeb3,0x7218,0x2e46,
|
|
456
|
+
0x42f1,0xa6a2,0x8c97,0x48e9,
|
|
457
|
+
0x435c,0x4141,0x7e7b,0x2e9c,
|
|
458
|
+
0x43b7,0xbe34,0xc7b6,0x62cc,
|
|
459
|
+
};
|
|
460
|
+
#endif
|
|
461
|
+
|
|
462
|
+
#define ANSIPROT
|
|
463
|
+
#ifndef ANSIPROT
|
|
464
|
+
double bessj0(), polevl(), p1evl(), log(), sin(), cos(), sqrt();
|
|
465
|
+
#endif
|
|
466
|
+
|
|
467
|
+
double polevl(double x,double coef[],int N)
|
|
468
|
+
{
|
|
469
|
+
double ans;
|
|
470
|
+
int i;
|
|
471
|
+
double *p;
|
|
472
|
+
|
|
473
|
+
p = coef;
|
|
474
|
+
ans = *p++;
|
|
475
|
+
i = N;
|
|
476
|
+
|
|
477
|
+
do
|
|
478
|
+
ans = ans * x + *p++;
|
|
479
|
+
while( --i );
|
|
480
|
+
|
|
481
|
+
return( ans );
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/* p1evl() */
|
|
485
|
+
/* N
|
|
486
|
+
* Evaluate polynomial when coefficient of x is 1.0.
|
|
487
|
+
* Otherwise same as polevl.
|
|
488
|
+
*/
|
|
489
|
+
|
|
490
|
+
double p1evl(double x, double coef[],int N)
|
|
491
|
+
{
|
|
492
|
+
double ans;
|
|
493
|
+
double *p;
|
|
494
|
+
int i;
|
|
495
|
+
|
|
496
|
+
p = coef;
|
|
497
|
+
ans = x + *p++;
|
|
498
|
+
i = N-1;
|
|
499
|
+
|
|
500
|
+
do
|
|
501
|
+
ans = ans * x + *p++;
|
|
502
|
+
while( --i );
|
|
503
|
+
|
|
504
|
+
return( ans );
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
double TWOOPI = 6.36619772367581343075535E-1; /* 2/pi */
|
|
508
|
+
double THPIO4 = 2.35619449019234492885; /* 3*pi/4 */
|
|
509
|
+
double SQ2OPI = 7.9788456080286535587989E-1; /* sqrt( 2/pi ) */
|
|
510
|
+
double PIO4 = 7.85398163397448309616E-1; /* pi/4 */
|
|
511
|
+
|
|
512
|
+
double bessj0(double x)
|
|
513
|
+
{
|
|
514
|
+
double w, z, p, q, xn;
|
|
515
|
+
|
|
516
|
+
if( x < 0 )
|
|
517
|
+
x = -x;
|
|
518
|
+
|
|
519
|
+
if( x <= 5.0 )
|
|
520
|
+
{
|
|
521
|
+
z = x * x;
|
|
522
|
+
if( x < 1.0e-5 )
|
|
523
|
+
return( 1.0 - z/4.0 );
|
|
524
|
+
|
|
525
|
+
p = (z - DR1) * (z - DR2);
|
|
526
|
+
p = p * polevl( z, RP, 3)/p1evl( z, RQ, 8 );
|
|
527
|
+
return( p );
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
w = 5.0/x;
|
|
531
|
+
q = 25.0/(x*x);
|
|
532
|
+
p = polevl( q, PP, 6)/polevl( q, PQ, 6 );
|
|
533
|
+
q = polevl( q, QP, 7)/p1evl( q, QQ, 7 );
|
|
534
|
+
xn = x - PIO4;
|
|
535
|
+
p = p * cos(xn) - w * q * sin(xn);
|
|
536
|
+
return( p * SQ2OPI / sqrt(x) );
|
|
537
|
+
}
|
|
538
|
+
/* bessy0() 2 */
|
|
539
|
+
/* Bessel function of second kind, order zero */
|
|
540
|
+
|
|
541
|
+
/* Rational approximation coefficients YP[], YQ[] are used here.
|
|
542
|
+
* The function computed is bessy0(x) - 2 * log(x) * bessj0(x) / PI,
|
|
543
|
+
* whose value at x = 0 is 2 * ( log(0.5) + EUL ) / PI
|
|
544
|
+
* = 0.073804295108687225.
|
|
545
|
+
*/
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
double bessy0(double x)
|
|
549
|
+
{
|
|
550
|
+
double w, z, p, q, xn;
|
|
551
|
+
|
|
552
|
+
if( x <= 5.0 )
|
|
553
|
+
{
|
|
554
|
+
if( x <= 0.0 )
|
|
555
|
+
throw Exception ("arg<=0 in bessy0");
|
|
556
|
+
z = x * x;
|
|
557
|
+
w = polevl( z, YP, 7) / p1evl( z, YQ, 7 );
|
|
558
|
+
w += TWOOPI * log(x) * bessj0(x);
|
|
559
|
+
return( w );
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
w = 5.0/x;
|
|
563
|
+
z = 25.0 / (x * x);
|
|
564
|
+
p = polevl( z, PP, 6)/polevl( z, PQ, 6 );
|
|
565
|
+
q = polevl( z, QP, 7)/p1evl( z, QQ, 7 );
|
|
566
|
+
xn = x - PIO4;
|
|
567
|
+
p = p * sin(xn) + w * q * cos(xn);
|
|
568
|
+
return( p * SQ2OPI / sqrt(x) );
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/* j1.c
|
|
572
|
+
*
|
|
573
|
+
* Bessel function of order one
|
|
574
|
+
*
|
|
575
|
+
*
|
|
576
|
+
*
|
|
577
|
+
* SYNOPSIS:
|
|
578
|
+
*
|
|
579
|
+
* double x, y, j1();
|
|
580
|
+
*
|
|
581
|
+
* y = j1( x );
|
|
582
|
+
*
|
|
583
|
+
*
|
|
584
|
+
*
|
|
585
|
+
* DESCRIPTION:
|
|
586
|
+
*
|
|
587
|
+
* Returns Bessel function of order one of the argument.
|
|
588
|
+
*
|
|
589
|
+
* The domain is divided into the intervals [0, 8] and
|
|
590
|
+
* (8, infinity). In the first interval a 24 term Chebyshev
|
|
591
|
+
* expansion is used. In the second, the asymptotic
|
|
592
|
+
* trigonometric representation is employed using two
|
|
593
|
+
* rational functions of degree 5/5.
|
|
594
|
+
*
|
|
595
|
+
*
|
|
596
|
+
*
|
|
597
|
+
* ACCURACY:
|
|
598
|
+
*
|
|
599
|
+
* Absolute error:
|
|
600
|
+
* arithmetic domain # trials peak rms
|
|
601
|
+
* DEC 0, 30 10000 4.0e-17 1.1e-17
|
|
602
|
+
* IEEE 0, 30 30000 2.6e-16 1.1e-16
|
|
603
|
+
*
|
|
604
|
+
*
|
|
605
|
+
*/
|
|
606
|
+
/* y1.c
|
|
607
|
+
*
|
|
608
|
+
* Bessel function of second kind of order one
|
|
609
|
+
*
|
|
610
|
+
*
|
|
611
|
+
*
|
|
612
|
+
* SYNOPSIS:
|
|
613
|
+
*
|
|
614
|
+
* double x, y, y1();
|
|
615
|
+
*
|
|
616
|
+
* y = y1( x );
|
|
617
|
+
*
|
|
618
|
+
*
|
|
619
|
+
*
|
|
620
|
+
* DESCRIPTION:
|
|
621
|
+
*
|
|
622
|
+
* Returns Bessel function of the second kind of order one
|
|
623
|
+
* of the argument.
|
|
624
|
+
*
|
|
625
|
+
* The domain is divided into the intervals [0, 8] and
|
|
626
|
+
* (8, infinity). In the first interval a 25 term Chebyshev
|
|
627
|
+
* expansion is used, and a call to j1() is required.
|
|
628
|
+
* In the second, the asymptotic trigonometric representation
|
|
629
|
+
* is employed using two rational functions of degree 5/5.
|
|
630
|
+
*
|
|
631
|
+
*
|
|
632
|
+
*
|
|
633
|
+
* ACCURACY:
|
|
634
|
+
*
|
|
635
|
+
* Absolute error:
|
|
636
|
+
* arithmetic domain # trials peak rms
|
|
637
|
+
* DEC 0, 30 10000 8.6e-17 1.3e-17
|
|
638
|
+
* IEEE 0, 30 30000 1.0e-15 1.3e-16
|
|
639
|
+
*
|
|
640
|
+
* (error criterion relative when |y1| > 1).
|
|
641
|
+
*
|
|
642
|
+
*/
|
|
643
|
+
/*
|
|
644
|
+
Cephes Math Library Release 2.1: January, 1989
|
|
645
|
+
Copyright 1984, 1987, 1989 by Stephen L. Moshier
|
|
646
|
+
Direct inquiries to 30 Frost Street, Cambridge, MA 02140
|
|
647
|
+
*/
|
|
648
|
+
|
|
649
|
+
#define PIO4 .78539816339744830962
|
|
650
|
+
#define THPIO4 2.35619449019234492885
|
|
651
|
+
#define SQ2OPI .79788456080286535588
|
|
652
|
+
|
|
653
|
+
// #include "mconf.h"
|
|
654
|
+
|
|
655
|
+
#ifdef UNK
|
|
656
|
+
static double RP1[4] = {
|
|
657
|
+
-8.99971225705559398224E8,
|
|
658
|
+
4.52228297998194034323E11,
|
|
659
|
+
-7.27494245221818276015E13,
|
|
660
|
+
3.68295732863852883286E15,
|
|
661
|
+
};
|
|
662
|
+
static double RQ1[8] = {
|
|
663
|
+
/* 1.00000000000000000000E0,*/
|
|
664
|
+
6.20836478118054335476E2,
|
|
665
|
+
2.56987256757748830383E5,
|
|
666
|
+
8.35146791431949253037E7,
|
|
667
|
+
2.21511595479792499675E10,
|
|
668
|
+
4.74914122079991414898E12,
|
|
669
|
+
7.84369607876235854894E14,
|
|
670
|
+
8.95222336184627338078E16,
|
|
671
|
+
5.32278620332680085395E18,
|
|
672
|
+
};
|
|
673
|
+
#endif
|
|
674
|
+
#ifdef DEC
|
|
675
|
+
static unsigned short RP1[16] = {
|
|
676
|
+
0147526,0110742,0063322,0077052,
|
|
677
|
+
0051722,0112720,0065034,0061530,
|
|
678
|
+
0153604,0052227,0033147,0105650,
|
|
679
|
+
0055121,0055025,0032276,0022015,
|
|
680
|
+
};
|
|
681
|
+
static unsigned short RQ1[32] = {
|
|
682
|
+
/*0040200,0000000,0000000,0000000,*/
|
|
683
|
+
0042433,0032610,0155604,0033473,
|
|
684
|
+
0044572,0173320,0067270,0006616,
|
|
685
|
+
0046637,0045246,0162225,0006606,
|
|
686
|
+
0050645,0004773,0157577,0053004,
|
|
687
|
+
0052612,0033734,0001667,0176501,
|
|
688
|
+
0054462,0054121,0173147,0121367,
|
|
689
|
+
0056237,0002777,0121451,0176007,
|
|
690
|
+
0057623,0136253,0131601,0044710,
|
|
691
|
+
};
|
|
692
|
+
#endif
|
|
693
|
+
#ifdef IBMPC
|
|
694
|
+
static unsigned short RP1[16] = {
|
|
695
|
+
0x4fc5,0x4cda,0xd23c,0xc1ca,
|
|
696
|
+
0x8c6b,0x0d43,0x52ba,0x425a,
|
|
697
|
+
0xf175,0xe6cc,0x8a92,0xc2d0,
|
|
698
|
+
0xc482,0xa697,0x2b42,0x432a,
|
|
699
|
+
};
|
|
700
|
+
static unsigned short RQ1[32] = {
|
|
701
|
+
/*0x0000,0x0000,0x0000,0x3ff0,*/
|
|
702
|
+
0x86e7,0x1b70,0x66b1,0x4083,
|
|
703
|
+
0x01b2,0x0dd7,0x5eda,0x410f,
|
|
704
|
+
0xa1b1,0xdc92,0xe954,0x4193,
|
|
705
|
+
0xeac1,0x7bef,0xa13f,0x4214,
|
|
706
|
+
0xffa8,0x8076,0x46fb,0x4291,
|
|
707
|
+
0xf45f,0x3ecc,0x4b0a,0x4306,
|
|
708
|
+
0x3f81,0xf465,0xe0bf,0x4373,
|
|
709
|
+
0x2939,0x7670,0x7795,0x43d2,
|
|
710
|
+
};
|
|
711
|
+
#endif
|
|
712
|
+
#ifdef MIEEE
|
|
713
|
+
static unsigned short RP1[16] = {
|
|
714
|
+
0xc1ca,0xd23c,0x4cda,0x4fc5,
|
|
715
|
+
0x425a,0x52ba,0x0d43,0x8c6b,
|
|
716
|
+
0xc2d0,0x8a92,0xe6cc,0xf175,
|
|
717
|
+
0x432a,0x2b42,0xa697,0xc482,
|
|
718
|
+
};
|
|
719
|
+
static unsigned short RQ1[32] = {
|
|
720
|
+
/*0x3ff0,0x0000,0x0000,0x0000,*/
|
|
721
|
+
0x4083,0x66b1,0x1b70,0x86e7,
|
|
722
|
+
0x410f,0x5eda,0x0dd7,0x01b2,
|
|
723
|
+
0x4193,0xe954,0xdc92,0xa1b1,
|
|
724
|
+
0x4214,0xa13f,0x7bef,0xeac1,
|
|
725
|
+
0x4291,0x46fb,0x8076,0xffa8,
|
|
726
|
+
0x4306,0x4b0a,0x3ecc,0xf45f,
|
|
727
|
+
0x4373,0xe0bf,0xf465,0x3f81,
|
|
728
|
+
0x43d2,0x7795,0x7670,0x2939,
|
|
729
|
+
};
|
|
730
|
+
#endif
|
|
731
|
+
|
|
732
|
+
#ifdef UNK
|
|
733
|
+
static double PP1[7] = {
|
|
734
|
+
7.62125616208173112003E-4,
|
|
735
|
+
7.31397056940917570436E-2,
|
|
736
|
+
1.12719608129684925192E0,
|
|
737
|
+
5.11207951146807644818E0,
|
|
738
|
+
8.42404590141772420927E0,
|
|
739
|
+
5.21451598682361504063E0,
|
|
740
|
+
1.00000000000000000254E0,
|
|
741
|
+
};
|
|
742
|
+
static double PQ1[7] = {
|
|
743
|
+
5.71323128072548699714E-4,
|
|
744
|
+
6.88455908754495404082E-2,
|
|
745
|
+
1.10514232634061696926E0,
|
|
746
|
+
5.07386386128601488557E0,
|
|
747
|
+
8.39985554327604159757E0,
|
|
748
|
+
5.20982848682361821619E0,
|
|
749
|
+
9.99999999999999997461E-1,
|
|
750
|
+
};
|
|
751
|
+
#endif
|
|
752
|
+
#ifdef DEC
|
|
753
|
+
static unsigned short PP1[28] = {
|
|
754
|
+
0035507,0144542,0061543,0024326,
|
|
755
|
+
0037225,0145105,0017766,0022661,
|
|
756
|
+
0040220,0043766,0010254,0133255,
|
|
757
|
+
0040643,0113047,0142611,0151521,
|
|
758
|
+
0041006,0144344,0055351,0074261,
|
|
759
|
+
0040646,0156520,0120574,0006416,
|
|
760
|
+
0040200,0000000,0000000,0000000,
|
|
761
|
+
};
|
|
762
|
+
static unsigned short PQ1[28] = {
|
|
763
|
+
0035425,0142330,0115041,0165514,
|
|
764
|
+
0037214,0177352,0145105,0052026,
|
|
765
|
+
0040215,0072515,0141207,0073255,
|
|
766
|
+
0040642,0056427,0137222,0106405,
|
|
767
|
+
0041006,0062716,0166427,0165450,
|
|
768
|
+
0040646,0133352,0035425,0123304,
|
|
769
|
+
0040200,0000000,0000000,0000000,
|
|
770
|
+
};
|
|
771
|
+
#endif
|
|
772
|
+
#ifdef IBMPC
|
|
773
|
+
static unsigned short PP1[28] = {
|
|
774
|
+
0x651b,0x4c6c,0xf92c,0x3f48,
|
|
775
|
+
0xc4b6,0xa3fe,0xb948,0x3fb2,
|
|
776
|
+
0x96d6,0xc215,0x08fe,0x3ff2,
|
|
777
|
+
0x3a6a,0xf8b1,0x72c4,0x4014,
|
|
778
|
+
0x2f16,0x8b5d,0xd91c,0x4020,
|
|
779
|
+
0x81a2,0x142f,0xdbaa,0x4014,
|
|
780
|
+
0x0000,0x0000,0x0000,0x3ff0,
|
|
781
|
+
};
|
|
782
|
+
static unsigned short PQ1[28] = {
|
|
783
|
+
0x3d69,0x1344,0xb89b,0x3f42,
|
|
784
|
+
0xaa83,0x5948,0x9fdd,0x3fb1,
|
|
785
|
+
0xeed6,0xb850,0xaea9,0x3ff1,
|
|
786
|
+
0x51a1,0xf7d2,0x4ba2,0x4014,
|
|
787
|
+
0xfd65,0xdda2,0xccb9,0x4020,
|
|
788
|
+
0xb4d9,0x4762,0xd6dd,0x4014,
|
|
789
|
+
0x0000,0x0000,0x0000,0x3ff0,
|
|
790
|
+
};
|
|
791
|
+
#endif
|
|
792
|
+
#ifdef MIEEE
|
|
793
|
+
static unsigned short PP1[28] = {
|
|
794
|
+
0x3f48,0xf92c,0x4c6c,0x651b,
|
|
795
|
+
0x3fb2,0xb948,0xa3fe,0xc4b6,
|
|
796
|
+
0x3ff2,0x08fe,0xc215,0x96d6,
|
|
797
|
+
0x4014,0x72c4,0xf8b1,0x3a6a,
|
|
798
|
+
0x4020,0xd91c,0x8b5d,0x2f16,
|
|
799
|
+
0x4014,0xdbaa,0x142f,0x81a2,
|
|
800
|
+
0x3ff0,0x0000,0x0000,0x0000,
|
|
801
|
+
};
|
|
802
|
+
static unsigned short PQ1[28] = {
|
|
803
|
+
0x3f42,0xb89b,0x1344,0x3d69,
|
|
804
|
+
0x3fb1,0x9fdd,0x5948,0xaa83,
|
|
805
|
+
0x3ff1,0xaea9,0xb850,0xeed6,
|
|
806
|
+
0x4014,0x4ba2,0xf7d2,0x51a1,
|
|
807
|
+
0x4020,0xccb9,0xdda2,0xfd65,
|
|
808
|
+
0x4014,0xd6dd,0x4762,0xb4d9,
|
|
809
|
+
0x3ff0,0x0000,0x0000,0x0000,
|
|
810
|
+
};
|
|
811
|
+
#endif
|
|
812
|
+
|
|
813
|
+
#ifdef UNK
|
|
814
|
+
static double QP1[8] = {
|
|
815
|
+
5.10862594750176621635E-2,
|
|
816
|
+
4.98213872951233449420E0,
|
|
817
|
+
7.58238284132545283818E1,
|
|
818
|
+
3.66779609360150777800E2,
|
|
819
|
+
7.10856304998926107277E2,
|
|
820
|
+
5.97489612400613639965E2,
|
|
821
|
+
2.11688757100572135698E2,
|
|
822
|
+
2.52070205858023719784E1,
|
|
823
|
+
};
|
|
824
|
+
static double QQ1[7] = {
|
|
825
|
+
/* 1.00000000000000000000E0,*/
|
|
826
|
+
7.42373277035675149943E1,
|
|
827
|
+
1.05644886038262816351E3,
|
|
828
|
+
4.98641058337653607651E3,
|
|
829
|
+
9.56231892404756170795E3,
|
|
830
|
+
7.99704160447350683650E3,
|
|
831
|
+
2.82619278517639096600E3,
|
|
832
|
+
3.36093607810698293419E2,
|
|
833
|
+
};
|
|
834
|
+
#endif
|
|
835
|
+
#ifdef DEC
|
|
836
|
+
static unsigned short QP1[32] = {
|
|
837
|
+
0037121,0037723,0055605,0151004,
|
|
838
|
+
0040637,0066656,0031554,0077264,
|
|
839
|
+
0041627,0122714,0153170,0161466,
|
|
840
|
+
0042267,0061712,0036520,0140145,
|
|
841
|
+
0042461,0133315,0131573,0071176,
|
|
842
|
+
0042425,0057525,0147500,0013201,
|
|
843
|
+
0042123,0130122,0061245,0154131,
|
|
844
|
+
0041311,0123772,0064254,0172650,
|
|
845
|
+
};
|
|
846
|
+
static unsigned short QQ1[28] = {
|
|
847
|
+
/*0040200,0000000,0000000,0000000,*/
|
|
848
|
+
0041624,0074603,0002112,0101670,
|
|
849
|
+
0042604,0007135,0010162,0175565,
|
|
850
|
+
0043233,0151510,0157757,0172010,
|
|
851
|
+
0043425,0064506,0112006,0104276,
|
|
852
|
+
0043371,0164125,0032271,0164242,
|
|
853
|
+
0043060,0121425,0122750,0136013,
|
|
854
|
+
0042250,0005773,0053472,0146267,
|
|
855
|
+
};
|
|
856
|
+
#endif
|
|
857
|
+
#ifdef IBMPC
|
|
858
|
+
static unsigned short QP1[32] = {
|
|
859
|
+
0xba40,0x6b70,0x27fa,0x3faa,
|
|
860
|
+
0x8fd6,0xc66d,0xedb5,0x4013,
|
|
861
|
+
0x1c67,0x9acf,0xf4b9,0x4052,
|
|
862
|
+
0x180d,0x47aa,0xec79,0x4076,
|
|
863
|
+
0x6e50,0xb66f,0x36d9,0x4086,
|
|
864
|
+
0x02d0,0xb9e8,0xabea,0x4082,
|
|
865
|
+
0xbb0b,0x4c54,0x760a,0x406a,
|
|
866
|
+
0x9eb5,0x4d15,0x34ff,0x4039,
|
|
867
|
+
};
|
|
868
|
+
static unsigned short QQ1[28] = {
|
|
869
|
+
/*0x0000,0x0000,0x0000,0x3ff0,*/
|
|
870
|
+
0x5077,0x6089,0x8f30,0x4052,
|
|
871
|
+
0x5f6f,0xa20e,0x81cb,0x4090,
|
|
872
|
+
0xfe81,0x1bfd,0x7a69,0x40b3,
|
|
873
|
+
0xd118,0xd280,0xad28,0x40c2,
|
|
874
|
+
0x3d14,0xa697,0x3d0a,0x40bf,
|
|
875
|
+
0x1781,0xb4bd,0x1462,0x40a6,
|
|
876
|
+
0x5997,0x6ae7,0x017f,0x4075,
|
|
877
|
+
};
|
|
878
|
+
#endif
|
|
879
|
+
#ifdef MIEEE
|
|
880
|
+
static unsigned short QP1[32] = {
|
|
881
|
+
0x3faa,0x27fa,0x6b70,0xba40,
|
|
882
|
+
0x4013,0xedb5,0xc66d,0x8fd6,
|
|
883
|
+
0x4052,0xf4b9,0x9acf,0x1c67,
|
|
884
|
+
0x4076,0xec79,0x47aa,0x180d,
|
|
885
|
+
0x4086,0x36d9,0xb66f,0x6e50,
|
|
886
|
+
0x4082,0xabea,0xb9e8,0x02d0,
|
|
887
|
+
0x406a,0x760a,0x4c54,0xbb0b,
|
|
888
|
+
0x4039,0x34ff,0x4d15,0x9eb5,
|
|
889
|
+
};
|
|
890
|
+
static unsigned short QQ1[28] = {
|
|
891
|
+
/*0x3ff0,0x0000,0x0000,0x0000,*/
|
|
892
|
+
0x4052,0x8f30,0x6089,0x5077,
|
|
893
|
+
0x4090,0x81cb,0xa20e,0x5f6f,
|
|
894
|
+
0x40b3,0x7a69,0x1bfd,0xfe81,
|
|
895
|
+
0x40c2,0xad28,0xd280,0xd118,
|
|
896
|
+
0x40bf,0x3d0a,0xa697,0x3d14,
|
|
897
|
+
0x40a6,0x1462,0xb4bd,0x1781,
|
|
898
|
+
0x4075,0x017f,0x6ae7,0x5997,
|
|
899
|
+
};
|
|
900
|
+
#endif
|
|
901
|
+
|
|
902
|
+
#ifdef UNK
|
|
903
|
+
static double YP1[6] = {
|
|
904
|
+
1.26320474790178026440E9,
|
|
905
|
+
-6.47355876379160291031E11,
|
|
906
|
+
1.14509511541823727583E14,
|
|
907
|
+
-8.12770255501325109621E15,
|
|
908
|
+
2.02439475713594898196E17,
|
|
909
|
+
-7.78877196265950026825E17,
|
|
910
|
+
};
|
|
911
|
+
static double YQ1[8] = {
|
|
912
|
+
/* 1.00000000000000000000E0,*/
|
|
913
|
+
5.94301592346128195359E2,
|
|
914
|
+
2.35564092943068577943E5,
|
|
915
|
+
7.34811944459721705660E7,
|
|
916
|
+
1.87601316108706159478E10,
|
|
917
|
+
3.88231277496238566008E12,
|
|
918
|
+
6.20557727146953693363E14,
|
|
919
|
+
6.87141087355300489866E16,
|
|
920
|
+
3.97270608116560655612E18,
|
|
921
|
+
};
|
|
922
|
+
#endif
|
|
923
|
+
#ifdef DEC
|
|
924
|
+
static unsigned short YP1[24] = {
|
|
925
|
+
0047626,0112763,0013715,0133045,
|
|
926
|
+
0152026,0134552,0142033,0024411,
|
|
927
|
+
0053720,0045245,0102210,0077565,
|
|
928
|
+
0155347,0000321,0136415,0102031,
|
|
929
|
+
0056463,0146550,0055633,0032605,
|
|
930
|
+
0157054,0171012,0167361,0054265,
|
|
931
|
+
};
|
|
932
|
+
static unsigned short YQ1[32] = {
|
|
933
|
+
/*0040200,0000000,0000000,0000000,*/
|
|
934
|
+
0042424,0111515,0044773,0153014,
|
|
935
|
+
0044546,0005405,0171307,0075774,
|
|
936
|
+
0046614,0023575,0047105,0063556,
|
|
937
|
+
0050613,0143034,0101533,0156026,
|
|
938
|
+
0052541,0175367,0166514,0114257,
|
|
939
|
+
0054415,0014466,0134350,0171154,
|
|
940
|
+
0056164,0017436,0025075,0022101,
|
|
941
|
+
0057534,0103614,0103663,0121772,
|
|
942
|
+
};
|
|
943
|
+
#endif
|
|
944
|
+
#ifdef IBMPC
|
|
945
|
+
static unsigned short YP1[24] = {
|
|
946
|
+
0xb6c5,0x62f9,0xd2be,0x41d2,
|
|
947
|
+
0x6521,0x5883,0xd72d,0xc262,
|
|
948
|
+
0x0fef,0xb091,0x0954,0x42da,
|
|
949
|
+
0xb083,0x37a1,0xe01a,0xc33c,
|
|
950
|
+
0x66b1,0x0b73,0x79ad,0x4386,
|
|
951
|
+
0x2b17,0x5dde,0x9e41,0xc3a5,
|
|
952
|
+
};
|
|
953
|
+
static unsigned short YQ1[32] = {
|
|
954
|
+
/*0x0000,0x0000,0x0000,0x3ff0,*/
|
|
955
|
+
0x7ac2,0xa93f,0x9269,0x4082,
|
|
956
|
+
0xef7f,0xbe58,0xc160,0x410c,
|
|
957
|
+
0xacee,0xa9c8,0x84ef,0x4191,
|
|
958
|
+
0x7b83,0x906b,0x78c3,0x4211,
|
|
959
|
+
0x9316,0xfda9,0x3f5e,0x428c,
|
|
960
|
+
0x1e4e,0xd71d,0xa326,0x4301,
|
|
961
|
+
0xa488,0xc547,0x83e3,0x436e,
|
|
962
|
+
0x747f,0x90f6,0x90f1,0x43cb,
|
|
963
|
+
};
|
|
964
|
+
#endif
|
|
965
|
+
#ifdef MIEEE
|
|
966
|
+
static unsigned short YP1[24] = {
|
|
967
|
+
0x41d2,0xd2be,0x62f9,0xb6c5,
|
|
968
|
+
0xc262,0xd72d,0x5883,0x6521,
|
|
969
|
+
0x42da,0x0954,0xb091,0x0fef,
|
|
970
|
+
0xc33c,0xe01a,0x37a1,0xb083,
|
|
971
|
+
0x4386,0x79ad,0x0b73,0x66b1,
|
|
972
|
+
0xc3a5,0x9e41,0x5dde,0x2b17,
|
|
973
|
+
};
|
|
974
|
+
static unsigned short YQ1[32] = {
|
|
975
|
+
/*0x3ff0,0x0000,0x0000,0x0000,*/
|
|
976
|
+
0x4082,0x9269,0xa93f,0x7ac2,
|
|
977
|
+
0x410c,0xc160,0xbe58,0xef7f,
|
|
978
|
+
0x4191,0x84ef,0xa9c8,0xacee,
|
|
979
|
+
0x4211,0x78c3,0x906b,0x7b83,
|
|
980
|
+
0x428c,0x3f5e,0xfda9,0x9316,
|
|
981
|
+
0x4301,0xa326,0xd71d,0x1e4e,
|
|
982
|
+
0x436e,0x83e3,0xc547,0xa488,
|
|
983
|
+
0x43cb,0x90f1,0x90f6,0x747f,
|
|
984
|
+
};
|
|
985
|
+
#endif
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
#ifdef UNK
|
|
989
|
+
static double Z1 = 1.46819706421238932572E1;
|
|
990
|
+
static double Z2 = 4.92184563216946036703E1;
|
|
991
|
+
#endif
|
|
992
|
+
|
|
993
|
+
#ifdef DEC
|
|
994
|
+
static unsigned short DZ1[] = {0041152,0164532,0006114,0010540};
|
|
995
|
+
static unsigned short DZ2[] = {0041504,0157663,0001625,0020621};
|
|
996
|
+
#define Z1 (*(double *)DZ1)
|
|
997
|
+
#define Z2 (*(double *)DZ2)
|
|
998
|
+
#endif
|
|
999
|
+
|
|
1000
|
+
#ifdef IBMPC
|
|
1001
|
+
static unsigned short DZ1[] = {0x822c,0x4189,0x5d2b,0x402d};
|
|
1002
|
+
static unsigned short DZ2[] = {0xa432,0x6072,0x9bf6,0x4048};
|
|
1003
|
+
#define Z1 (*(double *)DZ1)
|
|
1004
|
+
#define Z2 (*(double *)DZ2)
|
|
1005
|
+
#endif
|
|
1006
|
+
|
|
1007
|
+
#ifdef MIEEE
|
|
1008
|
+
static unsigned short DZ1[] = {0x402d,0x5d2b,0x4189,0x822c};
|
|
1009
|
+
static unsigned short DZ2[] = {0x4048,0x9bf6,0x6072,0xa432};
|
|
1010
|
+
#define Z1 (*(double *)DZ1)
|
|
1011
|
+
#define Z2 (*(double *)DZ2)
|
|
1012
|
+
#endif
|
|
1013
|
+
|
|
1014
|
+
#ifndef ANSIPROT
|
|
1015
|
+
double bessj1(), polevl(), p1evl(), log(), sin(), cos(), sqrt();
|
|
1016
|
+
#endif
|
|
1017
|
+
|
|
1018
|
+
double bessj1(double x)
|
|
1019
|
+
{
|
|
1020
|
+
double w, z, p, q, xn;
|
|
1021
|
+
|
|
1022
|
+
w = x;
|
|
1023
|
+
if( x < 0 )
|
|
1024
|
+
w = -x;
|
|
1025
|
+
|
|
1026
|
+
if( w <= 5.0 )
|
|
1027
|
+
{
|
|
1028
|
+
z = x * x;
|
|
1029
|
+
w = polevl( z, RP1, 3 ) / p1evl( z, RQ1, 8 );
|
|
1030
|
+
w = w * x * (z - Z1) * (z - Z2);
|
|
1031
|
+
return( w );
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
w = 5.0/x;
|
|
1035
|
+
z = w * w;
|
|
1036
|
+
p = polevl( z, PP1, 6)/polevl( z, PQ1, 6 );
|
|
1037
|
+
q = polevl( z, QP1, 7)/p1evl( z, QQ1, 7 );
|
|
1038
|
+
xn = x - THPIO4;
|
|
1039
|
+
p = p * cos(xn) - w * q * sin(xn);
|
|
1040
|
+
return( p * SQ2OPI / sqrt(x) );
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
double bessy1(double x)
|
|
1044
|
+
{
|
|
1045
|
+
double w, z, p, q, xn;
|
|
1046
|
+
|
|
1047
|
+
if( x <= 5.0 )
|
|
1048
|
+
{
|
|
1049
|
+
if( x <= 0.0 )
|
|
1050
|
+
throw Exception("arg<=0 in bessy1");
|
|
1051
|
+
z = x * x;
|
|
1052
|
+
w = x * (polevl( z, YP1, 5 ) / p1evl( z, YQ1, 8 ));
|
|
1053
|
+
w += TWOOPI * ( bessj1(x) * log(x) - 1.0/x );
|
|
1054
|
+
return( w );
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
w = 5.0/x;
|
|
1058
|
+
z = w * w;
|
|
1059
|
+
p = polevl( z, PP1, 6)/polevl( z, PQ1, 6 );
|
|
1060
|
+
q = polevl( z, QP1, 7)/p1evl( z, QQ1, 7 );
|
|
1061
|
+
xn = x - THPIO4;
|
|
1062
|
+
p = p * sin(xn) + w * q * cos(xn);
|
|
1063
|
+
return( p * SQ2OPI / sqrt(x) );
|
|
1064
|
+
}
|