diff --git a/.gitignore b/.gitignore index aedf0ec..1419bab 100644 --- a/.gitignore +++ b/.gitignore @@ -76,4 +76,6 @@ Manifest.toml # Original notes from when developing notes/* # My terrible, newbie attempt at version control (yes, shouldve jsut learned git) -backups/* \ No newline at end of file +backups/* +# Directory for holding the code for various bhmie implementations +.bhmielibs/* \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1aca914 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "GitHooks.hooksDirectory": "/home/cianh/Programming/Git_Projects/nanoconc/.git/hooks" +} \ No newline at end of file diff --git a/0-100abs.jl b/0-100abs.jl deleted file mode 100755 index 5493a13..0000000 --- a/0-100abs.jl +++ /dev/null @@ -1,24 +0,0 @@ -include("nanoconc.jl") -using PyPlot - -particledata = ([2.5 1.], - [5. 1.], - [10. 1.], - [20. 1.], - [30. 1.], - [40. 1.], - [50. 1.], - [60. 1.], - [70. 1.], - [80. 1.], - [90. 1.], - [100. 1.]) - -mat = nanoconc.loadmaterial("Gold",disp=false) -predict(x) = nanoconc.abspredict(1.333,250.,900.,0x00001000,x,mat,1000.,1.) -spectra = predict.(particledata) - -for spectrum in spectra - plot(spectrum[:,1],spectrum[:,2]) -end -show() diff --git a/0-100test.jl b/0-100test.jl deleted file mode 100755 index 45d1b13..0000000 --- a/0-100test.jl +++ /dev/null @@ -1,39 +0,0 @@ -println("\nImporting modules...") - -include("nanoconc.jl") -using PyPlot -using JLD2 - -println("Loading parameters...") - -particledata = ([2.5 1.], - [5. 1.], - [10. 1.], - [20. 1.], - [30. 1.], - [40. 1.], - [50. 1.], - [60. 1.], - [70. 1.], - [80. 1.], - [90. 1.], - [100. 1.]) - -mat = nanoconc.loadmaterial("Gold",disp=false) -predict(x) = nanoconc.qpredict(1.333,250.,900.,0x00001000,x,mat) -println("Calculating spectra...") -print("Calculation time: ") - -@time spectra = predict.(particledata) - -println("Saving output...") - -println("Plotting spectra...") - -for spectrum in spectra - plot(spectrum[:,1],spectrum[:,2]) -end -println("Displaying spectra...") -println("Script complete!") -show() -println() diff --git a/20nm.jl b/20nm.jl deleted file mode 100755 index b70df0f..0000000 --- a/20nm.jl +++ /dev/null @@ -1,28 +0,0 @@ -println("\nImporting modules...") - -include("nanoconc.jl") -using PyPlot - -println("Loading parameters...") - -particledata = [20. 1.] - -mat = nanoconc.loadmaterial("Gold",disp=false) -predict(x) = nanoconc.abspredict(1.333,450.,650.,0x00001000,x,mat,1000.,1.) - -println("Calculating spectra...") -print("Calculation time: ") - -@time spectrum = predict(particledata) - -println("Finding lambda max...") -#println("\nDebug data:\nfindmax = $(findmax(spectrum[:,2]))\nmaxind = $(findmax(spectrum[:,2])[2])") -lmax = spectrum[findmax(spectrum[:,2])[2],1] -println("lambda max = $(lmax)") - -println("Plotting spectra...") - -plot(spectrum[:,1],spectrum[:,2]) -println("Displaying spectra...") -show() -println("Script complete!") diff --git a/abs.csv b/abs.csv deleted file mode 100644 index 071bc95..0000000 --- a/abs.csv +++ /dev/null @@ -1,4096 +0,0 @@ -250.0,6.4050393630165585 -250.15873015873015,6.405198375455386 -250.31746031746033,6.405356613579415 -250.47619047619048,6.405514076029071 -250.63492063492063,6.405670761444101 -250.79365079365078,6.405826668463598 -250.95238095238096,6.405981795726015 -251.11111111111111,6.406136141869198 -251.26984126984127,6.406289705530403 -251.42857142857142,6.406442485346316 -251.5873015873016,6.406594479953082 -251.74603174603175,6.40674568798632 -251.9047619047619,6.406896108081152 -252.06349206349208,6.40704573887222 -252.22222222222223,6.407194578993716 -252.38095238095238,6.4073426270793945 -252.53968253968253,6.407489881762605 -252.6984126984127,6.407636341676308 -252.85714285714286,6.4077820054531 -253.015873015873,6.407926871725239 -253.17460317460316,6.408070939124663 -253.33333333333334,6.408214206283014 -253.4920634920635,6.408356671831662 -253.65079365079364,6.408498334401728 -253.8095238095238,6.408639192624107 -253.96825396825398,6.408779245129488 -254.12698412698413,6.408918490548383 -254.28571428571428,6.409056927511143 -254.44444444444446,6.409194554647988 -254.6031746031746,6.409331370589025 -254.76190476190476,6.409467373964274 -254.9206349206349,6.409602563403689 -255.0793650793651,6.409736937537184 -255.23809523809524,6.409778537894726 -255.3968253968254,6.4098052818433775 -255.55555555555554,6.409830889013462 -255.71428571428572,6.409855359059802 -255.87301587301587,6.409878691641712 -256.031746031746,6.409900886423023 -256.1904761904762,6.4099219430720975 -256.3492063492063,6.4099418612618395 -256.5079365079365,6.409960640669718 -256.6666666666667,6.40997828097778 -256.8253968253968,6.409994781872666 -256.984126984127,6.410010143045627 -257.14285714285717,6.410024364192539 -257.3015873015873,6.41003744501392 -257.46031746031747,6.410049385214946 -257.6190476190476,6.410060184505466 -257.77777777777777,6.410069842600016 -257.93650793650795,6.410078359217839 -258.0952380952381,6.4100857340828945 -258.25396825396825,6.410091966923879 -258.41269841269843,6.410097057474238 -258.57142857142856,6.410101005472183 -258.73015873015873,6.410103810660707 -258.8888888888889,6.410105472787597 -259.04761904761904,6.410105991605453 -259.2063492063492,6.410105366871698 -259.36507936507934,6.410103598348599 -259.5238095238095,6.410100685803277 -259.6825396825397,6.410096629007721 -259.8412698412698,6.410091427738808 -260.0,6.410085081778314 -260.1587301587302,6.410077590912929 -260.3174603174603,6.410068954934269 -260.4761904761905,6.410059173638896 -260.63492063492066,6.410048246828328 -260.7936507936508,6.410036174309056 -260.95238095238096,6.410022955892553 -261.1111111111111,6.410008591395296 -261.26984126984127,6.409993080638772 -261.42857142857144,6.409976423449498 -261.58730158730157,6.409958619659032 -261.74603174603175,6.409844164531525 -261.9047619047619,6.409720507250624 -262.06349206349205,6.4095959632691395 -262.22222222222223,6.409470532914504 -262.3809523809524,6.409344216517922 -262.53968253968253,6.409217014414369 -262.6984126984127,6.4090889269425935 -262.85714285714283,6.408959954445118 -263.015873015873,6.40883009726824 -263.1746031746032,6.4086993557620335 -263.3333333333333,6.4085677302803505 -263.4920634920635,6.408435221180697 -263.6507936507937,6.4083018288247295 -263.8095238095238,6.408167553577513 -263.968253968254,6.4080323958080205 -264.12698412698415,6.407896355889003 -264.2857142857143,6.407759434196997 -264.44444444444446,6.40762163111232 -264.6031746031746,6.407482947019078 -264.76190476190476,6.407343382305158 -264.92063492063494,6.407202937362231 -265.07936507936506,6.407061612585759 -265.23809523809524,6.406919408374985 -265.3968253968254,6.406776325132941 -265.55555555555554,6.406632363266446 -265.7142857142857,6.406487523186105 -265.87301587301585,6.406341805306312 -266.031746031746,6.406195210045245 -266.1904761904762,6.406047737824873 -266.3492063492063,6.405899389070951 -266.5079365079365,6.405750164213023 -266.6666666666667,6.4056000636844175 -266.8253968253968,6.4054490879222525 -266.984126984127,6.405297237367432 -267.14285714285717,6.405144512464649 -267.3015873015873,6.404990913662382 -267.46031746031747,6.404836441412892 -267.6190476190476,6.404681096172232 -267.77777777777777,6.404524878400236 -267.93650793650795,6.404367788560523 -268.0952380952381,6.404209827120499 -268.25396825396825,6.4040509945513495 -268.41269841269843,6.403891291328045 -268.57142857142856,6.403730717929339 -268.73015873015873,6.403569274837762 -268.8888888888889,6.403406962539631 -269.04761904761904,6.403108072269205 -269.2063492063492,6.402798166877652 -269.36507936507934,6.402487464827619 -269.5238095238095,6.4021759674701775 -269.6825396825397,6.4018636761583085 -269.8412698412698,6.401550592246892 -270.0,6.401236717092704 -270.1587301587302,6.400922052054411 -270.3174603174603,6.400606598492559 -270.4761904761905,6.400290357769574 -270.63492063492066,6.399973331249749 -270.7936507936508,6.399655520299241 -270.95238095238096,6.399336926286064 -271.1111111111111,6.399017550580082 -271.26984126984127,6.398697394553002 -271.42857142857144,6.398376459578367 -271.58730158730157,6.398054747031551 -271.74603174603175,6.397732258289748 -271.9047619047619,6.397408994731968 -272.06349206349205,6.397084957739031 -272.22222222222223,6.396760148693555 -272.3809523809524,6.396434568979952 -272.53968253968253,6.396108219984423 -272.6984126984127,6.395781103094944 -272.85714285714283,6.395453219701263 -273.015873015873,6.395124571194894 -273.1746031746032,6.394795158969104 -273.3333333333333,6.394464984418908 -273.4920634920635,6.394134048941063 -273.6507936507937,6.393802353934056 -273.8095238095238,6.3934699007981015 -273.968253968254,6.393136690935125 -274.12698412698415,6.392802725748765 -274.2857142857143,6.392468006644356 -274.44444444444446,6.392132535028928 -274.6031746031746,6.3917963123111905 -274.76190476190476,6.3914593399015285 -274.92063492063494,6.3911216192119955 -275.07936507936506,6.3907831516563 -275.23809523809524,6.3904439386498 -275.3968253968254,6.390103981609496 -275.55555555555554,6.389763281954016 -275.7142857142857,6.389421841103616 -275.87301587301585,6.38907966048016 -276.031746031746,6.388736741507122 -276.1904761904762,6.38838795857352 -276.3492063492063,6.388034910696924 -276.5079365079365,6.387681558973478 -276.6666666666667,6.387327903949314 -276.8253968253968,6.386973946171736 -276.984126984127,6.386619686189218 -277.14285714285717,6.386265124551388 -277.3015873015873,6.385910261809025 -277.46031746031747,6.3855550985140495 -277.6190476190476,6.385199635219516 -277.77777777777777,6.384843872479603 -277.93650793650795,6.384487810849606 -278.0952380952381,6.38413145088593 -278.25396825396825,6.383774793146081 -278.41269841269843,6.383417838188655 -278.57142857142856,6.383060586573336 -278.73015873015873,6.382703038860882 -278.8888888888889,6.382345195613118 -279.04761904761904,6.381987057392932 -279.2063492063492,6.381628624764261 -279.36507936507934,6.381269898292086 -279.5238095238095,6.380910878542426 -279.6825396825397,6.380551566082323 -279.8412698412698,6.3801919614798415 -280.0,6.379832065304055 -280.1587301587302,6.379471878125043 -280.3174603174603,6.3791114005138745 -280.4761904761905,6.3787506330426105 -280.63492063492066,6.378389576284286 -280.7936507936508,6.3780282308129115 -280.95238095238096,6.377666597203453 -281.1111111111111,6.377304676031836 -281.26984126984127,6.376942467874932 -281.42857142857144,6.376579973310546 -281.58730158730157,6.376217192917418 -281.74603174603175,6.375854127275205 -281.9047619047619,6.375490776964481 -282.06349206349205,6.3751271425667255 -282.22222222222223,6.374763224664258 -282.3809523809524,6.374399023840455 -282.53968253968253,6.374034540679408 -282.6984126984127,6.373669775766137 -282.85714285714283,6.373304729686526 -283.015873015873,6.37293940302732 -283.1746031746032,6.372573796376108 -283.3333333333333,6.372207910321324 -283.4920634920635,6.371841745452232 -283.6507936507937,6.371475302358925 -283.8095238095238,6.371108581632309 -283.968253968254,6.370741583864101 -284.12698412698415,6.370374309646819 -284.2857142857143,6.370006759573775 -284.44444444444446,6.3696540058233895 -284.6031746031746,6.369339826962286 -284.76190476190476,6.3690255207970035 -284.92063492063494,6.368711087671245 -285.07936507936506,6.368396527928837 -285.23809523809524,6.36808184191372 -285.3968253968254,6.367767029969945 -285.55555555555554,6.367452092441672 -285.7142857142857,6.367137029673166 -285.87301587301585,6.366821842008788 -286.031746031746,6.366506529793 -286.1904761904762,6.366191093370354 -286.3492063492063,6.365875533085491 -286.5079365079365,6.365559849283139 -286.6666666666667,6.365244042308105 -286.8253968253968,6.364928112505275 -286.984126984127,6.364612060219609 -287.14285714285717,6.364295885796137 -287.3015873015873,6.363979589579957 -287.46031746031747,6.363663171916227 -287.6190476190476,6.363346633150168 -287.77777777777777,6.363029973627054 -287.93650793650795,6.362713193692213 -288.0952380952381,6.362396293691021 -288.25396825396825,6.362079273968899 -288.41269841269843,6.361762134871309 -288.57142857142856,6.361444876743752 -288.73015873015873,6.361127499931761 -288.8888888888889,6.360810004780903 -289.04761904761904,6.36049239163677 -289.2063492063492,6.3601746608449785 -289.36507936507934,6.359856812751166 -289.5238095238095,6.359538847700985 -289.6825396825397,6.359220766040102 -289.8412698412698,6.358902568114195 -290.0,6.358584254268949 -290.1587301587302,6.358265824850046 -290.3174603174603,6.357947280203176 -290.4761904761905,6.357628620674019 -290.63492063492066,6.357309846608251 -290.7936507936508,6.3569909583515365 -290.95238095238096,6.356671956249526 -291.1111111111111,6.356352840647853 -291.26984126984127,6.356033611892131 -291.42857142857144,6.355714270327948 -291.58730158730157,6.355394816300868 -291.74603174603175,6.35507525015642 -291.9047619047619,6.354755572240103 -292.06349206349205,6.3544357828973785 -292.22222222222223,6.354115882473666 -292.3809523809524,6.353795871314342 -292.53968253968253,6.353401815780879 -292.6984126984127,6.352997522752098 -292.85714285714283,6.352593071754302 -293.015873015873,6.35218846332155 -293.1746031746032,6.351783697987964 -293.3333333333333,6.351378776287719 -293.4920634920635,6.350973698755045 -293.6507936507937,6.350568465924214 -293.8095238095238,6.350163078329538 -293.968253968254,6.349757536505356 -294.12698412698415,6.349351840986038 -294.2857142857143,6.3489459923059695 -294.44444444444446,6.3485399909995515 -294.6031746031746,6.348133837601189 -294.76190476190476,6.347727532645291 -294.92063492063494,6.347321076666258 -295.07936507936506,6.346914470198484 -295.23809523809524,6.3465077137763375 -295.3968253968254,6.34610080793417 -295.55555555555554,6.3456937532063025 -295.7142857142857,6.3452865501270175 -295.87301587301585,6.344879199230559 -296.031746031746,6.3444717010511225 -296.1904761904762,6.344064056122848 -296.3492063492063,6.34365626497982 -296.5079365079365,6.343248328156053 -296.6666666666667,6.342840246185497 -296.8253968253968,6.342432019602017 -296.984126984127,6.342023648939403 -297.14285714285717,6.3416151347313505 -297.3015873015873,6.341206477511464 -297.46031746031747,6.340797677813247 -297.6190476190476,6.340388736170097 -297.77777777777777,6.339979653115301 -297.93650793650795,6.339570429182028 -298.0952380952381,6.339161064903325 -298.25396825396825,6.33875156081211 -298.41269841269843,6.338341917441167 -298.57142857142856,6.3379321353231415 -298.73015873015873,6.337522214990532 -298.8888888888889,6.337112156975688 -299.04761904761904,6.336701961810803 -299.2063492063492,6.336291630027908 -299.36507936507934,6.335881162158867 -299.5238095238095,6.3354705587353735 -299.6825396825397,6.335059820288939 -299.8412698412698,6.334648947350897 -300.0,6.334237940452388 -300.1587301587302,6.33382680012436 -300.3174603174603,6.333415526897563 -300.4761904761905,6.333004121302543 -300.63492063492066,6.332592583869632 -300.7936507936508,6.3321809151289505 -300.95238095238096,6.3318251072908405 -301.1111111111111,6.331582940590002 -301.26984126984127,6.3313407811816775 -301.42857142857144,6.331098629218333 -301.58730158730157,6.330856484852028 -301.74603174603175,6.330614348234411 -301.9047619047619,6.330372219516725 -302.06349206349205,6.3301300988498035 -302.22222222222223,6.329887986384072 -302.3809523809524,6.3296458822695465 -302.53968253968253,6.329403786655838 -302.6984126984127,6.329161699692148 -302.85714285714283,6.32891962152727 -303.015873015873,6.328677552309588 -303.1746031746032,6.328435492187084 -303.3333333333333,6.3281934413073255 -303.4920634920635,6.3279513998174775 -303.6507936507937,6.327709367864295 -303.8095238095238,6.327467345594128 -303.968253968254,6.327225333152917 -304.12698412698415,6.326983330686197 -304.2857142857143,6.326741338339096 -304.44444444444446,6.326499356256335 -304.6031746031746,6.326257384582227 -304.76190476190476,6.326015423460683 -304.92063492063494,6.325773473035205 -305.07936507936506,6.325531533448885 -305.23809523809524,6.325289604844416 -305.3968253968254,6.325047687364081 -305.55555555555554,6.324805781149759 -305.7142857142857,6.324563886342922 -305.87301587301585,6.324322003084639 -306.031746031746,6.324080131515571 -306.1904761904762,6.323838271775977 -306.3492063492063,6.32359642400571 -306.5079365079365,6.323354588344218 -306.6666666666667,6.323112764930546 -306.8253968253968,6.322870953903334 -306.984126984127,6.322629155400818 -307.14285714285717,6.322387369560831 -307.3015873015873,6.322145596520802 -307.46031746031747,6.321903836417758 -307.6190476190476,6.3216620893883215 -307.77777777777777,6.321420355568713 -307.93650793650795,6.32117863509475 -308.0952380952381,6.320936928101848 -308.25396825396825,6.320695234725022 -308.41269841269843,6.320453555098883 -308.57142857142856,6.320211889357641 -308.73015873015873,6.319970237635107 -308.8888888888889,6.319728600064687 -309.04761904761904,6.319486976779389 -309.2063492063492,6.3192453679118215 -309.36507936507934,6.31900377359419 -309.5238095238095,6.318762193958303 -309.6825396825397,6.318520629135566 -309.8412698412698,6.31827907925699 -310.0,6.3180375444531816 -310.1587301587302,6.317796024854353 -310.3174603174603,6.317554520590316 -310.4761904761905,6.3173130317904835 -310.63492063492066,6.317071558583874 -310.7936507936508,6.316806393449984 -310.95238095238096,6.316524743783725 -311.1111111111111,6.316243077989516 -311.26984126984127,6.315961396269489 -311.42857142857144,6.315679698825367 -311.58730158730157,6.315397985858472 -311.74603174603175,6.315116257569721 -311.9047619047619,6.314834514159626 -312.06349206349205,6.314552755828294 -312.22222222222223,6.314270982775426 -312.3809523809524,6.3139891952003175 -312.53968253968253,6.313707393301861 -312.6984126984127,6.313425577278538 -312.85714285714283,6.3131437473284295 -313.015873015873,6.312861903649205 -313.1746031746032,6.312580046438129 -313.3333333333333,6.312298175892061 -313.4920634920635,6.31201629220745 -313.6507936507937,6.311734395580342 -313.8095238095238,6.311452486206371 -313.968253968254,6.311170564280767 -314.12698412698415,6.310888629998349 -314.2857142857143,6.310606683553531 -314.44444444444446,6.310324725140317 -314.6031746031746,6.310042754952303 -314.76190476190476,6.309760773182676 -314.92063492063494,6.309478780024215 -315.07936507936506,6.309196775669292 -315.23809523809524,6.308914760309867 -315.3968253968254,6.3086327341374915 -315.55555555555554,6.308350697343309 -315.7142857142857,6.308068650118055 -315.87301587301585,6.307786592652052 -316.031746031746,6.307504525135215 -316.1904761904762,6.30722244775705 -316.3492063492063,6.306940360706653 -316.5079365079365,6.306658264172708 -316.6666666666667,6.306376158343494 -316.8253968253968,6.306094043406874 -316.984126984127,6.305811919550306 -317.14285714285717,6.305529786960836 -317.3015873015873,6.305247645825099 -317.46031746031747,6.304965496329321 -317.6190476190476,6.304683338659317 -317.77777777777777,6.304401173000493 -317.93650793650795,6.3041189995378435 -318.0952380952381,6.303836818455952 -318.25396825396825,6.303554629938995 -318.41269841269843,6.303272434170735 -318.57142857142856,6.302990231334523 -318.73015873015873,6.302708021613306 -318.8888888888889,6.302425805189614 -319.04761904761904,6.30214358224557 -319.2063492063492,6.301861352962884 -319.36507936507934,6.301579117522859 -319.5238095238095,6.3012968761063854 -319.6825396825397,6.3010146288939435 -319.8412698412698,6.300732376065603 -320.0,6.300450117801024 -320.1587301587302,6.300167854279455 -320.3174603174603,6.299885585679737 -320.4761904761905,6.299714962412495 -320.63492063492066,6.299665491738704 -320.7936507936508,6.299616290365814 -320.95238095238096,6.2995673580598535 -321.1111111111111,6.2995186945866495 -321.26984126984127,6.299470299711839 -321.42857142857144,6.299422173200864 -321.58730158730157,6.299374314818981 -321.74603174603175,6.2993267243312525 -321.9047619047619,6.29927940150256 -322.06349206349205,6.299232346097597 -322.22222222222223,6.299185557880878 -322.3809523809524,6.299139036616734 -322.53968253968253,6.299092782069319 -322.6984126984127,6.299046794002613 -322.85714285714283,6.299001072180415 -323.015873015873,6.298955616366358 -323.1746031746032,6.2989104263239 -323.3333333333333,6.298865501816329 -323.4920634920635,6.29882084260677 -323.6507936507937,6.298776448458178 -323.8095238095238,6.2987323191333475 -323.968253968254,6.298688454394909 -324.12698412698415,6.2986448540053335 -324.2857142857143,6.298601517726933 -324.44444444444446,6.298558445321864 -324.6031746031746,6.2985156365521275 -324.76190476190476,6.298473091179571 -324.92063492063494,6.298430808965891 -325.07936507936506,6.298388789672634 -325.23809523809524,6.298347033061199 -325.3968253968254,6.298305538892836 -325.55555555555554,6.298264306928655 -325.7142857142857,6.298223336929617 -325.87301587301585,6.298182628656547 -326.031746031746,6.298142181870127 -326.1904761904762,6.298101996330901 -326.3492063492063,6.298062071799278 -326.5079365079365,6.298022408035532 -326.6666666666667,6.2979830047998 -326.8253968253968,6.297943861852091 -326.984126984127,6.297904978952282 -327.14285714285717,6.297866355860102 -327.3015873015873,6.297827992335213 -327.46031746031747,6.29778988813709 -327.6190476190476,6.297752043025105 -327.77777777777777,6.2977144567585075 -327.93650793650795,6.297677129096424 -328.0952380952381,6.297640059797864 -328.25396825396825,6.297603248621717 -328.41269841269843,6.297566695326755 -328.57142857142856,6.297530399671637 -328.73015873015873,6.297494361414907 -328.8888888888889,6.297458580314998 -329.04761904761904,6.297423056130228 -329.2063492063492,6.297387788618744 -329.36507936507934,6.297352777538779 -329.5238095238095,6.297318022648264 -329.6825396825397,6.297283523705088 -329.8412698412698,6.297249280467039 -330.0,6.297215292691799 -330.1587301587302,6.297181560136951 -330.3174603174603,6.2971480825599775 -330.4761904761905,6.297114859718261 -330.63492063492066,6.2970818913690865 -330.7936507936508,6.297049177269644 -330.95238095238096,6.297016717177029 -331.1111111111111,6.296984510848242 -331.26984126984127,6.296952558040192 -331.42857142857144,6.296920858509696 -331.58730158730157,6.2967621893030445 -331.74603174603175,6.296499525415321 -331.9047619047619,6.296236912848071 -332.06349206349205,6.295974351680072 -332.22222222222223,6.295711841989661 -332.3809523809524,6.2954493838547405 -332.53968253968253,6.295186977352779 -332.6984126984127,6.294924622560812 -332.85714285714283,6.29466231955544 -333.015873015873,6.294400068412834 -333.1746031746032,6.294137869208736 -333.3333333333333,6.293875722018457 -333.4920634920635,6.2936136269168825 -333.6507936507937,6.293351583978468 -333.8095238095238,6.293089593277245 -333.968253968254,6.292827654886822 -334.12698412698415,6.292565768880383 -334.2857142857143,6.292303935330689 -334.44444444444446,6.292042154310082 -334.6031746031746,6.291780425890483 -334.76190476190476,6.291518750143394 -334.92063492063494,6.291257127139899 -335.07936507936506,6.290995556950669 -335.23809523809524,6.290734039645955 -335.3968253968254,6.2904725752955954 -335.55555555555554,6.290211163969017 -335.7142857142857,6.289949805735235 -335.87301587301585,6.289688500662851 -336.031746031746,6.289427248820059 -336.1904761904762,6.289166050274643 -336.3492063492063,6.2889049050939825 -336.5079365079365,6.288643813345049 -336.6666666666667,6.288382775094407 -336.8253968253968,6.288121790408219 -336.984126984127,6.2878608593522465 -337.14285714285717,6.287599981991846 -337.3015873015873,6.287339158391975 -337.46031746031747,6.287078388617191 -337.6190476190476,6.286817672731654 -337.77777777777777,6.286557010799124 -337.93650793650795,6.28629640288297 -338.0952380952381,6.2860358490461605 -338.25396825396825,6.285775349351273 -338.41269841269843,6.285514903860494 -338.57142857142856,6.285254512635614 -338.73015873015873,6.284994175738037 -338.8888888888889,6.284733893228774 -339.04761904761904,6.28447366516845 -339.2063492063492,6.2842134916173045 -339.36507936507934,6.283953372635186 -339.5238095238095,6.283693308281564 -339.6825396825397,6.283433298615519 -339.8412698412698,6.283173343695751 -340.0,6.282913443580579 -340.1587301587302,6.282653598327941 -340.3174603174603,6.282393807995395 -340.4761904761905,6.282134072640121 -340.63492063492066,6.281874392318923 -340.7936507936508,6.281614767088227 -340.95238095238096,6.281355197004086 -341.1111111111111,6.281095682122178 -341.26984126984127,6.280836222497807 -341.42857142857144,6.280576818185908 -341.58730158730157,6.280317469241044 -341.74603174603175,6.280058175717409 -341.9047619047619,6.2797989376688275 -342.06349206349205,6.279539755148758 -342.22222222222223,6.2792806282102935 -342.3809523809524,6.27902155690616 -342.53968253968253,6.278746832169834 -342.6984126984127,6.278425014560795 -342.85714285714283,6.278103218813131 -343.015873015873,6.277781445082908 -343.1746031746032,6.277459693525726 -343.3333333333333,6.277137964296719 -343.4920634920635,6.276816257550557 -343.6507936507937,6.276494573441449 -343.8095238095238,6.276172912123138 -343.968253968254,6.2758512737489065 -344.12698412698415,6.2755296584715765 -344.2857142857143,6.275208066443508 -344.44444444444446,6.2748864978166 -344.6031746031746,6.274564952742294 -344.76190476190476,6.274243431371572 -344.92063492063494,6.273921933854957 -345.07936507936506,6.2736004603425135 -345.23809523809524,6.2732790109838525 -345.3968253968254,6.2729575859281255 -345.55555555555554,6.27263618532403 -345.7142857142857,6.272314809319808 -345.87301587301585,6.271993458063248 -346.031746031746,6.271672131701683 -346.1904761904762,6.271350830381995 -346.3492063492063,6.271029554250614 -346.5079365079365,6.2707083034535165 -346.6666666666667,6.2703870781362285 -346.8253968253968,6.270065878443828 -346.984126984127,6.2697447045209405 -347.14285714285717,6.269423556511744 -347.3015873015873,6.269102434559969 -347.46031746031747,6.268781338808896 -347.6190476190476,6.268460269401363 -347.77777777777777,6.268139226479757 -347.93650793650795,6.2678182101860225 -348.0952380952381,6.267497220661659 -348.25396825396825,6.267176258047721 -348.41269841269843,6.266855322484821 -348.57142857142856,6.266534414113125 -348.73015873015873,6.266213533072364 -348.8888888888889,6.265892679501821 -349.04761904761904,6.265571853540342 -349.2063492063492,6.265251055326332 -349.36507936507934,6.2649302849977575 -349.5238095238095,6.264609542692146 -349.6825396825397,6.264288828546587 -349.8412698412698,6.263968142697734 -350.0,6.263647485281803 -350.1587301587302,6.263326856434575 -350.3174603174603,6.263006256291396 -350.4761904761905,6.262685684987178 -350.63492063492066,6.262365142656401 -350.7936507936508,6.262044629433108 -350.95238095238096,6.261724145450914 -351.1111111111111,6.261403690843001 -351.26984126984127,6.261083265742122 -351.42857142857144,6.260762870280597 -351.58730158730157,6.260442504590319 -351.74603174603175,6.260122168802754 -351.9047619047619,6.259801863048938 -352.06349206349205,6.25948158745948 -352.22222222222223,6.259161342164565 -352.3809523809524,6.25884112729395 -352.53968253968253,6.258520942976969 -352.6984126984127,6.258200789342531 -352.85714285714283,6.257880666519123 -353.015873015873,6.257560574634807 -353.1746031746032,6.2572405138172265 -353.3333333333333,6.256920484193601 -353.4920634920635,6.256600485890731 -353.6507936507937,6.256280519034998 -353.8095238095238,6.255960583752365 -353.968253968254,6.255640680168374 -354.12698412698415,6.255320808408152 -354.2857142857143,6.255103723092799 -354.44444444444446,6.254974173779653 -354.6031746031746,6.254844620543123 -354.76190476190476,6.254715063301763 -354.92063492063494,6.254585501974133 -355.07936507936506,6.254455936478792 -355.23809523809524,6.254326366734306 -355.3968253968254,6.254196792659241 -355.55555555555554,6.254067214172167 -355.7142857142857,6.253937631191658 -355.87301587301585,6.253808043636292 -356.031746031746,6.253678451424651 -356.1904761904762,6.253548854475322 -356.3492063492063,6.2534192527068955 -356.5079365079365,6.253289646037967 -356.6666666666667,6.253160034387139 -356.8253968253968,6.253030417673017 -356.984126984127,6.252900795814213 -357.14285714285717,6.252771168729345 -357.3015873015873,6.2526415363370385 -357.46031746031747,6.252511898555922 -357.6190476190476,6.252382255304635 -357.77777777777777,6.252252606501821 -357.93650793650795,6.252122952066129 -358.0952380952381,6.25199329191622 -358.25396825396825,6.251863625970759 -358.41269841269843,6.2517339541484205 -358.57142857142856,6.251604276367886 -358.73015873015873,6.251474592547847 -358.8888888888889,6.251344902607002 -359.04761904761904,6.251215206464059 -359.2063492063492,6.251085504037735 -359.36507936507934,6.250955795246754 -359.5238095238095,6.250826080009856 -359.6825396825397,6.250696358245783 -359.8412698412698,6.250566629873291 -360.0,6.2504368948111475 -360.1587301587302,6.250307152978128 -360.3174603174603,6.250177404293019 -360.4761904761905,6.25004764867462 -360.63492063492066,6.249917886041739 -360.7936507936508,6.249788116313196 -360.95238095238096,6.249658339407825 -361.1111111111111,6.24952855524447 -361.26984126984127,6.249398763741986 -361.42857142857144,6.249268964819245 -361.58730158730157,6.249139158395125 -361.74603174603175,6.249009344388522 -361.9047619047619,6.248879522718343 -362.06349206349205,6.24874969330351 -362.22222222222223,6.248619856062956 -362.3809523809524,6.24849001091563 -362.53968253968253,6.248360157780493 -362.6984126984127,6.248230296576522 -362.85714285714283,6.248100427222709 -363.015873015873,6.247970549638057 -363.1746031746032,6.24784066374159 -363.3333333333333,6.247710769452341 -363.4920634920635,6.247580866689362 -363.6507936507937,6.24745095537172 -363.8095238095238,6.247321035418497 -363.968253968254,6.247191106748793 -364.12698412698415,6.247061169281721 -364.2857142857143,6.246931222936414 -364.44444444444446,6.246801267632021 -364.6031746031746,6.246671303287705 -364.76190476190476,6.2465413298226515 -364.92063492063494,6.246411347156059 -365.07936507936506,6.246281355207144 -365.23809523809524,6.2461513538951445 -365.3968253968254,6.246021343139312 -365.55555555555554,6.24589132285892 -365.7142857142857,6.24576129297326 -365.87301587301585,6.245631253401639 -366.031746031746,6.245501204063386 -366.1904761904762,6.245371144877849 -366.3492063492063,6.245241075764396 -366.5079365079365,6.2451109966424125 -366.6666666666667,6.244980907431305 -366.8253968253968,6.2448508080505025 -366.984126984127,6.244720698419449 -367.14285714285717,6.244590578457615 -367.3015873015873,6.244460448084486 -367.46031746031747,6.244330307219574 -367.6190476190476,6.2442001557824085 -367.77777777777777,6.244069993692541 -367.93650793650795,6.24394251210069 -368.0952380952381,6.243824003018957 -368.25396825396825,6.243705440017212 -368.41269841269843,6.243586822991375 -368.57142857142856,6.2434681518374475 -368.73015873015873,6.243349426451514 -368.8888888888889,6.243230646729746 -369.04761904761904,6.2431118125683955 -369.2063492063492,6.2429929238638024 -369.36507936507934,6.242873980512389 -369.5238095238095,6.242754982410663 -369.6825396825397,6.242635929455218 -369.8412698412698,6.242516821542732 -370.0,6.242397658569968 -370.1587301587302,6.242278440433775 -370.3174603174603,6.24215916703109 -370.4761904761905,6.242039838258933 -370.63492063492066,6.241920454014411 -370.7936507936508,6.241801014194719 -370.95238095238096,6.241681518697136 -371.1111111111111,6.241561967419029 -371.26984126984127,6.241442360257855 -371.42857142857144,6.241322697111153 -371.58730158730157,6.2412029778765525 -371.74603174603175,6.241083202451771 -371.9047619047619,6.240963370734612 -372.06349206349205,6.240843482622968 -372.22222222222223,6.24072353801482 -372.3809523809524,6.240603536808238 -372.53968253968253,6.2404834789013774 -372.6984126984127,6.240363364192487 -372.85714285714283,6.240243192579901 -373.015873015873,6.240122963962044 -373.1746031746032,6.240002678237431 -373.3333333333333,6.2398823353046655 -373.4920634920635,6.23976193506244 -373.6507936507937,6.239641477409538 -373.8095238095238,6.239520962244834 -373.968253968254,6.239400389467292 -374.12698412698415,6.239279758975965 -374.2857142857143,6.239159070670001 -374.44444444444446,6.239038324448634 -374.6031746031746,6.238917520211193 -374.76190476190476,6.238796657857095 -374.92063492063494,6.238675737285851 -375.07936507936506,6.238554758397064 -375.23809523809524,6.238433721090426 -375.3968253968254,6.238312625265725 -375.55555555555554,6.238191470822839 -375.7142857142857,6.238070257661738 -375.87301587301585,6.237948985682485 -376.031746031746,6.237827654785239 -376.1904761904762,6.237706264870174 -376.3492063492063,6.2375848158377805 -376.5079365079365,6.2374633075884205 -376.6666666666667,6.237341740022624 -376.8253968253968,6.237220113041016 -376.984126984127,6.237098426544314 -377.14285714285717,6.2369766804333295 -377.3015873015873,6.2368548746089685 -377.46031746031747,6.236733008972233 -377.6190476190476,6.2366110834242185 -377.77777777777777,6.236489097866116 -377.93650793650795,6.236367052199211 -378.0952380952381,6.236244946324885 -378.25396825396825,6.236122780144616 -378.41269841269843,6.236000553559976 -378.57142857142856,6.235878266472634 -378.73015873015873,6.2357559187843545 -378.8888888888889,6.235633510396999 -379.04761904761904,6.235511041212525 -379.2063492063492,6.235388511132987 -379.36507936507934,6.235265920060535 -379.5238095238095,6.23514326789742 -379.6825396825397,6.235020554545986 -379.8412698412698,6.234897779908675 -380.0,6.234774943888029 -380.1587301587302,6.234652046386686 -380.3174603174603,6.234529087307384 -380.4761904761905,6.234406066552956 -380.63492063492066,6.234282984026335 -380.7936507936508,6.234159839630554 -380.95238095238096,6.234036633268744 -381.1111111111111,6.233913364844132 -381.26984126984127,6.233790034260049 -381.42857142857144,6.233666641419921 -381.58730158730157,6.2334768083264125 -381.74603174603175,6.233232649889047 -381.9047619047619,6.232988488781182 -382.06349206349205,6.232744325067656 -382.22222222222223,6.232500158813145 -382.3809523809524,6.232255990082173 -382.53968253968253,6.232011818939105 -382.6984126984127,6.231767645448151 -382.85714285714283,6.2315234696733635 -383.015873015873,6.23127929167864 -383.1746031746032,6.231035111527724 -383.3333333333333,6.230790929284201 -383.4920634920635,6.230546745011503 -383.6507936507937,6.230302558772907 -383.8095238095238,6.230058370631535 -383.968253968254,6.229814180650356 -384.12698412698415,6.229569988892184 -384.2857142857143,6.229325795419679 -384.44444444444446,6.2290816002953475 -384.6031746031746,6.228837403581544 -384.76190476190476,6.228593205340467 -384.92063492063494,6.228349005634166 -385.07936507936506,6.228104804524535 -385.23809523809524,6.227860602073318 -385.3968253968254,6.227616398342104 -385.55555555555554,6.227372193392334 -385.7142857142857,6.227127987285293 -385.87301587301585,6.22688378008212 -386.031746031746,6.226639571843799 -386.1904761904762,6.226395362631162 -386.3492063492063,6.226151152504896 -386.5079365079365,6.225906941525533 -386.6666666666667,6.225662729753457 -386.8253968253968,6.225418517248901 -386.984126984127,6.225174304071949 -387.14285714285717,6.224930090282537 -387.3015873015873,6.224685875940449 -387.46031746031747,6.224441661105324 -387.6190476190476,6.22419744583665 -387.77777777777777,6.223953230193766 -387.93650793650795,6.223709014235864 -388.0952380952381,6.2234647980219915 -388.25396825396825,6.223220581611042 -388.41269841269843,6.2229763650617675 -388.57142857142856,6.222732148432769 -388.73015873015873,6.222487931782502 -388.8888888888889,6.222243715169277 -389.04761904761904,6.2219994986512575 -389.2063492063492,6.221755282286459 -389.36507936507934,6.221511066132754 -389.5238095238095,6.221266850247868 -389.6825396825397,6.221022634689381 -389.8412698412698,6.220778419514728 -390.0,6.220534204781202 -390.1587301587302,6.220289990545947 -390.3174603174603,6.220045776865965 -390.4761904761905,6.219801563798116 -390.63492063492066,6.219557351399113 -390.7936507936508,6.219313139725527 -390.95238095238096,6.219068928833785 -391.1111111111111,6.218824718780173 -391.26984126984127,6.218580509620831 -391.42857142857144,6.2183363014117585 -391.58730158730157,6.2180920942088145 -391.74603174603175,6.217847888067713 -391.9047619047619,6.217603683044026 -392.06349206349205,6.217359479193188 -392.22222222222223,6.217115276570489 -392.3809523809524,6.216871075231078 -392.53968253968253,6.216626875229964 -392.6984126984127,6.216382676622016 -392.85714285714283,6.216138479461962 -393.015873015873,6.215894283804391 -393.1746031746032,6.215650089703752 -393.3333333333333,6.215405897214353 -393.4920634920635,6.215161706390365 -393.6507936507937,6.214917517285819 -393.8095238095238,6.214673329954607 -393.968253968254,6.2144291444504836 -394.12698412698415,6.214184960827064 -394.2857142857143,6.213940779137826 -394.44444444444446,6.213696599436111 -394.6031746031746,6.21345242177512 -394.76190476190476,6.21320824620792 -394.92063492063494,6.212964072787438 -395.07936507936506,6.212719901566467 -395.23809523809524,6.212475732597661 -395.3968253968254,6.212231565933543 -395.55555555555554,6.211987401626492 -395.7142857142857,6.211743239728757 -395.87301587301585,6.211499080292453 -396.031746031746,6.211254923369553 -396.1904761904762,6.211010769011901 -396.3492063492063,6.210766617271206 -396.5079365079365,6.210522468199039 -396.6666666666667,6.21027832184684 -396.8253968253968,6.2100341782659125 -396.984126984127,6.209790037507429 -397.14285714285717,6.2095458996224275 -397.3015873015873,6.209301764661813 -397.46031746031747,6.209076854168128 -397.6190476190476,6.208883336234374 -397.77777777777777,6.208689862115838 -397.93650793650795,6.208496431784444 -398.0952380952381,6.208303045212046 -398.25396825396825,6.208109702370425 -398.41269841269843,6.2079164032313 -398.57142857142856,6.207723147766312 -398.73015873015873,6.207529935947036 -398.8888888888889,6.207336767744982 -399.04761904761904,6.2071436431315865 -399.2063492063492,6.20695056207822 -399.36507936507934,6.2067575245561875 -399.5238095238095,6.206564530536723 -399.6825396825397,6.2063715799909955 -399.8412698412698,6.206178672890108 -400.0,6.205985809205095 -400.1587301587302,6.205792988906926 -400.3174603174603,6.205600211966506 -400.4761904761905,6.205407478354674 -400.63492063492066,6.205214788042203 -400.7936507936508,6.205022140999802 -400.95238095238096,6.204829537198116 -401.1111111111111,6.204636976607726 -401.26984126984127,6.204444459199148 -401.42857142857144,6.204251984942837 -401.58730158730157,6.204059553809182 -401.74603174603175,6.203867165768512 -401.9047619047619,6.2036748207910914 -402.06349206349205,6.2034825188471245 -402.22222222222223,6.203290259906752 -402.3809523809524,6.203098043940055 -402.53968253968253,6.202905870917051 -402.6984126984127,6.202713740807699 -402.85714285714283,6.202521653581897 -403.015873015873,6.202329609209481 -403.1746031746032,6.202137607660229 -403.3333333333333,6.201945648903861 -403.4920634920635,6.201753732910031 -403.6507936507937,6.2015618596483435 -403.8095238095238,6.201370029088338 -403.968253968254,6.201178241199496 -404.12698412698415,6.200986495951243 -404.2857142857143,6.200794793312946 -404.44444444444446,6.200603133253915 -404.6031746031746,6.2004115157434025 -404.76190476190476,6.2002199407506025 -404.92063492063494,6.200028408244656 -405.07936507936506,6.199836918194646 -405.23809523809524,6.199645470569599 -405.3968253968254,6.199454065338485 -405.55555555555554,6.199262702470223 -405.7142857142857,6.199071381933672 -405.87301587301585,6.198880103697641 -406.031746031746,6.198688867730878 -406.1904761904762,6.198497674002085 -406.3492063492063,6.198306522479903 -406.5079365079365,6.198115413132926 -406.6666666666667,6.197924345929688 -406.8253968253968,6.197733320838676 -406.984126984127,6.197542337828319 -407.14285714285717,6.197351396867001 -407.3015873015873,6.197160497923045 -407.46031746031747,6.1969696409647295 -407.6190476190476,6.196778825960276 -407.77777777777777,6.1965880528778605 -407.93650793650795,6.196397321685604 -408.0952380952381,6.196206632351576 -408.25396825396825,6.1960159848438 -408.41269841269843,6.1958253791302464 -408.57142857142856,6.1956348151788365 -408.73015873015873,6.195444292957442 -408.8888888888889,6.195253812433886 -409.04761904761904,6.19506337357594 -409.2063492063492,6.1948729763513315 -409.36507936507934,6.194682620727737 -409.5238095238095,6.1944923066727835 -409.6825396825397,6.1943020341540524 -409.8412698412698,6.194111803139078 -410.0,6.193921613595345 -410.1587301587302,6.193731465490292 -410.3174603174603,6.193541358791314 -410.4761904761905,6.193351293465753 -410.63492063492066,6.19316126948091 -410.7936507936508,6.192971286804041 -410.95238095238096,6.192781345402351 -411.1111111111111,6.192591445243004 -411.26984126984127,6.192401586293118 -411.42857142857144,6.192211768519766 -411.58730158730157,6.192021991889976 -411.74603174603175,6.191832256370732 -411.9047619047619,6.191642561928973 -412.06349206349205,6.1914529085315975 -412.22222222222223,6.191263296145456 -412.3809523809524,6.191073724737359 -412.53968253968253,6.190884194274074 -412.6984126984127,6.190694704722323 -412.85714285714283,6.190505256048788 -413.015873015873,6.190315848220109 -413.1746031746032,6.190126481202882 -413.3333333333333,6.1899346994321 -413.4920634920635,6.1897337322661565 -413.6507936507937,6.189532824539544 -413.8095238095238,6.189331976206208 -413.968253968254,6.18913118722005 -414.12698412698415,6.188930457534932 -414.2857142857143,6.188729787104672 -414.44444444444446,6.188529175883045 -414.6031746031746,6.1883286238237885 -414.76190476190476,6.188128130880595 -414.92063492063494,6.187927697007119 -415.07936507936506,6.187727322156972 -415.23809523809524,6.187527006283725 -415.3968253968254,6.1873267493409125 -415.55555555555554,6.187126551282026 -415.7142857142857,6.1869264120605205 -415.87301587301585,6.186726331629809 -416.031746031746,6.186526309943268 -416.1904761904762,6.186326346954236 -416.3492063492063,6.186126442616012 -416.5079365079365,6.185926596881859 -416.6666666666667,6.185726809705 -416.8253968253968,6.185527081038623 -416.984126984127,6.185327410835881 -417.14285714285717,6.185127799049885 -417.3015873015873,6.184928245633716 -417.46031746031747,6.184728750540415 -417.6190476190476,6.184529313722991 -417.77777777777777,6.1843299351344125 -417.93650793650795,6.184130614727619 -418.0952380952381,6.1839313524555095 -418.25396825396825,6.1837321482709555 -418.41269841269843,6.183533002126788 -418.57142857142856,6.183333913975808 -418.73015873015873,6.183134883770784 -418.8888888888889,6.182935911464445 -419.04761904761904,6.182736997009496 -419.2063492063492,6.182538140358602 -419.36507936507934,6.182339341464401 -419.5238095238095,6.182140600279496 -419.6825396825397,6.181941916756458 -419.8412698412698,6.18174329084783 -420.0,6.181544722506121 -420.1587301587302,6.181346211683809 -420.3174603174603,6.181147758333342 -420.4761904761905,6.180949362407139 -420.63492063492066,6.180751023857589 -420.7936507936508,6.180552742637048 -420.95238095238096,6.180354518697847 -421.1111111111111,6.180156351992285 -421.26984126984127,6.179958242472633 -421.42857142857144,6.179760190091134 -421.58730158730157,6.179562194800002 -421.74603174603175,6.179364256551422 -421.9047619047619,6.179166375297555 -422.06349206349205,6.17896855099053 -422.22222222222223,6.1787707835824515 -422.3809523809524,6.1785730730253965 -422.53968253968253,6.178375419271414 -422.6984126984127,6.178177822272529 -422.85714285714283,6.17798028198074 -423.015873015873,6.177782798348017 -423.1746031746032,6.177585371326224 -423.3333333333333,6.177388000867448 -423.4920634920635,6.1771906869235025 -423.6507936507937,6.1769934294462585 -423.8095238095238,6.176796228387562 -423.968253968254,6.1765990836992355 -424.12698412698415,6.1764019953330775 -424.2857142857143,6.176204963240863 -424.44444444444446,6.176007987374343 -424.6031746031746,6.175811067685245 -424.76190476190476,6.175614204125274 -424.92063492063494,6.175417396646114 -425.07936507936506,6.175220645199421 -425.23809523809524,6.175023949736836 -425.3968253968254,6.174827310209974 -425.55555555555554,6.174630726570427 -425.7142857142857,6.17443419876977 -425.87301587301585,6.174237726759553 -426.031746031746,6.1740413104913054 -426.1904761904762,6.173844949916538 -426.3492063492063,6.1736486449867405 -426.5079365079365,6.173452395653381 -426.6666666666667,6.1732562018679085 -426.8253968253968,6.173060063581752 -426.984126984127,6.172863980746322 -427.14285714285717,6.172667953313009 -427.3015873015873,6.172471981233183 -427.46031746031747,6.172276064458199 -427.6190476190476,6.172080202939389 -427.77777777777777,6.171884396628071 -427.93650793650795,6.171688645475542 -428.0952380952381,6.171492949433082 -428.25396825396825,6.171297308451955 -428.41269841269843,6.171101722483403 -428.57142857142856,6.170906191478657 -428.73015873015873,6.170710715388927 -428.8888888888889,6.1705152941654084 -429.04761904761904,6.170319927759279 -429.2063492063492,6.170124616121701 -429.36507936507934,6.169929359203819 -429.5238095238095,6.169734156956766 -429.6825396825397,6.169539009331655 -429.8412698412698,6.169343916279585 -430.0,6.169148877751643 -430.1587301587302,6.168953893698896 -430.3174603174603,6.168758964072402 -430.4761904761905,6.1685640888231985 -430.63492063492066,6.1684782843907975 -430.7936507936508,6.168411814852305 -430.95238095238096,6.168345445280544 -431.1111111111111,6.16827917550761 -431.26984126984127,6.168213005365673 -431.42857142857144,6.168146934686983 -431.58730158730157,6.1680809633038685 -431.74603174603175,6.168015091048735 -431.9047619047619,6.167949317754069 -432.06349206349205,6.167883643252432 -432.22222222222223,6.167818067376467 -432.3809523809524,6.16775258995889 -432.53968253968253,6.167687210832501 -432.6984126984127,6.167621929830172 -432.85714285714283,6.16755674678486 -433.015873015873,6.167491661529592 -433.1746031746032,6.167426673897478 -433.3333333333333,6.167361783721704 -433.4920634920635,6.167296990835532 -433.6507936507937,6.167232295072305 -433.8095238095238,6.167167696265439 -433.968253968254,6.167103194248432 -434.12698412698415,6.167038788854855 -434.2857142857143,6.166974479918359 -434.44444444444446,6.16691026727267 -434.6031746031746,6.166846150751595 -434.76190476190476,6.166782130189012 -434.92063492063494,6.1667182054188805 -435.07936507936506,6.166654376275234 -435.23809523809524,6.166590642592186 -435.3968253968254,6.166527004203923 -435.55555555555554,6.16646346094471 -435.7142857142857,6.1664000126488885 -435.87301587301585,6.1663366591508755 -436.031746031746,6.1662734002851645 -436.1904761904762,6.166210235886299 -436.3492063492063,6.1661471657889795 -436.5079365079365,6.1660841898279 -436.6666666666667,6.166021307837859 -436.8253968253968,6.165958519653731 -436.984126984127,6.165895825110466 -437.14285714285717,6.165833224043088 -437.3015873015873,6.1657707162866995 -437.46031746031747,6.165708301676477 -437.6190476190476,6.165645980047669 -437.77777777777777,6.1655837512356095 -437.93650793650795,6.165521615075699 -438.0952380952381,6.165459571403413 -438.25396825396825,6.165397620054307 -438.41269841269843,6.165335760864008 -438.57142857142856,6.165273993668219 -438.73015873015873,6.165212318302718 -438.8888888888889,6.1651507346033565 -439.04761904761904,6.165089242406063 -439.2063492063492,6.16502784154684 -439.36507936507934,6.1649665318617615 -439.5238095238095,6.164905313186979 -439.6825396825397,6.164844185358716 -439.8412698412698,6.164783148213274 -440.0,6.1647222015870256 -440.1587301587302,6.164661345316417 -440.3174603174603,6.164600579237969 -440.4761904761905,6.164539903188277 -440.63492063492066,6.164479317004009 -440.7936507936508,6.164418820521908 -440.95238095238096,6.164358413578788 -441.1111111111111,6.16429809601154 -441.26984126984127,6.164237867657125 -441.42857142857144,6.16417772835258 -441.58730158730157,6.164117677935011 -441.74603174603175,6.164057716241603 -441.9047619047619,6.163997843109608 -442.06349206349205,6.163938058376356 -442.22222222222223,6.163878361879245 -442.3809523809524,6.1638187534557485 -442.53968253968253,6.163759232943413 -442.6984126984127,6.163699800179855 -442.85714285714283,6.163640455002766 -443.015873015873,6.163581197249906 -443.1746031746032,6.163522026759112 -443.3333333333333,6.163462943368289 -443.4920634920635,6.163403946915417 -443.6507936507937,6.163345037238544 -443.8095238095238,6.163286214175793 -443.968253968254,6.163227477565359 -444.12698412698415,6.163168827245505 -444.2857142857143,6.163110263054568 -444.44444444444446,6.163051784830956 -444.6031746031746,6.162993392413148 -444.76190476190476,6.1629350856396945 -444.92063492063494,6.162876864349216 -445.07936507936506,6.162818728380405 -445.23809523809524,6.162760677572022 -445.3968253968254,6.162702711762903 -445.55555555555554,6.16264483079195 -445.7142857142857,6.162587034498139 -445.87301587301585,6.162529322720514 -446.031746031746,6.162471695298189 -446.1904761904762,6.162414152070349 -446.3492063492063,6.1623566928762505 -446.5079365079365,6.162299317555218 -446.6666666666667,6.162242025946646 -446.8253968253968,6.162184817889997 -446.984126984127,6.162127693224808 -447.14285714285717,6.162070651790681 -447.3015873015873,6.162013693427289 -447.46031746031747,6.1619568179743744 -447.6190476190476,6.1619000252717475 -447.77777777777777,6.161843315159289 -447.93650793650795,6.161786687476948 -448.0952380952381,6.161730142064743 -448.25396825396825,6.161673678762758 -448.41269841269843,6.161617297411151 -448.57142857142856,6.161560997850146 -448.73015873015873,6.161504779920032 -448.8888888888889,6.161448643461173 -449.04761904761904,6.161392588313994 -449.2063492063492,6.1613366143189925 -449.36507936507934,6.161280721316733 -449.5238095238095,6.161224909147848 -449.6825396825397,6.1611691776530355 -449.8412698412698,6.1611135266730646 -450.0,6.1610579560487695 -450.1587301587302,6.161002465621051 -450.3174603174603,6.16094705523088 -450.4761904761905,6.160891724719291 -450.63492063492066,6.160836473927389 -450.7936507936508,6.160781302696343 -450.95238095238096,6.160720990818577 -451.1111111111111,6.160650131874935 -451.26984126984127,6.160579309788611 -451.42857142857144,6.160508524298612 -451.58730158730157,6.160437775144019 -451.74603174603175,6.160367062063989 -451.9047619047619,6.160296384797747 -452.06349206349205,6.160225743084594 -452.22222222222223,6.160155136663903 -452.3809523809524,6.160084565275119 -452.53968253968253,6.16001402865776 -452.6984126984127,6.15994352655142 -452.85714285714283,6.159873058695767 -453.015873015873,6.159802624830536 -453.1746031746032,6.159732224695542 -453.3333333333333,6.159661858030674 -453.4920634920635,6.15959152457589 -453.6507936507937,6.159521224071226 -453.8095238095238,6.159450956256792 -453.968253968254,6.15938072087277 -454.12698412698415,6.15931051765942 -454.2857142857143,6.1592403463570715 -454.44444444444446,6.159170206706134 -454.6031746031746,6.159100098447087 -454.76190476190476,6.159030021320491 -454.92063492063494,6.158959975066974 -455.07936507936506,6.1588899594272455 -455.23809523809524,6.158819974142088 -455.3968253968254,6.158750018952358 -455.55555555555554,6.158680093598989 -455.7142857142857,6.158610197822993 -455.87301587301585,6.158540331365451 -456.031746031746,6.158470493967527 -456.1904761904762,6.158400685370457 -456.3492063492063,6.158330905315554 -456.5079365079365,6.158261153544209 -456.6666666666667,6.158191429797887 -456.8253968253968,6.158121733818132 -456.984126984127,6.158052065346563 -457.14285714285717,6.157982424124877 -457.3015873015873,6.157912809894848 -457.46031746031747,6.157843222398326 -457.6190476190476,6.157773661377241 -457.77777777777777,6.157704126573597 -457.93650793650795,6.157634617729479 -458.0952380952381,6.157565134587046 -458.25396825396825,6.15749567688854 -458.41269841269843,6.157426244376277 -458.57142857142856,6.15735683679265 -458.73015873015873,6.157287453880136 -458.8888888888889,6.157218095381286 -459.04761904761904,6.157148761038732 -459.2063492063492,6.15707945059518 -459.36507936507934,6.157010163793423 -459.5238095238095,6.156940900376326 -459.6825396825397,6.1568716600868365 -459.8412698412698,6.156802442667981 -460.0,6.156733247862865 -460.1587301587302,6.1566640754146755 -460.3174603174603,6.156594925066675 -460.4761904761905,6.156525796562211 -460.63492063492066,6.156456689644708 -460.7936507936508,6.156387604057672 -460.95238095238096,6.156318539544689 -461.1111111111111,6.156249495849426 -461.26984126984127,6.15618047271563 -461.42857142857144,6.156111469887131 -461.58730158730157,6.156042487107838 -461.74603174603175,6.155973524121741 -461.9047619047619,6.155904580672913 -462.06349206349205,6.155835656505507 -462.22222222222223,6.1557667513637595 -462.3809523809524,6.155697864991987 -462.53968253968253,6.15562899713459 -462.6984126984127,6.15556014753605 -462.85714285714283,6.155491315940931 -463.015873015873,6.155422502093879 -463.1746031746032,6.155353705739624 -463.3333333333333,6.155284926622977 -463.4920634920635,6.155216164488836 -463.6507936507937,6.155147419082177 -463.8095238095238,6.155078690148063 -463.968253968254,6.1550099774316385 -464.12698412698415,6.154941280678134 -464.2857142857143,6.154872599632862 -464.44444444444446,6.15480393404122 -464.6031746031746,6.154735283648689 -464.76190476190476,6.154666648200835 -464.92063492063494,6.154598027443309 -465.07936507936506,6.154529421121846 -465.23809523809524,6.154460828982266 -465.3968253968254,6.154392250770475 -465.55555555555554,6.1543236862324635 -465.7142857142857,6.154255135114307 -465.87301587301585,6.154186597162169 -466.031746031746,6.154118072122296 -466.1904761904762,6.154049559741023 -466.3492063492063,6.153981059764769 -466.5079365079365,6.153912571940041 -466.6666666666667,6.153844096013433 -466.8253968253968,6.153775631731624 -466.984126984127,6.153707178841381 -467.14285714285717,6.153638737089557 -467.3015873015873,6.153570306223097 -467.46031746031747,6.1535018859890265 -467.6190476190476,6.153433476134465 -467.77777777777777,6.153365076406615 -467.93650793650795,6.15329668655277 -468.0952380952381,6.1532283063203135 -468.25396825396825,6.153159935456713 -468.41269841269843,6.153091573709527 -468.57142857142856,6.1530232208264035 -468.73015873015873,6.1529548765550794 -468.8888888888889,6.15288654064338 -469.04761904761904,6.152818212839222 -469.2063492063492,6.152749892890608 -469.36507936507934,6.152681580545636 -469.5238095238095,6.152613275552489 -469.6825396825397,6.152544977659444 -469.8412698412698,6.1524766866148655 -470.0,6.152408402167213 -470.1587301587302,6.152340124065032 -470.3174603174603,6.152271852056862 -470.4761904761905,6.152203585891635 -470.63492063492066,6.152135325318071 -470.7936507936508,6.152067070085083 -470.95238095238096,6.15199881994168 -471.1111111111111,6.151930574636957 -471.26984126984127,6.151862333920106 -471.42857142857144,6.151870073402107 -471.58730158730157,6.152224176493521 -471.74603174603175,6.152578702942163 -471.9047619047619,6.152933653090692 -472.06349206349205,6.153289027284197 -472.22222222222223,6.1536448258702015 -472.3809523809524,6.1540010491986665 -472.53968253968253,6.154357697621998 -472.6984126984127,6.154714771495045 -472.85714285714283,6.155072271175112 -473.015873015873,6.15543019702196 -473.1746031746032,6.155788549397805 -473.3333333333333,6.156147328667334 -473.4920634920635,6.1565065351977015 -473.6507936507937,6.156866169358534 -473.8095238095238,6.157226231521938 -473.968253968254,6.1575867220625025 -474.12698412698415,6.157947641357302 -474.2857142857143,6.158308989785905 -474.44444444444446,6.158670767730374 -474.6031746031746,6.159032975575274 -474.76190476190476,6.159395613707672 -474.92063492063494,6.1597586825171495 -475.07936507936506,6.160122182395796 -475.23809523809524,6.160486113738224 -475.3968253968254,6.160850476941567 -475.55555555555554,6.161215272405487 -475.7142857142857,6.1615805005321755 -475.87301587301585,6.161946161726364 -476.031746031746,6.162312256395324 -476.1904761904762,6.16267878494887 -476.3492063492063,6.163045747799369 -476.5079365079365,6.163413145361743 -476.6666666666667,6.163780978053472 -476.8253968253968,6.164149246294599 -476.984126984127,6.164517950507736 -477.14285714285717,6.164887091118068 -477.3015873015873,6.165256668553357 -477.46031746031747,6.165626683243946 -477.6190476190476,6.165997135622766 -477.77777777777777,6.166368026125338 -477.93650793650795,6.166739355189777 -478.0952380952381,6.1671111232568 -478.25396825396825,6.167483330769728 -478.41269841269843,6.16785597817449 -478.57142857142856,6.16822906591963 -478.73015873015873,6.168602594456309 -478.8888888888889,6.168976564238313 -479.04761904761904,6.1693509757220495 -479.2063492063492,6.169725829366566 -479.36507936507934,6.170101125633541 -479.5238095238095,6.170476864987293 -479.6825396825397,6.17085304789479 -479.8412698412698,6.171229674825646 -480.0,6.171606746252134 -480.1587301587302,6.17198426264918 -480.3174603174603,6.172362224494379 -480.4761904761905,6.172740632267992 -480.63492063492066,6.1731194864529515 -480.7936507936508,6.17349878753487 -480.95238095238096,6.173878536002039 -481.1111111111111,6.174258732345437 -481.26984126984127,6.174639377058734 -481.42857142857144,6.175020470638294 -481.58730158730157,6.175402013583182 -481.74603174603175,6.175784006395166 -481.9047619047619,6.176166449578724 -482.06349206349205,6.176549343641046 -482.22222222222223,6.176932689092041 -482.3809523809524,6.177316486444338 -482.53968253968253,6.177700736213295 -482.6984126984127,6.178085438917001 -482.85714285714283,6.178470595076278 -483.015873015873,6.17885620521469 -483.1746031746032,6.1792422698585465 -483.3333333333333,6.1796287895369035 -483.4920634920635,6.180015764781571 -483.6507936507937,6.180403196127118 -483.8095238095238,6.180791084110874 -483.968253968254,6.181179429272936 -484.12698412698415,6.18156823215617 -484.2857142857143,6.181957493306221 -484.44444444444446,6.182347213271511 -484.6031746031746,6.182737392603245 -484.76190476190476,6.183128031855419 -484.92063492063494,6.183519131584819 -485.07936507936506,6.18391069235103 -485.23809523809524,6.184302714716438 -485.3968253968254,6.1846951992462325 -485.55555555555554,6.185088146508415 -485.7142857142857,6.1854815570738 -485.87301587301585,6.1858754315160205 -486.031746031746,6.186269770411532 -486.1904761904762,6.186664574339618 -486.3492063492063,6.1870598438823885 -486.5079365079365,6.187455579624794 -486.6666666666667,6.187851782154621 -486.8253968253968,6.1882484520625 -486.984126984127,6.18864558994191 -487.14285714285717,6.189043196389179 -487.3015873015873,6.189441272003495 -487.46031746031747,6.1898398173869 -487.6190476190476,6.190238833144304 -487.77777777777777,6.190638319883484 -487.93650793650795,6.191038278215087 -488.0952380952381,6.191438708752639 -488.25396825396825,6.191839612112541 -488.41269841269843,6.192240988914082 -488.57142857142856,6.192642839779435 -488.73015873015873,6.193045165333667 -488.8888888888889,6.193447966204741 -489.04761904761904,6.193851243023514 -489.2063492063492,6.1942549964237505 -489.36507936507934,6.194659227042121 -489.5238095238095,6.1950639355182044 -489.6825396825397,6.195469122494495 -489.8412698412698,6.195874788616405 -490.0,6.196280934532266 -490.1587301587302,6.196687560893338 -490.3174603174603,6.197094668353807 -490.4761904761905,6.197502257570792 -490.63492063492066,6.1979103292043485 -490.7936507936508,6.1983188839174685 -490.95238095238096,6.198727922376089 -491.1111111111111,6.199137445249093 -491.26984126984127,6.199547453208312 -491.42857142857144,6.199957946928531 -491.58730158730157,6.20036892708749 -491.74603174603175,6.20078039436589 -491.9047619047619,6.2011923494473935 -492.06349206349205,6.201604793018629 -492.22222222222223,6.202017725769193 -492.3809523809524,6.202431148391657 -492.53968253968253,6.202845061581564 -492.6984126984127,6.203259466037438 -492.85714285714283,6.203674362460782 -493.015873015873,6.2040897515560856 -493.1746031746032,6.204505634030823 -493.3333333333333,6.204922010595458 -493.4920634920635,6.20533888196345 -493.6507936507937,6.205756248851252 -493.8095238095238,6.206174111978314 -493.968253968254,6.206592472067087 -494.12698412698415,6.207011329843028 -494.2857142857143,6.207430686034598 -494.44444444444446,6.207850541373265 -494.6031746031746,6.208270896593509 -494.76190476190476,6.208691752432825 -494.92063492063494,6.209113109631721 -495.07936507936506,6.209534968933722 -495.23809523809524,6.209957331085378 -495.3968253968254,6.2103801968362555 -495.55555555555554,6.210803566938948 -495.7142857142857,6.211227442149074 -495.87301587301585,6.211651823225282 -496.031746031746,6.212488981602136 -496.1904761904762,6.2134112374758255 -496.3492063492063,6.214334164394938 -496.5079365079365,6.215257762977039 -496.6666666666667,6.216182033782349 -496.8253968253968,6.217106977312655 -496.984126984127,6.218032594010198 -497.14285714285717,6.218958884256547 -497.3015873015873,6.219885848371449 -497.46031746031747,6.220813486611664 -497.6190476190476,6.221741799169779 -497.77777777777777,6.222670786173007 -497.93650793650795,6.223600447681953 -498.0952380952381,6.224530783689377 -498.25396825396825,6.225461794118922 -498.41269841269843,6.22639347882383 -498.57142857142856,6.2273258375856315 -498.73015873015873,6.228258870112815 -498.8888888888889,6.229192576039474 -499.04761904761904,6.230126954923932 -499.2063492063492,6.231062006247348 -499.36507936507934,6.231997729412287 -499.5238095238095,6.232934123741281 -499.6825396825397,6.233871188475362 -499.8412698412698,6.234808922772557 -500.0,6.2357473257063845 -500.1587301587302,6.236686396264298 -500.3174603174603,6.237626133346122 -500.4761904761905,6.238566535762457 -500.63492063492066,6.239507602233052 -500.7936507936508,6.240449331385157 -500.95238095238096,6.2413917217518495 -501.1111111111111,6.242334771770322 -501.26984126984127,6.243278479780155 -501.42857142857144,6.244222844021548 -501.58730158730157,6.245167862633531 -501.74603174603175,6.246113533652139 -501.9047619047619,6.247059855008561 -502.06349206349205,6.2480068245272555 -502.22222222222223,6.248954439924035 -502.3809523809524,6.249902698804118 -502.53968253968253,6.250851598660145 -502.6984126984127,6.2518011368701725 -502.85714285714283,6.252751310695618 -503.015873015873,6.253702117279179 -503.1746031746032,6.254653553642723 -503.3333333333333,6.255605616685125 -503.4920634920635,6.256558303180086 -503.6507936507937,6.257511609773906 -503.8095238095238,6.2584655329832195 -503.968253968254,6.259420069192694 -504.12698412698415,6.260375214652692 -504.2857142857143,6.261330965476895 -504.44444444444446,6.262287317639876 -504.6031746031746,6.263244266974649 -504.76190476190476,6.264201809170161 -504.92063492063494,6.265159939768751 -505.07936507936506,6.266118654163566 -505.23809523809524,6.267077947595925 -505.3968253968254,6.268037815152651 -505.55555555555554,6.268998251763349 -505.7142857142857,6.2699592521976415 -505.87301587301585,6.2709208110623536 -506.031746031746,6.271882922798659 -506.1904761904762,6.272845581679169 -506.3492063492063,6.273808781804975 -506.5079365079365,6.274772517102646 -506.6666666666667,6.275736781321164 -506.8253968253968,6.276701568028826 -506.984126984127,6.277666870610071 -507.14285714285717,6.278632682262272 -507.3015873015873,6.279598995992464 -507.46031746031747,6.280565804614022 -507.6190476190476,6.2815331007432755 -507.77777777777777,6.282500876796077 -507.93650793650795,6.283469124984301 -508.0952380952381,6.28443783731229 -508.25396825396825,6.285407005573241 -508.41269841269843,6.286376621345528 -508.57142857142856,6.287346675988959 -508.73015873015873,6.288317160640987 -508.8888888888889,6.289288066212828 -509.04761904761904,6.290259383385541 -509.2063492063492,6.291231102606023 -509.36507936507934,6.292203214082951 -509.5238095238095,6.29317570778264 -509.6825396825397,6.2941485734248435 -509.8412698412698,6.295121800478475 -510.0,6.296095378157263 -510.1587301587302,6.297069295415331 -510.3174603174603,6.298043540942697 -510.4761904761905,6.299018103160705 -510.63492063492066,6.299992970217375 -510.7936507936508,6.300968129982678 -510.95238095238096,6.301943570043723 -511.1111111111111,6.302919277699871 -511.26984126984127,6.303895239957767 -511.42857142857144,6.304871443526279 -511.58730158730157,6.30584787481136 -511.74603174603175,6.3068245199108235 -511.9047619047619,6.307801364609022 -512.063492063492,6.308778394371445 -512.2222222222222,6.309755594339226 -512.3809523809524,6.310732949323548 -512.5396825396825,6.311710443799961 -512.6984126984127,6.312688061902609 -512.8571428571429,6.313665787418347 -513.015873015873,6.31464360378077 -513.1746031746031,6.315621494064134 -513.3333333333334,6.316599440977186 -513.4920634920635,6.317577426856874 -513.6507936507936,6.318555433661964 -513.8095238095239,6.3195334429665495 -513.968253968254,6.32051143595344 -514.1269841269841,6.3214893934074565 -514.2857142857143,6.322467295708602 -514.4444444444445,6.323445122825119 -514.6031746031746,6.324422854306439 -514.7619047619048,6.325400469276003 -514.9206349206349,6.3263779464239684 -515.0793650793651,6.327355263999797 -515.2380952380952,6.328332399804713 -515.3968253968254,6.329309331184042 -515.5555555555555,6.330286035019411 -515.7142857142857,6.331262487720835 -515.8730158730159,6.332238665218661 -516.031746031746,6.333214542955378 -516.1904761904761,6.334190095877302 -516.3492063492064,6.3351652984261095 -516.5079365079365,6.33614012453024 -516.6666666666666,6.337114547596154 -516.8253968253969,6.33808854049945 -516.984126984127,6.339062075575825 -517.1428571428571,6.340035124611905 -517.3015873015873,6.341007658835905 -517.4603174603175,6.341979648908145 -517.6190476190476,6.342951064911418 -517.7777777777778,6.343921876341186 -517.936507936508,6.344892052095624 -518.0952380952381,6.345861560465504 -518.2539682539683,6.346830369123915 -518.4126984126984,6.347798445115801 -518.5714285714286,6.3487657548473555 -518.7301587301587,6.349732264075221 -518.8888888888889,6.350697937895528 -519.047619047619,6.351662740732753 -519.2063492063492,6.352626636328397 -519.3650793650794,6.353589587729489 -519.5238095238095,6.354551557276887 -519.6825396825396,6.355512506593423 -519.8412698412699,6.356472396571831 -520.0,6.357431187362493 -520.1587301587301,6.3583888383610025 -520.3174603174604,6.359345308195515 -520.4761904761905,6.360300554713902 -520.6349206349206,6.361254534970718 -520.7936507936508,6.362207205213946 -520.952380952381,6.3628773782137165 -521.1111111111111,6.362972338712378 -521.2698412698413,6.363061341072511 -521.4285714285714,6.363144353086794 -521.5873015873016,6.363221342592922 -521.7460317460317,6.363292277477141 -521.9047619047619,6.363357125677823 -522.063492063492,6.363415855189061 -522.2222222222222,6.363468434064295 -522.3809523809524,6.3635148304199705 -522.5396825396825,6.363555012439211 -522.6984126984127,6.363588948375536 -522.8571428571429,6.363616606556585 -523.015873015873,6.363637955387876 -523.1746031746031,6.363652963356594 -523.3333333333334,6.363661599035391 -523.4920634920635,6.363663831086219 -523.6507936507936,6.36365962826418 -523.8095238095239,6.3636489594214 -523.968253968254,6.363631793510921 -524.1269841269841,6.363608099590623 -524.2857142857143,6.363577846827148 -524.4444444444445,6.363541004499862 -524.6031746031746,6.363497542004821 -524.7619047619048,6.363447428858759 -524.9206349206349,6.363390634703092 -525.0793650793651,6.36332712930794 -525.2380952380952,6.3632568825761595 -525.3968253968254,6.363179864547389 -525.5555555555555,6.363096045402112 -525.7142857142857,6.363005395465727 -525.8730158730159,6.362907885212634 -526.031746031746,6.3628034852703195 -526.1904761904761,6.362692166423468 -526.3492063492064,6.362573899618063 -526.5079365079365,6.362448655965508 -526.6666666666666,6.362316406746749 -526.8253968253969,6.362177123416397 -526.984126984127,6.362030777606863 -527.1428571428571,6.361877341132492 -527.3015873015873,6.361716785993692 -527.4603174603175,6.361549084381077 -527.6190476190476,6.361374208679599 -527.7777777777778,6.361192131472679 -527.936507936508,6.3610028255463416 -528.0952380952381,6.360806263893337 -528.2539682539683,6.360602419717265 -528.4126984126984,6.36039126643669 -528.5714285714286,6.360172777689247 -528.7301587301587,6.359946927335738 -528.8888888888889,6.359713689464226 -529.047619047619,6.35947303839411 -529.2063492063492,6.359224948680183 -529.3650793650794,6.358969395116697 -529.5238095238095,6.358706352741386 -529.6825396825396,6.3584357968394976 -529.8412698412699,6.358157702947784 -530.0,6.357872046858497 -530.1587301587301,6.357578804623347 -530.3174603174604,6.357277952557445 -530.4761904761905,6.356969467243227 -530.6349206349206,6.356653325534345 -530.7936507936508,6.356329504559545 -530.952380952381,6.355997981726507 -531.1111111111111,6.355658734725665 -531.2698412698413,6.355311741533996 -531.4285714285714,6.354956980418776 -531.5873015873016,6.354594429941307 -531.7460317460317,6.354224068960612 -531.9047619047619,6.353845876637092 -532.063492063492,6.353459832436155 -532.2222222222222,6.3530659161317935 -532.3809523809524,6.352664107810145 -532.5396825396825,6.352254387872994 -532.6984126984127,6.351836737041243 -532.8571428571429,6.3514111363583385 -533.015873015873,6.350977567193657 -533.1746031746031,6.3505360112458416 -533.3333333333334,6.350086450546096 -533.4920634920635,6.349628867461433 -533.6507936507936,6.349163244697871 -533.8095238095239,6.348689565303578 -533.968253968254,6.348207812671981 -534.1269841269841,6.3477179705447995 -534.2857142857143,6.347220023015043 -534.4444444444445,6.346713954529957 -534.6031746031746,6.346199749893889 -534.7619047619048,6.34567739427113 -534.9206349206349,6.3451468731886775 -535.0793650793651,6.344608172538944 -535.2380952380952,6.344061278582406 -535.3968253968254,6.343506177950193 -535.5555555555555,6.342942857646617 -535.7142857142857,6.342371305051626 -535.8730158730159,6.341791507923213 -536.031746031746,6.341203454399741 -536.1904761904761,6.340607133002215 -536.3492063492064,6.340002532636475 -536.5079365079365,6.339389642595334 -536.6666666666666,6.338768452560633 -536.8253968253969,6.338138952605236 -536.984126984127,6.337501133194951 -537.1428571428571,6.336854985190376 -537.3015873015873,6.336200499848674 -537.4603174603175,6.335537668825282 -537.6190476190476,6.334866484175529 -537.7777777777778,6.334186938356195 -537.936507936508,6.33349902422699 -538.0952380952381,6.332802735051945 -538.2539682539683,6.332098064500743 -538.4126984126984,6.331385006649966 -538.5714285714286,6.330663555984254 -538.7301587301587,6.329933707397396 -538.8888888888889,6.329195456193343 -539.047619047619,6.328448798087131 -539.2063492063492,6.3276937292057305 -539.3650793650794,6.326930246088807 -539.5238095238095,6.326158345689419 -539.6825396825396,6.325378025374608 -539.8412698412699,6.324589282925924 -540.0,6.323792116539869 -540.1587301587301,6.322986524828243 -540.3174603174604,6.322172506818423 -540.4761904761905,6.321350061953547 -540.6349206349206,6.320519190092627 -540.7936507936508,6.319679891510562 -540.952380952381,6.31883216689808 -541.1111111111111,6.317976017361593 -541.2698412698413,6.317111444422962 -541.4285714285714,6.316238450019195 -541.5873015873016,6.3153570365020295 -541.7460317460317,6.314467206637469 -541.9047619047619,6.31356896360521 -542.063492063492,6.312662310997991 -542.2222222222222,6.3117472528208625 -542.3809523809524,6.310823793490368 -542.5396825396825,6.309891937833649 -542.6984126984127,6.308951691087461 -542.8571428571429,6.308003058897104 -543.015873015873,6.3070460473152865 -543.1746031746031,6.306080662800883 -543.3333333333334,6.305106912217638 -543.4920634920635,6.304124802832763 -543.6507936507936,6.303134342315471 -543.8095238095239,6.302135538735423 -543.968253968254,6.3011284005611 -544.1269841269841,6.300112936658086 -544.2857142857143,6.299089156287285 -544.4444444444445,6.298057069103056 -544.6031746031746,6.297016685151259 -544.7619047619048,6.295968014867253 -544.9206349206349,6.294911069073786 -545.0793650793651,6.29384585897881 -545.2380952380952,6.292772396173317 -545.3968253968254,6.291690692628898 -545.5555555555555,6.290600760695446 -545.7142857142857,6.289502613098654 -545.8730158730159,6.2883962629375 -546.031746031746,6.287281723681636 -546.1904761904761,6.286159009168723 -546.3492063492064,6.285028133601684 -546.5079365079365,6.283889111545914 -546.6666666666666,6.282741957926389 -546.8253968253969,6.281586688024746 -546.984126984127,6.280423317476278 -547.1428571428571,6.279251862266872 -547.3015873015873,6.278072338729881 -547.4603174603175,6.276884763542951 -547.6190476190476,6.275689153724769 -547.7777777777778,6.274485526631761 -547.936507936508,6.273273899954746 -548.0952380952381,6.272054291715507 -548.2539682539683,6.270826720263333 -548.4126984126984,6.2695912042714985 -548.5714285714286,6.268347762733685 -548.7301587301587,6.2671143333851775 -548.8888888888889,6.2658799026294485 -549.047619047619,6.264640852042701 -549.2063492063492,6.263397204836047 -549.3650793650794,6.262148984282647 -549.5238095238095,6.260896213715337 -549.6825396825396,6.259638916524239 -549.8412698412699,6.25837711615442 -550.0,6.257110836103523 -550.1587301587301,6.255840099919441 -550.3174603174604,6.254564931197974 -550.4761904761905,6.253285353580531 -550.6349206349206,6.2520013907518015 -550.7936507936508,6.250713066437487 -550.952380952381,6.249420404402001 -551.1111111111111,6.248123428446218 -551.2698412698413,6.246822162405207 -551.4285714285714,6.245516630146005 -551.5873015873016,6.244206855565384 -551.7460317460317,6.242892862587641 -551.9047619047619,6.2415746751624095 -552.063492063492,6.240252317262472 -552.2222222222222,6.2389258128815985 -552.3809523809524,6.237595186032394 -552.5396825396825,6.236260460744172 -552.6984126984127,6.234921661060835 -552.8571428571429,6.233578811038772 -553.015873015873,6.232231934744777 -553.1746031746031,6.230881056253989 -553.3333333333334,6.2295261996478315 -553.4920634920635,6.228167389011995 -553.6507936507936,6.2268046484344115 -553.8095238095239,6.22543800200327 -553.968253968254,6.224067473805033 -554.1269841269841,6.222693087922485 -554.2857142857143,6.221314868432782 -554.4444444444445,6.219932839405546 -554.6031746031746,6.218547024900948 -554.7619047619048,6.217157448967836 -554.9206349206349,6.21576413564187 -555.0793650793651,6.2143671089436765 -555.2380952380952,6.212966392877028 -555.3968253968254,6.211562011427031 -555.5555555555555,6.210153988558358 -555.7142857142857,6.208742348213464 -555.8730158730159,6.2073271143108615 -556.031746031746,6.205908310743385 -556.1904761904761,6.204485961376493 -556.3492063492064,6.2030600900465815 -556.5079365079365,6.201630720559333 -556.6666666666666,6.200197876688061 -556.8253968253969,6.1987615821721 -556.984126984127,6.197321860715205 -557.1428571428571,6.195878735983973 -557.3015873015873,6.194432231606277 -557.4603174603175,6.192982371169745 -557.6190476190476,6.191529178220233 -557.7777777777778,6.190072676260333 -557.936507936508,6.188612888747905 -558.0952380952381,6.187149839094614 -558.2539682539683,6.185683550664516 -558.4126984126984,6.184214046772632 -558.5714285714286,6.1827413506835684 -558.7301587301587,6.1812654856101465 -558.8888888888889,6.179786474712058 -559.047619047619,6.178304341094541 -559.2063492063492,6.17681910780707 -559.3650793650794,6.175330797842083 -559.5238095238095,6.173839434133711 -559.6825396825396,6.17234503955654 -559.8412698412699,6.170847636924396 -560.0,6.169347248989138 -560.1587301587301,6.167843898439487 -560.3174603174604,6.166337607899865 -560.4761904761905,6.164828399929264 -560.6349206349206,6.1633162970201205 -560.7936507936508,6.161801321597233 -560.952380952381,6.16028349601668 -561.1111111111111,6.158762842564767 -561.2698412698413,6.157239383456995 -561.4285714285714,6.155713140837047 -561.5873015873016,6.154184136775797 -561.7460317460317,6.1526523932703325 -561.9047619047619,6.151117932243003 -562.063492063492,6.149580775540497 -562.2222222222222,6.148040944932917 -562.3809523809524,6.146498462112885 -562.5396825396825,6.14495334869469 -562.6984126984127,6.143405626213404 -562.8571428571429,6.141855316124072 -563.015873015873,6.140302439800883 -563.1746031746031,6.138747018536383 -563.3333333333334,6.137189073540683 -563.4920634920635,6.1356286259407256 -563.6507936507936,6.134065696779518 -563.8095238095239,6.132500307015429 -563.968253968254,6.130932477521484 -564.1269841269841,6.129362229084672 -564.2857142857143,6.127789582405289 -564.4444444444445,6.126214558096291 -564.6031746031746,6.124637176682652 -564.7619047619048,6.123057458600764 -564.9206349206349,6.1214754241978415 -565.0793650793651,6.119891093731334 -565.2380952380952,6.118304487368376 -565.3968253968254,6.1167156251852415 -565.5555555555555,6.115124527166818 -565.7142857142857,6.1135312132060955 -565.8730158730159,6.111935703103674 -566.031746031746,6.110338016567293 -566.1904761904761,6.108738173211368 -566.3492063492064,6.107136192556539 -566.5079365079365,6.105532094029261 -566.6666666666666,6.10392589696138 -566.8253968253969,6.102317620589734 -566.984126984127,6.10070728405578 -567.1428571428571,6.09909490640523 -567.3015873015873,6.097480506587694 -567.4603174603175,6.095864103456346 -567.6190476190476,6.09424571576761 -567.7777777777778,6.092625362180848 -567.936507936508,6.0910030612580695 -568.0952380952381,6.089378831463658 -568.2539682539683,6.087752691164101 -568.4126984126984,6.08612465862775 -568.5714285714286,6.084494752024584 -568.7301587301587,6.082862989425976 -568.8888888888889,6.0812293888044975 -569.047619047619,6.079593968033722 -569.2063492063492,6.077956744888037 -569.3650793650794,6.0763177370424755 -569.5238095238095,6.074676962072574 -569.6825396825396,6.0730344374542025 -569.8412698412699,6.071390180563456 -570.0,6.069744208676526 -570.1587301587301,6.068096538969591 -570.3174603174604,6.066447188518725 -570.4761904761905,6.064796174299816 -570.6349206349206,6.063143513188483 -570.7936507936508,6.061489221960025 -570.952380952381,6.059833317289376 -571.1111111111111,6.0581758157510475 -571.2698412698413,6.056516733819114 -571.4285714285714,6.054856087867198 -571.5873015873016,6.053193894168454 -571.7460317460317,6.051530168895575 -571.9047619047619,6.049864928120808 -572.063492063492,6.048198187815979 -572.2222222222222,6.046529963852519 -572.3809523809524,6.044860272001514 -572.5396825396825,6.043189127933754 -572.6984126984127,6.041516547219796 -572.8571428571429,6.039842545330035 -573.015873015873,6.038167137634781 -573.1746031746031,6.036490339404357 -573.3333333333334,6.034812165809177 -573.4920634920635,6.033132631919875 -573.6507936507936,6.031451752707406 -573.8095238095239,6.029769543043168 -573.968253968254,6.028086017699138 -574.1269841269841,6.02640119134801 -574.2857142857143,6.024715078563334 -574.4444444444445,6.02302769381968 -574.6031746031746,6.02133905149279 -574.7619047619048,6.019649165859753 -574.9206349206349,6.017958051099181 -575.0793650793651,6.016265721291386 -575.2380952380952,6.014572190418571 -575.3968253968254,6.012877472365033 -575.5555555555555,6.011181580917358 -575.7142857142857,6.0094845297646335 -575.8730158730159,6.007786332498662 -576.031746031746,6.006087002614191 -576.1904761904761,6.0043865535091285 -576.3492063492064,6.002684998484786 -576.5079365079365,6.0009823507461135 -576.6666666666666,5.9992786234019455 -576.8253968253969,5.997573829465254 -576.984126984127,5.9958679818534 -577.1428571428571,5.994161093388402 -577.3015873015873,5.99245317679719 -577.4603174603175,5.990744244711893 -577.6190476190476,5.9890343096700995 -577.7777777777778,5.9873233841151485 -577.936507936508,5.9856114803964156 -578.0952380952381,5.983898610769593 -578.2539682539683,5.982184787396996 -578.4126984126984,5.980470022347854 -578.5714285714286,5.978754327598615 -578.7301587301587,5.977037715033257 -578.8888888888889,5.975320196443588 -579.047619047619,5.973601783529574 -579.2063492063492,5.9718824878996495 -579.3650793650794,5.9701623210710375 -579.5238095238095,5.968441294470087 -579.6825396825396,5.966719419432583 -579.8412698412699,5.964996707204094 -580.0,5.963273168940302 -580.1587301587301,5.9615488157073395 -580.3174603174604,5.959823658482134 -580.4761904761905,5.95809770815275 -580.6349206349206,5.956370975518734 -580.7936507936508,5.954643471291468 -580.952380952381,5.9529152060945245 -581.1111111111111,5.951186190464009 -581.2698412698413,5.94945643484893 -581.4285714285714,5.947725949611554 -581.5873015873016,5.945994745027766 -581.7460317460317,5.944262831287433 -581.9047619047619,5.9425302184947695 -582.063492063492,5.940796916668712 -582.2222222222222,5.939168849167853 -582.3809523809524,5.937572802323893 -582.5396825396825,5.935977282137752 -582.6984126984127,5.934382293793305 -582.8571428571429,5.932787842414556 -583.015873015873,5.931193933066134 -583.1746031746031,5.929600570753757 -583.3333333333334,5.928007760424726 -583.4920634920635,5.926415506968402 -583.6507936507936,5.924823815216675 -583.8095238095239,5.923232689944434 -583.968253968254,5.921642135870049 -584.1269841269841,5.920052157655826 -584.2857142857143,5.918462759908466 -584.4444444444445,5.916873947179542 -584.6031746031746,5.91528572396594 -584.7619047619048,5.913698094710324 -584.9206349206349,5.912111063801583 -585.0793650793651,5.910524635575282 -585.2380952380952,5.908938814314107 -585.3968253968254,5.907353604248309 -585.5555555555555,5.905769009556148 -585.7142857142857,5.904185034364326 -585.8730158730159,5.902601682748418 -586.031746031746,5.901018958733318 -586.1904761904761,5.899436866293654 -586.3492063492064,5.897855409354222 -586.5079365079365,5.896274591790409 -586.6666666666666,5.894694417428608 -586.8253968253969,5.893114890046644 -586.984126984127,5.8915360133741865 -587.1428571428571,5.889957791093158 -587.3015873015873,5.888380226838147 -587.4603174603175,5.886803324196818 -587.6190476190476,5.885227086710308 -587.7777777777778,5.8836515178736315 -587.936507936508,5.8820766211360835 -588.0952380952381,5.8805023999016255 -588.2539682539683,5.878928857529286 -588.4126984126984,5.877355997333551 -588.5714285714286,5.875783822584746 -588.7301587301587,5.874212336509426 -588.8888888888889,5.87264154229075 -589.047619047619,5.871071443068875 -589.2063492063492,5.869502041941317 -589.3650793650794,5.867933341963331 -589.5238095238095,5.866365346148288 -589.6825396825396,5.8647980574680325 -589.8412698412699,5.863231478853257 -590.0,5.861665613193865 -590.1587301587301,5.860100463339323 -590.3174603174604,5.858536032099032 -590.4761904761905,5.856972322242667 -590.6349206349206,5.855409336500551 -590.7936507936508,5.8538470775639775 -590.952380952381,5.852285548085586 -591.1111111111111,5.850724750679687 -591.2698412698413,5.849164687922613 -591.4285714285714,5.847605362353061 -591.5873015873016,5.846046776472423 -591.7460317460317,5.844488932745123 -591.9047619047619,5.842931833598948 -592.063492063492,5.8413754814253895 -592.2222222222222,5.8398198785799496 -592.3809523809524,5.838265027382487 -592.5396825396825,5.8367109301175235 -592.6984126984127,5.835157589034574 -592.8571428571429,5.8336050063484555 -593.015873015873,5.832053184239614 -593.1746031746031,5.830502124854424 -593.3333333333334,5.828951830305505 -593.4920634920635,5.827402302672033 -593.6507936507936,5.825853544000037 -593.8095238095239,5.8243055563027095 -593.968253968254,5.822758341560703 -594.1269841269841,5.821211901722428 -594.2857142857143,5.819666238704356 -594.4444444444445,5.818121354391302 -594.6031746031746,5.816577250636726 -594.7619047619048,5.815033929263012 -594.9206349206349,5.813491392061765 -595.0793650793651,5.811949640794092 -595.2380952380952,5.810408677190877 -595.3968253968254,5.808868502953072 -595.5555555555555,5.807329119751972 -595.7142857142857,5.80579052922948 -595.8730158730159,5.804252732998393 -596.031746031746,5.802715732642673 -596.1904761904761,5.801179529717705 -596.3492063492064,5.7996441257505715 -596.5079365079365,5.798109522240323 -596.6666666666666,5.796575720658225 -596.8253968253969,5.795042722448029 -596.984126984127,5.793510529026235 -597.1428571428571,5.791979141782334 -597.3015873015873,5.790448562079068 -597.4603174603175,5.788918791252697 -597.6190476190476,5.7873898306132165 -597.7777777777778,5.78586168144464 -597.936507936508,5.784334345005221 -598.0952380952381,5.782807822527708 -598.2539682539683,5.78128211521958 -598.4126984126984,5.779757224263293 -598.5714285714286,5.778233150816517 -598.7301587301587,5.776709896012362 -598.8888888888889,5.775187460959626 -599.047619047619,5.7736658467430155 -599.2063492063492,5.772145054423385 -599.3650793650794,5.770625085037958 -599.5238095238095,5.769105939600558 -599.6825396825396,5.767587619101828 -599.8412698412699,5.766070124509454 -600.0,5.764553456768397 -600.1587301587301,5.76303761680109 -600.3174603174604,5.761522605507674 -600.4761904761905,5.760008423766205 -600.6349206349206,5.75849507243287 -600.7936507936508,5.756982552342193 -600.952380952381,5.755470864307252 -601.1111111111111,5.753960009119883 -601.2698412698413,5.752449987550885 -601.4285714285714,5.7509408003502305 -601.5873015873016,5.749432448247261 -601.7460317460317,5.747924931950891 -601.9047619047619,5.746418252149804 -602.063492063492,5.744912409512664 -602.2222222222222,5.743407404688289 -602.3809523809524,5.741903238305861 -602.5396825396825,5.740399910975118 -602.6984126984127,5.738897423286536 -602.8571428571429,5.737395775811526 -603.015873015873,5.735894969102622 -603.1746031746031,5.734395003693659 -603.3333333333334,5.732895880099964 -603.4920634920635,5.731397598818541 -603.6507936507936,5.729900160328245 -603.8095238095239,5.728403565089966 -603.968253968254,5.726907813546808 -604.1269841269841,5.725412906124267 -604.2857142857143,5.7239188432303925 -604.4444444444445,5.722425625255985 -604.6031746031746,5.720933252574746 -604.7619047619048,5.719441725543459 -604.9206349206349,5.71795104450216 -605.0793650793651,5.7164612097743 -605.2380952380952,5.714972221666911 -605.3968253968254,5.713484080470776 -605.5555555555555,5.711996786460587 -605.7142857142857,5.71051033989511 -605.8730158730159,5.709024741017341 -606.031746031746,5.707539990054674 -606.1904761904761,5.70605608721905 -606.3492063492064,5.704573032707111 -606.5079365079365,5.703090826700367 -606.6666666666666,5.70160946936534 -606.8253968253969,5.700128960853713 -606.984126984127,5.6986493013024955 -607.1428571428571,5.697170490834157 -607.3015873015873,5.695692529556782 -607.4603174603175,5.6942154175642195 -607.6190476190476,5.692739154936222 -607.7777777777778,5.691263741738595 -607.936507936508,5.68978917802334 -608.0952380952381,5.68831546382879 -608.2539682539683,5.686842599179756 -608.4126984126984,5.685370584087666 -608.5714285714286,5.683899418550702 -608.7301587301587,5.68242910255393 -608.8888888888889,5.6809596360694465 -609.047619047619,5.67949101905651 -609.2063492063492,5.678023251461665 -609.3650793650794,5.676556333218887 -609.5238095238095,5.675090264249702 -609.6825396825396,5.673625044463325 -609.8412698412699,5.672160673756782 -610.0,5.67069715201504 -610.1587301587301,5.669234479111135 -610.3174603174604,5.667772654906288 -610.4761904761905,5.666311679250043 -610.6349206349206,5.664851551980381 -610.7936507936508,5.663392272923836 -610.952380952381,5.661933841895631 -611.1111111111111,5.660476258699784 -611.2698412698413,5.659019523129231 -611.4285714285714,5.657563634965946 -611.5873015873016,5.6561085939810525 -611.7460317460317,5.654654399934941 -611.9047619047619,5.653201052577381 -612.063492063492,5.651748551647642 -612.2222222222222,5.650296896874593 -612.3809523809524,5.648846087976824 -612.5396825396825,5.647396124662753 -612.6984126984127,5.645947006630729 -612.8571428571429,5.644498733569151 -613.015873015873,5.6430513051565665 -613.1746031746031,5.641604721061782 -613.3333333333334,5.640158980943963 -613.4920634920635,5.638714084452748 -613.6507936507936,5.637270031228342 -613.8095238095239,5.635826820901619 -613.968253968254,5.634384453094235 -614.1269841269841,5.632942927418712 -614.2857142857143,5.631502243478551 -614.4444444444445,5.630062400868323 -614.6031746031746,5.628623399173769 -614.7619047619048,5.627185237971896 -614.9206349206349,5.625747916831077 -615.0793650793651,5.6243114353111405 -615.2380952380952,5.622875792963464 -615.3968253968254,5.6214409893310755 -615.5555555555555,5.620007023948737 -615.7142857142857,5.618573896343042 -615.8730158730159,5.617141606032501 -616.031746031746,5.615710152527639 -616.1904761904761,5.6142795353310735 -616.3492063492064,5.612849753937614 -616.5079365079365,5.611420807834346 -616.6666666666666,5.6099926965007105 -616.8253968253969,5.60860343271681 -616.984126984127,5.6074145190136875 -617.1428571428571,5.606226346157816 -617.3015873015873,5.605038913483667 -617.4603174603175,5.603852220323685 -617.6190476190476,5.602666266008298 -617.7777777777778,5.601481049865955 -617.936507936508,5.600296571223158 -618.0952380952381,5.5991128294044845 -618.2539682539683,5.597929823732616 -618.4126984126984,5.596747553528371 -618.5714285714286,5.595566018110725 -618.7301587301587,5.594385216796845 -618.8888888888889,5.593205148902111 -619.047619047619,5.592025813740149 -619.2063492063492,5.590847210622849 -619.3650793650794,5.589669338860398 -619.5238095238095,5.588492197761307 -619.6825396825396,5.5873157866324314 -619.8412698412699,5.586140104779 -620.0,5.584965151504642 -620.1587301587301,5.583790926111409 -620.3174603174604,5.582617427899797 -620.4761904761905,5.581444656168784 -620.6349206349206,5.580272610215834 -620.7936507936508,5.579101289336945 -620.952380952381,5.577930692826655 -621.1111111111111,5.5767608199780705 -621.2698412698413,5.575591670082893 -621.4285714285714,5.574423242431445 -621.5873015873016,5.573255536312683 -621.7460317460317,5.572088551014229 -621.9047619047619,5.570922285822391 -622.063492063492,5.569756740022187 -622.2222222222222,5.5685919128973635 -622.3809523809524,5.567427803730419 -622.5396825396825,5.56626441180263 -622.6984126984127,5.565101736394067 -622.8571428571429,5.563939776783619 -623.015873015873,5.562778532249016 -623.1746031746031,5.561618002066849 -623.3333333333334,5.560458185512585 -623.4920634920635,5.5592990818606 -623.6507936507936,5.5581406903841915 -623.8095238095239,5.556983010355594 -623.968253968254,5.5558260410460125 -624.1269841269841,5.554669781725636 -624.2857142857143,5.553514231663649 -624.4444444444445,5.552359390128266 -624.6031746031746,5.55120525638674 -624.7619047619048,5.550051829705384 -624.9206349206349,5.5488991093496 -625.0793650793651,5.54774709458388 -625.2380952380952,5.546595784671835 -625.3968253968254,5.545445178876219 -625.5555555555555,5.544295276458937 -625.7142857142857,5.543146076681065 -625.8730158730159,5.541997578802875 -626.031746031746,5.540849782083847 -626.1904761904761,5.539702685782685 -626.3492063492064,5.538556289157338 -626.5079365079365,5.53741059146502 -626.6666666666666,5.536265591962222 -626.8253968253969,5.535121289904728 -626.984126984127,5.53397768454764 -627.1428571428571,5.532834775145387 -627.3015873015873,5.531692560951742 -627.4603174603175,5.530551041219846 -627.6190476190476,5.529410215202214 -627.7777777777778,5.528270082150755 -627.936507936508,5.527130641316793 -628.0952380952381,5.525991891951075 -628.2539682539683,5.524853833303792 -628.4126984126984,5.523716464624594 -628.5714285714286,5.522579785162601 -628.7301587301587,5.52144379416642 -628.8888888888889,5.520308490884165 -629.047619047619,5.519173874563469 -629.2063492063492,5.518039944451492 -629.3650793650794,5.516906699794947 -629.5238095238095,5.515774139840105 -629.6825396825396,5.514642263832819 -629.8412698412699,5.513511071018522 -630.0,5.512380560642265 -630.1587301587301,5.511250731948707 -630.3174603174604,5.510121584182144 -630.4761904761905,5.508993116586516 -630.6349206349206,5.5078653284054235 -630.7936507936508,5.5067382188821385 -630.952380952381,5.505611787259625 -631.1111111111111,5.504486032780536 -631.2698412698413,5.503360954687243 -631.4285714285714,5.502236552221843 -631.5873015873016,5.501112824626172 -631.7460317460317,5.49998977114181 -631.9047619047619,5.498867391010105 -632.063492063492,5.49774568347218 -632.2222222222222,5.4966246477689475 -632.3809523809524,5.4955042831411145 -632.5396825396825,5.494384588829204 -632.6984126984127,5.493265564073562 -632.8571428571429,5.492147208114368 -633.015873015873,5.491029520191651 -633.1746031746031,5.489912499545299 -633.3333333333334,5.488796145415068 -633.4920634920635,5.4876804570405975 -633.6507936507936,5.486565433661419 -633.8095238095239,5.485451074516966 -633.968253968254,5.4843373788465914 -634.1269841269841,5.483224345889568 -634.2857142857143,5.482111974885111 -634.4444444444445,5.481000265072378 -634.6031746031746,5.479889215690487 -634.7619047619048,5.478778825978521 -634.9206349206349,5.477669095175547 -635.0793650793651,5.4765600225206175 -635.2380952380952,5.475451607252783 -635.3968253968254,5.474343848611102 -635.5555555555555,5.473236745834655 -635.7142857142857,5.472130298162554 -635.8730158730159,5.47102450483394 -636.031746031746,5.4699193650880105 -636.1904761904761,5.468814878164019 -636.3492063492064,5.467711043301281 -636.5079365079365,5.466607859739198 -636.6666666666666,5.465505326717247 -636.8253968253969,5.464403443475007 -636.984126984127,5.4633022092521575 -637.1428571428571,5.462201623288491 -637.3015873015873,5.461101684823925 -637.4603174603175,5.460002393098503 -637.6190476190476,5.458903747352412 -637.7777777777778,5.457805746825984 -637.936507936508,5.456708390759708 -638.0952380952381,5.45561167839424 -638.2539682539683,5.454515608970404 -638.4126984126984,5.4534201817292125 -638.5714285714286,5.452325395911862 -638.7301587301587,5.451231250759749 -638.8888888888889,5.450137745514476 -639.047619047619,5.449044879417857 -639.2063492063492,5.447952651711931 -639.3650793650794,5.446861061638963 -639.5238095238095,5.445770108441457 -639.6825396825396,5.4446797913621605 -639.8412698412699,5.443590109644071 -640.0,5.442501062530452 -640.1587301587301,5.441412649264825 -640.3174603174604,5.440324869090991 -640.4761904761905,5.439237721253032 -640.6349206349206,5.438151204995318 -640.7936507936508,5.437065319562511 -640.952380952381,5.435980064199582 -641.1111111111111,5.434895438151806 -641.2698412698413,5.433811440664775 -641.4285714285714,5.432728070984404 -641.5873015873016,5.431645328356941 -641.7460317460317,5.4305632120289635 -641.9047619047619,5.429481721247397 -642.063492063492,5.428400855259514 -642.2222222222222,5.427320613312944 -642.3809523809524,5.426240994655675 -642.5396825396825,5.425161998536067 -642.6984126984127,5.424083624202851 -642.8571428571429,5.423005870905142 -643.015873015873,5.4219287378924355 -643.1746031746031,5.420852224414626 -643.3333333333334,5.419776329722001 -643.4920634920635,5.4187010530652575 -643.6507936507936,5.417626393695498 -643.8095238095239,5.416552350864239 -643.968253968254,5.415478923823425 -644.1269841269841,5.414406111825423 -644.2857142857143,5.4133339141230294 -644.4444444444445,5.4122623299694865 -644.6031746031746,5.411191358618474 -644.7619047619048,5.410120999324118 -644.9206349206349,5.4090512513410065 -645.0793650793651,5.407982113924181 -645.2380952380952,5.406913586329146 -645.3968253968254,5.405845667811879 -645.5555555555555,5.404778357628831 -645.7142857142857,5.403711655036933 -645.8730158730159,5.402645559293595 -646.031746031746,5.401580069656726 -646.1904761904761,5.400515185384719 -646.3492063492064,5.39945090573647 -646.5079365079365,5.398387229971381 -646.6666666666666,5.397324157349359 -646.8253968253969,5.396261687130822 -646.984126984127,5.39519981857671 -647.1428571428571,5.394138550948482 -647.3015873015873,5.393077883508122 -647.4603174603175,5.392017815518147 -647.6190476190476,5.390958346241606 -647.7777777777778,5.38989947494209 -647.936507936508,5.388841200883733 -648.0952380952381,5.387783523331214 -648.2539682539683,5.386726441549764 -648.4126984126984,5.385669954805173 -648.5714285714286,5.384614062363789 -648.7301587301587,5.3835587634925215 -648.8888888888889,5.382504057458849 -649.047619047619,5.381449943530823 -649.2063492063492,5.380396420977069 -649.3650793650794,5.379343489066793 -649.5238095238095,5.37829114706978 -649.6825396825396,5.377239394256406 -649.8412698412699,5.3761882298976325 -650.0,5.375137653265021 -650.1587301587301,5.374087663630725 -650.3174603174604,5.373038260267499 -650.4761904761905,5.371989442448707 -650.6349206349206,5.370941209448315 -650.7936507936508,5.369893560540899 -650.952380952381,5.368846495001657 -651.1111111111111,5.3678000121063985 -651.2698412698413,5.366754111131554 -651.4285714285714,5.365708791354181 -651.5873015873016,5.364664052051963 -651.7460317460317,5.363619892503212 -651.9047619047619,5.362576311986875 -652.063492063492,5.361533309782537 -652.2222222222222,5.360490885170422 -652.3809523809524,5.359449037431392 -652.5396825396825,5.3584077658469615 -652.6984126984127,5.357367069699286 -652.8571428571429,5.356326948271179 -653.015873015873,5.355287400846102 -653.1746031746031,5.354248426708176 -653.3333333333334,5.3532100251421815 -653.4920634920635,5.35217219543356 -653.6507936507936,5.351134936868419 -653.8095238095239,5.350098248733531 -653.968253968254,5.349062130316341 -654.1269841269841,5.348026580904937 -654.2857142857143,5.346991599788165 -654.4444444444445,5.345957186255465 -654.6031746031746,5.344923339596986 -654.7619047619048,5.343890059103557 -654.9206349206349,5.342857344066695 -655.0793650793651,5.3418251937786 -655.2380952380952,5.340793607532165 -655.3968253968254,5.339762584620969 -655.5555555555555,5.33873212433929 -655.7142857142857,5.3377022259821 -655.8730158730159,5.336672888845068 -656.031746031746,5.335644112224562 -656.1904761904761,5.3346158954176595 -656.3492063492064,5.333588237722131 -656.5079365079365,5.332561138436461 -656.6666666666666,5.331534596859842 -656.8253968253969,5.330508612292173 -656.984126984127,5.3294831840340695 -657.1428571428571,5.328458311386858 -657.3015873015873,5.32743399365258 -657.4603174603175,5.326410230134001 -657.6190476190476,5.325387020134597 -657.7777777777778,5.324364362958575 -657.936507936508,5.323342257910858 -658.0952380952381,5.3223207042970975 -658.2539682539683,5.321299701423669 -658.4126984126984,5.32027924859768 -658.5714285714286,5.319259345126964 -658.7301587301587,5.31823999032009 -658.8888888888889,5.317221183486355 -659.047619047619,5.316202923935797 -659.2063492063492,5.315185210979184 -659.3650793650794,5.314168043928027 -659.5238095238095,5.313188617030272 -659.6825396825396,5.312420518482848 -659.8412698412699,5.311652985463477 -660.0,5.310886017167865 -660.1587301587301,5.310119612793422 -660.3174603174604,5.309353771539249 -660.4761904761905,5.3085884926061455 -660.6349206349206,5.307823775196596 -660.7936507936508,5.307059618514766 -660.952380952381,5.306296021766508 -661.1111111111111,5.30553298415934 -661.2698412698413,5.3047705049024545 -661.4285714285714,5.30400858320671 -661.5873015873016,5.303247218284626 -661.7460317460317,5.302486409350378 -661.9047619047619,5.301726155619794 -662.063492063492,5.300966456310352 -662.2222222222222,5.300207310641172 -662.3809523809524,5.299448717833014 -662.5396825396825,5.298690677108273 -662.6984126984127,5.297933187690976 -662.8571428571429,5.2971762488067755 -663.015873015873,5.2964198596829455 -663.1746031746031,5.295664019548378 -663.3333333333334,5.294908727633583 -663.4920634920635,5.294153983170673 -663.6507936507936,5.293399785393371 -663.8095238095239,5.292646133536997 -663.968253968254,5.291893026838472 -664.1269841269841,5.291140464536308 -664.2857142857143,5.290388445870601 -664.4444444444445,5.2896369700830395 -664.6031746031746,5.2888860364168835 -664.7619047619048,5.288135644116976 -664.9206349206349,5.287385792429728 -665.0793650793651,5.286636480603116 -665.2380952380952,5.285887707886686 -665.3968253968254,5.285139473531537 -665.5555555555555,5.284391776790328 -665.7142857142857,5.283644616917266 -665.8730158730159,5.282897993168109 -666.031746031746,5.282151904800152 -666.1904761904761,5.281406351072236 -666.3492063492064,5.2806613312447315 -666.5079365079365,5.2799168445795415 -666.6666666666666,5.2791728903400985 -666.8253968253969,5.278429467791355 -666.984126984127,5.277686576199781 -667.1428571428571,5.276944214833368 -667.3015873015873,5.276202382961612 -667.4603174603175,5.275461079855519 -667.6190476190476,5.274720304787596 -667.7777777777778,5.273980057031851 -667.936507936508,5.27324033586379 -668.0952380952381,5.272501140560403 -668.2539682539683,5.271762470400176 -668.4126984126984,5.271024324663072 -668.5714285714286,5.270286702630537 -668.7301587301587,5.269549603585492 -668.8888888888889,5.26881302681233 -669.047619047619,5.268076971596912 -669.2063492063492,5.2673414372265634 -669.3650793650794,5.266606422990072 -669.5238095238095,5.265871928177679 -669.6825396825396,5.265137952081082 -669.8412698412699,5.264404493993425 -670.0,5.263671553209298 -670.1587301587301,5.262939129024734 -670.3174603174604,5.262207220737205 -670.4761904761905,5.2614758276456115 -670.6349206349206,5.2607449490502916 -670.7936507936508,5.260014584253003 -670.952380952381,5.259284732556934 -671.1111111111111,5.258555393266687 -671.2698412698413,5.257826565688281 -671.4285714285714,5.257098249129148 -671.5873015873016,5.2563704428981275 -671.7460317460317,5.255643146305465 -671.9047619047619,5.254916358662802 -672.063492063492,5.254190079283188 -672.2222222222222,5.253464307481055 -672.3809523809524,5.252739042572231 -672.5396825396825,5.2520142838739305 -672.6984126984127,5.25129003070475 -672.8571428571429,5.250566282384664 -673.015873015873,5.249843038235026 -673.1746031746031,5.2491202975785605 -673.3333333333334,5.24839805973936 -673.4920634920635,5.247676324042882 -673.6507936507936,5.2469550898159465 -673.8095238095239,5.246234356386734 -673.968253968254,5.245514123084775 -674.1269841269841,5.2447943892409565 -674.2857142857143,5.244075154187508 -674.4444444444445,5.243356417258007 -674.6031746031746,5.242638177787372 -674.7619047619048,5.2419204351118545 -674.9206349206349,5.241203188569045 -675.0793650793651,5.240486437497863 -675.2380952380952,5.239770181238553 -675.3968253968254,5.239054419132686 -675.5555555555555,5.238339150523152 -675.7142857142857,5.237624374754159 -675.8730158730159,5.236910091171225 -676.031746031746,5.2361962991211835 -676.1904761904761,5.23548299795217 -676.3492063492064,5.234770187013628 -676.5079365079365,5.234057865656297 -676.6666666666666,5.2333460332322135 -676.8253968253969,5.232634689094711 -676.984126984127,5.231923832598412 -677.1428571428571,5.231213463099222 -677.3015873015873,5.230503579954337 -677.4603174603175,5.229794182522226 -677.6190476190476,5.2290852701626385 -677.7777777777778,5.2283768422366 -677.936507936508,5.227668898106403 -678.0952380952381,5.226961437135609 -678.2539682539683,5.226254458689041 -678.4126984126984,5.225547962132787 -678.5714285714286,5.22484194683419 -678.7301587301587,5.224136412161848 -678.8888888888889,5.223431357485609 -679.047619047619,5.222726782176571 -679.2063492063492,5.222022685607077 -679.3650793650794,5.221319067150708 -679.5238095238095,5.22061592618229 -679.6825396825396,5.2199132620778785 -679.8412698412699,5.219211074214764 -680.0,5.2185093619714635 -680.1587301587301,5.217808124727726 -680.3174603174604,5.217107361864516 -680.4761904761905,5.216407072764022 -680.6349206349206,5.215707256809649 -680.7936507936508,5.2150079133860165 -680.952380952381,5.214309041878952 -681.1111111111111,5.213610641675491 -681.2698412698413,5.212912712163875 -681.4285714285714,5.212215252733546 -681.5873015873016,5.211518262775143 -681.7460317460317,5.210821741680504 -681.9047619047619,5.2101256888426555 -682.063492063492,5.209430103655815 -682.2222222222222,5.208734985515386 -682.3809523809524,5.208040333817956 -682.5396825396825,5.207346147961292 -682.6984126984127,5.20665242734434 -682.8571428571429,5.2059591713672155 -683.015873015873,5.205266379431213 -683.1746031746031,5.204574050938788 -683.3333333333334,5.203882185293566 -683.4920634920635,5.203190781900336 -683.6507936507936,5.202499840165041 -683.8095238095239,5.201809359494788 -683.968253968254,5.201119339297832 -684.1269841269841,5.200429778983582 -684.2857142857143,5.199740677962595 -684.4444444444445,5.199052035646572 -684.6031746031746,5.198363851448357 -684.7619047619048,5.197676124781932 -684.9206349206349,5.196988855062419 -685.0793650793651,5.196302041706072 -685.2380952380952,5.195615684130273 -685.3968253968254,5.194929781753536 -685.5555555555555,5.1942443339955 -685.7142857142857,5.193559340276925 -685.8730158730159,5.19287480001969 -686.031746031746,5.192190712646793 -686.1904761904761,5.1915070775823455 -686.3492063492064,5.190823894251568 -686.5079365079365,5.190141162080792 -686.6666666666666,5.189458880497455 -686.8253968253969,5.1887770489300955 -686.984126984127,5.188095666808354 -687.1428571428571,5.187414733562967 -687.3015873015873,5.186734248625767 -687.4603174603175,5.186054211429678 -687.6190476190476,5.185374621408714 -687.7777777777778,5.184695477997974 -687.936507936508,5.184016780633643 -688.0952380952381,5.183338528752985 -688.2539682539683,5.1826607217943454 -688.4126984126984,5.181983359197142 -688.5714285714286,5.181306440401869 -688.7301587301587,5.180629964850089 -688.8888888888889,5.179953931984433 -689.047619047619,5.179278341248599 -689.2063492063492,5.178603192087345 -689.3650793650794,5.177928483946488 -689.5238095238095,5.1772542162729085 -689.6825396825396,5.176580388514535 -689.8412698412699,5.175907000120351 -690.0,5.175234050540389 -690.1587301587301,5.1745615392257305 -690.3174603174604,5.173889465628498 -690.4761904761905,5.173217829201857 -690.6349206349206,5.172546629400013 -690.7936507936508,5.171875865678208 -690.952380952381,5.1712055374927175 -691.1111111111111,5.17053564430085 -691.2698412698413,5.169866185560939 -691.4285714285714,5.16919716073235 -691.5873015873016,5.168528569275468 -691.7460317460317,5.167860410651701 -691.9047619047619,5.167192684323478 -692.063492063492,5.1665253897542405 -692.2222222222222,5.165858526408447 -692.3809523809524,5.165192093751565 -692.5396825396825,5.164526091250073 -692.6984126984127,5.163860518371456 -692.8571428571429,5.1631953745842 -693.015873015873,5.162530659357797 -693.1746031746031,5.161866372162735 -693.3333333333334,5.161202512470498 -693.4920634920635,5.160539079753569 -693.6507936507936,5.159876073485417 -693.8095238095239,5.159213493140502 -693.968253968254,5.1585513381942745 -694.1269841269841,5.157889608123164 -694.2857142857143,5.157228302404587 -694.4444444444445,5.156567420516936 -694.6031746031746,5.155906961939582 -694.7619047619048,5.155246926152874 -694.9206349206349,5.154587312638128 -695.0793650793651,5.153928120877636 -695.2380952380952,5.153269350354654 -695.3968253968254,5.152611000553401 -695.5555555555555,5.151953070959069 -695.7142857142857,5.151295561057797 -695.8730158730159,5.1506384703366965 -696.031746031746,5.149981798283825 -696.1904761904761,5.149325544388199 -696.3492063492064,5.148669708139782 -696.5079365079365,5.1480142890294935 -696.6666666666666,5.147359286549191 -696.8253968253969,5.146704700191686 -696.984126984127,5.146050529450725 -697.1428571428571,5.145396773820999 -697.3015873015873,5.144743432798133 -697.4603174603175,5.144090505878692 -697.6190476190476,5.143437992560171 -697.7777777777778,5.142785892340995 -697.936507936508,5.142134204720521 -698.0952380952381,5.141482929199029 -698.2539682539683,5.140832065277728 -698.4126984126984,5.140181612458743 -698.5714285714286,5.139531570245125 -698.7301587301587,5.1388819381408375 -698.8888888888889,5.138232715650761 -699.047619047619,5.13758390228069 -699.2063492063492,5.136935497537331 -699.3650793650794,5.136287500928294 -699.5238095238095,5.1356399119621035 -699.6825396825396,5.134992730148181 -699.8412698412699,5.134345954996853 -700.0,5.133699586019349 -700.1587301587301,5.1330536227277905 -700.3174603174604,5.132408064635202 -700.4761904761905,5.131762911255495 -700.6349206349206,5.1311181621034745 -700.7936507936508,5.130473816694837 -700.952380952381,5.129829874546165 -701.1111111111111,5.129186335174924 -701.2698412698413,5.128543198099464 -701.4285714285714,5.127900462839015 -701.5873015873016,5.127258128913689 -701.7460317460317,5.126616195844472 -701.9047619047619,5.125974663153222 -702.063492063492,5.125333530362677 -702.2222222222222,5.1246927969964355 -702.3809523809524,5.124052462578972 -702.5396825396825,5.123412526635624 -702.6984126984127,5.122772988692594 -702.8571428571429,5.122133848276944 -703.015873015873,5.121495104916604 -703.1746031746031,5.12085675814035 -703.3333333333334,5.120218807477824 -703.4920634920635,5.119581252459517 -703.6507936507936,5.118944092616773 -703.8095238095239,5.1183073274817845 -703.968253968254,5.117670956587598 -704.1269841269841,5.117034979468097 -704.2857142857143,5.116399395658014 -704.4444444444445,5.115764204692922 -704.6031746031746,5.115183597655491 -704.7619047619048,5.114632519121255 -704.9206349206349,5.114081779387301 -705.0793650793651,5.1135313780436045 -705.2380952380952,5.112981314680905 -705.3968253968254,5.112431588890693 -705.5555555555555,5.111882200265222 -705.7142857142857,5.111333148397501 -705.8730158730159,5.110784432881284 -706.031746031746,5.110236053311091 -706.1904761904761,5.109688009282178 -706.3492063492064,5.109140300390555 -706.5079365079365,5.108592926232978 -706.6666666666666,5.108045886406946 -706.8253968253969,5.107499180510699 -706.984126984127,5.10695280814322 -707.1428571428571,5.106406768904231 -707.3015873015873,5.105861062394186 -707.4603174603175,5.105315688214282 -707.6190476190476,5.104770645966442 -707.7777777777778,5.104225935253327 -707.936507936508,5.103681555678321 -708.0952380952381,5.10313750684554 -708.2539682539683,5.102593788359827 -708.4126984126984,5.102050399826747 -708.5714285714286,5.101507340852588 -708.7301587301587,5.100964611044359 -708.8888888888889,5.100422210009792 -709.047619047619,5.099880137357331 -709.2063492063492,5.099338392696139 -709.3650793650794,5.09879697563609 -709.5238095238095,5.098255885787774 -709.6825396825396,5.097715122762491 -709.8412698412699,5.097174686172246 -710.0,5.096634575629754 -710.1587301587301,5.096094790748437 -710.3174603174604,5.0955553311424175 -710.4761904761905,5.095016196426523 -710.6349206349206,5.094477386216278 -710.7936507936508,5.093938900127907 -710.952380952381,5.0934007377783335 -711.1111111111111,5.092862898785173 -711.2698412698413,5.092325382766736 -711.4285714285714,5.091788189342028 -711.5873015873016,5.091251318130738 -711.7460317460317,5.090714768753251 -711.9047619047619,5.090178540830632 -712.063492063492,5.089642633984639 -712.2222222222222,5.0891070478377065 -712.3809523809524,5.088571782012954 -712.5396825396825,5.088036836134183 -712.6984126984127,5.087502209825873 -712.8571428571429,5.086967902713177 -713.015873015873,5.086433914421929 -713.1746031746031,5.085900244578634 -713.3333333333334,5.085366892810469 -713.4920634920635,5.084833858745283 -713.6507936507936,5.084301142011595 -713.8095238095239,5.083768742238589 -713.968253968254,5.083236659056115 -714.1269841269841,5.082704892094691 -714.2857142857143,5.082173440985494 -714.4444444444445,5.081642305360364 -714.6031746031746,5.0811114848518 -714.7619047619048,5.080580979092959 -714.9206349206349,5.080050787717655 -715.0793650793651,5.079520910360357 -715.2380952380952,5.078991346656188 -715.3968253968254,5.078462096240919 -715.5555555555555,5.077933158750978 -715.7142857142857,5.077404533823437 -715.8730158730159,5.076876221096015 -716.031746031746,5.0763482202070795 -716.1904761904761,5.0758205307956406 -716.3492063492064,5.075293152501351 -716.5079365079365,5.074766084964506 -716.6666666666666,5.074239327826037 -716.8253968253969,5.073712880727517 -716.984126984127,5.073186743311156 -717.1428571428571,5.072660915219796 -717.3015873015873,5.0721353960969155 -717.4603174603175,5.071610185586622 -717.6190476190476,5.071085283333658 -717.7777777777778,5.070560688983391 -717.936507936508,5.0700364021818185 -718.0952380952381,5.069512422575565 -718.2539682539683,5.068988749811876 -718.4126984126984,5.068465383538626 -718.5714285714286,5.067942323404306 -718.7301587301587,5.067419569058029 -718.8888888888889,5.066897120149529 -719.047619047619,5.066374976329158 -719.2063492063492,5.065853137247878 -719.3650793650794,5.06533160255727 -719.5238095238095,5.064810371909529 -719.6825396825396,5.0642894449574625 -719.8412698412699,5.063768821354483 -720.0,5.063248500754616 -720.1587301587301,5.062728482812495 -720.3174603174604,5.062208767183359 -720.4761904761905,5.061689353523046 -720.6349206349206,5.061170241488009 -720.7936507936508,5.06065143073529 -720.952380952381,5.060132920922542 -721.1111111111111,5.05961471170801 -721.2698412698413,5.059096802750538 -721.4285714285714,5.05857919370957 -721.5873015873016,5.058061884245142 -721.7460317460317,5.057544874017882 -721.9047619047619,5.057028162689014 -722.063492063492,5.056511749920349 -722.2222222222222,5.055995635374289 -722.3809523809524,5.055479818713827 -722.5396825396825,5.054964299602535 -722.6984126984127,5.054449077704579 -722.8571428571429,5.053934152684703 -723.015873015873,5.053419524208237 -723.1746031746031,5.052905191941091 -723.3333333333334,5.052391155549752 -723.4920634920635,5.051877414701293 -723.6507936507936,5.051363969063356 -723.8095238095239,5.0508508183041645 -723.968253968254,5.050337962092515 -724.1269841269841,5.049825400097778 -724.2857142857143,5.0493131319898925 -724.4444444444445,5.048801157439372 -724.6031746031746,5.0482894761173 -724.7619047619048,5.047778087695322 -724.9206349206349,5.0472669918456585 -725.0793650793651,5.0467561882410905 -725.2380952380952,5.046245676554962 -725.3968253968254,5.045735456461184 -725.5555555555555,5.045225527634226 -725.7142857142857,5.04471588974912 -725.8730158730159,5.044206542481454 -726.031746031746,5.0436974855073755 -726.1904761904761,5.043188718503593 -726.3492063492064,5.04268024114736 -726.5079365079365,5.042172053116492 -726.6666666666666,5.0416641540893545 -726.8253968253969,5.041156543744865 -726.984126984127,5.040649221762492 -727.1428571428571,5.04014218782225 -727.3015873015873,5.039635441604703 -727.4603174603175,5.039128982790961 -727.6190476190476,5.038622811062682 -727.7777777777778,5.038116926102063 -727.936507936508,5.037611327591848 -728.0952380952381,5.0371060152153175 -728.2539682539683,5.036600988656299 -728.4126984126984,5.036096247599154 -728.5714285714286,5.035591791728782 -728.7301587301587,5.035087620730622 -728.8888888888889,5.034583734290646 -729.047619047619,5.034080132095361 -729.2063492063492,5.033576813831805 -729.3650793650794,5.033073779187551 -729.5238095238095,5.032571027850701 -729.6825396825396,5.032068559509886 -729.8412698412699,5.0315663738542655 -730.0,5.031064470573527 -730.1587301587301,5.030562849357881 -730.3174603174604,5.030061509898065 -730.4761904761905,5.029560451885339 -730.6349206349206,5.029059675011487 -730.7936507936508,5.028559178968811 -730.952380952381,5.028058963450135 -731.1111111111111,5.027559028148801 -731.2698412698413,5.027059372758669 -731.4285714285714,5.026559996974115 -731.5873015873016,5.02606090049003 -731.7460317460317,5.02556208300182 -731.9047619047619,5.025063544205405 -732.063492063492,5.0245652837972115 -732.2222222222222,5.024067301474183 -732.3809523809524,5.023569596933768 -732.5396825396825,5.023072169873927 -732.6984126984127,5.022575019993126 -732.8571428571429,5.022078146990337 -733.015873015873,5.021581550565035 -733.1746031746031,5.021085230417203 -733.3333333333334,5.020589186247323 -733.4920634920635,5.020093417756383 -733.6507936507936,5.019597924645866 -733.8095238095239,5.0191027066177565 -733.968253968254,5.01860776337454 -734.1269841269841,5.018113094619197 -734.2857142857143,5.017618700055202 -734.4444444444445,5.017124579386529 -734.6031746031746,5.0166307323176405 -734.7619047619048,5.016137158553496 -734.9206349206349,5.015643857799546 -735.0793650793651,5.015150829761731 -735.2380952380952,5.014658074146478 -735.3968253968254,5.014165590660708 -735.5555555555555,5.013673379011827 -735.7142857142857,5.013181438907723 -735.8730158730159,5.012689770056776 -736.031746031746,5.0121983721678465 -736.1904761904761,5.011707244950279 -736.3492063492064,5.0112163881138985 -736.5079365079365,5.010725801369012 -736.6666666666666,5.010235484426407 -736.8253968253969,5.00974543699735 -736.984126984127,5.009255658793581 -737.1428571428571,5.0087661495273235 -737.3015873015873,5.008276908911272 -737.4603174603175,5.007787936658596 -737.6190476190476,5.007299232482939 -737.7777777777778,5.006810796098418 -737.936507936508,5.006322627219621 -738.0952380952381,5.005834725561606 -738.2539682539683,5.0053470908399 -738.4126984126984,5.0048597227705 -738.5714285714286,5.004372621069867 -738.7301587301587,5.003885785454934 -738.8888888888889,5.003399215643092 -739.047619047619,5.002912911352203 -739.2063492063492,5.002426872300589 -739.3650793650794,5.001941098207034 -739.5238095238095,5.001455588790786 -739.6825396825396,5.000970343771547 -739.8412698412699,5.000485362869487 -740.0,5.000000645805227 -740.1587301587301,4.999516192299848 -740.3174603174604,4.999032002074888 -740.4761904761905,4.99854807485234 -740.6349206349206,4.99806441035465 -740.7936507936508,4.997581008304716 -740.952380952381,4.997097868425895 -741.1111111111111,4.9966149904419845 -741.2698412698413,4.996132374077243 -741.4285714285714,4.995650019056372 -741.5873015873016,4.995167925104524 -741.7460317460317,4.994686091947297 -741.9047619047619,4.9942045193107365 -742.063492063492,4.9937232069213335 -742.2222222222222,4.9932421545060235 -742.3809523809524,4.992761361792184 -742.5396825396825,4.99228082850764 -742.6984126984127,4.991800554380652 -742.8571428571429,4.991320539139925 -743.015873015873,4.9908407825146 -743.1746031746031,4.990361284234262 -743.3333333333334,4.98988204402893 -743.4920634920635,4.989403061629063 -743.6507936507936,4.9889243367655505 -743.8095238095239,4.9884458691697215 -743.968253968254,4.987967658573341 -744.1269841269841,4.987489704708599 -744.2857142857143,4.987012007308127 -744.4444444444445,4.986534566104982 -744.6031746031746,4.986057380832654 -744.7619047619048,4.985580451225059 -744.9206349206349,4.985103777016546 -745.0793650793651,4.984627357941889 -745.2380952380952,4.984151193736288 -745.3968253968254,4.98367528413537 -745.5555555555555,4.983199628875189 -745.7142857142857,4.982724227692218 -745.8730158730159,4.982249080323357 -746.031746031746,4.981774186505925 -746.1904761904761,4.981299545977667 -746.3492063492064,4.980825158476744 -746.5079365079365,4.980351023741736 -746.6666666666666,4.979877141511644 -746.8253968253969,4.979403511525888 -746.984126984127,4.978930133524299 -747.1428571428571,4.978457007247131 -747.3015873015873,4.977984132435046 -747.4603174603175,4.977511508829127 -747.6190476190476,4.9770391361708635 -747.7777777777778,4.976567014202162 -747.936507936508,4.97609514266534 -748.0952380952381,4.975623521303122 -748.2539682539683,4.975152149858647 -748.4126984126984,4.97468102807546 -748.5714285714286,4.974210155697514 -748.7301587301587,4.973739532469169 -748.8888888888889,4.973269158135193 -749.047619047619,4.97279903244076 -749.2063492063492,4.972329155131442 -749.3650793650794,4.971859525953224 -749.5238095238095,4.971390144652488 -749.6825396825396,4.970921010976017 -749.8412698412699,4.970452124671 -750.0,4.969983485485023 -750.1587301587301,4.96951509316607 -750.3174603174604,4.9690469474625285 -750.4761904761905,4.968579048123178 -750.6349206349206,4.968111394897201 -750.7936507936508,4.967643987534171 -750.952380952381,4.967176825784058 -751.1111111111111,4.966709909397228 -751.2698412698413,4.966243238124437 -751.4285714285714,4.96577681171684 -751.5873015873016,4.965310629925978 -751.7460317460317,4.964844692503785 -751.9047619047619,4.964378999202586 -752.063492063492,4.963913549775096 -752.2222222222222,4.963448343974417 -752.3809523809524,4.962983381554036 -752.5396825396825,4.9625186622678354 -752.6984126984127,4.962054185870077 -752.8571428571429,4.96158995211541 -753.015873015873,4.961125960758867 -753.1746031746031,4.960662211555865 -753.3333333333334,4.960198704262208 -753.4920634920635,4.959735438634074 -753.6507936507936,4.95927241442803 -753.8095238095239,4.958809631401019 -753.968253968254,4.958347089310367 -754.1269841269841,4.957884787913774 -754.2857142857143,4.957422726969326 -754.4444444444445,4.956960906235478 -754.6031746031746,4.956499325471069 -754.7619047619048,4.956037984435307 -754.9206349206349,4.955576882887781 -755.0793650793651,4.955116020588452 -755.2380952380952,4.954655397297654 -755.3968253968254,4.9541950127760925 -755.5555555555555,4.953734866784848 -755.7142857142857,4.953274959085371 -755.8730158730159,4.9528152894394815 -756.031746031746,4.952360765965647 -756.1904761904761,4.9519261027881125 -756.3492063492064,4.951491659120658 -756.5079365079365,4.951057434745729 -756.6666666666666,4.950623429446105 -756.8253968253969,4.950189643004903 -756.984126984127,4.949756075205574 -757.1428571428571,4.949322725831904 -757.3015873015873,4.948889594668014 -757.4603174603175,4.948456681498354 -757.6190476190476,4.948023986107712 -757.7777777777778,4.947591508281202 -757.936507936508,4.947159247804273 -758.0952380952381,4.946727204462704 -758.2539682539683,4.9462953780426 -758.4126984126984,4.945863768330399 -758.5714285714286,4.9454323751128655 -758.7301587301587,4.945001198177091 -758.8888888888889,4.9445702373104945 -759.047619047619,4.944139492300823 -759.2063492063492,4.943708962936146 -759.3650793650794,4.943278649004859 -759.5238095238095,4.9428485502956825 -759.6825396825396,4.9424186665976615 -759.8412698412699,4.941988997700161 -760.0,4.94155954339287 -760.1587301587301,4.9411303034657985 -760.3174603174604,4.9407012777092785 -760.4761904761905,4.940272465913962 -760.6349206349206,4.9398438678708185 -760.7936507936508,4.93941548337114 -760.952380952381,4.938987312206534 -761.1111111111111,4.938559354168928 -761.2698412698413,4.938131609050563 -761.4285714285714,4.937704076644001 -761.5873015873016,4.937276756742114 -761.7460317460317,4.936849649138097 -761.9047619047619,4.936422753625451 -762.063492063492,4.935996069997997 -762.2222222222222,4.935569598049866 -762.3809523809524,4.935143337575502 -762.5396825396825,4.934717288369663 -762.6984126984127,4.934291450227415 -762.8571428571429,4.933865822944138 -763.015873015873,4.933440406315517 -763.1746031746031,4.933015200137524 -763.3333333333334,4.932590204206522 -763.4920634920635,4.932165418319099 -763.6507936507936,4.9317408422721725 -763.8095238095239,4.931316475862977 -763.968253968254,4.930892318889044 -764.1269841269841,4.9304683711482165 -764.2857142857143,4.93004463243864 -764.4444444444445,4.929621102558763 -764.6031746031746,4.9291977813073435 -764.7619047619048,4.928774668483436 -764.9206349206349,4.928351763886402 -765.0793650793651,4.927929067315905 -765.2380952380952,4.927506578571904 -765.3968253968254,4.927084297454669 -765.5555555555555,4.926662223764761 -765.7142857142857,4.926240357303043 -765.8730158730159,4.92581869787068 -766.031746031746,4.925397245269133 -766.1904761904761,4.9249759993001625 -766.3492063492064,4.924554959765821 -766.5079365079365,4.924134126468465 -766.6666666666666,4.923713499210742 -766.8253968253969,4.923293077795597 -766.984126984127,4.922872862026266 -767.1428571428571,4.922452851706287 -767.3015873015873,4.922033046639483 -767.4603174603175,4.9216134466299755 -767.6190476190476,4.921194051482177 -767.7777777777778,4.92077486100079 -767.936507936508,4.920355874990813 -768.0952380952381,4.919937093257531 -768.2539682539683,4.919518515606518 -768.4126984126984,4.919100141843644 -768.5714285714286,4.918681971775061 -768.7301587301587,4.918264005207212 -768.8888888888889,4.91784624194683 -769.047619047619,4.917428681800931 -769.2063492063492,4.917011324576824 -769.3650793650794,4.916594170082095 -769.5238095238095,4.916177218124625 -769.6825396825396,4.915760468512573 -769.8412698412699,4.915343921054386 -770.0,4.914927575558793 -770.1587301587301,4.914511431834809 -770.3174603174604,4.914095489691729 -770.4761904761905,4.9136797489391295 -770.6349206349206,4.913264209386873 -770.7936507936508,4.912848870845098 -770.952380952381,4.912433733124226 -771.1111111111111,4.91201879603496 -771.2698412698413,4.911604059388279 -771.4285714285714,4.911189522995442 -771.5873015873016,4.910775186667989 -771.7460317460317,4.910361050217731 -771.9047619047619,4.909947113456765 -772.063492063492,4.909533376197458 -772.2222222222222,4.9091198382524555 -772.3809523809524,4.908706499434679 -772.5396825396825,4.908293359557324 -772.6984126984127,4.907880418433862 -772.8571428571429,4.907467675878036 -773.015873015873,4.907055131703863 -773.1746031746031,4.906642785725635 -773.3333333333334,4.906230637757914 -773.4920634920635,4.905818687615535 -773.6507936507936,4.905406935113605 -773.8095238095239,4.904995380067499 -773.968253968254,4.904584022292865 -774.1269841269841,4.904172861605618 -774.2857142857143,4.903761897821944 -774.4444444444445,4.903351130758299 -774.6031746031746,4.9029405602314045 -774.7619047619048,4.902530186058249 -774.9206349206349,4.902120008056091 -775.0793650793651,4.901710026042453 -775.2380952380952,4.901300239835127 -775.3968253968254,4.9008906492521636 -775.5555555555555,4.9004812541118845 -775.7142857142857,4.900072054232875 -775.8730158730159,4.8996630494339835 -776.031746031746,4.89925423953432 -776.1904761904761,4.89884562435326 -776.3492063492064,4.898437203710441 -776.5079365079365,4.898028977425761 -776.6666666666666,4.897620945319381 -776.8253968253969,4.89721310721172 -776.984126984127,4.896805462923463 -777.1428571428571,4.896398012275548 -777.3015873015873,4.895990755089177 -777.4603174603175,4.89558369118581 -777.6190476190476,4.895176820387164 -777.7777777777778,4.894770142515214 -777.936507936508,4.894363657392195 -778.0952380952381,4.8939573648405945 -778.2539682539683,4.893551264683161 -778.4126984126984,4.893145356742896 -778.5714285714286,4.892739640843057 -778.7301587301587,4.892334116807154 -778.8888888888889,4.8919287844589565 -779.047619047619,4.891523643622484 -779.2063492063492,4.89111869412201 -779.3650793650794,4.8907139357820615 -779.5238095238095,4.8903093684274195 -779.6825396825396,4.889904991883112 -779.8412698412699,4.889500805974424 -780.0,4.889096810526889 -780.1587301587301,4.8886930053662905 -780.3174603174604,4.888289390318663 -780.4761904761905,4.88788596521029 -780.6349206349206,4.887482729867703 -780.7936507936508,4.887079684117685 -780.952380952381,4.886676827787265 -781.1111111111111,4.886274160703717 -781.2698412698413,4.88587168269457 -781.4285714285714,4.885469393587592 -781.5873015873016,4.885067293210799 -781.7460317460317,4.8846653813924545 -781.9047619047619,4.884263657961068 -782.063492063492,4.883862122745389 -782.2222222222222,4.883460775574417 -782.3809523809524,4.883059616277391 -782.5396825396825,4.882658644683797 -782.6984126984127,4.882257860623359 -782.8571428571429,4.881857263926051 -783.015873015873,4.881456854422081 -783.1746031746031,4.881056631941903 -783.3333333333334,4.880656596316212 -783.4920634920635,4.880256747375941 -783.6507936507936,4.879857084952266 -783.8095238095239,4.879457608876601 -783.968253968254,4.879058318980601 -784.1269841269841,4.878659215096158 -784.2857142857143,4.878260297055399 -784.4444444444445,4.8778615646907 -784.6031746031746,4.877463017834661 -784.7619047619048,4.877064656320128 -784.9206349206349,4.876666479980181 -785.0793650793651,4.876268488648135 -785.2380952380952,4.87587068215754 -785.3968253968254,4.875473060342184 -785.5555555555555,4.875075623036088 -785.7142857142857,4.874678370073508 -785.8730158730159,4.874281301288934 -786.031746031746,4.873884416517085 -786.1904761904761,4.873487715592923 -786.3492063492064,4.873091198351631 -786.5079365079365,4.872694864628629 -786.6666666666666,4.872298714259573 -786.8253968253969,4.8719027470803455 -786.984126984127,4.87150696292706 -787.1428571428571,4.871111361636058 -787.3015873015873,4.870715943043917 -787.4603174603175,4.870320706987441 -787.6190476190476,4.86992565330366 -787.7777777777778,4.869530781829837 -787.936507936508,4.86913609240346 -788.0952380952381,4.868741584862249 -788.2539682539683,4.868347259044148 -788.4126984126984,4.867953114787326 -788.5714285714286,4.867559151930184 -788.7301587301587,4.867165370311346 -788.8888888888889,4.866771769769658 -789.047619047619,4.866378350144198 -789.2063492063492,4.865985111274265 -789.3650793650794,4.865592052999381 -789.5238095238095,4.865199175159298 -789.6825396825396,4.864806477593984 -789.8412698412699,4.864413960143635 -790.0,4.864021622648667 -790.1587301587301,4.86362946494972 -790.3174603174604,4.863237486887656 -790.4761904761905,4.862845688303557 -790.6349206349206,4.862454069038727 -790.7936507936508,4.86206262893469 -790.952380952381,4.86167136783319 -791.1111111111111,4.861280285576194 -791.2698412698413,4.860889382005882 -791.4285714285714,4.86049865696466 -791.5873015873016,4.860108110295146 -791.7460317460317,4.859717741840182 -791.9047619047619,4.859327551442824 -792.063492063492,4.858937538946348 -792.2222222222222,4.858547704194244 -792.3809523809524,4.858158047030219 -792.5396825396825,4.857768567298199 -792.6984126984127,4.857379264842324 -792.8571428571429,4.856990139506946 -793.015873015873,4.856601191136639 -793.1746031746031,4.8562124195761855 -793.3333333333334,4.855823824670585 -793.4920634920635,4.85543540626505 -793.6507936507936,4.855047164205006 -793.8095238095239,4.854659098336093 -793.968253968254,4.85427120850416 -794.1269841269841,4.853883494555273 -794.2857142857143,4.853495956335705 -794.4444444444445,4.853108593691946 -794.6031746031746,4.852721406470691 -794.7619047619048,4.8523343945188495 -794.9206349206349,4.8519475576835385 -795.0793650793651,4.851560895812088 -795.2380952380952,4.851174408752037 -795.3968253968254,4.8507880963511285 -795.5555555555555,4.850401958457322 -795.7142857142857,4.850015994918779 -795.8730158730159,4.849630205583871 -796.031746031746,4.849244590301179 -796.1904761904761,4.848859148919488 -796.3492063492064,4.848473881287792 -796.5079365079365,4.848088787255291 -796.6666666666666,4.847703866671389 -796.8253968253969,4.8473191193856975 -796.984126984127,4.8469345452480335 -797.1428571428571,4.846550144108419 -797.3015873015873,4.846165915817077 -797.4603174603175,4.8457818602244425 -797.6190476190476,4.845397977181144 -797.7777777777778,4.845014266538022 -797.936507936508,4.844630728146114 -798.0952380952381,4.844247361856664 -798.2539682539683,4.843864167521117 -798.4126984126984,4.843481144991119 -798.5714285714286,4.843098294118521 -798.7301587301587,4.842715614755369 -798.8888888888889,4.842333106753915 -799.047619047619,4.841950769966611 -799.2063492063492,4.841568604246106 -799.3650793650794,4.841186609445251 -799.5238095238095,4.840804785417095 -799.6825396825396,4.840423132014889 -799.8412698412699,4.84004164909208 -800.0,4.839660336502312 -800.1587301587301,4.839279194099428 -800.3174603174604,4.838898221737473 -800.4761904761905,4.838517419270682 -800.6349206349206,4.838136786553491 -800.7936507936508,4.837756323440531 -800.952380952381,4.837376029786631 -801.1111111111111,4.836995905446813 -801.2698412698413,4.836615950276296 -801.4285714285714,4.836236164130495 -801.5873015873016,4.835856546865017 -801.7460317460317,4.835477098335666 -801.9047619047619,4.835097818398437 -802.063492063492,4.834718706909523 -802.2222222222222,4.834339763725307 -802.3809523809524,4.833960988702364 -802.5396825396825,4.8335823816974655 -802.6984126984127,4.833203942567571 -802.8571428571429,4.832825671169834 -803.015873015873,4.8324475673616005 -803.1746031746031,4.832069631000406 -803.3333333333334,4.831691861943979 -803.4920634920635,4.831314260050235 -803.6507936507936,4.830936825177281 -803.8095238095239,4.830559557183417 -803.968253968254,4.830182455927128 -804.1269841269841,4.829805521267091 -804.2857142857143,4.82942875306217 -804.4444444444445,4.829052151171419 -804.6031746031746,4.8286757154540805 -804.7619047619048,4.828299445769582 -804.9206349206349,4.82792334197754 -805.0793650793651,4.827547403937761 -805.2380952380952,4.827171631510232 -805.3968253968254,4.826796024555133 -805.5555555555555,4.826420582932824 -805.7142857142857,4.826045306503859 -805.8730158730159,4.825670195128968 -806.031746031746,4.825295248669073 -806.1904761904761,4.824920466985274 -806.3492063492064,4.824545849938866 -806.5079365079365,4.824171397391317 -806.6666666666666,4.8237971092042855 -806.8253968253969,4.823422985239613 -806.984126984127,4.82304902535932 -807.1428571428571,4.822675229425615 -807.3015873015873,4.822301597300886 -807.4603174603175,4.821928128847702 -807.6190476190476,4.8215548239288175 -807.7777777777778,4.821181682407166 -807.936507936508,4.820808704145862 -808.0952380952381,4.820435889008204 -808.2539682539683,4.820063236857666 -808.4126984126984,4.819690747557907 -808.5714285714286,4.819318420972763 -808.7301587301587,4.818946256966251 -808.8888888888889,4.818574255402566 -809.047619047619,4.818202416146082 -809.2063492063492,4.817830739061355 -809.3650793650794,4.817459224013114 -809.5238095238095,4.81708787086627 -809.6825396825396,4.81671667948591 -809.8412698412699,4.816345649737297 -810.0,4.8159747814858775 -810.1587301587301,4.815604074597264 -810.3174603174604,4.815233528937257 -810.4761904761905,4.814863144371825 -810.6349206349206,4.814492920767114 -810.7936507936508,4.814122857989446 -810.952380952381,4.813752955905322 -811.1111111111111,4.813383214381412 -811.2698412698413,4.813013633284564 -811.4285714285714,4.812644212481798 -811.5873015873016,4.812274951840312 -811.7460317460317,4.811905851227473 -811.9047619047619,4.8115369105108226 -812.063492063492,4.8111681295580775 -812.2222222222222,4.8107995082371255 -812.3809523809524,4.810431046416027 -812.5396825396825,4.810062743963015 -812.6984126984127,4.809694600746493 -812.8571428571429,4.8093266166350395 -813.015873015873,4.8089587914974 -813.1746031746031,4.808591125202491 -813.3333333333334,4.808223617619404 -813.4920634920635,4.807856268617398 -813.6507936507936,4.8074890780659025 -813.8095238095239,4.807122045834514 -813.968253968254,4.806755171793004 -814.1269841269841,4.806388455811307 -814.2857142857143,4.806021897759531 -814.4444444444445,4.805655497507952 -814.6031746031746,4.805289254927012 -814.7619047619048,4.804923169887322 -814.9206349206349,4.80455724225966 -815.0793650793651,4.804191471914974 -815.2380952380952,4.803825858724377 -815.3968253968254,4.803460402559149 -815.5555555555555,4.803095103290736 -815.7142857142857,4.80272996079075 -815.8730158730159,4.802364974930972 -816.031746031746,4.802000145583346 -816.1904761904761,4.80163547261998 -816.3492063492064,4.801270955913149 -816.5079365079365,4.800906595335295 -816.6666666666666,4.800542390759021 -816.8253968253969,4.800178342057094 -816.984126984127,4.799814449102446 -817.1428571428571,4.799450711768174 -817.3015873015873,4.799087129927538 -817.4603174603175,4.798723703453958 -817.6190476190476,4.798360432221021 -817.7777777777778,4.7979973161024745 -817.936507936508,4.797634354972227 -818.0952380952381,4.79727154870435 -818.2539682539683,4.796908897173078 -818.4126984126984,4.796546400252807 -818.5714285714286,4.79618405781809 -818.7301587301587,4.795821869743644 -818.8888888888889,4.795459835904348 -819.047619047619,4.795097956175239 -819.2063492063492,4.794736230431514 -819.3650793650794,4.79437465854853 -819.5238095238095,4.794013240401803 -819.6825396825396,4.793651975867011 -819.8412698412699,4.793290864819986 -820.0,4.792929907136724 -820.1587301587301,4.792569102693376 -820.3174603174604,4.79220845136625 -820.4761904761905,4.791847953031816 -820.6349206349206,4.791487607566697 -820.7936507936508,4.791127414847675 -820.952380952381,4.790767374751692 -821.1111111111111,4.79040673871412 -821.2698412698413,4.790036313644255 -821.4285714285714,4.789666044891371 -821.5873015873016,4.789295932333212 -821.7460317460317,4.78892597584767 -821.9047619047619,4.788556175312791 -822.063492063492,4.788186530606766 -822.2222222222222,4.787817041607937 -822.3809523809524,4.787447708194791 -822.5396825396825,4.7870785302459655 -822.6984126984127,4.786709507640245 -822.8571428571429,4.7863406402565625 -823.015873015873,4.7859719279739945 -823.1746031746031,4.78560337067177 -823.3333333333334,4.78523496822926 -823.4920634920635,4.784866720525986 -823.6507936507936,4.784498627441611 -823.8095238095239,4.7841306888559485 -823.968253968254,4.783762904648958 -824.1269841269841,4.783395274700738 -824.2857142857143,4.783027798891541 -824.4444444444445,4.78266047710176 -824.6031746031746,4.782293309211932 -824.7619047619048,4.78192629510274 -824.9206349206349,4.781559434655014 -825.0793650793651,4.781192727749722 -825.2380952380952,4.7808261742679825 -825.3968253968254,4.780459774091054 -825.5555555555555,4.7800935271003375 -825.7142857142857,4.779727433177381 -825.8730158730159,4.779361492203871 -826.031746031746,4.778995704061641 -826.1904761904761,4.778630068632665 -826.3492063492064,4.778264585799057 -826.5079365079365,4.777899255443079 -826.6666666666666,4.77753407744713 -826.8253968253969,4.7771690516937495 -826.984126984127,4.776804178065622 -827.1428571428571,4.776439456445573 -827.3015873015873,4.776074886716567 -827.4603174603175,4.77571046876171 -827.6190476190476,4.775346202464247 -827.7777777777778,4.774982087707566 -827.936507936508,4.774618124375192 -828.0952380952381,4.774254312350794 -828.2539682539683,4.773890651518175 -828.4126984126984,4.7735271417612815 -828.5714285714286,4.773163782964197 -828.7301587301587,4.772800575011146 -828.8888888888889,4.772437517786489 -829.047619047619,4.772074611174727 -829.2063492063492,4.771711855060496 -829.3650793650794,4.771349249328575 -829.5238095238095,4.770986793863878 -829.6825396825396,4.770624488551455 -829.8412698412699,4.770262333276494 -830.0,4.769900327924324 -830.1587301587301,4.769538472380406 -830.3174603174604,4.769176766530339 -830.4761904761905,4.768815210259859 -830.6349206349206,4.7684538034548405 -830.7936507936508,4.768092546001288 -830.952380952381,4.767731437785348 -831.1111111111111,4.767370478693298 -831.2698412698413,4.767009668611554 -831.4285714285714,4.766649007426666 -831.5873015873016,4.766288495025316 -831.7460317460317,4.765928131294328 -831.9047619047619,4.765567916120652 -832.063492063492,4.765207849391378 -832.2222222222222,4.764847930993726 -832.3809523809524,4.764488160815053 -832.5396825396825,4.764128538742851 -832.6984126984127,4.763769064664739 -832.8571428571429,4.763409738468475 -833.015873015873,4.76305056004195 -833.1746031746031,4.762691529273184 -833.3333333333334,4.762332646050329 -833.4920634920635,4.761973910261674 -833.6507936507936,4.761615321795639 -833.8095238095239,4.761256880540773 -833.968253968254,4.76089858638576 -834.1269841269841,4.760540439219411 -834.2857142857143,4.7601824389306735 -834.4444444444445,4.759824585408624 -834.6031746031746,4.759466878542469 -834.7619047619048,4.759109318221545 -834.9206349206349,4.758751904335322 -835.0793650793651,4.758394636773398 -835.2380952380952,4.7580375154254995 -835.3968253968254,4.757680540181489 -835.5555555555555,4.75732371093135 -835.7142857142857,4.756967027565203 -835.8730158730159,4.7566104899732915 -836.031746031746,4.756254098045994 -836.1904761904761,4.755897851673814 -836.3492063492064,4.755541750747383 -836.5079365079365,4.755185795157464 -836.6666666666666,4.754829984794946 -836.8253968253969,4.754474319550845 -836.984126984127,4.754118799316309 -837.1428571428571,4.753763423982609 -837.3015873015873,4.753408193441145 -837.4603174603175,4.753053107583446 -837.6190476190476,4.7526981663011645 -837.7777777777778,4.752343369486082 -837.936507936508,4.751988717030107 -838.0952380952381,4.751634208825274 -838.2539682539683,4.751279844763742 -838.4126984126984,4.750925624737797 -838.5714285714286,4.750571548639852 -838.7301587301587,4.750217616362445 -838.8888888888889,4.749863827798237 -839.047619047619,4.749510182840018 -839.2063492063492,4.7491566813807 -839.3650793650794,4.748803323313322 -839.5238095238095,4.748450108531045 -839.6825396825396,4.748097036927157 -839.8412698412699,4.747744108395068 -840.0,4.747391322828315 -840.1587301587301,4.747038680120556 -840.3174603174604,4.746686180165573 -840.4761904761905,4.746333822857272 -840.6349206349206,4.745981608089683 -840.7936507936508,4.745629535756958 -840.952380952381,4.7452776057533725 -841.1111111111111,4.744925817973323 -841.2698412698413,4.74457417231133 -841.4285714285714,4.744222668662037 -841.5873015873016,4.743871306920207 -841.7460317460317,4.743520086980728 -841.9047619047619,4.743169008738607 -842.063492063492,4.742818072088974 -842.2222222222222,4.74246727692708 -842.3809523809524,4.742116623148296 -842.5396825396825,4.7417661106481175 -842.6984126984127,4.741415739322156 -842.8571428571429,4.741065509066146 -843.015873015873,4.7407154197759445 -843.1746031746031,4.740365471347523 -843.3333333333334,4.740015663676979 -843.4920634920635,4.739665996660525 -843.6507936507936,4.739316470194497 -843.8095238095239,4.738967084175349 -843.968253968254,4.7386178384996525 -844.1269841269841,4.7382687330641 -844.2857142857143,4.737919767765503 -844.4444444444445,4.737570942500791 -844.6031746031746,4.73722225716701 -844.7619047619048,4.736873711661331 -844.9206349206349,4.736525305881036 -845.0793650793651,4.736177039723527 -845.2380952380952,4.7358289130863245 -845.3968253968254,4.735480925867067 -845.5555555555555,4.735133077963511 -845.7142857142857,4.734785369273527 -845.8730158730159,4.7344377996951055 -846.031746031746,4.734090369126354 -846.1904761904761,4.733743077465493 -846.3492063492064,4.733395924610866 -846.5079365079365,4.7330489104609255 -846.6666666666666,4.732702034914246 -846.8253968253969,4.732355297869516 -846.984126984127,4.7320086992255375 -847.1428571428571,4.731662238881231 -847.3015873015873,4.731315916735632 -847.4603174603175,4.73096973268789 -847.6190476190476,4.73062368663727 -847.7777777777778,4.730277778483154 -847.936507936508,4.729932008125035 -848.0952380952381,4.7295863754625245 -848.2539682539683,4.729240880395343 -848.4126984126984,4.728895522823333 -848.5714285714286,4.728550302646442 -848.7301587301587,4.728205219764741 -848.8888888888889,4.727860274078405 -849.047619047619,4.72751546548773 -849.2063492063492,4.727170793893119 -849.3650793650794,4.7268262591950965 -849.5238095238095,4.726481861294292 -849.6825396825396,4.726137600091451 -849.8412698412699,4.725793475487431 -850.0,4.725449487383203 -850.1587301587301,4.725105635679852 -850.3174603174604,4.724761920278568 -850.4761904761905,4.7244183410806615 -850.6349206349206,4.72407489798755 -850.7936507936508,4.723731590900763 -850.952380952381,4.723388419721942 -851.1111111111111,4.72304538435284 -851.2698412698413,4.722702484695321 -851.4285714285714,4.722359720651361 -851.5873015873016,4.722017092123043 -851.7460317460317,4.721674599012565 -851.9047619047619,4.721332241222232 -852.063492063492,4.720990018654462 -852.2222222222222,4.720647931211782 -852.3809523809524,4.720305978796827 -852.5396825396825,4.719964161312345 -852.6984126984127,4.719622478661191 -852.8571428571429,4.719280930746331 -853.015873015873,4.718939517470839 -853.1746031746031,4.7185982387379 -853.3333333333334,4.718257094450805 -853.4920634920635,4.717916084512956 -853.6507936507936,4.717575208827864 -853.8095238095239,4.717234467299146 -853.968253968254,4.716893859830528 -854.1269841269841,4.716553386325845 -854.2857142857143,4.716213046689041 -854.4444444444445,4.715872840824166 -854.6031746031746,4.715532768635375 -854.7619047619048,4.715192830026937 -854.9206349206349,4.714853024903223 -855.0793650793651,4.714513353168713 -855.2380952380952,4.714173814727992 -855.3968253968254,4.713834409485756 -855.5555555555555,4.713495137346803 -855.7142857142857,4.713155998216041 -855.8730158730159,4.712816991998481 -856.031746031746,4.712478118599242 -856.1904761904761,4.712139377923551 -856.3492063492064,4.711800769876736 -856.5079365079365,4.711462294364234 -856.6666666666666,4.711123951291589 -856.8253968253969,4.710785740564445 -856.984126984127,4.710447662088556 -857.1428571428571,4.710109715769779 -857.3015873015873,4.709771901514076 -857.4603174603175,4.709434219227513 -857.6190476190476,4.709096668816263 -857.7777777777778,4.708759250186602 -857.936507936508,4.7084219632449065 -858.0952380952381,4.708084807897665 -858.2539682539683,4.707747784051463 -858.4126984126984,4.7074108916129935 -858.5714285714286,4.70707413048905 -858.7301587301587,4.7067375005865335 -858.8888888888889,4.706401001812445 -859.047619047619,4.706064634073889 -859.2063492063492,4.705728397278075 -859.3650793650794,4.705392291332313 -859.5238095238095,4.7050563161440175 -859.6825396825396,4.704720471620704 -859.8412698412699,4.704384757669992 -860.0,4.704049174199601 -860.1587301587301,4.703713721117355 -860.3174603174604,4.703378398331178 -860.4761904761905,4.703043205749096 -860.6349206349206,4.702708143279239 -860.7936507936508,4.702373210829835 -860.952380952381,4.702038408309216 -861.1111111111111,4.701703735625812 -861.2698412698413,4.701369192688158 -861.4285714285714,4.701034779404886 -861.5873015873016,4.700700495684734 -861.7460317460317,4.700366341436532 -861.9047619047619,4.70003231656922 -862.063492063492,4.699698420991832 -862.2222222222222,4.699364654613502 -862.3809523809524,4.699031017343469 -862.5396825396825,4.698697509091066 -862.6984126984127,4.698364129765731 -862.8571428571429,4.6980308792769945 -863.015873015873,4.6976977575344945 -863.1746031746031,4.697364764447962 -863.3333333333334,4.6970318999272305 -863.4920634920635,4.696699163882231 -863.6507936507936,4.696366556222993 -863.8095238095239,4.696034076859646 -863.968253968254,4.695701725702416 -864.1269841269841,4.695369502661629 -864.2857142857143,4.6950374076477095 -864.4444444444445,4.694705440571178 -864.6031746031746,4.694373601342654 -864.7619047619048,4.694041889872854 -864.9206349206349,4.693710306072595 -865.0793650793651,4.693378849852787 -865.2380952380952,4.693047521124442 -865.3968253968254,4.692716319798666 -865.5555555555555,4.692385245786662 -865.7142857142857,4.692054298999731 -865.8730158730159,4.691723479349271 -866.031746031746,4.691392786746775 -866.1904761904761,4.691062221103835 -866.3492063492064,4.690731782332137 -866.5079365079365,4.690401470343465 -866.6666666666666,4.6900712850496955 -866.8253968253969,4.689741226362805 -866.984126984127,4.689411294194864 -867.1428571428571,4.689081488458039 -867.3015873015873,4.688751809064591 -867.4603174603175,4.688422255926879 -867.6190476190476,4.688092828957353 -867.7777777777778,4.68776352806856 -867.936507936508,4.687434353173145 -868.0952380952381,4.6871053041838415 -868.2539682539683,4.686776381013483 -868.4126984126984,4.686447583574995 -868.5714285714286,4.6861189117813975 -868.7301587301587,4.685790365545806 -868.8888888888889,4.685461944781428 -869.047619047619,4.685133649401568 -869.2063492063492,4.684805479319621 -869.3650793650794,4.684477434449076 -869.5238095238095,4.684149514703519 -869.6825396825396,4.683821719996624 -869.8412698412699,4.683494050242164 -870.0,4.683166505354 -870.1587301587301,4.68283908524609 -870.3174603174604,4.682511789832482 -870.4761904761905,4.682184619027319 -870.6349206349206,4.681857572744834 -870.7936507936508,4.681530650899354 -870.952380952381,4.681203853405299 -871.1111111111111,4.68087718017718 -871.2698412698413,4.6805506311295995 -871.4285714285714,4.680224206177253 -871.5873015873016,4.679897905234928 -871.7460317460317,4.679571728217503 -871.9047619047619,4.6792456750399465 -872.063492063492,4.678919745617323 -872.2222222222222,4.678593939864748 -872.3809523809524,4.6782682576975345 -872.5396825396825,4.677942699030983 -872.6984126984127,4.67761726378052 -872.8571428571429,4.67729195186166 -873.015873015873,4.676966763190012 -873.1746031746031,4.676641697681271 -873.3333333333334,4.676316755251226 -873.4920634920635,4.6759919358157545 -873.6507936507936,4.675667239290823 -873.8095238095239,4.67534266559249 -873.968253968254,4.6750182146369035 -874.1269841269841,4.6746938863403 -874.2857142857143,4.674369680619007 -874.4444444444445,4.674045597389438 -874.6031746031746,4.673721636568101 -874.7619047619048,4.673397798071589 -874.9206349206349,4.673074081816586 -875.0793650793651,4.672750487719863 -875.2380952380952,4.672427015698272 -875.3968253968254,4.672103665668781 -875.5555555555555,4.671780437548423 -875.7142857142857,4.67145733125432 -875.8730158730159,4.671134346703687 -876.031746031746,4.6708114838138295 -876.1904761904761,4.670488742502135 -876.3492063492064,4.670166122686084 -876.5079365079365,4.669843624283243 -876.6666666666666,4.669521247211264 -876.8253968253969,4.6691989913878915 -876.984126984127,4.668876856730953 -877.1428571428571,4.668554843158364 -877.3015873015873,4.668232950588127 -877.4603174603175,4.667911178938333 -877.6190476190476,4.667589528127159 -877.7777777777778,4.6672679980728695 -877.936507936508,4.666946588693813 -878.0952380952381,4.666625299908428 -878.2539682539683,4.666304131635236 -878.4126984126984,4.665983083792847 -878.5714285714286,4.665662156299956 -878.7301587301587,4.665341349075346 -878.8888888888889,4.6650206620378825 -879.047619047619,4.664700095106518 -879.2063492063492,4.664379648200293 -879.3650793650794,4.664059321238331 -879.5238095238095,4.663739114139839 -879.6825396825396,4.663419026824117 -879.8412698412699,4.66309905921054 -880.0,4.6627792112185755 -880.1587301587301,4.662459482767771 -880.3174603174604,4.662139873777763 -880.4761904761905,4.661820384168268 -880.6349206349206,4.661501013859092 -880.7936507936508,4.661181762770123 -880.952380952381,4.660862630821331 -881.1111111111111,4.660543617932774 -881.2698412698413,4.6602247240245935 -881.4285714285714,4.659905949017012 -881.5873015873016,4.659587292830339 -881.7460317460317,4.659268755384964 -881.9047619047619,4.658950336601365 -882.063492063492,4.658632036400101 -882.2222222222222,4.658313854701811 -882.3809523809524,4.657995791427223 -882.5396825396825,4.657677846497145 -882.6984126984127,4.657360019832468 -882.8571428571429,4.657042311354165 -883.015873015873,4.656724720983296 -883.1746031746031,4.656407248640998 -883.3333333333334,4.6560898942484945 -883.4920634920635,4.655772657727088 -883.6507936507936,4.655455538998168 -883.8095238095239,4.655138537983201 -883.968253968254,4.654821654603738 -884.1269841269841,4.654504888781415 -884.2857142857143,4.654188240437941 -884.4444444444445,4.6538717094951165 -884.6031746031746,4.653555295874819 -884.7619047619048,4.653238999499005 -884.9206349206349,4.652922820289718 -885.0793650793651,4.652606758169079 -885.2380952380952,4.65229081305929 -885.3968253968254,4.651974984882636 -885.5555555555555,4.651659273561481 -885.7142857142857,4.651343679018271 -885.8730158730159,4.6510282011755315 -886.031746031746,4.65071283995587 -886.1904761904761,4.650397595281973 -886.3492063492064,4.650082467076608 -886.5079365079365,4.649767455262623 -886.6666666666666,4.649452559762946 -886.8253968253969,4.649137780500585 -886.984126984127,4.648823117398626 -887.1428571428571,4.648508570380237 -887.3015873015873,4.648194139368664 -887.4603174603175,4.6478798242872355 -887.6190476190476,4.647565625059356 -887.7777777777778,4.64725154160851 -887.936507936508,4.646937573858264 -888.0952380952381,4.646623721732259 -888.2539682539683,4.646309985154218 -888.4126984126984,4.645996364047942 -888.5714285714286,4.645682858337313 -888.7301587301587,4.645369467946287 -888.8888888888889,4.645056192798901 -889.047619047619,4.644743032819272 -889.2063492063492,4.644429987931594 -889.3650793650794,4.644117058060137 -889.5238095238095,4.643804243129253 -889.6825396825396,4.6434915430633685 -889.8412698412699,4.643178957786991 -890.0,4.642866487224702 -890.1587301587301,4.642554131301164 -890.3174603174604,4.642241889941117 -890.4761904761905,4.641929763069375 -890.6349206349206,4.641617750610833 -890.7936507936508,4.6413058524904605 -890.952380952381,4.640994068633307 -891.1111111111111,4.640682398964496 -891.2698412698413,4.6403708434092295 -891.4285714285714,4.640059401892787 -891.5873015873016,4.639748074340523 -891.7460317460317,4.639436860677869 -891.9047619047619,4.639125760830334 -892.063492063492,4.638840727175628 -892.2222222222222,4.638594709123353 -892.3809523809524,4.638348766484267 -892.5396825396825,4.638102899214313 -892.6984126984127,4.637857107269472 -892.8571428571429,4.6376113906057705 -893.015873015873,4.637365749179278 -893.1746031746031,4.637120182946105 -893.3333333333334,4.636874691862407 -893.4920634920635,4.6366292758843795 -893.6507936507936,4.636383934968265 -893.8095238095239,4.63613866907034 -893.968253968254,4.635893478146934 -894.1269841269841,4.635648362154411 -894.2857142857143,4.63540332104918 -894.4444444444445,4.635158354787694 -894.6031746031746,4.634913463326444 -894.7619047619048,4.634668646621968 -894.9206349206349,4.63442390463084 -895.0793650793651,4.634179237309684 -895.2380952380952,4.63393464461516 -895.3968253968254,4.63369012650397 -895.5555555555555,4.6334456829328605 -895.7142857142857,4.6332013138586206 -895.8730158730159,4.632957019238077 -896.031746031746,4.632712799028099 -896.1904761904761,4.632468653185603 -896.3492063492064,4.63222458166754 -896.5079365079365,4.631980584430905 -896.6666666666666,4.631736661432737 -896.8253968253969,4.631492812630113 -896.984126984127,4.631249037980152 -897.1428571428571,4.6310053374400155 -897.3015873015873,4.630761710966906 -897.4603174603175,4.630518158518068 -897.6190476190476,4.630274680050783 -897.7777777777778,4.630031275522377 -897.936507936508,4.629787944890219 -898.0952380952381,4.629544688111714 -898.2539682539683,4.629301505144312 -898.4126984126984,4.629058395945501 -898.5714285714286,4.628815360472813 -898.7301587301587,4.628572398683816 -898.8888888888889,4.6283295105361235 -899.047619047619,4.628086695987388 -899.2063492063492,4.627843954995299 -899.3650793650794,4.627601287517595 -899.5238095238095,4.627358693512045 -899.6825396825396,4.627116172936466 -899.8412698412699,4.626873725748711 -900.0,4.626631351906675 diff --git a/abstest.jl b/abstest.jl deleted file mode 100755 index b0e391b..0000000 --- a/abstest.jl +++ /dev/null @@ -1,37 +0,0 @@ -println("\nImporting modules...") - -include("src/nanoconc.jl") -using CSV -using DataFrames -using Profile, ProfileVega - -println("Loading parameters...") - -refmed = 1.333 # refractive index of the medium -wavel1, wavel2 = 250., 900. # wavelengths to calculate between -numval = 0x00001000 # number of values to calculate in spectrum -particledata = [2.5 1.; - 5. 1.; - 10. 1.; - 20. 1.; - 30. 1.; - 40. 1.; - 50. 1.; - 60. 1.; - 70. 1.; - 80. 1.; - 90. 1.; - 100. 1.] -materialdata = nanoconc.loadmaterial("Gold",disp=false) -ppml = 10000. # particles per ml nanoconc.quantumcalc.numtomol(ppml) -> conc -d0 = 1. # path length -params = (refmed,wavel1,wavel2,numval,particledata,materialdata,ppml,d0) -spectrum = nanoconc.abspredict(params...) - -println("Calculating absorbance spectrum...") -print("Calculation time: ") - -@time spectrum = nanoconc.abspredict(params...) -CSV.write("abs.csv", DataFrame(spectrum, :auto), writeheader=false) - -# @profview nanoconc.abspredict(params...) diff --git a/bhmielibs_test.jl b/bhmielibs_test.jl new file mode 100644 index 0000000..40e355a --- /dev/null +++ b/bhmielibs_test.jl @@ -0,0 +1,80 @@ +run(`scripts/build_other_impls.sh`) + +include("src/miemfp.jl") +# using miemfp + +function bhmie_c(x::Float32, cxref::ComplexF32, nang::UInt32, cxs1::Vector{ComplexF32}, cxs2::Vector{ComplexF32}) + # Pre-allocate memory for the output variables + qext = Ref{Float32}(0.0) + qsca = Ref{Float32}(0.0) + qback = Ref{Float32}(0.0) + gsca = Ref{Float32}(0.0) + + # Ensure cxs1 and cxs2 have proper sizes, as expected by the C function + # For example, if they need to be of size `nang`, you should verify or resize them accordingly + + # Call the C function + ccall((:bhmie, ".bhmielibs/bhmie-c/bhmie.so"), Cvoid, + (Float32, ComplexF32, UInt32, Ptr{ComplexF32}, Ptr{ComplexF32}, Ref{Float32}, Ref{Float32}, Ref{Float32}, Ref{Float32}), + x, cxref, nang, cxs1, cxs2, qext, qsca, qback, gsca) + + # Return the output variables + return qext[], qsca[], qback[], gsca[] +end + +function bhmie_fortran(x::Float32, refrel::ComplexF32, nang::Int32, s1::Vector{ComplexF32}, s2::Vector{ComplexF32}) + # Pre-allocate output variables + qext = Ref{Float32}(0.0) + qsca = Ref{Float32}(0.0) + qback = Ref{Float32}(0.0) + gsca = Ref{Float32}(0.0) + + # Call the Fortran subroutine + ccall((:bhmie_, ".bhmielibs/bhmie-f/bhmie.so"), Cvoid, + (Ref{Float32}, Ref{ComplexF32}, Ref{Int32}, Ptr{ComplexF32}, Ptr{ComplexF32}, Ref{Float32}, Ref{Float32}, Ref{Float32}, Ref{Float32}), + x, refrel, nang, s1, s2, qext, qsca, qback, gsca) + + # Return the modified values + return qext[], qsca[], qback[], gsca[] +end + +function bhmie_fortran77(x::Float32, refrel::ComplexF32, nang::Int32, s1::Vector{ComplexF32}, s2::Vector{ComplexF32}) + # Pre-allocate output variables + qext = Ref{Float32}(0.0) + qsca = Ref{Float32}(0.0) + qback = Ref{Float32}(0.0) + gsca = Ref{Float32}(0.0) + + # Call the Fortran subroutine + ccall((:bhmie_, ".bhmielibs/bhmie-f/bhmie.so"), Cvoid, + (Ref{Float32}, Ref{ComplexF32}, Ref{Int32}, Ptr{ComplexF32}, Ptr{ComplexF32}, Ref{Float32}, Ref{Float32}, Ref{Float32}, Ref{Float32}), + x, refrel, nang, s1, s2, qext, qsca, qback, gsca) + + # Return the modified values + return qext[], qsca[], qback[], gsca[] +end + +# Create test data +x = Float32(1.0) # Example value for x +cxref = ComplexF32(1.5, 0.5) # Example complex refractive index +nang = UInt32(2) # Example number of angles + +# Example arrays for scattering amplitudes, initialized with dummy complex values +cxs1 = [ComplexF32(0.1, 0.2) for _ in 1:nang] +cxs2 = [ComplexF32(0.3, 0.4) for _ in 1:nang] + +# Test C wrapper +qext, qsca, qback, gsca = bhmie_c(x, cxref, nang, cxs1, cxs2) +println("bhmie_c output: qext = $qext, qsca = $qsca, qback = $qback, gsca = $gsca") + +# Test Fortran wrapper +qext, qsca, qback, gsca = bhmie_fortran(x, cxref, Int32(nang), cxs1, cxs2) +println("bhmie_fortran output: qext = $qext, qsca = $qsca, qback = $qback, gsca = $gsca") + +# Test Fortran77 wrapper +qext, qsca, qback, gsca = bhmie_fortran77(x, cxref, Int32(nang), cxs1, cxs2) +println("bhmie_fortran77 output: qext = $qext, qsca = $qsca, qback = $qback, gsca = $gsca") + +# Test Julia wrapper +qext, qsca, qback, gsca = miemfp.bhmie(Float64(x), ComplexF64(cxref), nang) +println("bhmie_julia output: qext = $qext, qsca = $qsca, qback = $qback, gsca = $gsca") \ No newline at end of file diff --git a/prof.ipynb b/prof.ipynb deleted file mode 100644 index 152bfc4..0000000 --- a/prof.ipynb +++ /dev/null @@ -1,3594 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Importing modules...\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loading parameters...\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Calculating absorbance spectrum...\n", - "Calculation time: " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 0.325362 seconds (5.42 M allocations: 455.666 MiB, 15.68% gc time)\n" - ] - }, - { - "data": { - "application/vnd.vegalite.v4+json": { - "data": { - "values": [ - { - "level": 0, - "sf": "ip:0x0", - "status": "Runtime dispatch", - "x1": 1, - "x2": 304.9 - }, - { - "level": 1, - "sf": "(::Base.Threads.var\"#1#2\"{Main.nanoconc.miemfp.var\"#77#threadsfor_fun#20\"{Main.nanoconc.miemfp.var\"#77#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}}, Int64})() at threadingconstructs.jl:108", - "status": "Default", - "x1": 1, - "x2": 295.9 - }, - { - "level": 2, - "sf": "#77#threadsfor_fun at threadingconstructs.jl:130 [inlined]", - "status": "Default", - "x1": 1, - "x2": 295.9 - }, - { - "level": 3, - "sf": "(::Main.nanoconc.miemfp.var\"#77#threadsfor_fun#20\"{Main.nanoconc.miemfp.var\"#77#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}})(tid::Int64; onethread::Bool) at threadingconstructs.jl:163", - "status": "Default", - "x1": 1, - "x2": 295.9 - }, - { - "level": 4, - "sf": "macro expansion at miemfp.jl:333 [inlined]", - "status": "Default", - "x1": 1, - "x2": 295.9 - }, - { - "level": 5, - "sf": "_calc_apparent_cross_section at Memoize.jl:61 [inlined]", - "status": "Default", - "x1": 1, - "x2": 2.9 - }, - { - "level": 6, - "sf": "get! at iddict.jl:176 [inlined]", - "status": "Garbage collection", - "x1": 1, - "x2": 2.9 - }, - { - "level": 5, - "sf": "_bhmie at miemfp.jl:300 [inlined]", - "status": "Default", - "x1": 3, - "x2": 274.9 - }, - { - "level": 6, - "sf": "*(A::Float64, B::Vector{ComplexF64}) at arraymath.jl:21", - "status": "Default", - "x1": 3, - "x2": 3.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at essentials.jl:0", - "status": "Default", - "x1": 4, - "x2": 4.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:186", - "status": "Default", - "x1": 5, - "x2": 5.9 - }, - { - "level": 7, - "sf": "round at floatfuncs.jl:128 [inlined]", - "status": "Default", - "x1": 5, - "x2": 5.9 - }, - { - "level": 8, - "sf": "round at float.jl:395 [inlined]", - "status": "Default", - "x1": 5, - "x2": 5.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:188", - "status": "Default", - "x1": 6, - "x2": 8.9 - }, - { - "level": 7, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 6, - "x2": 8.9 - }, - { - "level": 8, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 6, - "x2": 8.9 - }, - { - "level": 9, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 6, - "x2": 6.9 - }, - { - "level": 10, - "sf": "copyto! at broadcast.jl:973 [inlined]", - "status": "Default", - "x1": 6, - "x2": 6.9 - }, - { - "level": 11, - "sf": "macro expansion at simdloop.jl:75 [inlined]", - "status": "Default", - "x1": 6, - "x2": 6.9 - }, - { - "level": 12, - "sf": "< at int.jl:83 [inlined]", - "status": "Default", - "x1": 6, - "x2": 6.9 - }, - { - "level": 9, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 7, - "x2": 8.9 - }, - { - "level": 10, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 7, - "x2": 8.9 - }, - { - "level": 11, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 7, - "x2": 8.9 - }, - { - "level": 12, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 7, - "x2": 8.9 - }, - { - "level": 13, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 7, - "x2": 8.9 - }, - { - "level": 14, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 7, - "x2": 8.9 - }, - { - "level": 15, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 7, - "x2": 8.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:190", - "status": "Default", - "x1": 9, - "x2": 14.9 - }, - { - "level": 7, - "sf": "Array at baseext.jl:23 [inlined]", - "status": "Default", - "x1": 9, - "x2": 14.9 - }, - { - "level": 8, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 9, - "x2": 14.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:192", - "status": "Default", - "x1": 15, - "x2": 25.9 - }, - { - "level": 7, - "sf": "macro expansion at simdloop.jl:75 [inlined]", - "status": "Default", - "x1": 15, - "x2": 15.9 - }, - { - "level": 8, - "sf": "< at int.jl:83 [inlined]", - "status": "Default", - "x1": 15, - "x2": 15.9 - }, - { - "level": 7, - "sf": "macro expansion at simdloop.jl:77 [inlined]", - "status": "Default", - "x1": 16, - "x2": 25.9 - }, - { - "level": 8, - "sf": "macro expansion at array.jl:0 [inlined]", - "status": "Default", - "x1": 16, - "x2": 16.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:194 [inlined]", - "status": "Default", - "x1": 17, - "x2": 25.9 - }, - { - "level": 9, - "sf": "setindex! at array.jl:969 [inlined]", - "status": "Default", - "x1": 17, - "x2": 17.9 - }, - { - "level": 9, - "sf": "div_fast at fastmath.jl:229 [inlined]", - "status": "Default", - "x1": 18, - "x2": 23.9 - }, - { - "level": 10, - "sf": "abs2_fast at fastmath.jl:197 [inlined]", - "status": "Default", - "x1": 18, - "x2": 20.9 - }, - { - "level": 11, - "sf": "add_fast at fastmath.jl:165 [inlined]", - "status": "Default", - "x1": 18, - "x2": 20.9 - }, - { - "level": 10, - "sf": "div_fast at fastmath.jl:227 [inlined]", - "status": "Default", - "x1": 21, - "x2": 23.9 - }, - { - "level": 11, - "sf": "div_fast at fastmath.jl:168 [inlined]", - "status": "Default", - "x1": 21, - "x2": 23.9 - }, - { - "level": 9, - "sf": "maybeview at views.jl:149 [inlined]", - "status": "Default", - "x1": 24, - "x2": 25.9 - }, - { - "level": 10, - "sf": "getindex at essentials.jl:13 [inlined]", - "status": "Default", - "x1": 24, - "x2": 25.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:198", - "status": "Default", - "x1": 26, - "x2": 26.9 - }, - { - "level": 7, - "sf": "cos_fast at fastmath.jl:349 [inlined]", - "status": "Default", - "x1": 26, - "x2": 26.9 - }, - { - "level": 8, - "sf": "cos(x::Float64) at trig.jl:104", - "status": "Default", - "x1": 26, - "x2": 26.9 - }, - { - "level": 9, - "sf": "cos_kernel at trig.jl:147 [inlined]", - "status": "Default", - "x1": 26, - "x2": 26.9 - }, - { - "level": 10, - "sf": "* at float.jl:410 [inlined]", - "status": "Default", - "x1": 26, - "x2": 26.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:205", - "status": "Default", - "x1": 27, - "x2": 39.9 - }, - { - "level": 7, - "sf": "zeros at array.jl:580 [inlined]", - "status": "Default", - "x1": 27, - "x2": 39.9 - }, - { - "level": 8, - "sf": "zeros at array.jl:584 [inlined]", - "status": "Default", - "x1": 27, - "x2": 39.9 - }, - { - "level": 9, - "sf": "Array at baseext.jl:36 [inlined]", - "status": "Default", - "x1": 27, - "x2": 39.9 - }, - { - "level": 10, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 27, - "x2": 39.9 - }, - { - "level": 11, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 27, - "x2": 39.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:207", - "status": "Default", - "x1": 40, - "x2": 40.9 - }, - { - "level": 7, - "sf": "zeros at array.jl:580 [inlined]", - "status": "Default", - "x1": 40, - "x2": 40.9 - }, - { - "level": 8, - "sf": "zeros at array.jl:584 [inlined]", - "status": "Default", - "x1": 40, - "x2": 40.9 - }, - { - "level": 9, - "sf": "Array at baseext.jl:36 [inlined]", - "status": "Default", - "x1": 40, - "x2": 40.9 - }, - { - "level": 10, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 40, - "x2": 40.9 - }, - { - "level": 11, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 40, - "x2": 40.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:208", - "status": "Default", - "x1": 41, - "x2": 41.9 - }, - { - "level": 7, - "sf": "zeros at array.jl:580 [inlined]", - "status": "Default", - "x1": 41, - "x2": 41.9 - }, - { - "level": 8, - "sf": "zeros at array.jl:584 [inlined]", - "status": "Default", - "x1": 41, - "x2": 41.9 - }, - { - "level": 9, - "sf": "Array at baseext.jl:36 [inlined]", - "status": "Default", - "x1": 41, - "x2": 41.9 - }, - { - "level": 10, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 41, - "x2": 41.9 - }, - { - "level": 11, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 41, - "x2": 41.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:209", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 7, - "sf": "zeros at array.jl:579 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 8, - "sf": "zeros at array.jl:581 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 9, - "sf": "zeros at array.jl:585 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 10, - "sf": "fill! at array.jl:348 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 11, - "sf": "iterate at range.jl:887 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 12, - "sf": "isempty at range.jl:662 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 13, - "sf": "> at operators.jl:369 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 14, - "sf": "< at int.jl:83 [inlined]", - "status": "Default", - "x1": 42, - "x2": 42.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:210", - "status": "Default", - "x1": 43, - "x2": 47.9 - }, - { - "level": 7, - "sf": "ones at array.jl:579 [inlined]", - "status": "Default", - "x1": 43, - "x2": 47.9 - }, - { - "level": 8, - "sf": "ones at array.jl:581 [inlined]", - "status": "Default", - "x1": 43, - "x2": 47.9 - }, - { - "level": 9, - "sf": "ones at array.jl:584 [inlined]", - "status": "Default", - "x1": 43, - "x2": 47.9 - }, - { - "level": 10, - "sf": "Array at baseext.jl:36 [inlined]", - "status": "Default", - "x1": 43, - "x2": 47.9 - }, - { - "level": 11, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 43, - "x2": 47.9 - }, - { - "level": 12, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 43, - "x2": 47.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:211", - "status": "Default", - "x1": 48, - "x2": 49.9 - }, - { - "level": 7, - "sf": "similar at abstractarray.jl:880 [inlined]", - "status": "Default", - "x1": 48, - "x2": 49.9 - }, - { - "level": 8, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 48, - "x2": 49.9 - }, - { - "level": 9, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 48, - "x2": 49.9 - }, - { - "level": 10, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 48, - "x2": 49.9 - }, - { - "level": 11, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 48, - "x2": 49.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:212", - "status": "Default", - "x1": 50, - "x2": 265.9 - }, - { - "level": 7, - "sf": "macro expansion at simdloop.jl:77 [inlined]", - "status": "Default", - "x1": 50, - "x2": 265.9 - }, - { - "level": 8, - "sf": "macro expansion at fastmath.jl:0 [inlined]", - "status": "Default", - "x1": 50, - "x2": 50.9 - }, - { - "level": 8, - "sf": "macro expansion at simdloop.jl:0 [inlined]", - "status": "Default", - "x1": 51, - "x2": 79.9 - }, - { - "level": 9, - "sf": "*(A::Float64, B::Vector{ComplexF64}) at arraymath.jl:21", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 10, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 11, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 12, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 13, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 15, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 17, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 51, - "x2": 65.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 51, - "x2": 65.9 - }, - { - "level": 9, - "sf": "-(A::Vector{ComplexF64}, B::Vector{ComplexF64}) at arraymath.jl:8", - "status": "Default", - "x1": 66, - "x2": 78.9 - }, - { - "level": 10, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 66, - "x2": 78.9 - }, - { - "level": 11, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 66, - "x2": 78.9 - }, - { - "level": 12, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 66, - "x2": 78.9 - }, - { - "level": 13, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 66, - "x2": 67.9 - }, - { - "level": 14, - "sf": "copyto! at broadcast.jl:970 [inlined]", - "status": "Default", - "x1": 66, - "x2": 67.9 - }, - { - "level": 15, - "sf": "preprocess at broadcast.jl:953 [inlined]", - "status": "Default", - "x1": 66, - "x2": 67.9 - }, - { - "level": 16, - "sf": "preprocess_args at broadcast.jl:956 [inlined]", - "status": "Default", - "x1": 66, - "x2": 67.9 - }, - { - "level": 17, - "sf": "size at array.jl:0 [inlined]", - "status": "Default", - "x1": 66, - "x2": 66.9 - }, - { - "level": 17, - "sf": "preprocess at broadcast.jl:954 [inlined]", - "status": "Default", - "x1": 67, - "x2": 67.9 - }, - { - "level": 18, - "sf": "extrude at broadcast.jl:650 [inlined]", - "status": "Default", - "x1": 67, - "x2": 67.9 - }, - { - "level": 19, - "sf": "newindexer at broadcast.jl:599 [inlined]", - "status": "Default", - "x1": 67, - "x2": 67.9 - }, - { - "level": 20, - "sf": "axes at abstractarray.jl:98 [inlined]", - "status": "Default", - "x1": 67, - "x2": 67.9 - }, - { - "level": 21, - "sf": "size at array.jl:149 [inlined]", - "status": "Default", - "x1": 67, - "x2": 67.9 - }, - { - "level": 13, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 68, - "x2": 78.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 68, - "x2": 78.9 - }, - { - "level": 15, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 68, - "x2": 78.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 68, - "x2": 78.9 - }, - { - "level": 17, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 68, - "x2": 78.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 68, - "x2": 78.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 68, - "x2": 78.9 - }, - { - "level": 9, - "sf": "-(A::Vector{ComplexF64}, B::Vector{ComplexF64}) at broadcast.jl:0", - "status": "Default", - "x1": 79, - "x2": 79.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:214 [inlined]", - "status": "Default", - "x1": 80, - "x2": 80.9 - }, - { - "level": 9, - "sf": "sub_fast at fastmath.jl:166 [inlined]", - "status": "Default", - "x1": 80, - "x2": 80.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:220 [inlined]", - "status": "Default", - "x1": 81, - "x2": 81.9 - }, - { - "level": 9, - "sf": "add_fast at fastmath.jl:204 [inlined]", - "status": "Default", - "x1": 81, - "x2": 81.9 - }, - { - "level": 10, - "sf": "add_fast at fastmath.jl:165 [inlined]", - "status": "Default", - "x1": 81, - "x2": 81.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:230 [inlined]", - "status": "Default", - "x1": 82, - "x2": 127.9 - }, - { - "level": 9, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 82, - "x2": 109.9 - }, - { - "level": 10, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 82, - "x2": 109.9 - }, - { - "level": 11, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 82, - "x2": 82.9 - }, - { - "level": 12, - "sf": "copyto! at broadcast.jl:973 [inlined]", - "status": "Default", - "x1": 82, - "x2": 82.9 - }, - { - "level": 13, - "sf": "macro expansion at simdloop.jl:78 [inlined]", - "status": "Default", - "x1": 82, - "x2": 82.9 - }, - { - "level": 14, - "sf": "+ at int.jl:87 [inlined]", - "status": "Default", - "x1": 82, - "x2": 82.9 - }, - { - "level": 11, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 83, - "x2": 109.9 - }, - { - "level": 12, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 83, - "x2": 109.9 - }, - { - "level": 13, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 83, - "x2": 109.9 - }, - { - "level": 14, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 83, - "x2": 109.9 - }, - { - "level": 15, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 83, - "x2": 109.9 - }, - { - "level": 16, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 83, - "x2": 109.9 - }, - { - "level": 17, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 83, - "x2": 109.9 - }, - { - "level": 9, - "sf": "mul_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 10, - "sf": "*(A::Int64, B::Vector{Float64}) at arraymath.jl:21", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 110, - "x2": 118.9 - }, - { - "level": 9, - "sf": "sub_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 119, - "x2": 127.9 - }, - { - "level": 10, - "sf": "-(A::Vector{Float64}, B::Vector{Float64}) at arraymath.jl:8", - "status": "Default", - "x1": 119, - "x2": 127.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 119, - "x2": 127.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 119, - "x2": 127.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 119, - "x2": 127.9 - }, - { - "level": 14, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 15, - "sf": "copyto! at broadcast.jl:973 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 16, - "sf": "macro expansion at simdloop.jl:77 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 17, - "sf": "macro expansion at broadcast.jl:974 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 18, - "sf": "getindex at broadcast.jl:610 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 19, - "sf": "_broadcast_getindex at broadcast.jl:655 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 20, - "sf": "_getindex at broadcast.jl:679 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 21, - "sf": "_broadcast_getindex at broadcast.jl:649 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 22, - "sf": "getindex at essentials.jl:13 [inlined]", - "status": "Default", - "x1": 119, - "x2": 119.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 120, - "x2": 127.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 120, - "x2": 127.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 120, - "x2": 127.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 120, - "x2": 127.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 120, - "x2": 127.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 120, - "x2": 127.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 120, - "x2": 127.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:231 [inlined]", - "status": "Default", - "x1": 128, - "x2": 168.9 - }, - { - "level": 9, - "sf": "div_fast at fastmath.jl:270 [inlined]", - "status": "Default", - "x1": 128, - "x2": 129.9 - }, - { - "level": 10, - "sf": "/ at int.jl:97 [inlined]", - "status": "Default", - "x1": 128, - "x2": 129.9 - }, - { - "level": 11, - "sf": "float at float.jl:294 [inlined]", - "status": "Default", - "x1": 128, - "x2": 129.9 - }, - { - "level": 12, - "sf": "AbstractFloat at float.jl:268 [inlined]", - "status": "Default", - "x1": 128, - "x2": 129.9 - }, - { - "level": 13, - "sf": "Float64 at float.jl:159 [inlined]", - "status": "Default", - "x1": 128, - "x2": 129.9 - }, - { - "level": 9, - "sf": "mul_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 130, - "x2": 168.9 - }, - { - "level": 10, - "sf": "*(A::ComplexF64, B::Vector{Float64}) at arraymath.jl:21", - "status": "Default", - "x1": 130, - "x2": 165.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 130, - "x2": 165.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 130, - "x2": 165.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 130, - "x2": 165.9 - }, - { - "level": 14, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 130, - "x2": 131.9 - }, - { - "level": 15, - "sf": "copyto! at broadcast.jl:962 [inlined]", - "status": "Default", - "x1": 130, - "x2": 130.9 - }, - { - "level": 16, - "sf": "== at tuple.jl:458 [inlined]", - "status": "Default", - "x1": 130, - "x2": 130.9 - }, - { - "level": 17, - "sf": "_eq at tuple.jl:462 [inlined]", - "status": "Default", - "x1": 130, - "x2": 130.9 - }, - { - "level": 18, - "sf": "== at range.jl:1119 [inlined]", - "status": "Default", - "x1": 130, - "x2": 130.9 - }, - { - "level": 19, - "sf": "== at promotion.jl:499 [inlined]", - "status": "Default", - "x1": 130, - "x2": 130.9 - }, - { - "level": 15, - "sf": "copyto! at broadcast.jl:970 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 16, - "sf": "preprocess at broadcast.jl:953 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 17, - "sf": "preprocess_args at broadcast.jl:956 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 18, - "sf": "preprocess_args at broadcast.jl:957 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 19, - "sf": "preprocess at broadcast.jl:954 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 20, - "sf": "extrude at broadcast.jl:650 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 21, - "sf": "newindexer at broadcast.jl:599 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 22, - "sf": "shapeindexer at broadcast.jl:600 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 23, - "sf": "_newindexer at broadcast.jl:605 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 24, - "sf": "!= at operators.jl:269 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 25, - "sf": "== at promotion.jl:499 [inlined]", - "status": "Default", - "x1": 131, - "x2": 131.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 132, - "x2": 165.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 132, - "x2": 165.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 132, - "x2": 165.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 132, - "x2": 165.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 132, - "x2": 165.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 132, - "x2": 165.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 132, - "x2": 165.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:232 [inlined]", - "status": "Default", - "x1": 169, - "x2": 190.9 - }, - { - "level": 9, - "sf": "add_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 169, - "x2": 182.9 - }, - { - "level": 10, - "sf": "+(A::Vector{ComplexF64}, Bs::Vector{ComplexF64}) at arraymath.jl:14", - "status": "Default", - "x1": 169, - "x2": 169.9 - }, - { - "level": 11, - "sf": "promote_shape at indices.jl:169 [inlined]", - "status": "Default", - "x1": 169, - "x2": 169.9 - }, - { - "level": 12, - "sf": "axes at abstractarray.jl:98 [inlined]", - "status": "Default", - "x1": 169, - "x2": 169.9 - }, - { - "level": 13, - "sf": "size at array.jl:149 [inlined]", - "status": "Default", - "x1": 169, - "x2": 169.9 - }, - { - "level": 10, - "sf": "+(A::Vector{ComplexF64}, Bs::Vector{ComplexF64}) at arraymath.jl:16", - "status": "Default", - "x1": 170, - "x2": 181.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 170, - "x2": 180.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 170, - "x2": 180.9 - }, - { - "level": 9, - "sf": "mul_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 183, - "x2": 190.9 - }, - { - "level": 10, - "sf": "*(A::Float64, B::Vector{ComplexF64}) at arraymath.jl:21", - "status": "Default", - "x1": 183, - "x2": 189.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 183, - "x2": 188.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 183, - "x2": 188.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:233 [inlined]", - "status": "Default", - "x1": 191, - "x2": 206.9 - }, - { - "level": 9, - "sf": "add_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 191, - "x2": 200.9 - }, - { - "level": 10, - "sf": "+(A::Vector{ComplexF64}, Bs::Vector{ComplexF64}) at arraymath.jl:16", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 191, - "x2": 199.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 191, - "x2": 199.9 - }, - { - "level": 9, - "sf": "mul_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 201, - "x2": 206.9 - }, - { - "level": 10, - "sf": "*(A::Float64, B::Vector{ComplexF64}) at arraymath.jl:21", - "status": "Default", - "x1": 201, - "x2": 206.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 201, - "x2": 206.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 201, - "x2": 206.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 201, - "x2": 206.9 - }, - { - "level": 14, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 201, - "x2": 201.9 - }, - { - "level": 15, - "sf": "copyto! at broadcast.jl:973 [inlined]", - "status": "Default", - "x1": 201, - "x2": 201.9 - }, - { - "level": 16, - "sf": "macro expansion at simdloop.jl:75 [inlined]", - "status": "Default", - "x1": 201, - "x2": 201.9 - }, - { - "level": 17, - "sf": "< at int.jl:83 [inlined]", - "status": "Default", - "x1": 201, - "x2": 201.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 202, - "x2": 206.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 202, - "x2": 206.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 202, - "x2": 206.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 202, - "x2": 206.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 202, - "x2": 206.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 202, - "x2": 206.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 202, - "x2": 206.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:236 [inlined]", - "status": "Default", - "x1": 207, - "x2": 220.9 - }, - { - "level": 9, - "sf": "mul_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 10, - "sf": "*(A::Float64, B::Vector{ComplexF64}) at arraymath.jl:21", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 207, - "x2": 212.9 - }, - { - "level": 9, - "sf": "sub_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 213, - "x2": 220.9 - }, - { - "level": 10, - "sf": "-(A::Vector{ComplexF64}, B::Vector{ComplexF64}) at arraymath.jl:7", - "status": "Default", - "x1": 213, - "x2": 213.9 - }, - { - "level": 11, - "sf": "promote_shape at indices.jl:169 [inlined]", - "status": "Default", - "x1": 213, - "x2": 213.9 - }, - { - "level": 12, - "sf": "axes at abstractarray.jl:98 [inlined]", - "status": "Default", - "x1": 213, - "x2": 213.9 - }, - { - "level": 13, - "sf": "size at array.jl:149 [inlined]", - "status": "Default", - "x1": 213, - "x2": 213.9 - }, - { - "level": 10, - "sf": "-(A::Vector{ComplexF64}, B::Vector{ComplexF64}) at arraymath.jl:8", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 214, - "x2": 219.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 214, - "x2": 219.9 - }, - { - "level": 10, - "sf": "-(A::Vector{ComplexF64}, B::Vector{ComplexF64}) at broadcast.jl:0", - "status": "Default", - "x1": 220, - "x2": 220.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:239 [inlined]", - "status": "Default", - "x1": 221, - "x2": 227.9 - }, - { - "level": 9, - "sf": "mul_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 221, - "x2": 225.9 - }, - { - "level": 10, - "sf": "*(A::Float64, B::Vector{ComplexF64}) at arraymath.jl:21", - "status": "Default", - "x1": 221, - "x2": 225.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 221, - "x2": 224.9 - }, - { - "level": 9, - "sf": "sub_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 10, - "sf": "-(A::Vector{ComplexF64}, B::Vector{ComplexF64}) at arraymath.jl:8", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 226, - "x2": 227.9 - }, - { - "level": 8, - "sf": "macro expansion at miemfp.jl:242 [inlined]", - "status": "Default", - "x1": 228, - "x2": 265.9 - }, - { - "level": 9, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 228, - "x2": 236.9 - }, - { - "level": 10, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 11, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 12, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 13, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 14, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 15, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 16, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 17, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 228, - "x2": 235.9 - }, - { - "level": 10, - "sf": "instantiate at broadcast.jl:294 [inlined]", - "status": "Default", - "x1": 236, - "x2": 236.9 - }, - { - "level": 11, - "sf": "combine_axes at broadcast.jl:512 [inlined]", - "status": "Default", - "x1": 236, - "x2": 236.9 - }, - { - "level": 12, - "sf": "axes at abstractarray.jl:98 [inlined]", - "status": "Default", - "x1": 236, - "x2": 236.9 - }, - { - "level": 13, - "sf": "size at array.jl:149 [inlined]", - "status": "Default", - "x1": 236, - "x2": 236.9 - }, - { - "level": 9, - "sf": "div_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 237, - "x2": 243.9 - }, - { - "level": 10, - "sf": "/(A::Vector{Float64}, B::Int64) at arraymath.jl:24", - "status": "Default", - "x1": 237, - "x2": 243.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 237, - "x2": 243.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 237, - "x2": 243.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 237, - "x2": 243.9 - }, - { - "level": 14, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 237, - "x2": 237.9 - }, - { - "level": 15, - "sf": "copyto! at broadcast.jl:973 [inlined]", - "status": "Default", - "x1": 237, - "x2": 237.9 - }, - { - "level": 16, - "sf": "macro expansion at simdloop.jl:77 [inlined]", - "status": "Default", - "x1": 237, - "x2": 237.9 - }, - { - "level": 17, - "sf": "macro expansion at broadcast.jl:974 [inlined]", - "status": "Default", - "x1": 237, - "x2": 237.9 - }, - { - "level": 18, - "sf": "setindex! at array.jl:969 [inlined]", - "status": "Default", - "x1": 237, - "x2": 237.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 238, - "x2": 243.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 238, - "x2": 243.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 238, - "x2": 243.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 238, - "x2": 243.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 238, - "x2": 243.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 238, - "x2": 243.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 238, - "x2": 243.9 - }, - { - "level": 9, - "sf": "mul_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 244, - "x2": 250.9 - }, - { - "level": 10, - "sf": "*(A::Int64, B::Vector{Float64}) at arraymath.jl:21", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 244, - "x2": 249.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 244, - "x2": 249.9 - }, - { - "level": 9, - "sf": "sub_fast at fastmath.jl:265 [inlined]", - "status": "Default", - "x1": 251, - "x2": 265.9 - }, - { - "level": 10, - "sf": "-(A::Vector{Float64}, B::Vector{Float64}) at arraymath.jl:8", - "status": "Default", - "x1": 251, - "x2": 265.9 - }, - { - "level": 11, - "sf": "broadcast_preserving_zero_d at broadcast.jl:862 [inlined]", - "status": "Default", - "x1": 251, - "x2": 264.9 - }, - { - "level": 12, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 251, - "x2": 264.9 - }, - { - "level": 13, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 251, - "x2": 264.9 - }, - { - "level": 14, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 251, - "x2": 252.9 - }, - { - "level": 15, - "sf": "copyto! at broadcast.jl:962 [inlined]", - "status": "Default", - "x1": 251, - "x2": 251.9 - }, - { - "level": 16, - "sf": "== at tuple.jl:458 [inlined]", - "status": "Default", - "x1": 251, - "x2": 251.9 - }, - { - "level": 17, - "sf": "_eq at tuple.jl:462 [inlined]", - "status": "Default", - "x1": 251, - "x2": 251.9 - }, - { - "level": 18, - "sf": "== at range.jl:1119 [inlined]", - "status": "Default", - "x1": 251, - "x2": 251.9 - }, - { - "level": 19, - "sf": "== at promotion.jl:499 [inlined]", - "status": "Default", - "x1": 251, - "x2": 251.9 - }, - { - "level": 15, - "sf": "copyto! at broadcast.jl:970 [inlined]", - "status": "Default", - "x1": 252, - "x2": 252.9 - }, - { - "level": 16, - "sf": "preprocess at broadcast.jl:953 [inlined]", - "status": "Default", - "x1": 252, - "x2": 252.9 - }, - { - "level": 17, - "sf": "preprocess_args at broadcast.jl:956 [inlined]", - "status": "Default", - "x1": 252, - "x2": 252.9 - }, - { - "level": 18, - "sf": "preprocess at broadcast.jl:954 [inlined]", - "status": "Default", - "x1": 252, - "x2": 252.9 - }, - { - "level": 19, - "sf": "broadcast_unalias at broadcast.jl:947 [inlined]", - "status": "Default", - "x1": 252, - "x2": 252.9 - }, - { - "level": 14, - "sf": "similar at broadcast.jl:211 [inlined]", - "status": "Default", - "x1": 253, - "x2": 264.9 - }, - { - "level": 15, - "sf": "similar at broadcast.jl:212 [inlined]", - "status": "Default", - "x1": 253, - "x2": 264.9 - }, - { - "level": 16, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 253, - "x2": 264.9 - }, - { - "level": 17, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 253, - "x2": 264.9 - }, - { - "level": 18, - "sf": "Array at boot.jl:494 [inlined]", - "status": "Default", - "x1": 253, - "x2": 264.9 - }, - { - "level": 19, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 253, - "x2": 264.9 - }, - { - "level": 20, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Garbage collection", - "x1": 253, - "x2": 264.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:249", - "status": "Default", - "x1": 266, - "x2": 269.9 - }, - { - "level": 7, - "sf": "getindex at array.jl:944 [inlined]", - "status": "Default", - "x1": 266, - "x2": 266.9 - }, - { - "level": 8, - "sf": "_array_for at array.jl:674 [inlined]", - "status": "Default", - "x1": 266, - "x2": 266.9 - }, - { - "level": 9, - "sf": "_array_for at array.jl:671 [inlined]", - "status": "Default", - "x1": 266, - "x2": 266.9 - }, - { - "level": 10, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 266, - "x2": 266.9 - }, - { - "level": 11, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 266, - "x2": 266.9 - }, - { - "level": 12, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 266, - "x2": 266.9 - }, - { - "level": 13, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 266, - "x2": 266.9 - }, - { - "level": 7, - "sf": "vcat(::Vector{ComplexF64}, ::Vector{ComplexF64}) at array.jl:1940", - "status": "Default", - "x1": 267, - "x2": 268.9 - }, - { - "level": 8, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 267, - "x2": 268.9 - }, - { - "level": 7, - "sf": "vcat(::Vector{ComplexF64}, ::Vector{ComplexF64}) at array.jl:1947", - "status": "Default", - "x1": 269, - "x2": 269.9 - }, - { - "level": 8, - "sf": "iterate at tuple.jl:68 [inlined]", - "status": "Default", - "x1": 269, - "x2": 269.9 - }, - { - "level": 9, - "sf": "getindex at tuple.jl:29 [inlined]", - "status": "Default", - "x1": 269, - "x2": 269.9 - }, - { - "level": 6, - "sf": "bhmie(x::Float64, refrel::ComplexF64, nang::UInt32) at miemfp.jl:250", - "status": "Default", - "x1": 270, - "x2": 273.9 - }, - { - "level": 7, - "sf": "getindex at array.jl:944 [inlined]", - "status": "Default", - "x1": 270, - "x2": 270.9 - }, - { - "level": 8, - "sf": "_array_for at array.jl:674 [inlined]", - "status": "Default", - "x1": 270, - "x2": 270.9 - }, - { - "level": 9, - "sf": "_array_for at array.jl:671 [inlined]", - "status": "Default", - "x1": 270, - "x2": 270.9 - }, - { - "level": 10, - "sf": "similar at abstractarray.jl:881 [inlined]", - "status": "Default", - "x1": 270, - "x2": 270.9 - }, - { - "level": 11, - "sf": "similar at abstractarray.jl:882 [inlined]", - "status": "Default", - "x1": 270, - "x2": 270.9 - }, - { - "level": 12, - "sf": "Array at boot.jl:486 [inlined]", - "status": "Default", - "x1": 270, - "x2": 270.9 - }, - { - "level": 13, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 270, - "x2": 270.9 - }, - { - "level": 7, - "sf": "vcat(::Vector{ComplexF64}, ::Vector{ComplexF64}) at array.jl:1940", - "status": "Default", - "x1": 271, - "x2": 273.9 - }, - { - "level": 8, - "sf": "Array at boot.jl:477 [inlined]", - "status": "Default", - "x1": 271, - "x2": 273.9 - }, - { - "level": 5, - "sf": "_mfp at miemfp.jl:312 [inlined]", - "status": "Default", - "x1": 275, - "x2": 295.9 - }, - { - "level": 6, - "sf": "mfp(fv::Float64, wavel::Float64, radcor::Float64, omp::Float64, om0::Float64, rn::Float64, rk::Float64) at miemfp.jl:74", - "status": "Default", - "x1": 275, - "x2": 295.9 - }, - { - "level": 7, - "sf": "_om_manipulations(wavel::Float64, fv::Float64, radcor::Float64, omp::Float64, om0::Float64) at miemfp.jl:56", - "status": "Default", - "x1": 275, - "x2": 283.9 - }, - { - "level": 8, - "sf": "_om_calc at Memoize.jl:61 [inlined]", - "status": "Default", - "x1": 275, - "x2": 283.9 - }, - { - "level": 9, - "sf": "get! at iddict.jl:176 [inlined]", - "status": "Default", - "x1": 275, - "x2": 283.9 - }, - { - "level": 7, - "sf": "_om_manipulations(wavel::Float64, fv::Float64, radcor::Float64, omp::Float64, om0::Float64) at miemfp.jl:58", - "status": "Default", - "x1": 284, - "x2": 290.9 - }, - { - "level": 8, - "sf": "_om_sq_calc at Memoize.jl:61 [inlined]", - "status": "Default", - "x1": 284, - "x2": 290.9 - }, - { - "level": 9, - "sf": "get! at iddict.jl:176 [inlined]", - "status": "Garbage collection", - "x1": 284, - "x2": 290.9 - }, - { - "level": 7, - "sf": "_om_manipulations(wavel::Float64, fv::Float64, radcor::Float64, omp::Float64, om0::Float64) at miemfp.jl:59", - "status": "Default", - "x1": 291, - "x2": 291.9 - }, - { - "level": 8, - "sf": "_om0_sq_calc at Memoize.jl:61 [inlined]", - "status": "Default", - "x1": 291, - "x2": 291.9 - }, - { - "level": 9, - "sf": "get! at iddict.jl:176 [inlined]", - "status": "Default", - "x1": 291, - "x2": 291.9 - }, - { - "level": 7, - "sf": "_om_manipulations(wavel::Float64, fv::Float64, radcor::Float64, omp::Float64, om0::Float64) at miemfp.jl:60", - "status": "Default", - "x1": 292, - "x2": 294.9 - }, - { - "level": 8, - "sf": "_omp_sq_calc at Memoize.jl:61 [inlined]", - "status": "Default", - "x1": 292, - "x2": 294.9 - }, - { - "level": 9, - "sf": "get! at iddict.jl:176 [inlined]", - "status": "Default", - "x1": 292, - "x2": 294.9 - }, - { - "level": 7, - "sf": "_om_manipulations(wavel::Float64, fv::Float64, radcor::Float64, omp::Float64, om0::Float64) at miemfp.jl:61", - "status": "Default", - "x1": 295, - "x2": 295.9 - }, - { - "level": 8, - "sf": "_om0r_sq_calc at Memoize.jl:61 [inlined]", - "status": "Default", - "x1": 295, - "x2": 295.9 - }, - { - "level": 9, - "sf": "get! at iddict.jl:176 [inlined]", - "status": "Default", - "x1": 295, - "x2": 295.9 - }, - { - "level": 1, - "sf": "_start() at client.jl:522", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 2, - "sf": "exec_options(opts::Base.JLOptions) at client.jl:307", - "status": "Runtime dispatch", - "x1": 299, - "x2": 304.9 - }, - { - "level": 3, - "sf": "include(mod::Module, _path::String) at Base.jl:457", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 4, - "sf": "_include(mapexpr::Function, mod::Module, _path::String) at loading.jl:1959", - "status": "Runtime dispatch", - "x1": 299, - "x2": 304.9 - }, - { - "level": 5, - "sf": "include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) at loading.jl:1899", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 6, - "sf": "eval at boot.jl:370 [inlined]", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 7, - "sf": "top-level scope at notebook.jl:32", - "status": "Runtime dispatch", - "x1": 299, - "x2": 304.9 - }, - { - "level": 8, - "sf": "kwcall(::NamedTuple{(:crashreporting_pipename,), Tuple{String}}, ::typeof(VSCodeServer.serve_notebook), pipename::String, outputchannel_logger::Base.CoreLogging.SimpleLogger) at serve_notebook.jl:75", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 9, - "sf": "serve_notebook(pipename::String, outputchannel_logger::Base.CoreLogging.SimpleLogger; crashreporting_pipename::String) at serve_notebook.jl:139", - "status": "Runtime dispatch", - "x1": 299, - "x2": 304.9 - }, - { - "level": 10, - "sf": "dispatch_msg(x::VSCodeServer.JSONRPC.JSONRPCEndpoint{Base.PipeEndpoint, Base.PipeEndpoint}, dispatcher::VSCodeServer.JSONRPC.MsgDispatcher, msg::Dict{String, Any}) at typed.jl:67", - "status": "Runtime dispatch", - "x1": 299, - "x2": 304.9 - }, - { - "level": 11, - "sf": "notebook_runcell_request(conn::VSCodeServer.JSONRPC.JSONRPCEndpoint{Base.PipeEndpoint, Base.PipeEndpoint}, params::VSCodeServer.NotebookRunCellArguments) at serve_notebook.jl:13", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 12, - "sf": "withpath(f::VSCodeServer.var\"#198#199\"{VSCodeServer.NotebookRunCellArguments, String}, path::String) at repl.jl:249", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 13, - "sf": "(::VSCodeServer.var\"#198#199\"{VSCodeServer.NotebookRunCellArguments, String})() at serve_notebook.jl:19", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 14, - "sf": "invokelatest at essentials.jl:813 [inlined]", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 15, - "sf": "#invokelatest#2 at essentials.jl:816 [inlined]", - "status": "Runtime dispatch", - "x1": 299, - "x2": 304.9 - }, - { - "level": 16, - "sf": "include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String) at loading.jl:1899", - "status": "Default", - "x1": 299, - "x2": 304.9 - }, - { - "level": 17, - "sf": "eval at boot.jl:370 [inlined]", - "status": "Runtime dispatch", - "x1": 299, - "x2": 304.9 - }, - { - "level": 18, - "sf": "abspredict(refmed::Float64, wavel1::Float64, wavel2::Float64, numval::UInt32, particledata::Matrix{Float64}, materialdata::Tuple{Float64, Float64, Float64, Matrix{Float64}}, ppml::Float64, d0::Float64) at nanoconc.jl:275", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 19, - "sf": "materialize at broadcast.jl:873 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 20, - "sf": "copy at broadcast.jl:898 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 21, - "sf": "copyto! at broadcast.jl:926 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 22, - "sf": "copyto! at broadcast.jl:973 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 23, - "sf": "macro expansion at simdloop.jl:77 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 24, - "sf": "macro expansion at broadcast.jl:974 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 25, - "sf": "getindex at broadcast.jl:610 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 26, - "sf": "_broadcast_getindex at broadcast.jl:656 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 27, - "sf": "_broadcast_getindex_evalf at broadcast.jl:683 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 28, - "sf": "(::Main.nanoconc.var\"#predict#22\"{Matrix{Float64}, Float64, Float64})(qext::Float64) at nanoconc.jl:269", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 29, - "sf": "sum at reducedim.jl:994 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 30, - "sf": "#sum#807 at reducedim.jl:994 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 31, - "sf": "_sum at reducedim.jl:998 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 32, - "sf": "#_sum#809 at reducedim.jl:998 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 33, - "sf": "_sum at reducedim.jl:999 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 34, - "sf": "#_sum#810 at reducedim.jl:999 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 35, - "sf": "mapreduce at reducedim.jl:357 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 36, - "sf": "#mapreduce#800 at reducedim.jl:357 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 37, - "sf": "_mapreduce_dim at reducedim.jl:365 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 38, - "sf": "_mapreduce at reduce.jl:437 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - }, - { - "level": 39, - "sf": "+ at int.jl:87 [inlined]", - "status": "Default", - "x1": 299, - "x2": 299.9 - } - ] - }, - "encoding": { - "color": { - "field": "status", - "legend": { - "orient": "bottom", - "title": null - }, - "type": "nominal" - }, - "fillOpacity": { - "condition": [ - { - "selection": "highlight", - "value": 0.6 - }, - { - "selection": "select", - "value": 0.5 - } - ], - "value": 1 - }, - "strokeWidth": { - "condition": [ - { - "selection": "highlight", - "value": 0.5 - }, - { - "selection": "select", - "value": 0.5 - } - ], - "value": 0 - }, - "tooltip": { - "field": "sf", - "type": "nominal" - }, - "x": { - "axis": null, - "field": "x1", - "type": "quantitative" - }, - "x2": { - "field": "x2", - "type": "quantitative" - }, - "y": { - "axis": null, - "field": "level", - "type": "quantitative" - }, - "y2": { - "field": "level2", - "type": "quantitative" - } - }, - "height": 400, - "mark": { - "stroke": "#505050", - "type": "rect" - }, - "selection": { - "grid": { - "bind": "scales", - "type": "interval" - }, - "highlight": { - "empty": "none", - "on": "mouseover", - "type": "single" - }, - "select": { - "empty": "none", - "type": "multi" - } - }, - "title": "Profile Results", - "transform": [ - { - "as": "level2", - "calculate": "datum.level+0.9" - } - ], - "width": 800 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyoAAAHKCAYAAADsEr9sAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3de5Sd46E/8O/kSnNrqEga2ogEyQiKVqvUQZSWSOoalJ7+Thc5WqdYovSkFY7TujW/nnMcdaJupcopxyW9xElpXZZSGkFDbkVFk6AEuYhEzO8Pa+aXxJ7JTDKT/Yz5fNayVmbPfp/neff77j3ztd8935q6urq6AAAAFKRTtRcAAACwLkEFAAAojqACAAAUR1ABAACKI6gAdCALFy7M5z//+fTp0yd9+/bNVVddlV133TXDhg3LqlWrkiRdu3ZNr169qrzSDdOe1w7A2gQVgAKNGDEiNTU1qampSc+ePbP77rvn5z//+UaPO2nSpEybNi0jRozIySefnH322Sf9+/dP//7906nTxv9IWHPdffv2zSc/+cnceOONGz3uhnrllVdy8cUX59VXX63aGgDYMF2qvQAAGnfyySdn+fLlufXWWzN27Nhsu+22+fSnP73B473wwgtJknPOOSeHHXZYkuTuu+9ulbWu6R/+4R+yfPny3HnnnTnppJPSv3//jBw5stXnWZ/rrrsu55xzTkaPHp0tt9xyk88PwIbzjgpAwcaPH58bbrghZ511Vt599938+te/TvLeJU7jxo3LNddck6222iqnnnpqkuT555/PUUcdlX79+qVXr14ZM2ZMnnvuuSTJBRdckDvuuCNJMmrUqPTt2zdJ0qtXr3Tt2rXRNcybNy+HHXZYevTokf79++drX/taFi9e3OS6zznnnNx0000599xzU1dXl9/+9rfNGu+dd97J+PHjs80226R79+4ZNGhQLrjggqxYsSI1NTUZMGBAwzhXXnllampqcu6551Zcw49+9KOcd955SZJhw4alpqYm8+bNa3QOAMriHRWAduCtt95KkrUuz7r55ptz9dVXZ8SIEfnEJz6Rt99+O4ccckjmzJmTsWPHpkuXLrnxxhvzxBNPZObMmdljjz2y8847Z/r06Tn99NOz6667rnfeFStW5KCDDsqLL76Y888/P8uXL8/3vve9LFmyJLfcckuT2y5atCi///3vkyRDhgxp1nh33HFHLrvssnzqU5/K2Wefnaeeeiof+chHNugx22677dK/f/8899xzOf/889O/f//069evVecAoO0IKgAFu+iii/Lqq6/mF7/4Rbp27Zqjjjqq4XtvvPFG7rrrrowaNSpJMm3atMyePTsHH3xwbrrppiTJsmXL8j//8z/51a9+laOOOirXXXddpk+fnkMPPbRZl2Ldc889ef7553P44Yfn29/+dsNtt99+e1auXJlu3bpV3G7o0KEN/x47dmxOPPHEZo1X/0H4+fPnp3v37vnhD3+YHj16ZMWKFS196HLIIYdk6623znPPPZdjjjkmO+20U5I0OgcAZXHpF0DBrr766kybNi177bVXpkyZktra2obvbbbZZg0hJUn+8pe/JEm23377htvq//3Xv/51g+ZfsGBBkuSuu+5q+JD8ww8/nFWrVmXRokWNbnfyySdnxx13TLdu3TJhwoR06dKlWeMdfPDBueSSS/L2229n3Lhx+fjHP54777yz4hz1f6WspVoyBwDVI6gAFGzu3LlZunRpHnzwwRx88MFrfa/+l/96H/3oR5O89xmQevX/HjRo0AbNXz/mIYcckscee2yt//r379/oduPHj8/111+f1atX58tf/nJWrlzZ7PHGjx+fF154IZdeemlee+21nHnmmencuXM6deqUZcuWpa6u7n372Ziampok7332Zd31rTsHAGVx6RfAB8TIkSMzdOjQTJs2Lccdd1y6du2aO+64IwMGDMgBBxywwWNuv/32+c1vfpNhw4Zl6NChWbhwYVavXp099tijyW332muvfOMb38i//du/5bvf/W4uuuii9Y5300035Ve/+lX22GOPLFu2rOHPM3ft2jVDhw7N7Nmzc9ppp2XAgAG5+uqr17v++g/fn3HGGamtrc2pp56axx57rOIcAJRFUAH4gOjWrVumTZuWM844I7/85S/TvXv3jB49OpdeeukGlyB2794999xzT84+++xcf/31Wbp0abbeeuucdtppzdr+wgsvzO23357LLrsshx56aPbdd98mx+vXr18effTR3HbbbenWrVv222+/TJo0KUlyzTXX5Otf/3quvfba7LDDDpk0aVLGjRvX5Pzf+c538txzz+XBBx/MvHnzMm7cuCbnAKAcNXX176EDAAAUwmdUAACA4ggqAABAcQQVAACgOIIKAABQHEEFAAAojqACAAAUp2KPyrPPPrup1wEAAHRggwcPXuvrRgsf170jAACUYPKU6Zny0NyccNDOGXtAbbWXQyuo9EaJS78AAIDiCCoAAEBxBBUA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433jG9/I5MmTM3z48GYu/z3Lli3L9OnT31t3XV3OPPPMTJkypUVj1BvW681M2OnpJu9z4azG13f++efn7rvvzvnnn5+BAwfmkUceSefOnZs9/5r7UpI117Wha1z32PTq1Suf+tSnWnWdjRlSU5PTu3Vt8j4/XLmq4u3vvvtuZs2alfvuuy+vvfZaxo0bl379+uULX/hCi9ZQjf2fPXt2Bg0alBEjRrTqXM15npV6LgMA7UObfUalU6dO6du3b2prazNx4sTsueee+clPfpIkefDBB3PEEUfkuOOOy5/+9KckycSJE/PnP/855513Xp5++un853/+Z0aPHp0TTjgh8+bNS5LMmTMn5513XsMckydPzgMPPLDWvKeeemruv//+HHTQQfnd737XVrtX0UsvvZT/+q//ytSpU3PQQQdl+PDh+epXv5rtttsuSSru0/z58/PDH/4wV1xxRb70pS8lSWpqajJx4sQcdthhueGGGxrGr7R9kkybNi1HHHFExo8fn5/85Cd5+OGHk1R+nNf14IMP5uijj87o0aPzhz/8IUny2GOP5fjjj8+RRx6Z+++/f7373dg864697rF57bXXct999zXcv9K88+fPz8UXX5wLLrggo0aNyg9+8IP1H4g20KVLlwwePDh77rlnTjrppDzyyCONno+Nrbmp/a/f5jvf+U6OOOKI3HrrrZkyZUqOPPLInH766Vm+fHmS5h3T+vPhrLPOyooVK5JkrblWrFiRb33rWznkkEMybty4LF68OPPnz8+ll17acN7VP1eTyuddpedZpXOppqYml156aUaNGpVJkya12vEAAD74Gn1HpbWNHDky06ZNy5gxY3L22WfnpptuyiuvvJITTjghTzzxRCZOnJjrr78+06ZNS/Le/7E96qij8vDDD+ecc87JrbfemjfffDNPPvlkw5hz587NFltska222qrhtn/5l3/JY4891jDOpvTQQw9l//33T+/evSt+f7fddnvfPi1btiyXXHJJTjnllFxyySVZvXp17r///vzTP/1TTjrppBx77LHZfvvts/fee1fcfsGCBTnllFNy++23Z8mSJTniiCNyzTXXZNGiRRUf5zUtWLAgX/nKV3L99denT58+6devX15++eV8+ctfzk9/+tN06dIlY8eOza9//etG97mxeSqNve6xmTVrVsP/cW9s3hUrVuS8887Lf//3f+fv//7vc/TRR2efffbJXnvt1UpHreWeeeaZ7L333k2ej5XW3NT+L1u2LBMnTsydd96Z448/PgceeGCOPPLI/Pu//3v++Z//OTfccENGjx693mP64osvZty4cbnrrruyZMmSjBo1KqNHj17r3Y1rr702nTp1yo033phnnnkmvXv3zksvvZTzzjsvt912W0488cQcddRRGTJkSKPn3br7Uul4L168OA888ED+8R//Mccee2yOPvrofPazn63qsQMA2o9NFlR69OiRd955J3fffXfeeuuths+gvPjii3n55ZfTr1+/te6/YsWKXH755Zk/f35eeOGFTbXMjbJ06dJsueWWDV9/9atfzbJlyzJq1KiceOKJje5Tz549G/7P/KxZs1JbW5vDDjssSXLyySfn7rvvzt57711x+9/85jc58sgjs+uuuyZJPv/5zydJsx7n//3f/82XvvSl7LPPPg23/fSnP82oUaOyxx57JEnGjh2bu+66q2HcdTU2T6Wx//a3vzX62E2bNq3ReYcPH57DDz+8Yf/mzJmzyX/ZfeWVV3LMMcfkpZdeyjbbbJPjjjsuM2bMaPT+lda8/fbbNznHzjvv3PA477TTTjn55JMzcODAfOELX8j06dObdUzvvffeHHHEEamtrW2Yu9I8V199dUaOHJkDDzyw4fba2tqGy9nGjRvX5Hm3rkrHe/HixRk2bFjDO4XVOnYAQPu0yYLKM888k+233z5vvvlm9tlnn5xxxhlJkm9961vZYost1rrvL3/5y1x66aW54oorstlmm+XYY4+tOOaqVZU/U1At2267bX72s581fP3Nb34zv/jFL/Lkk082uU8f+9jH1hqnZ8+eDf/u1atX3nzzzUa3X7JkST784Q833L/+3815nNfdNnnvl8s+ffo0fN2nT58sW7as0X1ubJ5KYzelqXnXXHfnzp2zevXqZo/bWvr27ZuLLrooP/rRj7LVVlulS5f3P3XWPB83ZM1r7n/nzp3Tq1evhn+/++67G3RMKx2DfffdN9dcc02+973v5cILL2z4nMmanx/r2bNnlixZ0uznYmPHu4RjBwC0T5ukR+WFF17IFVdckTFjxqS2tjaPP/54tttuuwwePDiDBw9+3y99f/jDH3Lsscdm+PDhWbRoUcPtPXv2zJtvvtnw9ezZs98312abbZaVK1e23c40Ye+9986sWbPy0EMPJXnvUq9BgwYlaXyfkveu41/TnDlz8s477yRJZsyYkR122KHR7YcOHbrW5T+zZs1KkmY9zkOHDs2jjz661m21tbUNny+oX/cuu+zS6D43Nk+lsZs6Nk3Nu+7jUw31n1H57ne/mx//+MdZuHBhk+djpTWv79xc334255gOGTJkrXd6nn668h+G2GWXXXLzzTdnyLoiBBcAAASHSURBVJAhefDBBxvWXx+2HnnkkSbPu3X3pdLxbs4+AQA0ps3eUXn11VdzyimnZMGCBZkxY0YuuOCC7Lbbbqmrq8s222yTz372s9lxxx2zcOHCTJ06da1tR44cmTPPPDOvv/565syZk+7duyd575ewJUuWZPz48Vm6dGkWLFjwvnl79uyZHj165MQTT8zXvva17Lfffm21i+/TrVu3/OxnP8vxxx+fHXbYIVtvvXWeeOKJjB49OgceeGDFfapk2223zeGHH57+/ftn+vTpuf/++/PEE09U3H7kyJG56KKLMnbs2Lzzzjt5/fXXkyT777//eh/ngw46KP/xH/+RL37xi+nbt2+OOeaYHH744bnyyiszZsyYdO3aNatWrcoXv/jFiqGwqXkqjT169Oi1js3WW2/dMM7f/d3ftWjeaunVq1fOOuusnHvuufnxj3+83vNxTeuem2vuf3M055iOHDky3//+9zN27NisXLmyIfCu6YorrsgDDzyQfv365dFHH82FF16YxYsX58Mf/nBGjx6dAQMG5PHHH8+//uu/ZsaMGRXPu3X3pdLx3nHHHVu0fwAAa6qpq6urW/fGCRMm5E/PvdKsP0+883Zb5cILL1zr9nfffTf33vveny4eOHBghgwZkq5d1/7TsLNnz87ixYszYsSI9OjRI8l7fzWo/hr3v/71r3n11VczfPjwPPPMMxkxYkSS5O23385TTz2VgQMHZvXq1enWrVt69OiR2bNnZ/fdd0/y3geTZ86cmZ122qnRD7ZXMmHChLz7wu+b9eeJO33sM+/b73qrVq3K008/nbfeeivbbrttBg4c2Og+LVu27H1rX7RoUbbaaqvMmzcvtbW1Db8cNvaYrF69OjNnzsyAAQNy/vnn59BDD234rEGlx3ldTz31VFatWpXddtstnTq99ybbzJkz07lz5+y4446pqalZa53rrrmpedYde81j07lz5/eN09S8SfLss89ms802y0c/+tEmj9GaJkyYkLeffrpZf564+/DhFc/nhx56qOHcXL16de67777sv//+Wbly5XrPxzXX3Nj+r7uf06dPz7Bhw7L55pvn5ZdfzhtvvNHQWbK+Y7p69er86U9/yjbbbJPly5dn8803z+abb94wfl1dXWbOnJlly5Zll112yeabb55Zs2blm9/8Zm677bbMnTs3w4cPX+95V+l5tubxfuuttzb62AEAHVfjQWXOc6nrM7jpjd94NjvvsF2jv7C3NxMmTMhLc6fncx95pcn73f+3rbL10N2L2O+6urqsXr264RKgz3zmM7n22muz0047VXll5ZgwYUIWPj0zn+7UdJ/Nw++uzoDhtUUc101t1qxZOe2006ry1/IAACpp9NKvmlXLU/O3yj0NH2R/W9k9/7Ngm/Xer2UX7bSdlStXZrfddss+++yTv/zlLxk8eLCQUsFrdcmvmvFB7gGbYC0AAKxfxXdUaF9ef/31zJo1K1tssUV22GGHai+HdqjS5XwAANUkqAAAAMXZJH+eGAAAoCUEFQAAoDiCCgAAUBxBBQAAKM7/A+i3vIfmxPdaAAAAAElFTkSuQmCC", - "image/svg+xml": [ - "\n", - "\n", - "DefaultGarbage collectionRuntime dispatchProfile Results\n" - ], - "text/plain": [ - "@vlplot(\n", - " mark={\n", - " type=\"rect\",\n", - " stroke=\"#505050\"\n", - " },\n", - " transform=[\n", - " {\n", - " calculate=\"datum.level+0.9\",\n", - " as=\"level2\"\n", - " }\n", - " ],\n", - " selection={\n", - " grid={\n", - " type=\"interval\",\n", - " bind=\"scales\"\n", - " },\n", - " highlight={\n", - " type=\"single\",\n", - " on=\"mouseover\",\n", - " empty=\"none\"\n", - " },\n", - " select={\n", - " type=\"multi\",\n", - " empty=\"none\"\n", - " }\n", - " },\n", - " width=800,\n", - " height=400,\n", - " title=\"Profile Results\",\n", - " encoding={\n", - " x={\n", - " axis=nothing,\n", - " field=\"x1\"\n", - " },\n", - " x2={\n", - " field=\"x2\"\n", - " },\n", - " y={\n", - " axis=nothing,\n", - " field=\"level\",\n", - " type=\"quantitative\"\n", - " },\n", - " y2={\n", - " field=\"level2\",\n", - " type=\"quantitative\"\n", - " },\n", - " fillOpacity={\n", - " condition=[\n", - " {\n", - " selection=\"highlight\",\n", - " value=0.6\n", - " },\n", - " {\n", - " selection=\"select\",\n", - " value=0.5\n", - " }\n", - " ],\n", - " value=1\n", - " },\n", - " strokeWidth={\n", - " condition=[\n", - " {\n", - " selection=\"highlight\",\n", - " value=0.5\n", - " },\n", - " {\n", - " selection=\"select\",\n", - " value=0.5\n", - " }\n", - " ],\n", - " value=0\n", - " },\n", - " color={\n", - " legend={\n", - " title=nothing,\n", - " orient=\"bottom\"\n", - " },\n", - " field=\"status\",\n", - " type=\"nominal\"\n", - " },\n", - " tooltip={\n", - " field=\"sf\"\n", - " }\n", - " },\n", - " data={\n", - " values=...\n", - " }\n", - ")" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "println(\"\\nImporting modules...\")\n", - "\n", - "include(\"src/nanoconc.jl\")\n", - "using CSV\n", - "using DataFrames\n", - "using Profile, ProfileVega\n", - "\n", - "println(\"Loading parameters...\")\n", - "\n", - "refmed = 1.333 # refractive index of the medium\n", - "wavel1, wavel2 = 250.0, 900.0 # wavelengths to calculate between\n", - "numval = 0x00001000 # number of values to calculate in spectrum\n", - "particledata = [2.5 1.0\n", - " 5.0 1.0\n", - " 10.0 1.0\n", - " 20.0 1.0\n", - " 30.0 1.0\n", - " 40.0 1.0\n", - " 50.0 1.0\n", - " 60.0 1.0\n", - " 70.0 1.0\n", - " 80.0 1.0\n", - " 90.0 1.0\n", - " 100.0 1.0]\n", - "materialdata = nanoconc.loadmaterial(\"Gold\", disp=false)\n", - "ppml = 10000.0 # particles per ml nanoconc.quantumcalc.numtomol(ppml) -> conc\n", - "d0 = 1.0 # path length\n", - "params = (refmed, wavel1, wavel2, numval, particledata, materialdata, ppml, d0)\n", - "spectrum = nanoconc.abspredict(params...)\n", - "\n", - "println(\"Calculating absorbance spectrum...\")\n", - "print(\"Calculation time: \")\n", - "\n", - "@time spectrum = nanoconc.abspredict(params...)\n", - "CSV.write(\"abs.csv\", DataFrame(spectrum, :auto), writeheader=false)\n", - "\n", - "ProfileVega.@profview nanoconc.abspredict(params...)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.9.1", - "language": "julia", - "name": "julia-1.9" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.9.1" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/scratch.ipynb b/scratch.ipynb deleted file mode 100644 index 4f128a7..0000000 --- a/scratch.ipynb +++ /dev/null @@ -1,1758 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Main.nanoconc" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "using Serialization\n", - "\n", - "include(\"src/nanoconc.jl\")" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Main.nanoconc.abspredict(::Float64, ::Float64, ::Float64, ::UInt32, ::Matrix{Float64}, ::Tuple{Float64, Float64, Float64, Matrix{Float64}}, ::Float64, ::Float64)\n", - " from abspredict(\u001b[90mrefmed\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mwavel1\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mwavel2\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mnumval\u001b[39m::\u001b[1mUInt32\u001b[22m, \u001b[90mparticledata\u001b[39m::\u001b[1mMatrix\u001b[22m\u001b[0m{Float64}, \u001b[90mmaterialdata\u001b[39m::\u001b[1mTuple\u001b[22m\u001b[0m{Float64, Float64, Float64, Matrix{Float64}}, \u001b[90mppml\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90md0\u001b[39m::\u001b[1mFloat64\u001b[22m)\u001b[90m @\u001b[39m \u001b[90mMain.nanoconc\u001b[39m \u001b[90m~/Programming/Work_Projects/nanoconc/src/\u001b[39m\u001b[90m\u001b[4mnanoconc.jl:264\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Main.nanoconc.abspredict)\u001b[39m\n", - " refmed\u001b[36m::Float64\u001b[39m\n", - " wavel1\u001b[36m::Float64\u001b[39m\n", - " wavel2\u001b[36m::Float64\u001b[39m\n", - " numval\u001b[36m::UInt32\u001b[39m\n", - " particledata\u001b[36m::Matrix{Float64}\u001b[39m\n", - " materialdata\u001b[36m::Tuple{Float64, Float64, Float64, Matrix{Float64}}\u001b[39m\n", - " ppml\u001b[36m::Float64\u001b[39m\n", - " d0\u001b[36m::Float64\u001b[39m\n", - "Locals\n", - " predict\u001b[36m::Main.nanoconc.var\"#predict#22\"{Matrix{Float64}, Float64, Float64}\u001b[39m\n", - " data\u001b[36m::Matrix{Float64}\u001b[39m\n", - "Body\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m1 ─\u001b[39m %1 = Core.apply_type(Main.nanoconc.Array, Main.nanoconc.Float64, 2)\u001b[36m::Core.Const(Matrix{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m (data = Main.nanoconc.qpredict(refmed, wavel1, wavel2, numval, particledata, materialdata))\n", - "\u001b[90m│ \u001b[39m %3 = Main.nanoconc.:(var\"#predict#22\")\u001b[36m::Core.Const(Main.nanoconc.var\"#predict#22\")\u001b[39m\n", - "\u001b[90m│ \u001b[39m %4 = Core.typeof(particledata)\u001b[36m::Core.Const(Matrix{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %5 = Core.typeof(ppml)\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %6 = Core.typeof(d0)\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %7 = Core.apply_type(%3, %4, %5, %6)\u001b[36m::Core.Const(Main.nanoconc.var\"#predict#22\"{Matrix{Float64}, Float64, Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m (predict = %new(%7, particledata, ppml, d0))\n", - "\u001b[90m│ \u001b[39m %9 = predict\u001b[36m::Main.nanoconc.var\"#predict#22\"{Matrix{Float64}, Float64, Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %10 = Base.getindex(data, Main.nanoconc.:(:), 2)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %11 = Base.broadcasted(%9, %10)\u001b[36m::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, Main.nanoconc.var\"#predict#22\"{Matrix{Float64}, Float64, Float64}, Tuple{Vector{Float64}}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %12 = Base.materialize(%11)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m Base.setindex!(data, %12, Main.nanoconc.:(:), 2)\n", - "\u001b[90m│ \u001b[39m %14 = Base.convert(%1, data)\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %15 = Core.typeassert(%14, %1)\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m└──\u001b[39m return %15\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.abspredict.ser\")\n", - "test_data = test_data[1]\n", - "args, kwargs = test_data[1]\n", - "@code_warntype nanoconc.abspredict(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - }, - { - "ename": "LoadError", - "evalue": "LoadError: UndefVarError: `@code_warntype` not defined\nin expression starting at /home/cianh/Programming/Work_Projects/nanoconc/src/miemfp.jl:318\nin expression starting at /home/cianh/Programming/Work_Projects/nanoconc/src/miemfp.jl:1\nin expression starting at /home/cianh/Programming/Work_Projects/nanoconc/src/nanoconc.jl:1", - "output_type": "error", - "traceback": [ - "LoadError: UndefVarError: `@code_warntype` not defined\n", - "in expression starting at /home/cianh/Programming/Work_Projects/nanoconc/src/miemfp.jl:318\n", - "in expression starting at /home/cianh/Programming/Work_Projects/nanoconc/src/miemfp.jl:1\n", - "in expression starting at /home/cianh/Programming/Work_Projects/nanoconc/src/nanoconc.jl:1\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.miemfp.mfp.ser\")\n", - "test_data = test_data[1]\n", - "args, kwargs = test_data[1]\n", - "@code_warntype nanoconc.miemfp.mfp(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Main.nanoconc.miemfp.qbare(::Float64, ::Float64, ::UInt32, ::UInt32, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Matrix{Float64})\n", - " from qbare(\u001b[90mwavel1\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mwavel2\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mnumval\u001b[39m::\u001b[1mUInt32\u001b[22m, \u001b[90mscangles\u001b[39m::\u001b[1mUInt32\u001b[22m, \u001b[90mrefmed\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mradcore\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90momp\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mom0\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mfv\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mrefcore\u001b[39m::\u001b[1mMatrix\u001b[22m\u001b[0m{Float64})\u001b[90m @\u001b[39m \u001b[90mMain.nanoconc.miemfp\u001b[39m \u001b[90m~/Programming/Work_Projects/nanoconc/src/\u001b[39m\u001b[90m\u001b[4mmiemfp.jl:320\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Main.nanoconc.miemfp.qbare)\u001b[39m\n", - " wavel1\u001b[36m::Float64\u001b[39m\n", - " wavel2\u001b[36m::Float64\u001b[39m\n", - " numval\u001b[36m::UInt32\u001b[39m\n", - " scangles\u001b[36m::UInt32\u001b[39m\n", - " refmed\u001b[36m::Float64\u001b[39m\n", - " radcore\u001b[36m::Float64\u001b[39m\n", - " omp\u001b[36m::Float64\u001b[39m\n", - " om0\u001b[36m::Float64\u001b[39m\n", - " fv\u001b[36m::Float64\u001b[39m\n", - " refcore\u001b[36m::Matrix{Float64}\u001b[39m\n", - "Locals\n", - " interp_pair\u001b[36m::Main.nanoconc.miemfp.InterpolationPair\u001b[39m\n", - " qarray\u001b[36m::Matrix{Float64}\u001b[39m\n", - " wavelengths\u001b[36m::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}\u001b[39m\n", - " interp_ref_rn\u001b[36m::Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}\u001b[39m\n", - " interp_ref_rk\u001b[36m::Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}\u001b[39m\n", - " map_fn\u001b[36m::Main.nanoconc.miemfp._bhmie\u001b[39m\n", - " threadsfor_fun\u001b[36m::Main.nanoconc.miemfp.var\"#957#threadsfor_fun#20\"{Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}}\u001b[39m\n", - " val\u001b[36m::Nothing\u001b[39m\n", - " mfp_fn\u001b[36m::Main.nanoconc.miemfp._mfp\u001b[39m\n", - " threadsfor_fun#19\u001b[36m::Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}\u001b[39m\n", - " range\u001b[36m::UnitRange{UInt32}\u001b[39m\n", - "Body\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m1 ─\u001b[39m %1 = Core.apply_type(Main.nanoconc.miemfp.Matrix, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Matrix{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %2 = Main.nanoconc.miemfp._calc_delta_wl(wavel1, wavel2, numval)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %3 = (wavel1:%2:wavel2)\u001b[36m::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %4 = Core.apply_type(Main.nanoconc.miemfp.StepRangeLen, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(StepRangeLen{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %5 = Base.convert(%4, %3)\u001b[36m::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (wavelengths = Core.typeassert(%5, %4))\n", - "\u001b[90m│ \u001b[39m %7 = wavelengths\u001b[36m::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %8 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %9 = Main.nanoconc.miemfp.undef\u001b[36m::Core.Const(UndefInitializer())\u001b[39m\n", - "\u001b[90m│ \u001b[39m %10 = (%8)(%9, numval)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %11 = Main.nanoconc.miemfp.hcat(%7, %10)\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %12 = Core.apply_type(Main.nanoconc.miemfp.Matrix, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Matrix{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %13 = Base.convert(%12, %11)\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (qarray = Core.typeassert(%13, %12))\n", - "\u001b[90m│ \u001b[39m %15 = Main.nanoconc.miemfp._get_rnrk_interp_objects(refcore)\u001b[36m::Main.nanoconc.miemfp.InterpolationPair\u001b[39m\n", - "\u001b[90m│ \u001b[39m %16 = Base.convert(Main.nanoconc.miemfp.InterpolationPair, %15)\u001b[36m::Main.nanoconc.miemfp.InterpolationPair\u001b[39m\n", - "\u001b[90m│ \u001b[39m (interp_pair = Core.typeassert(%16, Main.nanoconc.miemfp.InterpolationPair))\n", - "\u001b[90m│ \u001b[39m %18 = Base.getproperty(interp_pair, :rn)\u001b[36m::Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (interp_ref_rn = %18)\n", - "\u001b[90m│ \u001b[39m %20 = Base.getproperty(interp_pair, :rk)\u001b[36m::Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (interp_ref_rk = %20)\n", - "\u001b[90m│ \u001b[39m %22 = Main.nanoconc.miemfp._bhmie(scangles)\u001b[36m::Main.nanoconc.miemfp._bhmie\u001b[39m\n", - "\u001b[90m│ \u001b[39m (map_fn = %22)\n", - "\u001b[90m│ \u001b[39m %24 = Main.nanoconc.miemfp._mfp(fv, radcore, omp, om0)\u001b[36m::Main.nanoconc.miemfp._mfp\u001b[39m\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(val))\n", - "\u001b[90m│ \u001b[39m (mfp_fn = %24)\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m %28 = (0x00000001:numval)\u001b[36m::Core.PartialStruct(UnitRange{UInt32}, Any[Core.Const(0x00000001), UInt32])\u001b[39m\n", - "\u001b[90m│ \u001b[39m (range = %28)\n", - "\u001b[90m│ \u001b[39m %30 = Main.nanoconc.miemfp.:(var\"#957#threadsfor_fun#19#21\")\u001b[36m::Core.Const(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\")\u001b[39m\n", - "\u001b[90m│ \u001b[39m %31 = Core.typeof(refmed)\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %32 = Core.typeof(radcore)\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %33 = Core.typeof(qarray)\u001b[36m::Core.Const(Matrix{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %34 = Core.typeof(interp_ref_rn)\u001b[36m::Core.Const(Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %35 = Core.typeof(interp_ref_rk)\u001b[36m::Core.Const(Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %36 = Core.typeof(map_fn)\u001b[36m::Core.Const(Main.nanoconc.miemfp._bhmie)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %37 = Core.typeof(mfp_fn)\u001b[36m::Core.Const(Main.nanoconc.miemfp._mfp)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %38 = Core.typeof(range::Core.PartialStruct(UnitRange{UInt32}, Any[Core.Const(0x00000001), UInt32]))\u001b[36m::Core.Const(UnitRange{UInt32})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %39 = Core.apply_type(%30, %31, %32, %33, %34, %35, %36, %37, %38)\u001b[36m::Core.Const(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %40 = qarray\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %41 = interp_ref_rn\u001b[36m::Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}\u001b[39m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[90m│ \u001b[39m %42 = interp_ref_rk\u001b[36m::Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %43 = map_fn\u001b[36m::Main.nanoconc.miemfp._bhmie\u001b[39m\n", - "\u001b[90m│ \u001b[39m %44 = mfp_fn\u001b[36m::Main.nanoconc.miemfp._mfp\u001b[39m\n", - "\u001b[90m│ \u001b[39m (threadsfor_fun#19 = %new(%39, refmed, radcore, %40, %41, %42, %43, %44, range::Core.PartialStruct(UnitRange{UInt32}, Any[Core.Const(0x00000001), UInt32])))\n", - "\u001b[90m│ \u001b[39m %46 = Main.nanoconc.miemfp.:(var\"#957#threadsfor_fun#20\")\u001b[36m::Core.Const(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#20\")\u001b[39m\n", - "\u001b[90m│ \u001b[39m %47 = Core.typeof(threadsfor_fun#19::Core.PartialStruct(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}, Any[Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, Core.PartialStruct(UnitRange{UInt32}, Any[Core.Const(0x00000001), UInt32])]))\u001b[36m::Core.Const(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %48 = Core.apply_type(%46, %47)\u001b[36m::Core.Const(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#20\"{Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}})\u001b[39m\n", - "\u001b[90m│ \u001b[39m (threadsfor_fun = %new(%48, threadsfor_fun#19::Core.PartialStruct(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}, Any[Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, Core.PartialStruct(UnitRange{UInt32}, Any[Core.Const(0x00000001), UInt32])])))\n", - "\u001b[90m│ \u001b[39m %50 = threadsfor_fun\u001b[36m::Core.PartialStruct(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#20\"{Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}}, Any[Core.PartialStruct(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}, Any[Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, Core.PartialStruct(UnitRange{UInt32}, Any[Core.Const(0x00000001), UInt32])])])\u001b[39m\n", - "\u001b[90m│ \u001b[39m Core.ifelse(false, false, %50)\n", - "\u001b[90m└──\u001b[39m goto #3 if not true\n", - "\u001b[90m2 ─\u001b[39m Base.Threads.threading_run(threadsfor_fun::Core.PartialStruct(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#20\"{Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}}, Any[Core.PartialStruct(Main.nanoconc.miemfp.var\"#957#threadsfor_fun#19#21\"{Float64, Float64, Matrix{Float64}, Interpolations." - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, UnitRange{UInt32}}, Any[Float64, Float64, Matrix{Float64}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Tuple{Vector{Float64}}}, Interpolations.Gridded{Interpolations.Linear{Interpolations.Throw{Interpolations.OnGrid}}}, Interpolations.Throw{Nothing}}, Main.nanoconc.miemfp._bhmie, Main.nanoconc.miemfp._mfp, Core.PartialStruct(UnitRange{UInt32}, Any[Core.Const(0x00000001), UInt32])])]), false)\n", - "\u001b[90m└──\u001b[39m goto #4\n", - "\u001b[90m3 ─\u001b[39m Core.Const(:($(Expr(:foreigncall, :(:jl_in_threaded_region), Int32, svec(), 0, :(:ccall)))))\n", - "\u001b[90m│ \u001b[39m Core.Const(:(%55 != 0))\n", - "\u001b[90m│ \u001b[39m Core.Const(:(goto %60 if not %56))\n", - "\u001b[90m│ \u001b[39m Core.Const(:(Base.Threads.error(\"`@threads :static` cannot be used concurrently or nested\")))\n", - "\u001b[90m│ \u001b[39m Core.Const(:(goto %61))\n", - "\u001b[90m└──\u001b[39m Core.Const(:(Base.Threads.threading_run(threadsfor_fun, true)))\n", - "\u001b[90m4 ┄\u001b[39m (val = Base.Threads.nothing)\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m val\n", - "\u001b[90m│ \u001b[39m %64 = Base.convert(%1, qarray)\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %65 = Core.typeassert(%64, %1)\u001b[36m::Matrix{Float64}\u001b[39m\n", - "\u001b[90m└──\u001b[39m return %65\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.miemfp.qbare.ser\")\n", - "# test_data = test_data[1]\n", - "args, kwargs = test_data[1][1]\n", - "@code_warntype nanoconc.miemfp.qbare(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Distributed.pmap(::Main.miemfp._bhmie, ::Vector{Float64}, ::Vector{ComplexF64})\n", - " from pmap(\u001b[90mf\u001b[39m, \u001b[90mc1\u001b[39m, \u001b[90mc...\u001b[39m; kwargs...)\u001b[90m @\u001b[39m \u001b[90mDistributed\u001b[39m \u001b[90m/usr/share/julia/stdlib/v1.9/Distributed/src/\u001b[39m\u001b[90m\u001b[4mpmap.jl:157\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Distributed.pmap)\u001b[39m\n", - " f\u001b[36m::Main.miemfp._bhmie\u001b[39m\n", - " c1\u001b[36m::Vector{Float64}\u001b[39m\n", - " c\u001b[36m::Tuple{Vector{ComplexF64}}\u001b[39m\n", - "Body\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", - "\u001b[90m1 ─\u001b[39m %1 = Distributed.:(var\"#pmap#234\")\u001b[36m::Core.Const(Distributed.var\"#pmap#234\")\u001b[39m\n", - "\u001b[90m│ \u001b[39m %2 = Core.NamedTuple()\u001b[36m::Core.Const(NamedTuple())\u001b[39m\n", - "\u001b[90m│ \u001b[39m %3 = Base.pairs(%2)\u001b[36m::Core.Const(Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}())\u001b[39m\n", - "\u001b[90m│ \u001b[39m %4 = Core.tuple(%3, #self#, f, c1)\u001b[36m::Tuple{Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(pmap), Main.miemfp._bhmie, Vector{Float64}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %5 = Core._apply_iterate(Base.iterate, %1, %4, c)\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", - "\u001b[90m└──\u001b[39m return %5\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module miemfp.\n" - ] - } - ], - "source": [ - "include(\"src/miemfp.jl\")\n", - "using Distributed\n", - "test_data = deserialize(\"test/data/Main.nanoconc.miemfp.qbare.ser\")\n", - "# test_data = test_data[1]\n", - "args, kwargs = test_data[1][1]\n", - "\n", - "function qbare(wavel1::Float64, wavel2::Float64, numval::UInt32, scangles::UInt32,\n", - " refmed::Float64, radcore::Float64, omp::Float64, om0::Float64,\n", - " fv::Float64, refcore::Array{Float64,2})\n", - "\n", - " # calculate the new wavelengths\n", - " let wavelengths::StepRangeLen{Float64} = wavel1:miemfp._calc_delta_wl(wavel1, wavel2, numval):wavel2,\n", - " interp_pair::miemfp.InterpolationPair = miemfp._get_rnrk_interp_objects(refcore)\n", - "\n", - " let interp_ref_rn = interp_pair.rn, interp_ref_rk = interp_pair.rk, map_fn = miemfp._bhmie(scangles)\n", - " # @code_warntype miemfp._bhmie(scangles)(\n", - " # first(miemfp._calc_apparent_cross_section(radcore, refmed) ./ wavelengths),\n", - " # first(miemfp._mfp(fv, radcore, omp, om0).(wavelengths, interp_ref_rn(wavelengths), interp_ref_rk(wavelengths)) ./ refmed)\n", - " # )\n", - " # @code_warntype map_fn.(\n", - " # miemfp._calc_apparent_cross_section(radcore, refmed) ./ wavelengths,\n", - " # miemfp._mfp(fv, radcore, omp, om0).(wavelengths, interp_ref_rn(wavelengths), interp_ref_rk(wavelengths)) ./ refmed,\n", - " # )\n", - " @code_warntype pmap(\n", - " map_fn,\n", - " miemfp._calc_apparent_cross_section(radcore, refmed) ./ wavelengths,\n", - " miemfp._mfp(fv, radcore, omp, om0).(wavelengths, interp_ref_rn(wavelengths), interp_ref_rk(wavelengths)) ./ refmed\n", - " )\n", - " # return hcat(\n", - " # wavelengths,\n", - " # # _bhmie(scangles).(\n", - " # # _calc_apparent_cross_section(radcore, refmed) ./ wavelengths,\n", - " # # _mfp(fv, radcore, omp, om0).(wavelengths, interp_ref_rn(wavelengths), interp_ref_rk(wavelengths)) ./ refmed,\n", - " # # )\n", - " # pmap(\n", - " # @code_warntype miemfp._bhmie(scangles), # _bhmie(scangles),\n", - " # _calc_apparent_cross_section(radcore, refmed) ./ wavelengths,\n", - " # _mfp(fv, radcore, omp, om0).(wavelengths, interp_ref_rn(wavelengths), interp_ref_rk(wavelengths)) ./ refmed\n", - " # )::Vector{Float64}\n", - " # )\n", - " end\n", - " end\n", - "end\n", - "\n", - "qbare(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "ename": "ErrorException", - "evalue": "type DataType has no field typedict", - "output_type": "error", - "traceback": [ - "type DataType has no field typedict\n", - "\n", - "Stacktrace:\n", - " [1] getproperty(x::Type, f::Symbol)\n", - " @ Base ./Base.jl:32\n", - " [2] top-level scope\n", - " @ ~/Programming/Work_Projects/nanoconc/scratch.ipynb:1" - ] - } - ], - "source": [ - "miemfp._bhmie.typedict" - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "test (generic function with 1 method)" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "function test()\n", - " return 0\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 107, - "metadata": {}, - "outputs": [ - { - "ename": "UndefVarError", - "evalue": "UndefVarError: `type` not defined", - "output_type": "error", - "traceback": [ - "UndefVarError: `type` not defined\n", - "\n", - "Stacktrace:\n", - " [1] top-level scope\n", - " @ ~/Programming/Work_Projects/nanoconc/scratch.ipynb:1" - ] - } - ], - "source": [ - "type(0)" - ] - }, - { - "cell_type": "code", - "execution_count": 149, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "method3 (generic function with 1 method)" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "function method1(nn::Int64, y::ComplexF64)::Vector{ComplexF64}\n", - " d::Vector{ComplexF64} = fill(ComplexF64(0.0, 0.0), nn + 1)\n", - " @inbounds @simd for n in (nn:-1:2)::StepRange{Int64,Int64}\n", - " d[n-1] = let n_over_y = n / y\n", - " (n_over_y) - (1.0 / (d[n] + n_over_y))\n", - " end\n", - " end\n", - " return d\n", - "end\n", - "\n", - "function method2(nn::Int64, y::ComplexF64)::Vector{ComplexF64}\n", - " @memoize d_generator(n::Int64)::ComplexF64 =\n", - " if n == nn + 1\n", - " ComplexF64(0.0, 0.0)\n", - " else\n", - " let n_over_y = n / y\n", - " (n_over_y) - (1.0 / (d_generator(n + 1) + n_over_y))\n", - " end\n", - " end\n", - " d_generator.(2:nn+1)\n", - "end\n", - "\n", - "function method3(nn::Int64, y::ComplexF64)::Vector{ComplexF64}\n", - " d_values = Vector{ComplexF64}(undef, nn)\n", - " d_values[nn] = ComplexF64(0.0, 0.0)\n", - " for n in nn:-1:2\n", - " n_over_y = n / y\n", - " d_values[n-1] = n_over_y - (1.0 / (d_values[n] + n_over_y))\n", - " end\n", - " return d_values\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "10:-1:1" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "reverse(1:10)" - ] - }, - { - "cell_type": "code", - "execution_count": 158, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "true" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cot(0.5) == cos(0.5) / sin(0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 147, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "101-element Vector{ComplexF64}:\n", - " 0.8123382644430177 - 1.2103254935120225im\n", - " 1.3618993272451057 - 1.6471440230163505im\n", - " 1.8912072404172218 - 2.113276215698099im\n", - " 2.410392314803969 - 2.5921488992550263im\n", - " 2.92387985431671 - 3.0776974617009216im\n", - " 3.4338634265187062 - 3.567182086734182im\n", - " 3.9415447299890984 - 4.059183628220866im\n", - " 4.447634627099904 - 4.552892955977411im\n", - " 4.952579621422096 - 5.047814712266423im\n", - " 5.456673934482986 - 5.543628508147122im\n", - " ⋮\n", - " 46.99470928787974 - 47.00529129839747im\n", - " 47.49476468199356 - 47.50523588612103im\n", - " 47.99481892822597 - 48.005181622468555im\n", - " 48.49487206188903 - 48.505128472090405im\n", - " 48.99492411687428 - 49.00507640105976im\n", - " 49.494975379460364 - 49.50502563061513im\n", - " 49.99 - 50.01im\n", - " 0.0 + 0.0im\n", - " 0.0 + 0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "method1(100, ComplexF64(1.0, 1.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 148, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "100-element Vector{ComplexF64}:\n", - " 0.8123382644430177 - 1.2103254935120225im\n", - " 1.3618993272451057 - 1.6471440230163505im\n", - " 1.8912072404172218 - 2.113276215698099im\n", - " 2.410392314803969 - 2.5921488992550263im\n", - " 2.92387985431671 - 3.0776974617009216im\n", - " 3.4338634265187062 - 3.567182086734182im\n", - " 3.9415447299890984 - 4.059183628220866im\n", - " 4.447634627099904 - 4.552892955977411im\n", - " 4.952579621422096 - 5.047814712266423im\n", - " 5.456673934482986 - 5.543628508147122im\n", - " ⋮\n", - " 46.49465270906219 - 46.50534789616018im\n", - " 46.99470928787974 - 47.00529129839747im\n", - " 47.49476468199356 - 47.50523588612103im\n", - " 47.99481892822597 - 48.005181622468555im\n", - " 48.49487206188903 - 48.505128472090405im\n", - " 48.99492411687428 - 49.00507640105976im\n", - " 49.494975379460364 - 49.50502563061513im\n", - " 49.99 - 50.01im\n", - " 0.0 + 0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "method2(100, ComplexF64(1.0, 1.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "100-element Vector{ComplexF64}:\n", - " 0.8123382644430177 - 1.2103254935120225im\n", - " 1.3618993272451057 - 1.6471440230163505im\n", - " 1.8912072404172218 - 2.113276215698099im\n", - " 2.410392314803969 - 2.5921488992550263im\n", - " 2.92387985431671 - 3.0776974617009216im\n", - " 3.4338634265187062 - 3.567182086734182im\n", - " 3.9415447299890984 - 4.059183628220866im\n", - " 4.447634627099904 - 4.552892955977411im\n", - " 4.952579621422096 - 5.047814712266423im\n", - " 5.456673934482986 - 5.543628508147122im\n", - " ⋮\n", - " 46.49465270906219 - 46.50534789616018im\n", - " 46.99470928787974 - 47.00529129839747im\n", - " 47.49476468199356 - 47.50523588612103im\n", - " 47.99481892822597 - 48.005181622468555im\n", - " 48.49487206188903 - 48.505128472090405im\n", - " 48.99492411687428 - 49.00507640105976im\n", - " 49.494975379460364 - 49.50502563061513im\n", - " 49.99 - 50.01im\n", - " 0.0 + 0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "method3(100, ComplexF64(1.0, 1.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Main.nanoconc.miemfp.bhmie(::Float64, ::ComplexF64, ::UInt32)\n", - " from bhmie(\u001b[90mx\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mrefrel\u001b[39m::\u001b[1mComplexF64\u001b[22m, \u001b[90mnang\u001b[39m::\u001b[1mUInt32\u001b[22m)\u001b[90m @\u001b[39m \u001b[90mMain.nanoconc.miemfp\u001b[39m \u001b[90m~/Programming/Work_Projects/nanoconc/src/\u001b[39m\u001b[90m\u001b[4mmiemfp.jl:141\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Main.nanoconc.miemfp.bhmie)\u001b[39m\n", - " x\u001b[36m::Float64\u001b[39m\n", - " refrel\u001b[36m::ComplexF64\u001b[39m\n", - " nang\u001b[36m::UInt32\u001b[39m\n", - "Locals\n", - " @_5\u001b[36m::Int64\u001b[39m\n", - " val@_6\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " val@_7\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " val@_8\u001b[36m::Nothing\u001b[39m\n", - " val@_9\u001b[36m::Nothing\u001b[39m\n", - " val@_10\u001b[36m::Nothing\u001b[39m\n", - " qback\u001b[36m::Float64\u001b[39m\n", - " qext\u001b[36m::Float64\u001b[39m\n", - " qsca\u001b[36m::Float64\u001b[39m\n", - " x_sq\u001b[36m::Float64\u001b[39m\n", - " s2\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " s1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " tau\u001b[36m::Vector{Float64}\u001b[39m\n", - " pi1\u001b[36m::Vector{Float64}\u001b[39m\n", - " pi0\u001b[36m::Vector{Float64}\u001b[39m\n", - " s2_2\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " s2_1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " s1_2\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " s1_1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " chi0\u001b[36m::Float64\u001b[39m\n", - " chi1\u001b[36m::Float64\u001b[39m\n", - " xi1\u001b[36m::ComplexF64\u001b[39m\n", - " p\u001b[36m::Float64\u001b[39m\n", - " psi1\u001b[36m::Float64\u001b[39m\n", - " psi0\u001b[36m::Float64\u001b[39m\n", - " d\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - " amu\u001b[36m::Vector{Float64}\u001b[39m\n", - " dang\u001b[36m::Float64\u001b[39m\n", - " nn\u001b[36m::UInt32\u001b[39m\n", - " nstop\u001b[36m::UInt32\u001b[39m\n", - " y\u001b[36m::ComplexF64\u001b[39m\n", - " @_36\u001b[33m\u001b[1m::Union{Nothing, Tuple{Int64, Int64}}\u001b[22m\u001b[39m\n", - " r#452\u001b[36m::UnitRange{Int64}\u001b[39m\n", - " i#453\u001b[36m::Int64\u001b[39m\n", - " n#454\u001b[36m::Int64\u001b[39m\n", - " i#455\u001b[36m::Int64\u001b[39m\n", - " i\u001b[36m::Int64\u001b[39m\n", - " @_42\u001b[33m\u001b[1m::Union{Nothing, Tuple{Int64, Int64}}\u001b[22m\u001b[39m\n", - " r#456\u001b[36m::StepRange{Int64, Int64}\u001b[39m\n", - " i#457\u001b[36m::Int64\u001b[39m\n", - " n#458\u001b[36m::Int64\u001b[39m\n", - " i#459\u001b[36m::Int64\u001b[39m\n", - " n@_47\u001b[36m::Int64\u001b[39m\n", - " n_over_y\u001b[36m::ComplexF64\u001b[39m\n", - " @_49\u001b[33m\u001b[1m::Union{Nothing, Tuple{Int64, Int64}}\u001b[22m\u001b[39m\n", - " r#460\u001b[36m::UnitRange{Int64}\u001b[39m\n", - " i#461\u001b[36m::Int64\u001b[39m\n", - " n#462\u001b[36m::Int64\u001b[39m\n", - " i#463\u001b[36m::Int64\u001b[39m\n", - " pi_\u001b[36m::Vector{Float64}\u001b[39m\n", - " bn\u001b[36m::ComplexF64\u001b[39m\n", - " an\u001b[36m::ComplexF64\u001b[39m\n", - " xi\u001b[36m::ComplexF64\u001b[39m\n", - " chi\u001b[36m::Float64\u001b[39m\n", - " psi\u001b[36m::Float64\u001b[39m\n", - " fn\u001b[36m::Float64\u001b[39m\n", - " n@_61\u001b[36m::Int64\u001b[39m\n", - " an_mult\u001b[36m::ComplexF64\u001b[39m\n", - " bn_mult\u001b[36m::ComplexF64\u001b[39m\n", - " four_over_x_sq\u001b[36m::Float64\u001b[39m\n", - " @_65\u001b[36m::Float64\u001b[39m\n", - "Body\u001b[36m::Tuple{Float64, Float64, Float64, Vector{ComplexF64}, Vector{ComplexF64}}\u001b[39m\n", - "\u001b[90m1 ──\u001b[39m Core.NewvarNode(:(@_5))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(val@_6))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(val@_7))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(val@_8))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(val@_9))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(val@_10))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(qback))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(qext))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(qsca))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(x_sq))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(s2))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(s1))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(tau))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(pi1))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(pi0))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(s2_2))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(s2_1))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(s1_2))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(s1_1))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(chi0))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(chi1))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(xi1))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(p))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(psi1))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(psi0))\n", - "\u001b[90m│ \u001b[39m Core.NewvarNode(:(d))\n", - "\u001b[90m│ \u001b[39m %27 = Main.nanoconc.miemfp.Tuple\u001b[36m::Core.Const(Tuple)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %28 = Main.nanoconc.miemfp.Float64\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %29 = Main.nanoconc.miemfp.Float64\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %30 = Main.nanoconc.miemfp.Float64\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %31 = Core.apply_type(Main.nanoconc.miemfp.Array, Main.nanoconc.miemfp.ComplexF64, 1)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %32 = Core.apply_type(Main.nanoconc.miemfp.Array, Main.nanoconc.miemfp.ComplexF64, 1)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %33 = Core.apply_type(%27, %28, %29, %30, %31, %32)\u001b[36m::Core.Const(Tuple{Float64, Float64, Float64, Vector{ComplexF64}, Vector{ComplexF64}})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %34 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %35 = Base.getproperty(%34, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %36 = (%35)(x, refrel)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %37 = Base.convert(Main.nanoconc.miemfp.ComplexF64, %36)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (y = Core.typeassert(%37, Main.nanoconc.miemfp.ComplexF64))\n", - "\u001b[90m│ \u001b[39m %39 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %40 = Base.getproperty(%39, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %41 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %42 = Base.getproperty(%41, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %43 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %44 = Base.getproperty(%43, :cbrt_fast)\u001b[36m::Core.Const(Base.FastMath.cbrt_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %45 = (%44)(x)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %46 = (%42)(4.0, %45)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %47 = (%40)(x, %46, 2.0)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %48 = Main.nanoconc.miemfp.round(%47)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %49 = Main.nanoconc.miemfp.UInt32(%48)\u001b[36m::UInt32\u001b[39m\n", - "\u001b[90m│ \u001b[39m %50 = Base.convert(Main.nanoconc.miemfp.UInt32, %49)\u001b[36m::UInt32\u001b[39m\n", - "\u001b[90m│ \u001b[39m (nstop = Core.typeassert(%50, Main.nanoconc.miemfp.UInt32))\n", - "\u001b[90m│ \u001b[39m %52 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %53 = Base.getproperty(%52, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %54 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %55 = Base.getproperty(%54, :max_fast)\u001b[36m::Core.Const(Base.FastMath.max_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %56 = nstop\u001b[36m::UInt32\u001b[39m\n", - "\u001b[90m│ \u001b[39m %57 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %58 = Base.getproperty(%57, :abs_fast)\u001b[36m::Core.Const(Base.FastMath.abs_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %59 = (%58)(y)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %60 = (%55)(%56, %59)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %61 = (%53)(%60, 14)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %62 = Main.nanoconc.miemfp.round(%61)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %63 = Main.nanoconc.miemfp.UInt32(%62)\u001b[36m::UInt32\u001b[39m\n", - "\u001b[90m│ \u001b[39m %64 = Base.convert(Main.nanoconc.miemfp.UInt32, %63)\u001b[36m::UInt32\u001b[39m\n", - "\u001b[90m│ \u001b[39m (nn = Core.typeassert(%64, Main.nanoconc.miemfp.UInt32))\n", - "\u001b[90m│ \u001b[39m %66 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %67 = Base.getproperty(%66, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %68 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %69 = Base.getproperty(%68, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %70 = (%69)(nang, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %71 = Main.nanoconc.miemfp.Float64(%70)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %72 = (%67)(1.570796327, %71)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %73 = Base.convert(Main.nanoconc.miemfp.Float64, %72)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (dang = Core.typeassert(%73, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %75 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %76 = Main.nanoconc.miemfp.undef\u001b[36m::Core.Const(UndefInitializer())\u001b[39m\n", - "\u001b[90m│ \u001b[39m (amu = (%75)(%76, nang))\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m %79 = (1:nang)\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %80 = Core.apply_type(Main.nanoconc.miemfp.UnitRange, Main.nanoconc.miemfp.Int64)\u001b[36m::Core.Const(UnitRange{Int64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %81 = Core.typeassert(%79, %80)\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m (r#452 = %81)\n", - "\u001b[90m│ \u001b[39m %83 = Base.simd_outer_range\u001b[36m::Core.Const(Base.SimdLoop.simd_outer_range)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %84 = (%83)(r#452::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64]))\u001b[36m::Core.Const(0:0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (@_36 = Base.iterate(%84))\n", - "\u001b[90m│ \u001b[39m %86 = (@_36::Core.Const((0, 0)) === nothing)\u001b[36m::Core.Const(false)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %87 = Base.not_int(%86)\u001b[36m::Core.Const(true)\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #8 if not %87\n", - "\u001b[90m2 ──\u001b[39m %89 = @_36\u001b[36m::Core.Const((0, 0))\u001b[39m\n", - "\u001b[90m│ \u001b[39m (i#453 = Core.getfield(%89, 1))\n", - "\u001b[90m│ \u001b[39m %91 = Core.getfield(%89, 2)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %92 = Base.simd_inner_length\u001b[36m::Core.Const(Base.SimdLoop.simd_inner_length)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %93 = r#452\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %94 = (%92)(%93, i#453::Core.Const(0))\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (n#454 = %94)\n", - "\u001b[90m│ \u001b[39m %96 = Main.nanoconc.miemfp.zero(n#454)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %97 = (%96 < n#454)\u001b[36m::Bool\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #6 if not %97\n", - "\u001b[90m3 ──\u001b[39m %99 = Main.nanoconc.miemfp.zero(n#454)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m└───\u001b[39m (i#455 = %99)\n", - "\u001b[90m4 ┄─\u001b[39m %101 = (i#455 < n#454)\u001b[36m::Bool\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #6 if not %101\n", - "\u001b[90m5 ──\u001b[39m %103 = Base.simd_index\u001b[36m::Core.Const(Base.SimdLoop.simd_index)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %104 = r#452\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %105 = i#453\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (i = (%103)(%104, %105, i#455))\n", - "\u001b[90m│ \u001b[39m %107 = Base" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - ".FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %108 = Base.getproperty(%107, :cos_fast)\u001b[36m::Core.Const(Base.FastMath.cos_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %109 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %110 = Base.getproperty(%109, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %111 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %112 = Base.getproperty(%111, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %113 = Main.nanoconc.miemfp.Float64(i)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %114 = (%112)(%113, 1.0)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %115 = (%110)(%114, dang)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %116 = (%108)(%115)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m Base.setindex!(amu, %116, i)\n", - "\u001b[90m│ \u001b[39m (i#455 = i#455 + 1)\n", - "\u001b[90m│ \u001b[39m $(Expr(:loopinfo, Symbol(\"julia.simdloop\"), nothing))\n", - "\u001b[90m└───\u001b[39m goto #4\n", - "\u001b[90m6 ┄─\u001b[39m (@_36 = Base.iterate(%84, %91))\n", - "\u001b[90m│ \u001b[39m %122 = (@_36::Core.Const(nothing) === nothing)\u001b[36m::Core.Const(true)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %123 = Base.not_int(%122)\u001b[36m::Core.Const(false)\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #8 if not %123\n", - "\u001b[90m7 ──\u001b[39m Core.Const(:(goto %89))\n", - "\u001b[90m8 ┄─\u001b[39m (val@_10 = Main.nanoconc.miemfp.nothing)\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m val@_10\n", - "\u001b[90m│ \u001b[39m %129 = Main.nanoconc.miemfp.ComplexF64(0.0, 0.0)\u001b[36m::Core.Const(0.0 + 0.0im)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %130 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %131 = Base.getproperty(%130, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %132 = nn\u001b[36m::UInt32\u001b[39m\n", - "\u001b[90m│ \u001b[39m %133 = (%131)(%132, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %134 = Main.nanoconc.miemfp.fill(%129, %133)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %135 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.ComplexF64)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %136 = Base.convert(%135, %134)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (d = Core.typeassert(%136, %135))\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m %139 = (nn:-1:2)\u001b[36m::Core.PartialStruct(StepRange{Int64, Int64}, Any[Int64, Core.Const(-1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %140 = Core.apply_type(Main.nanoconc.miemfp.StepRange, Main.nanoconc.miemfp.Int64, Main.nanoconc.miemfp.Int64)\u001b[36m::Core.Const(StepRange{Int64, Int64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %141 = Core.typeassert(%139, %140)\u001b[36m::Core.PartialStruct(StepRange{Int64, Int64}, Any[Int64, Core.Const(-1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m (r#456 = %141)\n", - "\u001b[90m│ \u001b[39m %143 = Base.simd_outer_range\u001b[36m::Core.Const(Base.SimdLoop.simd_outer_range)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %144 = (%143)(r#456::Core.PartialStruct(StepRange{Int64, Int64}, Any[Int64, Core.Const(-1), Int64]))\u001b[36m::Core.Const(0:0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (@_42 = Base.iterate(%144))\n", - "\u001b[90m│ \u001b[39m %146 = (@_42::Core.Const((0, 0)) === nothing)\u001b[36m::Core.Const(false)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %147 = Base.not_int(%146)\u001b[36m::Core.Const(true)\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #15 if not %147\n", - "\u001b[90m9 ──\u001b[39m %149 = @_42\u001b[36m::Core.Const((0, 0))\u001b[39m\n", - "\u001b[90m│ \u001b[39m (i#457 = Core.getfield(%149, 1))\n", - "\u001b[90m│ \u001b[39m %151 = Core.getfield(%149, 2)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %152 = Base.simd_inner_length\u001b[36m::Core.Const(Base.SimdLoop.simd_inner_length)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %153 = r#456\u001b[36m::Core.PartialStruct(StepRange{Int64, Int64}, Any[Int64, Core.Const(-1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %154 = (%152)(%153, i#457::Core.Const(0))\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (n#458 = %154)\n", - "\u001b[90m│ \u001b[39m %156 = Main.nanoconc.miemfp.zero(n#458)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %157 = (%156 < n#458)\u001b[36m::Bool\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #13 if not %157\n", - "\u001b[90m10 ─\u001b[39m %159 = Main.nanoconc.miemfp.zero(n#458)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m└───\u001b[39m (i#459 = %159)\n", - "\u001b[90m11 ┄\u001b[39m %161 = (i#459 < n#458)\u001b[36m::Bool\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #13 if not %161\n", - "\u001b[90m12 ─\u001b[39m %163 = Base.simd_index\u001b[36m::Core.Const(Base.SimdLoop.simd_index)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %164 = r#456\u001b[36m::Core.PartialStruct(StepRange{Int64, Int64}, Any[Int64, Core.Const(-1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %165 = i#457\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (n@_47 = (%163)(%164, %165, i#459))\n", - "\u001b[90m│ \u001b[39m %167 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %168 = Base.getproperty(%167, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %169 = n@_47\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %170 = (%168)(%169, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %171 = Base.getindex(d, %170)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m Core.typeassert(%171, Main.nanoconc.miemfp.ComplexF64)\n", - "\u001b[90m│ \u001b[39m %173 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %174 = Base.getproperty(%173, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %175 = n@_47\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %176 = (%174)(%175, y)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (n_over_y = %176)\n", - "\u001b[90m│ \u001b[39m %178 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %179 = Base.getproperty(%178, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %180 = n_over_y\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %181 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %182 = Base.getproperty(%181, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %183 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %184 = Base.getproperty(%183, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %185 = Base.getindex(d, n@_47)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %186 = (%184)(%185, n_over_y)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %187 = (%182)(1.0, %186)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %188 = (%179)(%180, %187)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m Base.setindex!(d, %188, %170)\n", - "\u001b[90m│ \u001b[39m (i#459 = i#459 + 1)\n", - "\u001b[90m│ \u001b[39m $(Expr(:loopinfo, Symbol(\"julia.simdloop\"), nothing))\n", - "\u001b[90m└───\u001b[39m goto #11\n", - "\u001b[90m13 ┄\u001b[39m (@_42 = Base.iterate(%144, %151))\n", - "\u001b[90m│ \u001b[39m %194 = (@_42::Core.Const(nothing) === nothing)\u001b[36m::Core.Const(true)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %195 = Base.not_int(%194)\u001b[36m::Core.Const(false)\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #15 if not %195\n", - "\u001b[90m14 ─\u001b[39m Core.Const(:(goto %149))\n", - "\u001b[90m15 ┄\u001b[39m (val@_9 = Main.nanoconc.miemfp.nothing)\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m val@_9\n", - "\u001b[90m│ \u001b[39m %201 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %202 = Base.getproperty(%201, :cos_fast)\u001b[36m::Core.Const(Base.FastMath.cos_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (psi0 = (%202)(x))\n", - "\u001b[90m│ \u001b[39m %204 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %205 = Base.getproperty(%204, :sin_fast)\u001b[36m::Core.Const(Base.FastMath.sin_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (psi1 = (%205)(x))\n", - "\u001b[90m│ \u001b[39m %207 = Base.convert(Main.nanoconc.miemfp.Float64, 0.0)\u001b[36m::Core.Const(0.0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (qsca = Core.typeassert(%207, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %209 = Base.convert(Main.nanoconc.miemfp.Float64, -1.0)\u001b[36m::Core.Const(-1.0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (p = Core.typeassert(%209, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %211 = psi1\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %212 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %213 = Base.getproperty(%212, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %214 = (%213)(psi0)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (xi1 = Main.nanoconc.miemfp.ComplexF64(%211, %214))\n", - "\u001b[90m│ \u001b[39m (chi1 = psi0)\n", - "\u001b[90m│ \u001b[39m %217 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %218 = Base.getproperty(%217, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (chi0 = (%218)(psi1))\n", - "\u001b[90m│ \u001b[39m (s1_1 = Main.nanoconc.miemfp.zeros(Main.nanoconc.miemfp.ComplexF64, nang))\n", - "\u001b[90m│ \u001b[39m (s1_2 = Main.nanoconc.miemfp.zeros(Main.nanoconc.miemfp.ComplexF64, nang))\n", - "\u001b[90m│ \u001b[39m (s2_1 = Main.nanoconc.miemfp.zeros(Main.nanoconc.miemfp.ComplexF64, nang))\n", - "\u001b[90m│ \u001b[39m (s2_2 = Main.nanoconc.miemfp.zeros(Main.nanoconc.miemfp.ComplexF64, nang))\n", - "\u001b[90m│ \u001b[39m %224 = Main.nanoconc.miemfp.zeros(nang)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %225 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %226 = Base.convert(%225, %224)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (pi0 = Core.typeassert(%226, %225))\n", - "\u001b[90m│ \u001b[39m %228 = Main.nanoconc.miemfp.ones(nang)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %229 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %230 = Base.convert(%229, %228)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (pi1 = Core.typeassert(%230, %229))\n", - "\u001b[90m│ \u001b[39m %232 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %233 = Main.nanoconc.miemfp.similar(%232, nang)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %234 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %235 = Base.convert(%234, %233)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (tau = Core.typeassert(%235, %234))\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m %238 = (1:nstop)\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %239 = Core.apply_type(Main.nanoconc.miemfp.UnitRange, Main.nanoconc.miemfp.Int64)\u001b[36m::Core.Const(UnitRange{Int64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %240 = Core.typeassert(%238, %239)\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(r#460 = %240)\n", - "\u001b[90m│ \u001b[39m %242 = Base.simd_outer_range\u001b[36m::Core.Const(Base.SimdLoop.simd_outer_range)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %243 = (%242)(r#460::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64]))\u001b[36m::Core.Const(0:0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (@_49 = Base.iterate(%243))\n", - "\u001b[90m│ \u001b[39m %245 = (@_49::Core.Const((0, 0)) === nothing)\u001b[36m::Core.Const(false)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %246 = Base.not_int(%245)\u001b[36m::Core.Const(true)\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #25 if not %246\n", - "\u001b[90m16 ─\u001b[39m %248 = @_49\u001b[36m::Core.Const((0, 0))\u001b[39m\n", - "\u001b[90m│ \u001b[39m (i#461 = Core.getfield(%248, 1))\n", - "\u001b[90m│ \u001b[39m %250 = Core.getfield(%248, 2)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %251 = Base.simd_inner_length\u001b[36m::Core.Const(Base.SimdLoop.simd_inner_length)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %252 = r#460\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %253 = (%251)(%252, i#461::Core.Const(0))\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (n#462 = %253)\n", - "\u001b[90m│ \u001b[39m %255 = Main.nanoconc.miemfp.zero(n#462)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %256 = (%255 < n#462)\u001b[36m::Bool\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #23 if not %256\n", - "\u001b[90m17 ─\u001b[39m %258 = Main.nanoconc.miemfp.zero(n#462)\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m└───\u001b[39m (i#463 = %258)\n", - "\u001b[90m18 ┄\u001b[39m %260 = (i#463 < n#462)\u001b[36m::Bool\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #23 if not %260\n", - "\u001b[90m19 ─\u001b[39m %262 = Base.simd_index\u001b[36m::Core.Const(Base.SimdLoop.simd_index)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %263 = r#460\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %264 = i#461\u001b[36m::Core.Const(0)\u001b[39m\n", - "\u001b[90m│ \u001b[39m (n@_61 = (%262)(%263, %264, i#463))\n", - "\u001b[90m│ \u001b[39m %266 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %267 = Base.getproperty(%266, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %268 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %269 = Base.getproperty(%268, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %270 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %271 = Base.getproperty(%270, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %272 = (%271)(2, n@_61)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %273 = (%269)(%272, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %274 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %275 = Base.getproperty(%274, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %276 = n@_61\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %277 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %278 = Base.getproperty(%277, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %279 = n@_61\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %280 = (%278)(%279, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %281 = (%275)(%276, %280)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (fn = (%267)(%273, %281))\n", - "\u001b[90m│ \u001b[39m %283 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %284 = Base.getproperty(%283, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %285 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %286 = Base.getproperty(%285, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %287 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %288 = Base.getproperty(%287, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %289 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %290 = Base.getproperty(%289, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %291 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %292 = Base.getproperty(%291, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %293 = (%292)(2, n@_61)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %294 = (%290)(%293, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %295 = (%288)(%294, psi1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %296 = (%286)(%295, x)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (psi = (%284)(%296, psi0))\n", - "\u001b[90m│ \u001b[39m %298 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %299 = Base.getproperty(%298, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %300 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %301 = Base.getproperty(%300, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %302 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %303 = Base.getproperty(%302, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %304 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %305 = Base.getproperty(%304, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %306 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %307 = Base.getproperty(%306, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %308 = (%307)(2, n@_61)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %309 = (%305)(%308, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %310 = (%303)(%309, chi1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %311 = (%301)(%310, x)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (chi = (%299)(%311, chi0))\n", - "\u001b[90m│ \u001b[39m %313 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %314 = Base.getproperty(%313, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %315 = psi\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %316 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %317 = Base.getproperty(%316, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %318 = chi\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %319 = (%317)(%318, Main.nanoconc.miemfp.im)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (xi = (%314)(%315, %319))\n", - "\u001b[90m│ \u001b[39m %321 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %322 = Base.getproperty(%321, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %323 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %324 = Base.getproperty(%323, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %325 = Base.getindex(d, n@_61)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %326 = (%324)(%325, refrel)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %327 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %328 = Base.getproperty(%327, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %329 = n@_61\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %330 = (%328)(%329, x)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %331 = (%322)(%326, %330)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %332 = Base.convert(Main.nanoconc.miemfp.ComplexF64, %331)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (an_mult = Core.typeassert(%332, Main.nanoconc.miemfp.ComplexF64))\n", - "\u001b[90m│ \u001b[39m %334 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %335 = Base.getproperty(%334, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %336 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %337 = Base.getproperty(%336, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %338 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %339 = Base.getproperty(%338, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %340 = an_mult\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %341 = (%339)(%340, psi)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %342 = (%337)(%341, psi1)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %343 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %344 = Base.getproperty(%343, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %345 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %346 = Base.getproperty(%345, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %347 = an_mult\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %348 = (%346)(%347, xi)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %349 = (%344)(%348, xi1)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %350 = (%335)(%342, %349)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %351 = Base.convert(Main.nanoconc.miemfp.ComplexF64, %350)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (an = Core.typeassert(%351, Main.nanoconc.miemfp.ComplexF64))\n", - "\u001b[90m│ \u001b[39m %353 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %354 = Base.getproperty(%353, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %355 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %356 = Base.getproperty(%355, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %357 = Base.getindex(d, n@_61)\u001b[36m::ComplexF64\u001b[39m" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\u001b[90m│ \u001b[39m %358 = (%356)(refrel, %357)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %359 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %360 = Base.getproperty(%359, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %361 = n@_61\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %362 = (%360)(%361, x)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %363 = (%354)(%358, %362)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %364 = Base.convert(Main.nanoconc.miemfp.ComplexF64, %363)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (bn_mult = Core.typeassert(%364, Main.nanoconc.miemfp.ComplexF64))\n", - "\u001b[90m│ \u001b[39m %366 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %367 = Base.getproperty(%366, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %368 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %369 = Base.getproperty(%368, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %370 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %371 = Base.getproperty(%370, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %372 = bn_mult\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %373 = (%371)(%372, psi)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %374 = (%369)(%373, psi1)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %375 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %376 = Base.getproperty(%375, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %377 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %378 = Base.getproperty(%377, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %379 = bn_mult\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %380 = (%378)(%379, xi)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %381 = (%376)(%380, xi1)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %382 = (%367)(%374, %381)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %383 = Base.convert(Main.nanoconc.miemfp.ComplexF64, %382)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (bn = Core.typeassert(%383, Main.nanoconc.miemfp.ComplexF64))\n", - "\u001b[90m│ \u001b[39m %385 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %386 = Base.getproperty(%385, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %387 = qsca\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %388 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %389 = Base.getproperty(%388, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %390 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %391 = Base.getproperty(%390, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %392 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %393 = Base.getproperty(%392, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %394 = (%393)(2, n@_61)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %395 = (%391)(%394, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %396 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %397 = Base.getproperty(%396, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %398 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %399 = Base.getproperty(%398, :pow_fast)\u001b[36m::Core.Const(Base.FastMath.pow_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %400 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %401 = Base.getproperty(%400, :abs_fast)\u001b[36m::Core.Const(Base.FastMath.abs_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %402 = (%401)(an)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %403 = (%399)(%402, Val{2}())\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %404 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %405 = Base.getproperty(%404, :pow_fast)\u001b[36m::Core.Const(Base.FastMath.pow_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %406 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %407 = Base.getproperty(%406, :abs_fast)\u001b[36m::Core.Const(Base.FastMath.abs_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %408 = (%407)(bn)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %409 = (%405)(%408, Val{2}())\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %410 = (%397)(%403, %409)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %411 = (%389)(%395, %410)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %412 = (%386)(%387, %411)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %413 = Base.convert(Main.nanoconc.miemfp.Float64, %412)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (qsca = Core.typeassert(%413, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m (pi_ = pi1)\n", - "\u001b[90m│ \u001b[39m %416 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %417 = Base.getproperty(%416, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %418 = Main.nanoconc.miemfp.:*\u001b[36m::Core.Const(*)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %419 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %420 = Base.getproperty(%419, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %421 = n@_61\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %422 = (%420)(%421, amu)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %423 = Base.broadcasted(%418, %422, pi_)\u001b[36m::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(*), Tuple{Vector{Float64}, Vector{Float64}}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %424 = Base.materialize(%423)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %425 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %426 = Base.getproperty(%425, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %427 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %428 = Base.getproperty(%427, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %429 = n@_61\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %430 = (%428)(%429, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %431 = (%426)(%430, pi0)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %432 = (%417)(%424, %431)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %433 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %434 = Base.convert(%433, %432)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (tau = Core.typeassert(%434, %433))\n", - "\u001b[90m│ \u001b[39m %436 = Main.nanoconc.miemfp.isodd(n@_61)\u001b[36m::Bool\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #21 if not %436\n", - "\u001b[90m20 ─\u001b[39m (@_65 = 1.0)\n", - "\u001b[90m└───\u001b[39m goto #22\n", - "\u001b[90m21 ─\u001b[39m (@_65 = -1.0)\n", - "\u001b[90m22 ┄\u001b[39m %441 = @_65\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %442 = Base.convert(Main.nanoconc.miemfp.Float64, %441)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (p = Core.typeassert(%442, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %444 = s1_1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %445 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.ComplexF64)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %446 = Core.typeassert(%444, %445)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %447 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %448 = Base.getproperty(%447, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %449 = fn\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %450 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %451 = Base.getproperty(%450, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %452 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %453 = Base.getproperty(%452, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %454 = an\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %455 = (%453)(%454, pi_)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %456 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %457 = Base.getproperty(%456, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %458 = bn\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %459 = (%457)(%458, tau)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %460 = (%451)(%455, %459)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %461 = (%448)(%449, %460)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (s1_1 = %446 + %461)\n", - "\u001b[90m│ \u001b[39m %463 = s1_2\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %464 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.ComplexF64)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %465 = Core.typeassert(%463, %464)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %466 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %467 = Base.getproperty(%466, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %468 = fn\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %469 = p\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %470 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %471 = Base.getproperty(%470, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %472 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %473 = Base.getproperty(%472, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %474 = an\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %475 = (%473)(%474, pi_)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %476 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %477 = Base.getproperty(%476, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %478 = bn\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %479 = (%477)(%478, tau)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %480 = (%471)(%475, %479)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %481 = (%467)(%468, %469, %480)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (s1_2 = %465 + %481)\n", - "\u001b[90m│ \u001b[39m %483 = s2_1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %484 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.ComplexF64)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %485 = Core.typeassert(%483, %484)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %486 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %487 = Base.getproperty(%486, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %488 = fn\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %489 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[90m│ \u001b[39m %490 = Base.getproperty(%489, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %491 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %492 = Base.getproperty(%491, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %493 = an\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %494 = (%492)(%493, tau)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %495 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %496 = Base.getproperty(%495, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %497 = bn\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %498 = (%496)(%497, pi_)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %499 = (%490)(%494, %498)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %500 = (%487)(%488, %499)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (s2_1 = %485 + %500)\n", - "\u001b[90m│ \u001b[39m %502 = s2_2\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %503 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.ComplexF64)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %504 = Core.typeassert(%502, %503)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %505 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %506 = Base.getproperty(%505, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %507 = fn\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %508 = p\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %509 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %510 = Base.getproperty(%509, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %511 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %512 = Base.getproperty(%511, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %513 = bn\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %514 = (%512)(%513, pi_)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %515 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %516 = Base.getproperty(%515, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %517 = an\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %518 = (%516)(%517, tau)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %519 = (%510)(%514, %518)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %520 = (%506)(%507, %508, %519)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (s2_2 = %504 + %520)\n", - "\u001b[90m│ \u001b[39m (psi0 = psi1)\n", - "\u001b[90m│ \u001b[39m (chi0 = chi1)\n", - "\u001b[90m│ \u001b[39m (psi1 = psi)\n", - "\u001b[90m│ \u001b[39m (chi1 = chi)\n", - "\u001b[90m│ \u001b[39m %526 = psi1\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %527 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %528 = Base.getproperty(%527, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %529 = (%528)(chi1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (xi1 = Main.nanoconc.miemfp.ComplexF64(%526, %529))\n", - "\u001b[90m│ \u001b[39m %531 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %532 = Base.getproperty(%531, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %533 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %534 = Base.getproperty(%533, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %535 = Main.nanoconc.miemfp.:*\u001b[36m::Core.Const(*)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %536 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %537 = Base.getproperty(%536, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %538 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %539 = Base.getproperty(%538, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %540 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %541 = Base.getproperty(%540, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %542 = (%541)(2, n@_61)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %543 = (%539)(%542, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %544 = (%537)(%543, amu)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %545 = Base.broadcasted(%535, %544, pi_)\u001b[36m::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(*), Tuple{Vector{Float64}, Vector{Float64}}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %546 = Base.materialize(%545)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %547 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %548 = Base.getproperty(%547, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %549 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %550 = Base.getproperty(%549, :add_fast)\u001b[36m::Core.Const(Base.FastMath.add_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %551 = n@_61\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %552 = (%550)(%551, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %553 = (%548)(%552, pi0)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %554 = (%534)(%546, %553)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %555 = (%532)(%554, n@_61)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %556 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %557 = Base.convert(%556, %555)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (pi1 = Core.typeassert(%557, %556))\n", - "\u001b[90m│ \u001b[39m %559 = pi_\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %560 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.Float64)\u001b[36m::Core.Const(Vector{Float64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %561 = Base.convert(%560, %559)\u001b[36m::Vector{Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (pi0 = Core.typeassert(%561, %560))\n", - "\u001b[90m│ \u001b[39m (i#463 = i#463 + 1)\n", - "\u001b[90m│ \u001b[39m $(Expr(:loopinfo, Symbol(\"julia.simdloop\"), nothing))\n", - "\u001b[90m└───\u001b[39m goto #18\n", - "\u001b[90m23 ┄\u001b[39m (@_49 = Base.iterate(%243, %250))\n", - "\u001b[90m│ \u001b[39m %567 = (@_49::Core.Const(nothing) === nothing)\u001b[36m::Core.Const(true)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %568 = Base.not_int(%567)\u001b[36m::Core.Const(false)\u001b[39m\n", - "\u001b[90m└───\u001b[39m goto #25 if not %568\n", - "\u001b[90m24 ─\u001b[39m Core.Const(:(goto %248))\n", - "\u001b[90m25 ┄\u001b[39m (val@_8 = Main.nanoconc.miemfp.nothing)\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m val@_8\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m %575 = s1_1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %576 = s1_2\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %577 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %578 = Base.getproperty(%577, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %579 = Base.lastindex(s1_2)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %580 = (%578)(%579, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %581 = (1:%580)\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %582 = Base.getindex(%576, %581)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %583 = Main.nanoconc.miemfp.reverse(%582)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %584 = Main.nanoconc.miemfp.vcat(%575, %583)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %585 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.ComplexF64)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %586 = Base.convert(%585, %584)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (s1 = Core.typeassert(%586, %585))\n", - "\u001b[90m│ \u001b[39m (val@_7 = %584)\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m val@_7\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m %592 = s2_1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %593 = s2_2\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %594 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %595 = Base.getproperty(%594, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %596 = Base.lastindex(s2_2)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %597 = (%595)(%596, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %598 = (1:%597)\u001b[36m::Core.PartialStruct(UnitRange{Int64}, Any[Core.Const(1), Int64])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %599 = Base.getindex(%593, %598)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %600 = Main.nanoconc.miemfp.reverse(%599)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %601 = Main.nanoconc.miemfp.vcat(%592, %600)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %602 = Core.apply_type(Main.nanoconc.miemfp.Vector, Main.nanoconc.miemfp.ComplexF64)\u001b[36m::Core.Const(Vector{ComplexF64})\u001b[39m\n", - "\u001b[90m│ \u001b[39m %603 = Base.convert(%602, %601)\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m (s2 = Core.typeassert(%603, %602))\n", - "\u001b[90m│ \u001b[39m (val@_6 = %601)\n", - "\u001b[90m│ \u001b[39m nothing\n", - "\u001b[90m│ \u001b[39m val@_6\n", - "\u001b[90m│ \u001b[39m %608 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %609 = Base.getproperty(%608, :pow_fast)\u001b[36m::Core.Const(Base.FastMath.pow_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %610 = (%609)(x, " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Val{2}())\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %611 = Base.convert(Main.nanoconc.miemfp.Float64, %610)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (x_sq = Core.typeassert(%611, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %613 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %614 = Base.getproperty(%613, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %615 = qsca\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %616 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %617 = Base.getproperty(%616, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %618 = (%617)(2.0, x_sq)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %619 = (%614)(%615, %618)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %620 = Base.convert(Main.nanoconc.miemfp.Float64, %619)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (qsca = Core.typeassert(%620, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %622 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %623 = Base.getproperty(%622, :div_fast)\u001b[36m::Core.Const(Base.FastMath.div_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %624 = (%623)(4.0, x_sq)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %625 = Base.convert(Main.nanoconc.miemfp.Float64, %624)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (four_over_x_sq = Core.typeassert(%625, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %627 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %628 = Base.getproperty(%627, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %629 = four_over_x_sq\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %630 = Base.getindex(s1, 1)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %631 = Main.nanoconc.miemfp.real(%630)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %632 = (%628)(%629, %631)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %633 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %634 = Base.getproperty(%633, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %635 = four_over_x_sq\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %636 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %637 = Base.getproperty(%636, :pow_fast)\u001b[36m::Core.Const(Base.FastMath.pow_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %638 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %639 = Base.getproperty(%638, :abs_fast)\u001b[36m::Core.Const(Base.FastMath.abs_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %640 = s1\u001b[36m::Vector{ComplexF64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %641 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %642 = Base.getproperty(%641, :sub_fast)\u001b[36m::Core.Const(Base.FastMath.sub_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %643 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %644 = Base.getproperty(%643, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %645 = (%644)(2, nang)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %646 = (%642)(%645, 1)\u001b[36m::Int64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %647 = Base.getindex(%640, %646)\u001b[36m::ComplexF64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %648 = (%639)(%647)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %649 = (%637)(%648, Val{2}())\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %650 = (%634)(%635, %649)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %651 = Core.tuple(%632, %650)\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %652 = Base.indexed_iterate(%651, 1)\u001b[36m::Core.PartialStruct(Tuple{Float64, Int64}, Any[Float64, Core.Const(2)])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %653 = Core.getfield(%652, 1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (@_5 = Core.getfield(%652, 2))\n", - "\u001b[90m│ \u001b[39m %655 = Base.indexed_iterate(%651, 2, @_5::Core.Const(2))\u001b[36m::Core.PartialStruct(Tuple{Float64, Int64}, Any[Float64, Core.Const(3)])\u001b[39m\n", - "\u001b[90m│ \u001b[39m %656 = Core.getfield(%655, 1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %657 = Base.convert(Main.nanoconc.miemfp.Float64, %653)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (qext = Core.typeassert(%657, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %659 = Base.convert(Main.nanoconc.miemfp.Float64, %656)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m (qback = Core.typeassert(%659, Main.nanoconc.miemfp.Float64))\n", - "\u001b[90m│ \u001b[39m %661 = Core.tuple(qext, qsca, qback, s1, s2)\u001b[36m::Tuple{Float64, Float64, Float64, Vector{ComplexF64}, Vector{ComplexF64}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %662 = Base.convert(%33, %661)\u001b[36m::Tuple{Float64, Float64, Float64, Vector{ComplexF64}, Vector{ComplexF64}}\u001b[39m\n", - "\u001b[90m│ \u001b[39m %663 = Core.typeassert(%662, %33)\u001b[36m::Tuple{Float64, Float64, Float64, Vector{ComplexF64}, Vector{ComplexF64}}\u001b[39m\n", - "\u001b[90m└───\u001b[39m return %663\n", - "\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.miemfp.bhmie.ser\")\n", - "args, kwargs = test_data[1][1]\n", - "@code_warntype nanoconc.miemfp.bhmie(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Main.nanoconc.quantumcalc.attencoeff(::Float64, ::Float64)\n", - " from attencoeff(\u001b[90mqext\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mr\u001b[39m::\u001b[1mFloat64\u001b[22m)\u001b[90m @\u001b[39m \u001b[90mMain.nanoconc.quantumcalc\u001b[39m \u001b[90m~/Programming/Work_Projects/nanoconc/src/\u001b[39m\u001b[90m\u001b[4mquantumcalc.jl:118\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Main.nanoconc.quantumcalc.attencoeff)\u001b[39m\n", - " qext\u001b[36m::Float64\u001b[39m\n", - " r\u001b[36m::Float64\u001b[39m\n", - "Body\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m1 ─\u001b[39m %1 = Main.nanoconc.quantumcalc.Float64\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %2 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %3 = Base.getproperty(%2, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %4 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %5 = Base.getproperty(%4, :pow_fast)\u001b[36m::Core.Const(Base.FastMath.pow_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %6 = (%5)(r, Val{2}())\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %7 = (%3)(%6, qext, Main.nanoconc.quantumcalc.A_PI_LOG10_EULER_OVER_1000)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %8 = Base.convert(%1, %7)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %9 = Core.typeassert(%8, %1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m└──\u001b[39m return %9\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.quantumcalc.attencoeff.ser\")\n", - "test_data = test_data[1]\n", - "args, kwargs = test_data[1]\n", - "@code_warntype nanoconc.quantumcalc.attencoeff(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Main.nanoconc.quantumcalc.attentoabs(::Float64, ::Float64, ::Float64)\n", - " from attentoabs(\u001b[90mkappa\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mc\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90md0\u001b[39m::\u001b[1mFloat64\u001b[22m)\u001b[90m @\u001b[39m \u001b[90mMain.nanoconc.quantumcalc\u001b[39m \u001b[90m~/Programming/Work_Projects/nanoconc/src/\u001b[39m\u001b[90m\u001b[4mquantumcalc.jl:133\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Main.nanoconc.quantumcalc.attentoabs)\u001b[39m\n", - " kappa\u001b[36m::Float64\u001b[39m\n", - " c\u001b[36m::Float64\u001b[39m\n", - " d0\u001b[36m::Float64\u001b[39m\n", - "Body\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m1 ─\u001b[39m %1 = Main.nanoconc.quantumcalc.Float64\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %2 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %3 = Base.getproperty(%2, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %4 = (%3)(kappa, c, d0)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %5 = Base.convert(%1, %4)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %6 = Core.typeassert(%5, %1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m└──\u001b[39m return %6\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.quantumcalc.attentoabs.ser\")\n", - "test_data = test_data[1]\n", - "args, kwargs = test_data[1]\n", - "@code_warntype nanoconc.quantumcalc.attentoabs(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Main.nanoconc.quantumcalc.numtomol(::Float64)\n", - " from numtomol(\u001b[90mn\u001b[39m::\u001b[1mFloat64\u001b[22m)\u001b[90m @\u001b[39m \u001b[90mMain.nanoconc.quantumcalc\u001b[39m \u001b[90m~/Programming/Work_Projects/nanoconc/src/\u001b[39m\u001b[90m\u001b[4mquantumcalc.jl:125\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Main.nanoconc.quantumcalc.numtomol)\u001b[39m\n", - " n\u001b[36m::Float64\u001b[39m\n", - "Body\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m1 ─\u001b[39m %1 = Main.nanoconc.quantumcalc.Float64\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %2 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %3 = Base.getproperty(%2, :mul_fast)\u001b[36m::Core.Const(Base.FastMath.mul_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %4 = (%3)(n, Main.nanoconc.quantumcalc.NUM_TO_MOL_CONV)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %5 = Base.convert(%1, %4)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %6 = Core.typeassert(%5, %1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m└──\u001b[39m return %6\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.quantumcalc.numtomol.ser\")\n", - "test_data = test_data[1]\n", - "args, kwargs = test_data[1]\n", - "@code_warntype nanoconc.quantumcalc.numtomol(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MethodInstance for Main.nanoconc.quantumcalc.predictabs(::Float64, ::Float64, ::Float64, ::Float64)\n", - " from predictabs(\u001b[90mqext\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mavgr\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90mppml\u001b[39m::\u001b[1mFloat64\u001b[22m, \u001b[90ml\u001b[39m::\u001b[1mFloat64\u001b[22m)\u001b[90m @\u001b[39m \u001b[90mMain.nanoconc.quantumcalc\u001b[39m \u001b[90m~/Programming/Work_Projects/nanoconc/src/\u001b[39m\u001b[90m\u001b[4mquantumcalc.jl:141\u001b[24m\u001b[39m\n", - "Arguments\n", - " #self#\u001b[36m::Core.Const(Main.nanoconc.quantumcalc.predictabs)\u001b[39m\n", - " qext\u001b[36m::Float64\u001b[39m\n", - " avgr\u001b[36m::Float64\u001b[39m\n", - " ppml\u001b[36m::Float64\u001b[39m\n", - " l\u001b[36m::Float64\u001b[39m\n", - "Body\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m1 ─\u001b[39m %1 = Main.nanoconc.quantumcalc.Float64\u001b[36m::Core.Const(Float64)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %2 = Base.FastMath\u001b[36m::Core.Const(Base.FastMath)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %3 = Base.getproperty(%2, :log10_fast)\u001b[36m::Core.Const(Base.FastMath.log10_fast)\u001b[39m\n", - "\u001b[90m│ \u001b[39m %4 = Main.nanoconc.quantumcalc.attencoeff(qext, avgr)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %5 = Main.nanoconc.quantumcalc.numtomol(ppml)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %6 = Main.nanoconc.quantumcalc.attentoabs(%4, %5, l)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %7 = (%3)(%6)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %8 = Base.convert(%1, %7)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m│ \u001b[39m %9 = Core.typeassert(%8, %1)\u001b[36m::Float64\u001b[39m\n", - "\u001b[90m└──\u001b[39m return %9\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: replacing module nanoconc.\n" - ] - } - ], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "test_data = deserialize(\"test/data/Main.nanoconc.quantumcalc.predictabs.ser\")\n", - "test_data = test_data[1]\n", - "args, kwargs = test_data[1]\n", - "@code_warntype nanoconc.quantumcalc.predictabs(args..., kwargs...)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "f2 (generic function with 1 method)" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "function f1(n::Float64)::Float64\n", - " n * (n + 1)\n", - "end\n", - "\n", - "function f2(n::Float64)::Float64\n", - " n^2 + n\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "Float64(1)" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "ename": "OutOfMemoryError", - "evalue": "OutOfMemoryError()", - "output_type": "error", - "traceback": [ - "OutOfMemoryError()\n", - "\n", - "Stacktrace:\n", - " [1] collect(itr::Base.Generator{UnitRange{Int64}, var\"#15#16\"})\n", - " @ Base ./array.jl:0\n", - " [2] top-level scope\n", - " @ ~/Programming/Work_Projects/nanoconc/scratch.ipynb:1" - ] - } - ], - "source": [ - "n_range = [Float64(i) for i in 1:1000000000000]" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 0.003103 seconds (4 allocations: 7.629 MiB)\n" - ] - }, - { - "data": { - "text/plain": [ - "1000000-element Vector{Float64}:\n", - " 2.0\n", - " 6.0\n", - " 12.0\n", - " 20.0\n", - " 30.0\n", - " 42.0\n", - " 56.0\n", - " 72.0\n", - " 90.0\n", - " 110.0\n", - " ⋮\n", - " 9.99985000056e11\n", - " 9.99987000042e11\n", - " 9.9998900003e11\n", - " 9.9999100002e11\n", - " 9.99993000012e11\n", - " 9.99995000006e11\n", - " 9.99997000002e11\n", - " 9.99999e11\n", - " 1.000001e12" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "@time f1.(n_range)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 0.077378 seconds (4 allocations: 7.629 MiB, 89.50% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "1000000-element Vector{Float64}:\n", - " 2.0\n", - " 6.0\n", - " 12.0\n", - " 20.0\n", - " 30.0\n", - " 42.0\n", - " 56.0\n", - " 72.0\n", - " 90.0\n", - " 110.0\n", - " ⋮\n", - " 9.99985000056e11\n", - " 9.99987000042e11\n", - " 9.9998900003e11\n", - " 9.9999100002e11\n", - " 9.99993000012e11\n", - " 9.99995000006e11\n", - " 9.99997000002e11\n", - " 9.99999e11\n", - " 1.000001e12" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "@time f2.(n_range)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.9.1", - "language": "julia", - "name": "julia-1.9" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.9.1" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/scripts/build_other_impls.sh b/scripts/build_other_impls.sh new file mode 100755 index 0000000..c51adbc --- /dev/null +++ b/scripts/build_other_impls.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# This bash script will pull and compile the other implementations of the +# bhmie algorithm (found at http://scatterlib.wikidot.com/mie) +# These implementations will then be tested and benchmarked against the local +# implementation to ensure that they are correct and (ideally) faster. + +# First, let's create a base URL for the scatterlib wiki codebases +base_url="http://scatterlib.wikidot.com/local--files/codes/" + +# Next, let's create a list of the codebases we want to pull +codebases=("bhmie-f.zip" "bhmie-c.zip") + +# Then, let's create a directory to pull the codebases to +bhmie_dir=".bhmielibs" +mkdir -p $bhmie_dir + +# Now, let's pull the codebases +for codebase in ${codebases[@]}; do + wget -O $bhmie_dir/$codebase $base_url/$codebase + if [[ $codebase == *.zip ]]; then + unzip $bhmie_dir/$codebase -d $bhmie_dir/$codebase + fi +done + +# Then, let's extract any .zip files to a directory of the same name (without the .zip, obviously) +for codebase in ${codebases[@]}; do + if [[ $codebase == *.zip ]]; then + unzip $bhmie_dir/$codebase -d $bhmie_dir/${codebase%.zip} + fi +done + +# If the folder already existed in the archive, move that folder one level up +# and remove the now empty folder +for codebase in ${codebases[@]}; do + if [[ $codebase == *.zip ]]; then + folder=${codebase%.zip} + if [ -d $bhmie_dir/$folder/$folder ]; then + mv $bhmie_dir/$folder/$folder/* $bhmie_dir/$folder + rmdir $bhmie_dir/$folder/$folder + fi + fi +done + +# Next, if this has all succeeded we can delete the .zip files +for codebase in ${codebases[@]}; do + if [[ $codebase == *.zip ]]; then + rm $bhmie_dir/$codebase + fi +done + +# And, finally, we can compile the C, and Fortran implementations +cd $bhmie_dir +gcc -shared -fPIC -o bhmie-c/bhmie.so bhmie-c/bhmie.c bhmie-c/complex.c bhmie-c/nrutil.c -lm -Wno-builtin-declaration-mismatch -Wno-implicit-function-declaration +gfortran -shared -fPIC -o bhmie-f/bhmie.so bhmie-f/bhmie.f +gfortran -shared -fPIC -o bhmie-f/bhmie_f77.so bhmie-f/bhmie_f77.f \ No newline at end of file diff --git a/test/data/Main.nanoconc.abspredict.ser b/test/data/Main.nanoconc.abspredict.ser deleted file mode 100644 index 61640fd..0000000 Binary files a/test/data/Main.nanoconc.abspredict.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.loadmaterial.ser b/test/data/Main.nanoconc.loadmaterial.ser deleted file mode 100644 index d7ad776..0000000 Binary files a/test/data/Main.nanoconc.loadmaterial.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.miemfp.bhmie.ser b/test/data/Main.nanoconc.miemfp.bhmie.ser deleted file mode 100644 index b0680ec..0000000 Binary files a/test/data/Main.nanoconc.miemfp.bhmie.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.miemfp.mfp.ser b/test/data/Main.nanoconc.miemfp.mfp.ser deleted file mode 100644 index 96f51b7..0000000 Binary files a/test/data/Main.nanoconc.miemfp.mfp.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.miemfp.qbare.ser b/test/data/Main.nanoconc.miemfp.qbare.ser deleted file mode 100644 index 74c1a76..0000000 Binary files a/test/data/Main.nanoconc.miemfp.qbare.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.qpredict.ser b/test/data/Main.nanoconc.qpredict.ser deleted file mode 100644 index fc5b2e8..0000000 Binary files a/test/data/Main.nanoconc.qpredict.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.quantumcalc.attencoeff.ser b/test/data/Main.nanoconc.quantumcalc.attencoeff.ser deleted file mode 100644 index 8ce67df..0000000 Binary files a/test/data/Main.nanoconc.quantumcalc.attencoeff.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.quantumcalc.attentoabs.ser b/test/data/Main.nanoconc.quantumcalc.attentoabs.ser deleted file mode 100644 index a7f0817..0000000 Binary files a/test/data/Main.nanoconc.quantumcalc.attentoabs.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.quantumcalc.numtomol.ser b/test/data/Main.nanoconc.quantumcalc.numtomol.ser deleted file mode 100644 index 86adeae..0000000 Binary files a/test/data/Main.nanoconc.quantumcalc.numtomol.ser and /dev/null differ diff --git a/test/data/Main.nanoconc.quantumcalc.predictabs.ser b/test/data/Main.nanoconc.quantumcalc.predictabs.ser deleted file mode 100644 index 8b5a799..0000000 Binary files a/test/data/Main.nanoconc.quantumcalc.predictabs.ser and /dev/null differ diff --git a/val_data/size/AG_RES_1.xlsx b/val_data/size/AG_RES_1.xlsx deleted file mode 100644 index 99140e9..0000000 Binary files a/val_data/size/AG_RES_1.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_10.xlsx b/val_data/size/AG_RES_10.xlsx deleted file mode 100644 index df67876..0000000 Binary files a/val_data/size/AG_RES_10.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_11.xlsx b/val_data/size/AG_RES_11.xlsx deleted file mode 100644 index 0a18c34..0000000 Binary files a/val_data/size/AG_RES_11.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_12.xlsx b/val_data/size/AG_RES_12.xlsx deleted file mode 100644 index 576bcca..0000000 Binary files a/val_data/size/AG_RES_12.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_13.xlsx b/val_data/size/AG_RES_13.xlsx deleted file mode 100644 index 84e81d7..0000000 Binary files a/val_data/size/AG_RES_13.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_14.xlsx b/val_data/size/AG_RES_14.xlsx deleted file mode 100644 index 204bce2..0000000 Binary files a/val_data/size/AG_RES_14.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_15.xlsx b/val_data/size/AG_RES_15.xlsx deleted file mode 100644 index c86897e..0000000 Binary files a/val_data/size/AG_RES_15.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_16.xlsx b/val_data/size/AG_RES_16.xlsx deleted file mode 100644 index 01764e9..0000000 Binary files a/val_data/size/AG_RES_16.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_17.xlsx b/val_data/size/AG_RES_17.xlsx deleted file mode 100644 index 02a77a5..0000000 Binary files a/val_data/size/AG_RES_17.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_2.xlsx b/val_data/size/AG_RES_2.xlsx deleted file mode 100644 index e146c24..0000000 Binary files a/val_data/size/AG_RES_2.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_3.xlsx b/val_data/size/AG_RES_3.xlsx deleted file mode 100644 index 0d00ca3..0000000 Binary files a/val_data/size/AG_RES_3.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_4.xlsx b/val_data/size/AG_RES_4.xlsx deleted file mode 100644 index 5fa3d73..0000000 Binary files a/val_data/size/AG_RES_4.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_5.xlsx b/val_data/size/AG_RES_5.xlsx deleted file mode 100644 index 4e62863..0000000 Binary files a/val_data/size/AG_RES_5.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_6.xlsx b/val_data/size/AG_RES_6.xlsx deleted file mode 100644 index d8926d2..0000000 Binary files a/val_data/size/AG_RES_6.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_7.xlsx b/val_data/size/AG_RES_7.xlsx deleted file mode 100644 index be04394..0000000 Binary files a/val_data/size/AG_RES_7.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_8.xlsx b/val_data/size/AG_RES_8.xlsx deleted file mode 100644 index 74890d3..0000000 Binary files a/val_data/size/AG_RES_8.xlsx and /dev/null differ diff --git a/val_data/size/AG_RES_9.xlsx b/val_data/size/AG_RES_9.xlsx deleted file mode 100644 index 38114e5..0000000 Binary files a/val_data/size/AG_RES_9.xlsx and /dev/null differ diff --git a/val_data/uv-vis/.~lock.UV VIS_Rasodyne _1.xlsx# b/val_data/uv-vis/.~lock.UV VIS_Rasodyne _1.xlsx# deleted file mode 100644 index b08d06d..0000000 --- a/val_data/uv-vis/.~lock.UV VIS_Rasodyne _1.xlsx# +++ /dev/null @@ -1 +0,0 @@ -Cian Hughes,cianh,cian-worklaptop,04.07.2023 11:49,file:///home/cianh/.config/libreoffice/4; \ No newline at end of file diff --git a/val_data/uv-vis/Ag_17092021/.~lock.AG1.xlsx# b/val_data/uv-vis/Ag_17092021/.~lock.AG1.xlsx# deleted file mode 100644 index b046393..0000000 --- a/val_data/uv-vis/Ag_17092021/.~lock.AG1.xlsx# +++ /dev/null @@ -1 +0,0 @@ -Cian Hughes,cianh,cian-worklaptop,04.07.2023 14:52,file:///home/cianh/.config/libreoffice/4; \ No newline at end of file diff --git a/val_data/uv-vis/Ag_17092021/AG1.xlsx b/val_data/uv-vis/Ag_17092021/AG1.xlsx deleted file mode 100644 index 1f3e459..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG1.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG10.xlsx b/val_data/uv-vis/Ag_17092021/AG10.xlsx deleted file mode 100644 index 89bc2aa..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG10.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG11.xlsx b/val_data/uv-vis/Ag_17092021/AG11.xlsx deleted file mode 100644 index 6e047d9..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG11.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG12.xlsx b/val_data/uv-vis/Ag_17092021/AG12.xlsx deleted file mode 100644 index 123f7bc..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG12.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG13.xlsx b/val_data/uv-vis/Ag_17092021/AG13.xlsx deleted file mode 100644 index b6c589c..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG13.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG14.xlsx b/val_data/uv-vis/Ag_17092021/AG14.xlsx deleted file mode 100644 index 53b6a43..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG14.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG15.xlsx b/val_data/uv-vis/Ag_17092021/AG15.xlsx deleted file mode 100644 index 06cd059..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG15.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG16.xlsx b/val_data/uv-vis/Ag_17092021/AG16.xlsx deleted file mode 100644 index 5951406..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG16.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG17.xlsx b/val_data/uv-vis/Ag_17092021/AG17.xlsx deleted file mode 100644 index cb4132c..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG17.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG2.xlsx b/val_data/uv-vis/Ag_17092021/AG2.xlsx deleted file mode 100644 index 9b9e0f6..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG2.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG3.xlsx b/val_data/uv-vis/Ag_17092021/AG3.xlsx deleted file mode 100644 index d07d239..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG3.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG4.xlsx b/val_data/uv-vis/Ag_17092021/AG4.xlsx deleted file mode 100644 index 5765756..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG4.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG5.xlsx b/val_data/uv-vis/Ag_17092021/AG5.xlsx deleted file mode 100644 index 142be6d..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG5.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG6.xlsx b/val_data/uv-vis/Ag_17092021/AG6.xlsx deleted file mode 100644 index 43b7915..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG6.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG7.xlsx b/val_data/uv-vis/Ag_17092021/AG7.xlsx deleted file mode 100644 index 3a30ed6..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG7.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG8.xlsx b/val_data/uv-vis/Ag_17092021/AG8.xlsx deleted file mode 100644 index 1ce7083..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG8.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG9.xlsx b/val_data/uv-vis/Ag_17092021/AG9.xlsx deleted file mode 100644 index 1ee328e..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG9.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG_PLAL.xlsx b/val_data/uv-vis/Ag_17092021/AG_PLAL.xlsx deleted file mode 100644 index 8c89a83..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG_PLAL.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/AG_PLAL_20TIMES DILUTED.xlsx b/val_data/uv-vis/Ag_17092021/AG_PLAL_20TIMES DILUTED.xlsx deleted file mode 100644 index cc410ad..0000000 Binary files a/val_data/uv-vis/Ag_17092021/AG_PLAL_20TIMES DILUTED.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/LASIS_Silver_16112020_1_Ag1.xlsx b/val_data/uv-vis/Ag_17092021/LASIS_Silver_16112020_1_Ag1.xlsx deleted file mode 100644 index b07d2fe..0000000 Binary files a/val_data/uv-vis/Ag_17092021/LASIS_Silver_16112020_1_Ag1.xlsx and /dev/null differ diff --git a/val_data/uv-vis/Ag_17092021/~$AG1.xlsx b/val_data/uv-vis/Ag_17092021/~$AG1.xlsx deleted file mode 100644 index 509b39a..0000000 Binary files a/val_data/uv-vis/Ag_17092021/~$AG1.xlsx and /dev/null differ diff --git a/val_data/uv-vis/UV-Vis.OPJ b/val_data/uv-vis/UV-Vis.OPJ deleted file mode 100644 index 7954310..0000000 Binary files a/val_data/uv-vis/UV-Vis.OPJ and /dev/null differ diff --git a/val_data/uv-vis/uv-vis.xlsx b/val_data/uv-vis/uv-vis.xlsx deleted file mode 100644 index 051d9f3..0000000 Binary files a/val_data/uv-vis/uv-vis.xlsx and /dev/null differ diff --git a/validation.ipynb b/validation.ipynb deleted file mode 100644 index 2251cb7..0000000 --- a/validation.ipynb +++ /dev/null @@ -1,1985 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "include(\"src/nanoconc.jl\")\n", - "using .nanoconc\n", - "using XLSX\n", - "using DataFrames\n", - "using Plots" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "function get_until_missing(sheet::XLSX.Worksheet)::Matrix{Any}\n", - " x = 1\n", - " while !ismissing(sheet[x, 1])\n", - " x += 1\n", - " end\n", - " y = 1\n", - " while !ismissing(sheet[1, y])\n", - " y += 1\n", - " end\n", - " x -= 1\n", - " y -= 1\n", - " out_matrix = Matrix{Any}(undef, x, y)\n", - " for i in 1:x\n", - " for j in 1:y\n", - " out_matrix[i, j] = sheet[i, j]\n", - " end\n", - " end\n", - " return out_matrix\n", - "end\n", - "\n", - "uv_data = XLSX.openxlsx(\"val_data/uv-vis/uv-vis.xlsx\", enable_cache=false) do f\n", - " let uv_matrix = let uv_sheet = f[1][:]\n", - " uv_sheet[.!any.(ismissing, eachrow(uv_sheet)), :]\n", - " end\n", - " DataFrame(Matrix{Float64}(uv_matrix[2:end, :]), uv_matrix[1, :])\n", - " end\n", - "end\n", - "\n", - "size_data = Dict{String,DataFrame}()\n", - "d = \"val_data/size\"\n", - "for f in readdir(d)\n", - " filepath = joinpath(d, f)\n", - " sample_name = replace(f, \"_RES_\" => \"\", \".xlsx\" => \"\")\n", - " size_data[sample_name] = XLSX.openxlsx(filepath, enable_cache=false) do f\n", - " let size_matrix = get_until_missing(f[1])\n", - " let df = DataFrame(Matrix{Float64}(size_matrix[2:end, :]), [split(x, \" \")[1] for x in size_matrix[1, :]])\n", - " df[df[!, \"Intensity\"].!=0, :]\n", - " end\n", - " end\n", - " end\n", - "end\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(137.07406889988462, 0.26239882249654195, 1.390822860797353e8, [187.9 1.07 1.212; 191.6 1.1 1.232; … ; 1610.0 0.15 11.85; 1937.0 0.24 14.08])" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "refmed = 1.333 # refractive index of the medium\n", - "wavel1, wavel2 = 250.0, 700.0 # wavelengths to calculate between\n", - "numval = 0x00001000 # number of values to calculate in spectrum\n", - "materialdata = nanoconc.loadmaterial(\"Silver\", disp=false)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "using Interpolations\n", - "using QuadGK" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dict{String, UInt128} with 17 entries:\n", - " \"AG12\" => 0x00000000000000000006d4137b65cc00\n", - " \"AG17\" => 0x0000000000000000000036257d9b0040\n", - " \"AG2\" => 0x000000000000000000000b191b649620\n", - " \"AG4\" => 0x00000000000000000d601afe5a858000\n", - " \"AG5\" => 0x00000000000000000000c18aa59a4b00\n", - " \"AG7\" => 0x00000000000000000000207f88a31ab0\n", - " \"AG8\" => 0x00000000000000008db134e7b4bd0000\n", - " \"AG9\" => 0x00000000000000000008f5c38a376800\n", - " \"AG11\" => 0x0000000000000000c9a4ee044a6d0000\n", - " \"AG14\" => 0x00000000000000036bf3062ea8ed0000\n", - " \"AG13\" => 0x000000000000000000035ab60ac8a000\n", - " \"AG15\" => 0x0000000000000000001ce235ca1de800\n", - " \"AG16\" => 0x000000000000000000010d95e2055880\n", - " \"AG1\" => 0x000000000000000000000239927da820\n", - " \"AG6\" => 0x0000000000000000002f64a8c94dc000\n", - " \"AG10\" => 0x0000000000000000000004b9d522e5b4\n", - " \"AG3\" => 0x000000000000000000379e982447f800" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ppml_data = Dict{String,UInt128}(\n", - " \"AG1\" => 2446294100000,\n", - " \"AG2\" => 12202461664800,\n", - " \"AG3\" => 15655500000000000,\n", - " \"AG4\" => 963800000000000000,\n", - " \"AG5\" => 212801228000000,\n", - " \"AG6\" => 13340000000000000,\n", - " \"AG7\" => 35732125326000,\n", - " \"AG8\" => 0x8db134e7b4bd0000,\n", - " \"AG9\" => 2522020000000000,\n", - " \"AG10\" => 5196191294900,\n", - " \"AG11\" => 0xc9a4ee044a6d0000,\n", - " \"AG12\" => 1922030000000000,\n", - " \"AG13\" => 944162841600000,\n", - " \"AG14\" => 0x00000000000000036bf3062ea8ed0000,\n", - " \"AG15\" => 8130020000000000,\n", - " \"AG16\" => 296412370000000,\n", - " \"AG17\" => 59534649000000,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Main.miemfp" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "include(\"src/miemfp.jl\")" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "struct q_to_sigma\n", - " weighted_geometric_cross_section::Vector{Float64}\n", - " total_weights::Float64\n", - "\n", - " function q_to_sigma(x::Matrix{Float64})::q_to_sigma\n", - " radii = x[:, 1] .* 1e-9\n", - " weights = x[:, 2]\n", - " new(weights .* (π .* (radii .^ 2)), sum(weights))\n", - " end\n", - "end\n", - "\n", - "function (p::q_to_sigma)(q::Matrix{Float64})\n", - " # Calculate the extinction cross-section\n", - " test = sum([x .* q[:, 2] for x in p.weighted_geometric_cross_section]) ./ p.total_weights\n", - " q[:, 2] = test\n", - "end\n", - "\n", - "function (p::q_to_sigma)(q::Vector{Matrix{Float64}})\n", - " for x in q\n", - " p(x)\n", - " end\n", - "end\n", - "\n", - "function sigmapredict(refmed::Float64, wavel1::Float64, wavel2::Float64,\n", - " numval::UInt32, particledata::Array{Float64,2},\n", - " materialdata::Tuple{Float64,Float64,Float64,Array{Float64,2}}\n", - ")::Array{Float64,2}\n", - " # normalise relative amounts of particles to a total of 1\n", - " particledata[:, 2] = particledata[:, 2] ./ sum(particledata[:, 2])\n", - " # convert particle diameters in particledata to radii\n", - " particledata[:, 1] = particledata[:, 1] ./ 2\n", - " # define a wrapper function for later vectorised calculations\n", - " spec(x) = miemfp.qbare(wavel1, wavel2, numval, 0x00000002, refmed, x, materialdata...)\n", - " # note: the UInt32 above for \"scangles\" must be at least 2 for accurate Qext. Higher \"scangles\"\n", - " ##\tdoes not increase Qext precision but will be important if modding to also account for Qsca\n", - " # perform vectorised spectrum prediction on particledata array\n", - " spectra = spec.(particledata[:, 1])::Vector{Matrix{Float64}}\n", - " q_to_sigma(particledata)(spectra)\n", - " # for each spectrum, multiply all values by their relative amounts from the particledata array\n", - " @inbounds @simd for i in eachindex(spectra)\n", - " spectra[i][:, 2] = particledata[i, 2] .* spectra[i][:, 2]\n", - " end\n", - " # prep an array for final predicted spectrum\n", - " data::Array{Float64,2} = Array{Float64,2}(undef, numval, 2)\n", - " data[:, 1] = spectra[1][:, 1]\n", - " data[:, 2] = zeros(numval)\n", - " # for each weighted spectrum, add it to the total spectrum in the \"data\" array\n", - " @inbounds @simd for x in spectra\n", - " data[:, 2] = data[:, 2] .+ x[:, 2]\n", - " end\n", - " return data\n", - "end\n", - "\n", - "pred_uv_data = Dict{String,Matrix}()\n", - "for (k, v) in size_data\n", - " pred_uv_data[k] = sigmapredict(refmed, wavel1, wavel2, numval, Matrix{Float64}(v), materialdata)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BY AREA: AG4: 99891546128110(0.010364343860563395%)\n", - "BY INTENSITY: AG4: 354902794327222 (0.03682328225017867%)\n", - "BY AREA: AG14: 167496787156826(0.0002653675088196005%)\n", - "BY INTENSITY: AG14: 715736683242009 (0.0011339516645468687%)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BY AREA: AG13: 19900844840290(2.107776748189494%)\n", - "BY INTENSITY: AG13: 26380741605331 (2.79408810037743%)\n", - "BY AREA: AG16: 48126629765135(16.236376965352356%)\n", - "BY INTENSITY: AG16: 140653922687161 (47.45210960229527%)\n", - "BY AREA: AG10: 13841201270503(266.37204992987796%)\n", - "BY INTENSITY: AG10: 18299970127394 (352.18045466022784%)\n", - "BY AREA: AG12: 21738950932114(1.13104118729229%)\n", - "BY INTENSITY: AG12: 48373903507571 (2.516813135464639%)\n", - "BY AREA: AG17: 30602424501936(51.40271256480575%)\n", - "BY INTENSITY: AG17: 71888493699625 (120.75068033007972%)\n", - "BY AREA: AG2: 12321663398706(100.97686628469285%)\n", - "BY INTENSITY: AG2: 16211047801255 (132.85063495031025%)\n", - "BY AREA: AG11: 212854622964578(0.001464932023156077%)\n", - "BY INTENSITY: AG11: 903027163331146 (0.0062149150951902685%)\n", - "BY AREA: AG5: 21058317281309(9.89576868480712%)\n", - "BY INTENSITY: AG5: 31971097293818 (15.023925187977769%)\n", - "BY AREA: AG7: 12621607262196(35.32285624502738%)\n", - "BY INTENSITY: AG7: 19770659427437 (55.330208452647355%)\n", - "BY AREA: AG8: 158205761013457(0.001549517737644045%)\n", - "BY INTENSITY: AG8: 623770884665734 (0.006109411211221685%)\n", - "BY AREA: AG9: 58591842160292(2.3232108452863973%)\n", - "BY INTENSITY: AG9: 263474137616097 (10.446948779791477%)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BY AREA: AG15: 32735084595125(0.402644576460144%)\n", - "BY INTENSITY: AG15: 68395561601672 (0.8412717508895672%)\n", - "BY AREA: AG1: 8341980646355(341.00481403094585%)\n", - "BY INTENSITY: AG1: 8659178836637 (353.971292194058%)\n", - "BY AREA: AG6: 68954423535853(0.5168997266555697%)\n", - "BY INTENSITY: AG6: 189277317427368 (1.4188704454825187%)\n", - "BY AREA: AG3: 18955584839239(0.12107939599015681%)\n", - "BY INTENSITY: AG3: 25950908683000 (0.16576224766376033%)\n" - ] - } - ], - "source": [ - "counts = Dict{String,UInt128}()\n", - "for (k, v) in pred_uv_data\n", - " measured_area, _ = quadgk(LinearInterpolation(uv_data[!, \"Wavelength\"], uv_data[!, k]), wavel1, wavel2)\n", - " pred_interp = LinearInterpolation(pred_uv_data[k][:, 1], pred_uv_data[k][:, 2])\n", - " pred_area, _ = quadgk(pred_interp, wavel1, wavel2)\n", - " actual = ppml_data[k]\n", - " predicted = UInt128(round(measured_area / pred_area))\n", - " counts[k] = predicted\n", - " println(\"BY AREA: \", k, \": \", predicted, \"(\", (predicted / actual) * 100.0, \"%)\")\n", - " pred_intensity = pred_interp(uv_data[!, \"Wavelength\"])\n", - " rel_intensity = uv_data[!, k] ./ pred_intensity\n", - " predicted = UInt128(round(sum(rel_intensity) / length(rel_intensity)))\n", - " println(\"BY INTENSITY: \", k, \": \", predicted, \" (\", (predicted / actual) * 100.0, \"%)\")\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "sample = \"AG3\"\n", - "plot(uv_data[!, \"Wavelength\"], uv_data[!, sample], label=\"Measured\")\n", - "plot!(pred_uv_data[sample][:, 1], counts[sample] * pred_uv_data[sample][:, 2], label=\"Predicted\")" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Material:\t\tSilver\n", - "- Valence:\t\t1.0\n", - "- Atomic Mass:\t\t107.8682amu\n", - "- Density:\t\t10.49g/cm^3\n", - "- Resistivity:\t\t1.59e-8g/cm^3\n", - "Derived values:\n", - "- Plasma frequency:\t137.07406889988462e14Hz\n", - "- Collision frequency:\t0.26239882249654195e14Hz\n", - "- Fermi Velocity:\t1.390822860797353e8cm/s\n", - "Wavelength Range:\t187.9nm-1937.0nm\n", - "Number of datapoints:\t49\n", - "Description:\n", - "\"Refractive index data from Johnson & Christy (1972)\"\n" - ] - } - ], - "source": [ - "dispinfo(\"Silver\")" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Loading material:\n", - "\n", - "Material:\t\tGold\n", - "- Valence:\t\t1.0\n", - "- Atomic Mass:\t\t196.966569amu\n", - "- Density:\t\t19.3g/cm^3\n", - "- Resistivity:\t\t2.214e-8g/cm^3\n", - "Derived values:\n", - "- Plasma frequency:\t217.6191453622e14Hz\n", - "- Collision frequency:\t0.3681502558757682e14Hz\n", - "- Fermi Velocity:\t1.3943315831262603e8cm/s\n", - "Wavelength Range:\t187.9nm-1937.0nm\n", - "Number of datapoints:\t49\n", - "Description:\n", - "\"Refind data from Johnson & Christy, 1972\"\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "49×3 Matrix{Float64}:\n", - " 187.9 1.28 1.188\n", - " 191.6 1.32 1.203\n", - " 195.3 1.34 1.226\n", - " 199.3 1.33 1.251\n", - " 203.3 1.33 1.277\n", - " 207.3 1.3 1.304\n", - " 211.9 1.3 1.35\n", - " 216.4 1.3 1.387\n", - " 221.4 1.3 1.427\n", - " 226.2 1.31 1.46\n", - " ⋮ \n", - " 756.0 0.14 4.542\n", - " 821.1 0.16 5.083\n", - " 892.0 0.17 5.663\n", - " 984.0 0.22 6.35\n", - " 1088.0 0.27 7.15\n", - " 1216.0 0.35 8.145\n", - " 1393.0 0.43 9.519\n", - " 1610.0 0.56 11.21\n", - " 1937.0 0.92 13.78" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "loadmaterial(\"Gold\")[4]" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "49×3 Matrix{Float64}:\n", - " 187.9 1.07 1.212\n", - " 191.6 1.1 1.232\n", - " 195.3 1.12 1.255\n", - " 199.3 1.14 1.277\n", - " 203.3 1.15 1.296\n", - " 207.3 1.18 1.312\n", - " 211.9 1.2 1.325\n", - " 216.4 1.22 1.336\n", - " 221.4 1.25 1.342\n", - " 226.2 1.26 1.344\n", - " ⋮ \n", - " 756.0 0.03 5.242\n", - " 821.1 0.04 5.727\n", - " 892.0 0.04 6.312\n", - " 984.0 0.04 6.992\n", - " 1088.0 0.04 7.795\n", - " 1216.0 0.09 8.828\n", - " 1393.0 0.13 10.1\n", - " 1610.0 0.15 11.85\n", - " 1937.0 0.24 14.08" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "materialdata[4]" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(materialdata[4][:,1], materialdata[4][:,2])\n", - "plot!(materialdata[4][:,1], materialdata[4][:,3])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.9.1", - "language": "julia", - "name": "julia-1.9" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.9.1" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -}