| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.commons.math3.special; |
| |
| import org.apache.commons.math3.exception.MathIllegalArgumentException; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| /** |
| * @version $Id$ |
| */ |
| public class BesselJTest { |
| |
| /** |
| * Reference data for the {@link BesselJ#value(double, double)} function. This data |
| * was generated with the following <a href="http://www.r-project.org/">R</a> script. |
| * |
| * <pre> |
| * smallxs = 10 ** (-(seq(0,8,.5))) |
| * medxs = seq(1,20) |
| * near.eight = 8 + seq(-.5,.5,.1) |
| * largexs = c(10,30,100,300,1000) |
| * xs = unique(sort(c(smallxs, medxs, near.eight,largexs))) |
| * |
| * for (n in c(0:15, 30, 100)) { |
| * for (x in xs) { |
| * val = format( besselJ(x,n), digits=20 ) |
| * s = paste("{", n, ",", x, ",", val, "},") |
| * print(s) |
| * } |
| * } |
| * </pre> |
| */ |
| private static final double[][] BESSEL_J_REF = { |
| { 0 , 1e-08 , 1 }, |
| { 0 , 3.16227766016838e-08 , 0.99999999999999977796 }, |
| { 0 , 1e-07 , 0.99999999999999744649 }, |
| { 0 , 3.16227766016838e-07 , 0.99999999999997501998 }, |
| { 0 , 1e-06 , 0.99999999999974997777 }, |
| { 0 , 3.16227766016838e-06 , 0.99999999999749999979 }, |
| { 0 , 1e-05 , 0.99999999997499999793 }, |
| { 0 , 3.16227766016838e-05 , 0.99999999974999997931 }, |
| { 0 , 1e-04 , 0.99999999750000001519 }, |
| { 0 , 0.000316227766016838 , 0.99999997500000015194 }, |
| { 0 , 0.001 , 0.9999997500000156192 }, |
| { 0 , 0.00316227766016838 , 0.99999750000156251151 }, |
| { 0 , 0.01 , 0.99997500015624951608 }, |
| { 0 , 0.0316227766016838 , 0.9997500156245660019 }, |
| { 0 , 0.1 , 0.99750156206604001508 }, |
| { 0 , 0.316227766016838 , 0.97515581664971295872 }, |
| { 0 , 1 , 0.76519768655796649437 }, |
| { 0 , 2 , 0.22389077914123567403 }, |
| { 0 , 3 , -0.26005195490193344643 }, |
| { 0 , 4 , -0.39714980986384734729 }, |
| { 0 , 5 , -0.177596771314338292 }, |
| { 0 , 6 , 0.15064525725099692233 }, |
| { 0 , 7 , 0.3000792705195556298 }, |
| { 0 , 7.5 , 0.26633965788037838873 }, |
| { 0 , 7.6 , 0.25160183384997636402 }, |
| { 0 , 7.7 , 0.23455913958646437689 }, |
| { 0 , 7.8 , 0.21540780774626291927 }, |
| { 0 , 7.9 , 0.19436184484127824734 }, |
| { 0 , 8 , 0.17165080713755390129 }, |
| { 0 , 8.1 , 0.14751745404437766052 }, |
| { 0 , 8.2 , 0.12221530178413773926 }, |
| { 0 , 8.3 , 0.09600610089501022959 }, |
| { 0 , 8.4 , 0.069157261656985186127 }, |
| { 0 , 8.5 , 0.041939251842934503756 }, |
| { 0 , 9 , -0.090333611182876139001 }, |
| { 0 , 10 , -0.24593576445134832098 }, |
| { 0 , 11 , -0.17119030040719609986 }, |
| { 0 , 12 , 0.0476893107968335353 }, |
| { 0 , 13 , 0.20692610237706782206 }, |
| { 0 , 14 , 0.17107347611045864433 }, |
| { 0 , 15 , -0.014224472826780772475 }, |
| { 0 , 16 , -0.17489907398362919411 }, |
| { 0 , 17 , -0.16985425215118354902 }, |
| { 0 , 18 , -0.013355805721984111492 }, |
| { 0 , 19 , 0.14662943965965119508 }, |
| { 0 , 20 , 0.16702466434058313438 }, |
| { 0 , 30 , -0.086367983581040239094 }, |
| { 0 , 100 , 0.019985850304223118368 }, |
| { 0 , 300 , -0.033298554876305661021 }, |
| { 0 , 1000 , 0.024786686152420175921 }, |
| { 1 , 1e-08 , 5.0000000000000001046e-09 }, |
| { 1 , 3.16227766016838e-08 , 1.5811388300841892647e-08 }, |
| { 1 , 1e-07 , 4.999999999999993818e-08 }, |
| { 1 , 3.16227766016838e-07 , 1.5811388300841697432e-07 }, |
| { 1 , 1e-06 , 4.9999999999993750869e-07 }, |
| { 1 , 3.16227766016838e-06 , 1.5811388300822132559e-06 }, |
| { 1 , 1e-05 , 4.9999999999375003889e-06 }, |
| { 1 , 3.16227766016838e-05 , 1.5811388298865475016e-05 }, |
| { 1 , 1e-04 , 4.9999999937500002646e-05 }, |
| { 1 , 0.000316227766016838 , 0.00015811388103199544184 }, |
| { 1 , 0.001 , 0.00049999993750000253697 }, |
| { 1 , 0.00316227766016838 , 0.0015811368536614756226 }, |
| { 1 , 0.01 , 0.0049999375002604158624 }, |
| { 1 , 0.0316227766016838 , 0.015809411959653556917 }, |
| { 1 , 0.1 , 0.049937526036241998428 }, |
| { 1 , 0.316227766016838 , 0.15614567743386048582 }, |
| { 1 , 1 , 0.44005058574493355339 }, |
| { 1 , 2 , 0.57672480775687340326 }, |
| { 1 , 3 , 0.33905895852593642692 }, |
| { 1 , 4 , -0.066043328023549133232 }, |
| { 1 , 5 , -0.32757913759146523036 }, |
| { 1 , 6 , -0.27668385812756562947 }, |
| { 1 , 7 , -0.0046828234823458325664 }, |
| { 1 , 7.5 , 0.13524842757970551022 }, |
| { 1 , 7.6 , 0.15921376839635667522 }, |
| { 1 , 7.7 , 0.18131271532458800855 }, |
| { 1 , 7.8 , 0.20135687275589611578 }, |
| { 1 , 7.9 , 0.21917939992175122788 }, |
| { 1 , 8 , 0.23463634685391462908 }, |
| { 1 , 8.1 , 0.2476077669815928417 }, |
| { 1 , 8.2 , 0.25799859764868082745 }, |
| { 1 , 8.3 , 0.26573930204186430037 }, |
| { 1 , 8.4 , 0.27078626827683538458 }, |
| { 1 , 8.5 , 0.27312196367405372488 }, |
| { 1 , 9 , 0.24531178657332528004 }, |
| { 1 , 10 , 0.043472746168861438332 }, |
| { 1 , 11 , -0.17678529895672151495 }, |
| { 1 , 12 , -0.2234471044906276016 }, |
| { 1 , 13 , -0.070318052121778371055 }, |
| { 1 , 14 , 0.13337515469879324126 }, |
| { 1 , 15 , 0.20510403861352277666 }, |
| { 1 , 16 , 0.090397175661304188243 }, |
| { 1 , 17 , -0.097668492757780639435 }, |
| { 1 , 18 , -0.18799488548806958521 }, |
| { 1 , 19 , -0.10570143114240927729 }, |
| { 1 , 20 , 0.066833124175850036619 }, |
| { 1 , 30 , -0.1187510626166229516 }, |
| { 1 , 100 , -0.077145352014112156258 }, |
| { 1 , 300 , -0.031887431377499955709 }, |
| { 1 , 1000 , 0.0047283119070895248195 }, |
| { 2 , 1e-08 , 1.2499999999999999739e-17 }, |
| { 2 , 3.16227766016838e-08 , 1.2499999999999998506e-16 }, |
| { 2 , 1e-07 , 1.2499999999999988152e-15 }, |
| { 2 , 3.16227766016838e-07 , 1.2499999999999894672e-14 }, |
| { 2 , 1e-06 , 1.249999999999895719e-13 }, |
| { 2 , 3.16227766016838e-06 , 1.2499999999989582746e-12 }, |
| { 2 , 1e-05 , 1.2499999999895835475e-11 }, |
| { 2 , 3.16227766016838e-05 , 1.2499999998958334818e-10 }, |
| { 2 , 1e-04 , 1.2499999989583335487e-09 }, |
| { 2 , 0.000316227766016838 , 1.2499999895833333493e-08 }, |
| { 2 , 0.001 , 1.2499998958333367811e-07 }, |
| { 2 , 0.00316227766016838 , 1.2499989583336589057e-06 }, |
| { 2 , 0.01 , 1.2499895833658854395e-05 }, |
| { 2 , 0.0316227766016838 , 0.00012498958365884872863 }, |
| { 2 , 0.1 , 0.0012489586587999190141 }, |
| { 2 , 0.316227766016838 , 0.012396158312196680837 }, |
| { 2 , 1 , 0.11490348493190047363 }, |
| { 2 , 2 , 0.35283402861563772923 }, |
| { 2 , 3 , 0.48609126058589108288 }, |
| { 2 , 4 , 0.36412814585207281537 }, |
| { 2 , 5 , 0.046565116277752213736 }, |
| { 2 , 6 , -0.24287320996018546548 }, |
| { 2 , 7 , -0.3014172200859401296 }, |
| { 2 , 7.5 , -0.23027341052579025638 }, |
| { 2 , 7.6 , -0.20970347374567196996 }, |
| { 2 , 7.7 , -0.18746492781384410664 }, |
| { 2 , 7.8 , -0.16377784037295622932 }, |
| { 2 , 7.9 , -0.13887338916488553564 }, |
| { 2 , 8 , -0.11299172042407523708 }, |
| { 2 , 8.1 , -0.086379733802009056598 }, |
| { 2 , 8.2 , -0.059288814552752158726 }, |
| { 2 , 8.3 , -0.031972534137934507936 }, |
| { 2 , 8.4 , -0.0046843406386910518141 }, |
| { 2 , 8.5 , 0.022324739609784025052 }, |
| { 2 , 9 , 0.14484734153250397592 }, |
| { 2 , 10 , 0.25463031368512062391 }, |
| { 2 , 11 , 0.13904751877870125121 }, |
| { 2 , 12 , -0.084930494878604809172 }, |
| { 2 , 13 , -0.21774426424195678087 }, |
| { 2 , 14 , -0.15201988258205964555 }, |
| { 2 , 15 , 0.041571677975250471981 }, |
| { 2 , 16 , 0.18619872094129222284 }, |
| { 2 , 17 , 0.15836384123850347216 }, |
| { 2 , 18 , -0.0075325148878013998069 }, |
| { 2 , 19 , -0.15775590609569428713 }, |
| { 2 , 20 , -0.16034135192299814321 }, |
| { 2 , 30 , 0.07845124607326538213 }, |
| { 2 , 100 , -0.021528757344505360799 }, |
| { 2 , 300 , 0.033085972000455661501 }, |
| { 2 , 1000 , -0.024777229528605997089 }, |
| { 3 , 1e-08 , 2.0833333333333334614e-26 }, |
| { 3 , 3.16227766016838e-08 , 6.5880784586841223417e-25 }, |
| { 3 , 1e-07 , 2.0833333333333317693e-23 }, |
| { 3 , 3.16227766016838e-07 , 6.5880784586840819929e-22 }, |
| { 3 , 1e-06 , 2.0833333333332027799e-20 }, |
| { 3 , 3.16227766016838e-06 , 6.5880784586800051603e-19 }, |
| { 3 , 1e-05 , 2.0833333333203129762e-17 }, |
| { 3 , 3.16227766016838e-05 , 6.5880784582723696076e-16 }, |
| { 3 , 1e-04 , 2.083333332031250315e-14 }, |
| { 3 , 0.000316227766016838 , 6.5880784175086335665e-13 }, |
| { 3 , 0.001 , 2.0833332031250032117e-11 }, |
| { 3 , 0.00316227766016838 , 6.5880743411361163135e-10 }, |
| { 3 , 0.01 , 2.083320312532551971e-08 }, |
| { 3 , 0.0316227766016838 , 6.5876667140741846331e-07 }, |
| { 3 , 0.1 , 2.0820315754756265453e-05 }, |
| { 3 , 0.316227766016838 , 0.00065470057642003857534 }, |
| { 3 , 1 , 0.019563353982668403586 }, |
| { 3 , 2 , 0.1289432494744020552 }, |
| { 3 , 3 , 0.30906272225525166508 }, |
| { 3 , 4 , 0.43017147387562193472 }, |
| { 3 , 5 , 0.36483123061366695694 }, |
| { 3 , 6 , 0.11476838482077529602 }, |
| { 3 , 7 , -0.16755558799533423753 }, |
| { 3 , 7.5 , -0.25806091319346030621 }, |
| { 3 , 7.6 , -0.26958401773618401176 }, |
| { 3 , 7.7 , -0.27869709340970183487 }, |
| { 3 , 7.8 , -0.28534550884459158882 }, |
| { 3 , 7.9 , -0.2894950400052375139 }, |
| { 3 , 8 , -0.29113220706595221987 }, |
| { 3 , 8.1 , -0.29026442564925164502 }, |
| { 3 , 8.2 , -0.28691997060124291297 }, |
| { 3 , 8.3 , -0.28114775222882071315 }, |
| { 3 , 8.4 , -0.27301690667621203445 }, |
| { 3 , 8.5 , -0.26261620385768480457 }, |
| { 3 , 9 , -0.1809351903366568648 }, |
| { 3 , 10 , 0.058379379305186815396 }, |
| { 3 , 11 , 0.22734803305806741691 }, |
| { 3 , 12 , 0.19513693953109267909 }, |
| { 3 , 13 , 0.0033198169704070513292 }, |
| { 3 , 14 , -0.17680940686509599713 }, |
| { 3 , 15 , -0.19401825782012263599 }, |
| { 3 , 16 , -0.043847495425981139472 }, |
| { 3 , 17 , 0.13493057304919323092 }, |
| { 3 , 18 , 0.18632099329078039007 }, |
| { 3 , 19 , 0.072489661438052577225 }, |
| { 3 , 20 , -0.098901394560449676363 }, |
| { 3 , 30 , 0.12921122875972501642 }, |
| { 3 , 100 , 0.076284201720331942798 }, |
| { 3 , 300 , 0.032328577670839367397 }, |
| { 3 , 1000 , -0.0048274208252039483777 }, |
| { 4 , 1e-08 , 2.6041666666666666342e-35 }, |
| { 4 , 3.16227766016838e-08 , 2.6041666666666659714e-33 }, |
| { 4 , 1e-07 , 2.6041666666666649861e-31 }, |
| { 4 , 3.16227766016838e-07 , 2.6041666666666531276e-29 }, |
| { 4 , 1e-06 , 2.6041666666665358894e-27 }, |
| { 4 , 3.16227766016838e-06 , 2.6041666666653639536e-25 }, |
| { 4 , 1e-05 , 2.6041666666536465525e-23 }, |
| { 4 , 3.16227766016838e-05 , 2.604166666536458817e-21 }, |
| { 4 , 1e-04 , 2.6041666653645840559e-19 }, |
| { 4 , 0.000316227766016838 , 2.6041666536458338462e-17 }, |
| { 4 , 0.001 , 2.6041665364583368871e-15 }, |
| { 4 , 0.00316227766016838 , 2.604165364583604802e-13 }, |
| { 4 , 0.01 , 2.6041536458604605458e-11 }, |
| { 4 , 0.0316227766016838 , 2.6040364610459735901e-09 }, |
| { 4 , 0.1 , 2.6028648545684040871e-07 }, |
| { 4 , 0.316227766016838 , 2.5911729278009268374e-05 }, |
| { 4 , 1 , 0.002476638964109955255 }, |
| { 4 , 2 , 0.033995719807568429427 }, |
| { 4 , 3 , 0.13203418392461221953 }, |
| { 4 , 4 , 0.28112906496136008672 }, |
| { 4 , 5 , 0.39123236045864817623 }, |
| { 4 , 6 , 0.35764159478096080313 }, |
| { 4 , 7 , 0.15779814466136793394 }, |
| { 4 , 7.5 , 0.02382467997102201071 }, |
| { 4 , 7.6 , -0.0031260139407891210546 }, |
| { 4 , 7.7 , -0.029701638479430046702 }, |
| { 4 , 7.8 , -0.055718704892114230554 }, |
| { 4 , 7.9 , -0.080996261472003727722 }, |
| { 4 , 8 , -0.10535743487538892782 }, |
| { 4 , 8.1 , -0.12863095186410331006 }, |
| { 4 , 8.2 , -0.15065262735059631316 }, |
| { 4 , 8.3 , -0.17126680482265874139 }, |
| { 4 , 8.4 , -0.19032773555860327264 }, |
| { 4 , 8.5 , -0.2077008835093262229 }, |
| { 4 , 9 , -0.26547080175694187654 }, |
| { 4 , 10 , -0.21960268610200855965 }, |
| { 4 , 11 , -0.015039500747028132846 }, |
| { 4 , 12 , 0.18249896464415113484 }, |
| { 4 , 13 , 0.21927648745906774819 }, |
| { 4 , 14 , 0.076244422497018474183 }, |
| { 4 , 15 , -0.11917898110329952499 }, |
| { 4 , 16 , -0.20264153172603513453 }, |
| { 4 , 17 , -0.11074128604467056713 }, |
| { 4 , 18 , 0.069639512651394869236 }, |
| { 4 , 19 , 0.18064737812876355272 }, |
| { 4 , 20 , 0.13067093355486322781 }, |
| { 4 , 30 , -0.05260900032132037607 }, |
| { 4 , 100 , 0.026105809447725277644 }, |
| { 4 , 300 , -0.032439400447038871378 }, |
| { 4 , 1000 , 0.024748265003654772859 }, |
| { 5 , 1e-08 , 2.6041666666666666817e-44 }, |
| { 5 , 3.16227766016838e-08 , 8.2350980733551520153e-42 }, |
| { 5 , 1e-07 , 2.6041666666666648818e-39 }, |
| { 5 , 3.16227766016838e-07 , 8.2350980733551185479e-37 }, |
| { 5 , 1e-06 , 2.6041666666665576923e-34 }, |
| { 5 , 3.16227766016838e-06 , 8.2350980733517218878e-32 }, |
| { 5 , 1e-05 , 2.6041666666558171668e-29 }, |
| { 5 , 3.16227766016838e-05 , 8.2350980730120282499e-27 }, |
| { 5 , 1e-04 , 2.6041666655815978351e-24 }, |
| { 5 , 0.000316227766016838 , 8.2350980390422474771e-22 }, |
| { 5 , 0.001 , 2.6041665581597245947e-19 }, |
| { 5 , 0.00316227766016838 , 8.2350946420649040367e-17 }, |
| { 5 , 0.01 , 2.6041558159915982186e-14 }, |
| { 5 , 0.0316227766016838 , 8.2347549503960048977e-12 }, |
| { 5 , 0.1 , 2.6030817909644421178e-09 }, |
| { 5 , 0.316227766016838 , 8.2008463739855235578e-07 }, |
| { 5 , 1 , 0.00024975773021123438876 }, |
| { 5 , 2 , 0.0070396297558716850601 }, |
| { 5 , 3 , 0.043028434877047584683 }, |
| { 5 , 4 , 0.13208665604709826646 }, |
| { 5 , 5 , 0.26114054612017006951 }, |
| { 5 , 6 , 0.36208707488717239986 }, |
| { 5 , 7 , 0.34789632475118331678 }, |
| { 5 , 7.5 , 0.28347390516255044357 }, |
| { 5 , 7.6 , 0.26629347674587972028 }, |
| { 5 , 7.7 , 0.2478382482362680439 }, |
| { 5 , 7.8 , 0.22819811921165392143 }, |
| { 5 , 7.9 , 0.20747350940067682545 }, |
| { 5 , 8 , 0.18577477219056331981 }, |
| { 5 , 8.1 , 0.16322151022791506203 }, |
| { 5 , 8.2 , 0.13994179757627084326 }, |
| { 5 , 8.3 , 0.11607131384553516507 }, |
| { 5 , 8.4 , 0.091752396620399440108 }, |
| { 5 , 8.5 , 0.067133019378318919967 }, |
| { 5 , 9 , -0.055038855669513706004 }, |
| { 5 , 10 , -0.23406152818679362704 }, |
| { 5 , 11 , -0.23828585178317879256 }, |
| { 5 , 12 , -0.073470963101658584571 }, |
| { 5 , 13 , 0.13161955992748081146 }, |
| { 5 , 14 , 0.22037764829196368477 }, |
| { 5 , 15 , 0.1304561345650295523 }, |
| { 5 , 16 , -0.057473270437036434732 }, |
| { 5 , 17 , -0.18704411942315585238 }, |
| { 5 , 18 , -0.15537009877904933708 }, |
| { 5 , 19 , 0.0035723925109004857348 }, |
| { 5 , 20 , 0.15116976798239498136 }, |
| { 5 , 30 , -0.14324029551207712041 }, |
| { 5 , 100 , -0.074195736964513925304 }, |
| { 5 , 300 , -0.03319362834942707341 }, |
| { 5 , 1000 , 0.0050254069452331864842 }, |
| { 6 , 1e-08 , 2.170138888888889163e-53 }, |
| { 6 , 3.16227766016838e-08 , 2.1701388888888880947e-50 }, |
| { 6 , 1e-07 , 2.1701388888888875174e-47 }, |
| { 6 , 3.16227766016838e-07 , 2.170138888888880604e-44 }, |
| { 6 , 1e-06 , 2.1701388888888106952e-41 }, |
| { 6 , 3.16227766016838e-06 , 2.1701388888881133808e-38 }, |
| { 6 , 1e-05 , 2.1701388888811393588e-35 }, |
| { 6 , 3.16227766016838e-05 , 2.1701388888113848269e-32 }, |
| { 6 , 1e-04 , 2.1701388881138396044e-29 }, |
| { 6 , 0.000316227766016838 , 2.1701388811383932341e-26 }, |
| { 6 , 0.001 , 2.1701388113839301844e-23 }, |
| { 6 , 0.00316227766016838 , 2.1701381138394068717e-20 }, |
| { 6 , 0.01 , 2.1701311384049674283e-17 }, |
| { 6 , 0.0316227766016838 , 2.1700613851395740978e-14 }, |
| { 6 , 0.1 , 2.1693639603760032489e-11 }, |
| { 6 , 0.316227766016838 , 2.1624004918010960028e-08 }, |
| { 6 , 1 , 2.0938338002389272967e-05 }, |
| { 6 , 2 , 0.0012024289717899932714 }, |
| { 6 , 3 , 0.011393932332213070266 }, |
| { 6 , 4 , 0.049087575156385579445 }, |
| { 6 , 5 , 0.13104873178169201831 }, |
| { 6 , 6 , 0.24583686336432652997 }, |
| { 6 , 7 , 0.33919660498317966146 }, |
| { 6 , 7.5 , 0.35414052691237862813 }, |
| { 6 , 7.6 , 0.35351216755378872536 }, |
| { 6 , 7.7 , 0.35156949333172621275 }, |
| { 6 , 7.8 , 0.3482803961891063893 }, |
| { 6 , 7.9 , 0.34362095691589844559 }, |
| { 6 , 8 , 0.33757590011359311921 }, |
| { 6 , 8.1 , 0.33013898918251699532 }, |
| { 6 , 8.2 , 0.32131335610214611931 }, |
| { 6 , 8.3 , 0.3111117612630625584 }, |
| { 6 , 8.4 , 0.29955677915431688785 }, |
| { 6 , 8.5 , 0.28668090630734854862 }, |
| { 6 , 9 , 0.20431651767970440692 }, |
| { 6 , 10 , -0.014458842084785107282 }, |
| { 6 , 11 , -0.20158400087404348966 }, |
| { 6 , 12 , -0.24372476722886662892 }, |
| { 6 , 13 , -0.1180306721302363665 }, |
| { 6 , 14 , 0.081168183425812737153 }, |
| { 6 , 15 , 0.20614973747998591169 }, |
| { 6 , 16 , 0.16672073770288736716 }, |
| { 6 , 17 , 0.00071533344281418307069 }, |
| { 6 , 18 , -0.15595623419531115528 }, |
| { 6 , 19 , -0.17876717154407903432 }, |
| { 6 , 20 , -0.055086049563665764883 }, |
| { 6 , 30 , 0.0048622351506280026001 }, |
| { 6 , 100 , -0.033525383144176669481 }, |
| { 6 , 300 , 0.031332946168724638836 }, |
| { 6 , 1000 , -0.024698010934202440508 }, |
| { 7 , 1e-08 , 1.5500992063492066701e-62 }, |
| { 7 , 3.16227766016838e-08 , 4.9018440912828279875e-59 }, |
| { 7 , 1e-07 , 1.5500992063492053031e-55 }, |
| { 7 , 3.16227766016838e-07 , 4.9018440912828133382e-52 }, |
| { 7 , 1e-06 , 1.55009920634915736e-48 }, |
| { 7 , 3.16227766016838e-06 , 4.9018440912812964979e-45 }, |
| { 7 , 1e-05 , 1.550099206344363137e-41 }, |
| { 7 , 3.16227766016838e-05 , 4.9018440911296494971e-38 }, |
| { 7 , 1e-04 , 1.5500992058648010339e-34 }, |
| { 7 , 0.000316227766016838 , 4.9018440759645687969e-31 }, |
| { 7 , 0.001 , 1.5500991579086071003e-27 }, |
| { 7 , 0.00316227766016838 , 4.9018425594567649302e-24 }, |
| { 7 , 0.01 , 1.550094362295914728e-20 }, |
| { 7 , 0.0316227766016838 , 4.9016909107824929132e-17 }, |
| { 7 , 0.1 , 1.5496148676202282287e-13 }, |
| { 7 , 0.316227766016838 , 4.8865470861431505644e-10 }, |
| { 7 , 1 , 1.5023258174368078499e-06 }, |
| { 7 , 2 , 0.00017494407486827416175 }, |
| { 7 , 3 , 0.0025472944518046929108 }, |
| { 7 , 4 , 0.015176069422058449318 }, |
| { 7 , 5 , 0.053376410155890716136 }, |
| { 7 , 6 , 0.12958665184148068783 }, |
| { 7 , 7 , 0.23358356950569605925 }, |
| { 7 , 7.5 , 0.28315093789725531703 }, |
| { 7 , 7.6 , 0.29188362991799726709 }, |
| { 7 , 7.7 , 0.30006226085213638655 }, |
| { 7 , 7.8 , 0.30761787492543296585 }, |
| { 7 , 7.9 , 0.31448237452220684229 }, |
| { 7 , 8 , 0.32058907797982633125 }, |
| { 7 , 8.1 , 0.3258732885609990082 }, |
| { 7 , 8.2 , 0.33027286989028453723 }, |
| { 7 , 8.3 , 0.33372882292033839713 }, |
| { 7 , 8.4 , 0.33618585931433897507 }, |
| { 7 , 8.5 , 0.33759296599676130723 }, |
| { 7 , 9 , 0.32746087924245292911 }, |
| { 7 , 10 , 0.21671091768505151842 }, |
| { 7 , 11 , 0.018376032647858614455 }, |
| { 7 , 12 , -0.17025380412720803047 }, |
| { 7 , 13 , -0.24057094958616048741 }, |
| { 7 , 14 , -0.15080491964126707671 }, |
| { 7 , 15 , 0.034463655418959161791 }, |
| { 7 , 16 , 0.18251382371420196704 }, |
| { 7 , 17 , 0.1875490606769070201 }, |
| { 7 , 18 , 0.051399275982175231248 }, |
| { 7 , 19 , -0.11647797453873988405 }, |
| { 7 , 20 , -0.18422139772059445417 }, |
| { 7 , 30 , 0.1451851895723283159 }, |
| { 7 , 100 , 0.070172690987212724134 }, |
| { 7 , 300 , 0.034446946196176060628 }, |
| { 7 , 1000 , -0.0053217830764436153956 }, |
| { 8 , 1e-08 , 9.6881200396825412359e-72 }, |
| { 8 , 3.16227766016838e-08 , 9.6881200396825359082e-68 }, |
| { 8 , 1e-07 , 9.6881200396825335915e-64 }, |
| { 8 , 3.16227766016838e-07 , 9.6881200396825091166e-60 }, |
| { 8 , 1e-06 , 9.6881200396822669073e-56 }, |
| { 8 , 3.16227766016838e-06 , 9.6881200396798449492e-52 }, |
| { 8 , 1e-05 , 9.6881200396556345156e-48 }, |
| { 8 , 3.16227766016838e-05 , 9.6881200394134308774e-44 }, |
| { 8 , 1e-04 , 9.6881200369913995322e-40 }, |
| { 8 , 0.000316227766016838 , 9.688120012771098157e-36 }, |
| { 8 , 0.001 , 9.6881197705681010442e-32 }, |
| { 8 , 0.00316227766016838 , 9.688117348538421731e-28 }, |
| { 8 , 0.01 , 9.6880931282716245736e-24 }, |
| { 8 , 0.0316227766016838 , 9.6878509286008909493e-20 }, |
| { 8 , 0.1 , 9.6854292315946525669e-16 }, |
| { 8 , 0.316227766016838 , 9.6612422089625085973e-12 }, |
| { 8 , 1 , 9.4223441726045005392e-08 }, |
| { 8 , 2 , 2.2179552287925904881e-05 }, |
| { 8 , 3 , 0.00049344177620883479096 }, |
| { 8 , 4 , 0.0040286678208190035769 }, |
| { 8 , 5 , 0.018405216654802002835 }, |
| { 8 , 6 , 0.056531990932461785582 }, |
| { 8 , 7 , 0.12797053402821254031 }, |
| { 8 , 7.5 , 0.17440789049583127479 }, |
| { 8 , 7.6 , 0.18416820334778524759 }, |
| { 8 , 7.7 , 0.19399825367215817185 }, |
| { 8 , 7.8 , 0.20385425111295268907 }, |
| { 8 , 7.9 , 0.21368958021206302389 }, |
| { 8 , 8 , 0.22345498635110294661 }, |
| { 8 , 8.1 , 0.23309879351550599758 }, |
| { 8 , 8.2 , 0.24256715346663235144 }, |
| { 8 , 8.3 , 0.25180432559052018382 }, |
| { 8 , 8.4 , 0.26075298636958132992 }, |
| { 8 , 8.5 , 0.26935456709908189854 }, |
| { 8 , 9 , 0.30506707225300011554 }, |
| { 8 , 10 , 0.31785412684385727644 }, |
| { 8 , 11 , 0.22497167878949989039 }, |
| { 8 , 12 , 0.045095329080457241533 }, |
| { 8 , 13 , -0.14104573511639803551 }, |
| { 8 , 14 , -0.23197310306707982774 }, |
| { 8 , 15 , -0.17398365908895732646 }, |
| { 8 , 16 , -0.0070211419529606520704 }, |
| { 8 , 17 , 0.1537368341734622057 }, |
| { 8 , 18 , 0.19593344884811411677 }, |
| { 8 , 19 , 0.092941295568165452345 }, |
| { 8 , 20 , -0.073868928840750344711 }, |
| { 8 , 30 , 0.062890853316458550371 }, |
| { 8 , 100 , 0.043349559882386451415 }, |
| { 8 , 300 , -0.029725422012903089664 }, |
| { 8 , 1000 , 0.02462350597113223058 } , |
| { 9 , 1e-08 , 5.382288910934745386e-81 }, |
| { 9 , 3.16227766016838e-08 , 1.702029198362092975e-76 }, |
| { 9 , 1e-07 , 5.3822889109347404393e-72 }, |
| { 9 , 3.16227766016838e-07 , 1.7020291983620889989e-67 }, |
| { 9 , 1e-06 , 5.3822889109346077433e-63 }, |
| { 9 , 3.16227766016838e-06 , 1.7020291983616675345e-58 }, |
| { 9 , 1e-05 , 5.3822889109212923968e-54 }, |
| { 9 , 3.16227766016838e-05 , 1.7020291983195439884e-49 }, |
| { 9 , 1e-04 , 5.3822889095891748719e-45 }, |
| { 9 , 0.000316227766016838 , 1.7020291941070210695e-40 }, |
| { 9 , 0.001 , 5.382288776377523226e-36 }, |
| { 9 , 0.00316227766016838 , 1.7020287728548427703e-31 }, |
| { 9 , 0.01 , 5.3822754552277587118e-27 }, |
| { 9 , 0.0316227766016838 , 1.7019866481156611902e-22 }, |
| { 9 , 0.1 , 5.3809434916023306372e-18 }, |
| { 9 , 0.316227766016838 , 1.6977789573201714453e-13 }, |
| { 9 , 1 , 5.2492501799118757129e-09 }, |
| { 9 , 2 , 2.492343435133064173e-06 }, |
| { 9 , 3 , 8.4395021309091773631e-05 }, |
| { 9 , 4 , 0.00093860186121756401367 }, |
| { 9 , 5 , 0.005520283139475687037 }, |
| { 9 , 6 , 0.021165323978417364265 }, |
| { 9 , 7 , 0.058920508273075426764 }, |
| { 9 , 7.5 , 0.088919228493851462658 }, |
| { 9 , 7.6 , 0.095838903445761125521 }, |
| { 9 , 7.7 , 0.10305099353156887965 }, |
| { 9 , 7.8 , 0.11054469146011103309 }, |
| { 9 , 7.9 , 0.11830664869209804591 }, |
| { 9 , 8 , 0.12632089472237958971 }, |
| { 9 , 8.1 , 0.13456877270419806414 }, |
| { 9 , 8.2 , 0.14302889297143717151 }, |
| { 9 , 8.3 , 0.15167710592885710885 }, |
| { 9 , 8.4 , 0.16048649567533976312 }, |
| { 9 , 8.5 , 0.16942739560151048872 }, |
| { 9 , 9 , 0.2148805825406584491 }, |
| { 9 , 10 , 0.29185568526512006837 }, |
| { 9 , 11 , 0.30885550013686852155 }, |
| { 9 , 12 , 0.23038090956781773211 }, |
| { 9 , 13 , 0.066976198673670619965 }, |
| { 9 , 14 , -0.11430719814968128001 }, |
| { 9 , 15 , -0.22004622511384699934 }, |
| { 9 , 16 , -0.18953496566716260263 }, |
| { 9 , 17 , -0.042855569690119083015 }, |
| { 9 , 18 , 0.12276378966059287023 }, |
| { 9 , 19 , 0.19474432870140553908 }, |
| { 9 , 20 , 0.12512625464799415065 }, |
| { 9 , 30 , -0.11164340113688375755 }, |
| { 9 , 100 , -0.063236761406030891908 }, |
| { 9 , 300 , -0.036032302036864222172 }, |
| { 9 , 1000 , 0.0057157591719817308837 }, |
| { 10 , 1e-08 , 2.6911444554673727331e-90 }, |
| { 10 , 3.16227766016838e-08 , 2.6911444554673710334e-85 }, |
| { 10 , 1e-07 , 2.6911444554673703522e-80 }, |
| { 10 , 3.16227766016838e-07 , 2.6911444554673646193e-75 }, |
| { 10 , 1e-06 , 2.6911444554673096152e-70 }, |
| { 10 , 3.16227766016838e-06 , 2.6911444554667591352e-65 }, |
| { 10 , 1e-05 , 2.6911444554612582946e-60 }, |
| { 10 , 3.16227766016838e-05 , 2.6911444554062112799e-55 }, |
| { 10 , 1e-04 , 2.6911444548557502587e-50 }, |
| { 10 , 0.000316227766016838 , 2.691144449351135505e-45 }, |
| { 10 , 0.001 , 2.6911443943049990395e-40 }, |
| { 10 , 0.00316227766016838 , 2.6911438438436965201e-35 }, |
| { 10 , 0.01 , 2.6911383392363445476e-30 }, |
| { 10 , 0.0316227766016838 , 2.691083293730485964e-25 }, |
| { 10 , 0.1 , 2.6905328954342172306e-20 }, |
| { 10 , 0.316227766016838 , 2.6850345850670040022e-15 }, |
| { 10 , 1 , 2.630615123687452921e-10 }, |
| { 10 , 2 , 2.5153862827167368199e-07 }, |
| { 10 , 3 , 1.292835164571588302e-05 }, |
| { 10 , 4 , 0.00019504055466003448463 }, |
| { 10 , 5 , 0.0014678026473104743583 }, |
| { 10 , 6 , 0.0069639810027903158857 }, |
| { 10 , 7 , 0.023539344388267140901 }, |
| { 10 , 7.5 , 0.038998257889412211996 }, |
| { 10 , 7.6 , 0.042818673234280582585 }, |
| { 10 , 7.7 , 0.04690017276527555512 }, |
| { 10 , 7.8 , 0.051248883025765065713 }, |
| { 10 , 7.9 , 0.055869872504109699407 }, |
| { 10 , 8 , 0.060767026774251164944 }, |
| { 10 , 8.1 , 0.065942923604934144954 }, |
| { 10 , 8.2 , 0.071398709153595626975 }, |
| { 10 , 8.3 , 0.077133976423868738648 }, |
| { 10 , 8.4 , 0.083146647220432454151 }, |
| { 10 , 8.5 , 0.089432858880587384753 }, |
| { 10 , 9 , 0.12469409282831672714 }, |
| { 10 , 10 , 0.20748610663335886883 }, |
| { 10 , 11 , 0.28042823052537591 }, |
| { 10 , 12 , 0.300476035271269315 }, |
| { 10 , 13 , 0.23378201020301889179 }, |
| { 10 , 14 , 0.085006705446061009424 }, |
| { 10 , 15 , -0.09007181104765905888 }, |
| { 10 , 16 , -0.20620569442259728543 }, |
| { 10 , 17 , -0.19911331972770593413 }, |
| { 10 , 18 , -0.073169659187521246535 }, |
| { 10 , 19 , 0.091553331622639774756 }, |
| { 10 , 20 , 0.18648255802394508862 }, |
| { 10 , 30 , -0.129876893998588816 }, |
| { 10 , 100 , -0.054732176935472012791 }, |
| { 10 , 300 , 0.027563483890691235778 }, |
| { 10 , 1000 , -0.02452062230603655954 }, |
| { 30 , 1e-08 , 3.511074584737334481e-282 }, |
| { 30 , 3.16227766016838e-08 , 3.5110745847373276748e-267 }, |
| { 30 , 1e-07 , 3.5110745847373271436e-252 }, |
| { 30 , 3.16227766016838e-07 , 3.5110745847373244839e-237 }, |
| { 30 , 1e-06 , 3.5110745847372989351e-222 }, |
| { 30 , 3.16227766016838e-06 , 3.511074584737044636e-207 }, |
| { 30 , 1e-05 , 3.5110745847345094386e-192 }, |
| { 30 , 3.16227766016838e-05 , 3.5110745847090235522e-177 }, |
| { 30 , 1e-04 , 3.5110745844541855471e-162 }, |
| { 30 , 0.000316227766016838 , 3.5110745819058229075e-147 }, |
| { 30 , 0.001 , 3.5110745564222159037e-132 }, |
| { 30 , 0.00316227766016838 , 3.5110743015861690319e-117 }, |
| { 30 , 0.01 , 3.5110717532266786188e-102 }, |
| { 30 , 0.0316227766016838 , 3.5110462697303107185e-87 }, |
| { 30 , 0.1 , 3.5107914446214635799e-72 }, |
| { 30 , 0.316227766016838 , 3.5082441787554764315e-57 }, |
| { 30 , 1 , 3.4828697942514824077e-42 }, |
| { 30 , 2 , 3.6502562664740960186e-33 }, |
| { 30 , 3 , 6.7223399381463293316e-28 }, |
| { 30 , 4 , 3.5570357020361055268e-24 }, |
| { 30 , 5 , 2.6711772782507989195e-21 }, |
| { 30 , 6 , 5.7984683652785706951e-19 }, |
| { 30 , 7 , 5.3172607940100176027e-17 }, |
| { 30 , 7.5 , 3.9705139492720914996e-16 }, |
| { 30 , 7.6 , 5.8351206236969734897e-16 }, |
| { 30 , 7.7 , 8.5295046954365007979e-16 }, |
| { 30 , 7.8 , 1.240300099862031423e-15 }, |
| { 30 , 7.9 , 1.7943809060373146352e-15 }, |
| { 30 , 8 , 2.5830997825663086363e-15 }, |
| { 30 , 8.1 , 3.7004810818946501642e-15 }, |
| { 30 , 8.2 , 5.2761304350589830578e-15 }, |
| { 30 , 8.3 , 7.4879207291538333461e-15 }, |
| { 30 , 8.4 , 1.057892772982890842e-14 }, |
| { 30 , 8.5 , 1.4879948521285087748e-14 }, |
| { 30 , 9 , 7.6921564693354977569e-14 }, |
| { 30 , 10 , 1.5510960782574666161e-12 }, |
| { 30 , 11 , 2.2735383676316185421e-11 }, |
| { 30 , 12 , 2.5522590430344176732e-10 }, |
| { 30 , 13 , 2.2828783239868354402e-09 }, |
| { 30 , 14 , 1.6775399533577877891e-08 }, |
| { 30 , 15 , 1.0374710201078721135e-07 }, |
| { 30 , 16 , 5.5052386643076382366e-07 }, |
| { 30 , 17 , 2.5460065118711982301e-06 }, |
| { 30 , 18 , 1.0393652487465728599e-05 }, |
| { 30 , 19 , 3.7849142225173515583e-05 }, |
| { 30 , 20 , 0.00012401536360354329497 }, |
| { 30 , 30 , 0.14393585001030734238 }, |
| { 30 , 100 , 0.081460129581172213697 }, |
| { 30 , 300 , -0.029514887800373371812 }, |
| { 30 , 1000 , -0.020271896981075843147 }, |
| { 100 , 1e-08 , 0 }, |
| { 100 , 3.16227766016838e-08 , 0 }, |
| { 100 , 1e-07 , 0 }, |
| { 100 , 3.16227766016838e-07 , 0 }, |
| { 100 , 1e-06 , 0 }, |
| { 100 , 3.16227766016838e-06 , 0 }, |
| { 100 , 1e-05 , 0 }, |
| { 100 , 3.16227766016838e-05 , 0 }, |
| { 100 , 1e-04 , 0 }, |
| { 100 , 0.000316227766016838 , 0 }, |
| { 100 , 0.001 , 0 }, |
| { 100 , 0.00316227766016838 , 0 }, |
| { 100 , 0.01 , 0 }, |
| { 100 , 0.0316227766016838 , 0 }, |
| { 100 , 0.1 , 8.4525165351217888791e-289 }, |
| { 100 , 0.316227766016838 , 8.4506337559752745816e-239 }, |
| { 100 , 1 , 8.4318287896267070128e-189 }, |
| { 100 , 2 , 1.0609531124391718917e-158 }, |
| { 100 , 3 , 4.260360181132621405e-141 }, |
| { 100 , 4 , 1.305547836452271925e-128 }, |
| { 100 , 5 , 6.2677893955418752099e-119 }, |
| { 100 , 6 , 5.0513258541507019365e-111 }, |
| { 100 , 7 , 2.4215591572118171706e-104 }, |
| { 100 , 7.5 , 2.3583800455568589368e-101 }, |
| { 100 , 7.6 , 8.8352979458474109476e-101 }, |
| { 100 , 7.7 , 3.253025120751429903e-100 }, |
| { 100 , 7.8 , 1.1776236102157393805e-99 }, |
| { 100 , 7.9 , 4.1933885427120016432e-99 }, |
| { 100 , 8 , 1.4694094093552327336e-98 }, |
| { 100 , 8.1 , 5.0688862671208964077e-98 }, |
| { 100 , 8.2 , 1.7220304874625643909e-97 }, |
| { 100 , 8.3 , 5.7635248300942440709e-97 }, |
| { 100 , 8.4 , 1.9011188242236321325e-96 }, |
| { 100 , 8.5 , 6.182346491260611201e-96 }, |
| { 100 , 9 , 1.8369106342703587456e-93 }, |
| { 100 , 10 , 6.5973160641553802341e-89 }, |
| { 100 , 11 , 8.6297901331738815878e-85 }, |
| { 100 , 12 , 4.8983704457507876536e-81 }, |
| { 100 , 13 , 1.3781127544328333402e-77 }, |
| { 100 , 14 , 2.1310751903146119988e-74 }, |
| { 100 , 15 , 1.9660095611249536378e-71 }, |
| { 100 , 16 , 1.1559435724349575529e-68 }, |
| { 100 , 17 , 4.5721265690179434188e-66 }, |
| { 100 , 18 , 1.2722370655682102766e-63 }, |
| { 100 , 19 , 2.5856336302772506687e-61 }, |
| { 100 , 20 , 3.9617550943362506795e-59 }, |
| { 100 , 30 , 4.5788015281752424119e-42 }, |
| { 100 , 100 , 0.09636667329586150188 }, |
| { 100 , 300 , -0.014491227064785699996 }, |
| { 100 , 1000 , 0.011676135007802557891 }, |
| { 300 , 1e-08 , 0 }, |
| { 300 , 3.16227766016838e-08 , 0 }, |
| { 300 , 1e-07 , 0 }, |
| { 300 , 3.16227766016838e-07 , 0 }, |
| { 300 , 1e-06 , 0 }, |
| { 300 , 3.16227766016838e-06 , 0 }, |
| { 300 , 1e-05 , 0 }, |
| { 300 , 3.16227766016838e-05 , 0 }, |
| { 300 , 1e-04 , 0 }, |
| { 300 , 0.000316227766016838 , 0 }, |
| { 300 , 0.001 , 0 }, |
| { 300 , 0.00316227766016838 , 0 }, |
| { 300 , 0.01 , 0 }, |
| { 300 , 0.0316227766016838 , 0 }, |
| { 300 , 0.1 , 0 }, |
| { 300 , 0.316227766016838 , 0 }, |
| { 300 , 1 , 0 }, |
| { 300 , 2 , 0 }, |
| { 300 , 3 , 0 }, |
| { 300 , 4 , 0 }, |
| { 300 , 5 , 0 }, |
| { 300 , 6 , 0 }, |
| { 300 , 7 , 0 }, |
| { 300 , 7.5 , 0 }, |
| { 300 , 7.6 , 0 }, |
| { 300 , 7.7 , 0 }, |
| { 300 , 7.8 , 0 }, |
| { 300 , 7.9 , 0 }, |
| { 300 , 8 , 0 }, |
| { 300 , 8.1 , 0 }, |
| { 300 , 8.2 , 0 }, |
| { 300 , 8.3 , 0 }, |
| { 300 , 8.4 , 0 }, |
| { 300 , 8.5 , 0 }, |
| { 300 , 9 , 0 }, |
| { 300 , 10 , 0 }, |
| { 300 , 11 , 0 }, |
| { 300 , 12 , 0 }, |
| { 300 , 13 , 0 }, |
| { 300 , 14 , 0 }, |
| { 300 , 15 , 0 }, |
| { 300 , 16 , 0 }, |
| { 300 , 17 , 0 }, |
| { 300 , 18 , 0 }, |
| { 300 , 19 , 0 }, |
| { 300 , 20 , 0 }, |
| { 300 , 30 , 1.0388021531643495593e-262 }, |
| { 300 , 100 , 3.5203666218469330448e-109 }, |
| { 300 , 300 , 0.066818398128979980544 }, |
| { 300 , 1000 , 0.00046782803879124944908 } |
| }; |
| |
| @Test |
| public void testBesselJ() { |
| final double tol = 1e-15; |
| |
| for (int i = 0; i < BESSEL_J_REF.length; i++) { |
| final double[] data = BESSEL_J_REF[i]; |
| final double order = data[0]; |
| final double x = data[1]; |
| final double expected = data[2]; |
| final double actual = BesselJ.value(order, x); |
| |
| String msg = "" + order + " @ " + x; |
| Assert.assertEquals(msg, expected, actual, tol); |
| } |
| } |
| |
| @Test(expected=MathIllegalArgumentException.class) |
| public void testIAEBadOrder() { |
| BesselJ.value(-1, 1); |
| } |
| |
| @Test(expected=MathIllegalArgumentException.class) |
| public void testIAEBadArgument() { |
| BesselJ.value(1, 100000); |
| } |
| } |