package uk.ac.diamond.scisoft.xpdf.test;
import uk.ac.diamond.scisoft.xpdf.XPDFCoordinates;
import uk.ac.diamond.scisoft.xpdf.XPDFElectronCrossSections;
import org.eclipse.january.dataset.Dataset;
import org.eclipse.january.dataset.DatasetFactory;
import org.eclipse.january.dataset.DoubleDataset;
import org.eclipse.january.dataset.Maths;
import junit.framework.TestCase;
public class XPDFEXSTest extends TestCase {
// static double re2 = 7.940787684842103e-30*1e28;
static double re2 = 1.0;
public void testGetThomsonCrossSection() {
// 1D testing
Dataset twoTheta = DatasetFactory.createRange(DoubleDataset.class, 0, Math.toRadians(45.0), Math.toRadians(0.05));
XPDFCoordinates coords = new XPDFCoordinates();
coords.setTwoTheta(twoTheta);
XPDFElectronCrossSections xECS = new XPDFElectronCrossSections();
xECS.setCoordinates(coords);
xECS.setBeamEnergy(76.6);
Dataset oldThomson = Maths.multiply(xECS.getThomsonCrossSection(), re2);
Dataset newThomson = XPDFElectronCrossSections.getThomsonCrossSection(coords);
Dataset ratioExcess = Maths.subtract(Maths.divide(newThomson, oldThomson), 1);
double rms = Math.sqrt((double) Maths.square(ratioExcess).mean());
double maxError = 1e-2;
assertTrue("Ratio of old and new Thomson cross-sections too large: " + rms, rms < maxError);
}
public void testGetKleinNishinaCrossSection() {
// 1D testing
Dataset twoTheta = DatasetFactory.createRange(DoubleDataset.class, 0, Math.toRadians(39.02), Math.toRadians(0.02));
XPDFCoordinates coords = new XPDFCoordinates();
coords.setTwoTheta(twoTheta);
XPDFElectronCrossSections xECS = new XPDFElectronCrossSections();
xECS.setCoordinates(coords);
xECS.setBeamEnergy(76.6);
// Dataset oldKN = Maths.multiply(xECS.getKleinNishinaCrossSection(), re2);
Dataset oldKN = testKN();
Dataset newKN = XPDFElectronCrossSections.getKleinNishinaCrossSection(coords, 76.6);
Dataset ratioExcess = Maths.subtract(Maths.divide(newKN, oldKN), 1);
double rms = Math.sqrt((double) Maths.square(ratioExcess).mean());
double maxError = 1e-2;
assertTrue("Ratio of old and new Klein-Nishina cross-sections too large: " + rms, rms < maxError);
}
// Values from DSK's python version for 0 to 39° in steps of 0.02° at 76.6 keV
private Dataset testKN() {
return DatasetFactory.createFromObject(new double[] {
1. , 0.99999992, 0.99999968, 0.99999929, 0.99999873,
0.99999802, 0.99999715, 0.99999612, 0.99999493, 0.99999359,
0.99999208, 0.99999042, 0.9999886 , 0.99998662, 0.99998448,
0.99998218, 0.99997973, 0.99997711, 0.99997434, 0.99997141,
0.99996833, 0.99996508, 0.99996167, 0.99995811, 0.99995439,
0.99995051, 0.99994647, 0.99994227, 0.99993792, 0.99993341,
0.99992873, 0.9999239 , 0.99991892, 0.99991377, 0.99990846,
0.999903 , 0.99989738, 0.9998916 , 0.99988566, 0.99987956,
0.99987331, 0.9998669 , 0.99986032, 0.99985359, 0.99984671,
0.99983966, 0.99983246, 0.99982509, 0.99981757, 0.99980989,
0.99980205, 0.99979406, 0.9997859 , 0.99977759, 0.99976912,
0.99976049, 0.9997517 , 0.99974276, 0.99973366, 0.99972439,
0.99971497, 0.9997054 , 0.99969566, 0.99968576, 0.99967571,
0.9996655 , 0.99965513, 0.9996446 , 0.99963392, 0.99962307,
0.99961207, 0.99960091, 0.9995896 , 0.99957812, 0.99956648,
0.99955469, 0.99954274, 0.99953063, 0.99951837, 0.99950594,
0.99949336, 0.99948062, 0.99946772, 0.99945466, 0.99944145,
0.99942807, 0.99941454, 0.99940085, 0.99938701, 0.999373 ,
0.99935884, 0.99934452, 0.99933004, 0.9993154 , 0.99930061,
0.99928565, 0.99927054, 0.99925527, 0.99923985, 0.99922426,
0.99920852, 0.99919262, 0.99917656, 0.99916034, 0.99914397,
0.99912744, 0.99911075, 0.9990939 , 0.9990769 , 0.99905973,
0.99904241, 0.99902493, 0.9990073 , 0.9989895 , 0.99897155,
0.99895344, 0.99893517, 0.99891675, 0.99889817, 0.99887942,
0.99886053, 0.99884147, 0.99882226, 0.99880288, 0.99878336,
0.99876367, 0.99874383, 0.99872382, 0.99870366, 0.99868335,
0.99866287, 0.99864224, 0.99862145, 0.9986005 , 0.9985794 ,
0.99855814, 0.99853672, 0.99851514, 0.9984934 , 0.99847151,
0.99844946, 0.99842726, 0.99840489, 0.99838237, 0.99835969,
0.99833685, 0.99831386, 0.99829071, 0.9982674 , 0.99824393,
0.99822031, 0.99819653, 0.99817259, 0.9981485 , 0.99812425,
0.99809984, 0.99807527, 0.99805055, 0.99802567, 0.99800063,
0.99797543, 0.99795008, 0.99792457, 0.9978989 , 0.99787308,
0.9978471 , 0.99782096, 0.99779467, 0.99776821, 0.99774161,
0.99771484, 0.99768792, 0.99766084, 0.9976336 , 0.99760621,
0.99757866, 0.99755095, 0.99752308, 0.99749506, 0.99746689,
0.99743855, 0.99741006, 0.99738141, 0.99735261, 0.99732364,
0.99729452, 0.99726525, 0.99723582, 0.99720623, 0.99717648,
0.99714658, 0.99711652, 0.99708631, 0.99705594, 0.99702541,
0.99699472, 0.99696388, 0.99693288, 0.99690173, 0.99687042,
0.99683895, 0.99680733, 0.99677555, 0.99674361, 0.99671152,
0.99667927, 0.99664686, 0.9966143 , 0.99658158, 0.99654871,
0.99651568, 0.99648249, 0.99644914, 0.99641565, 0.99638199,
0.99634818, 0.99631421, 0.99628009, 0.99624581, 0.99621137,
0.99617678, 0.99614203, 0.99610712, 0.99607206, 0.99603685,
0.99600148, 0.99596595, 0.99593026, 0.99589442, 0.99585843,
0.99582228, 0.99578597, 0.99574951, 0.99571289, 0.99567611,
0.99563918, 0.9956021 , 0.99556485, 0.99552746, 0.9954899 ,
0.9954522 , 0.99541433, 0.99537631, 0.99533814, 0.99529981,
0.99526132, 0.99522268, 0.99518388, 0.99514493, 0.99510582,
0.99506656, 0.99502714, 0.99498756, 0.99494784, 0.99490795,
0.99486791, 0.99482772, 0.99478737, 0.99474686, 0.9947062 ,
0.99466538, 0.99462441, 0.99458329, 0.99454201, 0.99450057,
0.99445898, 0.99441723, 0.99437533, 0.99433328, 0.99429107,
0.9942487 , 0.99420618, 0.99416351, 0.99412068, 0.99407769,
0.99403455, 0.99399126, 0.99394781, 0.99390421, 0.99386045,
0.99381653, 0.99377247, 0.99372825, 0.99368387, 0.99363934,
0.99359465, 0.99354981, 0.99350482, 0.99345967, 0.99341437,
0.99336891, 0.9933233 , 0.99327753, 0.99323161, 0.99318554,
0.99313931, 0.99309293, 0.99304639, 0.9929997 , 0.99295285,
0.99290586, 0.9928587 , 0.9928114 , 0.99276393, 0.99271632,
0.99266855, 0.99262063, 0.99257255, 0.99252432, 0.99247594,
0.9924274 , 0.99237871, 0.99232986, 0.99228086, 0.99223171,
0.99218241, 0.99213295, 0.99208333, 0.99203357, 0.99198365,
0.99193357, 0.99188334, 0.99183296, 0.99178243, 0.99173174,
0.9916809 , 0.99162991, 0.99157876, 0.99152746, 0.99147601,
0.9914244 , 0.99137264, 0.99132073, 0.99126866, 0.99121644,
0.99116407, 0.99111155, 0.99105887, 0.99100604, 0.99095306,
0.99089992, 0.99084663, 0.99079319, 0.99073959, 0.99068585,
0.99063195, 0.9905779 , 0.99052369, 0.99046933, 0.99041482,
0.99036016, 0.99030535, 0.99025038, 0.99019526, 0.99013999,
0.99008456, 0.99002898, 0.98997326, 0.98991737, 0.98986134,
0.98980515, 0.98974882, 0.98969233, 0.98963569, 0.98957889,
0.98952195, 0.98946485, 0.9894076 , 0.9893502 , 0.98929264,
0.98923494, 0.98917708, 0.98911907, 0.98906091, 0.9890026 ,
0.98894414, 0.98888552, 0.98882675, 0.98876783, 0.98870876,
0.98864954, 0.98859017, 0.98853065, 0.98847097, 0.98841114,
0.98835117, 0.98829104, 0.98823076, 0.98817033, 0.98810974,
0.98804901, 0.98798812, 0.98792709, 0.9878659 , 0.98780456,
0.98774307, 0.98768144, 0.98761964, 0.9875577 , 0.98749561,
0.98743337, 0.98737098, 0.98730843, 0.98724574, 0.98718289,
0.9871199 , 0.98705675, 0.98699346, 0.98693001, 0.98686641,
0.98680266, 0.98673877, 0.98667472, 0.98661052, 0.98654617,
0.98648167, 0.98641702, 0.98635223, 0.98628728, 0.98622218,
0.98615693, 0.98609153, 0.98602598, 0.98596028, 0.98589444,
0.98582844, 0.98576229, 0.985696 , 0.98562955, 0.98556295,
0.98549621, 0.98542931, 0.98536227, 0.98529507, 0.98522773,
0.98516024, 0.9850926 , 0.9850248 , 0.98495686, 0.98488877,
0.98482054, 0.98475215, 0.98468361, 0.98461493, 0.98454609,
0.98447711, 0.98440798, 0.98433869, 0.98426926, 0.98419969,
0.98412996, 0.98406008, 0.98399006, 0.98391988, 0.98384956,
0.98377909, 0.98370847, 0.98363771, 0.98356679, 0.98349573,
0.98342452, 0.98335316, 0.98328165, 0.98320999, 0.98313819,
0.98306623, 0.98299413, 0.98292188, 0.98284949, 0.98277694,
0.98270425, 0.98263141, 0.98255842, 0.98248529, 0.982412 ,
0.98233857, 0.982265 , 0.98219127, 0.9821174 , 0.98204338,
0.98196921, 0.98189489, 0.98182043, 0.98174582, 0.98167106,
0.98159616, 0.98152111, 0.98144591, 0.98137056, 0.98129507,
0.98121943, 0.98114365, 0.98106771, 0.98099163, 0.98091541,
0.98083903, 0.98076251, 0.98068585, 0.98060903, 0.98053207,
0.98045497, 0.98037772, 0.98030032, 0.98022277, 0.98014508,
0.98006724, 0.97998926, 0.97991113, 0.97983285, 0.97975443,
0.97967586, 0.97959715, 0.97951829, 0.97943928, 0.97936013,
0.97928084, 0.97920139, 0.9791218 , 0.97904207, 0.97896219,
0.97888217, 0.978802 , 0.97872168, 0.97864122, 0.97856061,
0.97847986, 0.97839896, 0.97831792, 0.97823673, 0.9781554 ,
0.97807392, 0.9779923 , 0.97791053, 0.97782862, 0.97774656,
0.97766436, 0.97758201, 0.97749952, 0.97741689, 0.97733411,
0.97725118, 0.97716811, 0.9770849 , 0.97700154, 0.97691804,
0.97683439, 0.9767506 , 0.97666667, 0.97658259, 0.97649836,
0.976414 , 0.97632948, 0.97624483, 0.97616003, 0.97607509,
0.97599 , 0.97590477, 0.9758194 , 0.97573388, 0.97564822,
0.97556241, 0.97547647, 0.97539038, 0.97530414, 0.97521776,
0.97513124, 0.97504458, 0.97495777, 0.97487082, 0.97478373,
0.97469649, 0.97460911, 0.97452159, 0.97443392, 0.97434611,
0.97425816, 0.97417007, 0.97408183, 0.97399346, 0.97390494,
0.97381627, 0.97372747, 0.97363852, 0.97354943, 0.9734602 ,
0.97337082, 0.9732813 , 0.97319165, 0.97310184, 0.9730119 ,
0.97292182, 0.97283159, 0.97274122, 0.97265071, 0.97256006,
0.97246927, 0.97237833, 0.97228726, 0.97219604, 0.97210468,
0.97201318, 0.97192154, 0.97182975, 0.97173783, 0.97164576,
0.97155356, 0.97146121, 0.97136872, 0.97127609, 0.97118332,
0.97109041, 0.97099736, 0.97090417, 0.97081083, 0.97071736,
0.97062375, 0.97052999, 0.9704361 , 0.97034206, 0.97024789,
0.97015357, 0.97005912, 0.96996452, 0.96986978, 0.96977491,
0.96967989, 0.96958474, 0.96948944, 0.96939401, 0.96929843,
0.96920272, 0.96910686, 0.96901087, 0.96891473, 0.96881846,
0.96872205, 0.9686255 , 0.96852881, 0.96843198, 0.96833501,
0.9682379 , 0.96814065, 0.96804327, 0.96794574, 0.96784808,
0.96775028, 0.96765234, 0.96755426, 0.96745604, 0.96735768,
0.96725918, 0.96716055, 0.96706178, 0.96696287, 0.96686382,
0.96676463, 0.96666531, 0.96656584, 0.96646624, 0.9663665 ,
0.96626663, 0.96616661, 0.96606646, 0.96596617, 0.96586574,
0.96576518, 0.96566447, 0.96556363, 0.96546266, 0.96536154,
0.96526029, 0.9651589 , 0.96505737, 0.96495571, 0.96485391,
0.96475197, 0.9646499 , 0.96454768, 0.96444534, 0.96434285,
0.96424023, 0.96413747, 0.96403458, 0.96393154, 0.96382838,
0.96372507, 0.96362163, 0.96351806, 0.96341434, 0.96331049,
0.96320651, 0.96310239, 0.96299813, 0.96289374, 0.96278921,
0.96268455, 0.96257975, 0.96247481, 0.96236974, 0.96226454,
0.96215919, 0.96205372, 0.9619481 , 0.96184236, 0.96173647,
0.96163046, 0.9615243 , 0.96141802, 0.96131159, 0.96120504,
0.96109834, 0.96099152, 0.96088455, 0.96077746, 0.96067023,
0.96056286, 0.96045536, 0.96034773, 0.96023996, 0.96013206,
0.96002402, 0.95991585, 0.95980755, 0.95969911, 0.95959054,
0.95948183, 0.95937299, 0.95926402, 0.95915491, 0.95904567,
0.9589363 , 0.95882679, 0.95871715, 0.95860737, 0.95849747,
0.95838742, 0.95827725, 0.95816694, 0.95805651, 0.95794593,
0.95783523, 0.95772439, 0.95761342, 0.95750232, 0.95739108,
0.95727971, 0.95716821, 0.95705658, 0.95694481, 0.95683292,
0.95672089, 0.95660872, 0.95649643, 0.956384 , 0.95627145,
0.95615876, 0.95604594, 0.95593298, 0.9558199 , 0.95570668,
0.95559334, 0.95547986, 0.95536625, 0.95525251, 0.95513863,
0.95502463, 0.95491049, 0.95479623, 0.95468183, 0.9545673 ,
0.95445265, 0.95433786, 0.95422294, 0.95410789, 0.95399271,
0.95387739, 0.95376195, 0.95364638, 0.95353068, 0.95341485,
0.95329888, 0.95318279, 0.95306657, 0.95295022, 0.95283373,
0.95271712, 0.95260038, 0.95248351, 0.95236651, 0.95224938,
0.95213212, 0.95201473, 0.95189721, 0.95177956, 0.95166179,
0.95154388, 0.95142585, 0.95130768, 0.95118939, 0.95107097,
0.95095242, 0.95083374, 0.95071494, 0.950596 , 0.95047694,
0.95035774, 0.95023842, 0.95011897, 0.9499994 , 0.94987969,
0.94975986, 0.9496399 , 0.94951981, 0.94939959, 0.94927925,
0.94915878, 0.94903818, 0.94891745, 0.9487966 , 0.94867562,
0.94855451, 0.94843327, 0.94831191, 0.94819042, 0.9480688 ,
0.94794706, 0.94782519, 0.94770319, 0.94758106, 0.94745881,
0.94733643, 0.94721393, 0.9470913 , 0.94696854, 0.94684566,
0.94672265, 0.94659952, 0.94647626, 0.94635287, 0.94622935,
0.94610572, 0.94598195, 0.94585806, 0.94573404, 0.9456099 ,
0.94548564, 0.94536124, 0.94523673, 0.94511208, 0.94498732,
0.94486242, 0.9447374 , 0.94461226, 0.94448699, 0.9443616 ,
0.94423608, 0.94411044, 0.94398468, 0.94385878, 0.94373277,
0.94360663, 0.94348037, 0.94335398, 0.94322747, 0.94310083,
0.94297407, 0.94284718, 0.94272018, 0.94259305, 0.94246579,
0.94233841, 0.94221091, 0.94208328, 0.94195553, 0.94182766,
0.94169967, 0.94157155, 0.94144331, 0.94131494, 0.94118645,
0.94105784, 0.94092911, 0.94080025, 0.94067128, 0.94054217,
0.94041295, 0.94028361, 0.94015414, 0.94002455, 0.93989483,
0.939765 , 0.93963504, 0.93950497, 0.93937477, 0.93924444,
0.939114 , 0.93898344, 0.93885275, 0.93872194, 0.93859101,
0.93845996, 0.93832879, 0.9381975 , 0.93806608, 0.93793455,
0.93780289, 0.93767111, 0.93753922, 0.9374072 , 0.93727506,
0.9371428 , 0.93701042, 0.93687792, 0.9367453 , 0.93661256,
0.9364797 , 0.93634672, 0.93621362, 0.9360804 , 0.93594706,
0.9358136 , 0.93568002, 0.93554632, 0.9354125 , 0.93527856,
0.93514451, 0.93501033, 0.93487603, 0.93474162, 0.93460709,
0.93447243, 0.93433766, 0.93420277, 0.93406776, 0.93393263,
0.93379739, 0.93366202, 0.93352654, 0.93339094, 0.93325522,
0.93311938, 0.93298343, 0.93284735, 0.93271116, 0.93257485,
0.93243843, 0.93230188, 0.93216522, 0.93202844, 0.93189154,
0.93175453, 0.9316174 , 0.93148015, 0.93134278, 0.9312053 ,
0.9310677 , 0.93092998, 0.93079215, 0.9306542 , 0.93051613,
0.93037795, 0.93023965, 0.93010123, 0.9299627 , 0.92982405,
0.92968529, 0.92954641, 0.92940741, 0.9292683 , 0.92912907,
0.92898973, 0.92885027, 0.92871069, 0.928571 , 0.9284312 ,
0.92829128, 0.92815124, 0.92801109, 0.92787082, 0.92773044,
0.92758995, 0.92744933, 0.92730861, 0.92716777, 0.92702681,
0.92688574, 0.92674456, 0.92660326, 0.92646185, 0.92632032,
0.92617868, 0.92603693, 0.92589506, 0.92575308, 0.92561098,
0.92546877, 0.92532645, 0.92518401, 0.92504146, 0.9248988 ,
0.92475603, 0.92461314, 0.92447013, 0.92432702, 0.92418379,
0.92404045, 0.923897 , 0.92375343, 0.92360975, 0.92346596,
0.92332206, 0.92317804, 0.92303391, 0.92288967, 0.92274532,
0.92260085, 0.92245628, 0.92231159, 0.92216679, 0.92202188,
0.92187686, 0.92173172, 0.92158648, 0.92144112, 0.92129565,
0.92115007, 0.92100438, 0.92085858, 0.92071267, 0.92056665,
0.92042051, 0.92027427, 0.92012791, 0.91998145, 0.91983487,
0.91968819, 0.91954139, 0.91939449, 0.91924747, 0.91910035,
0.91895311, 0.91880577, 0.91865831, 0.91851075, 0.91836307,
0.91821529, 0.9180674 , 0.91791939, 0.91777128, 0.91762306,
0.91747474, 0.9173263 , 0.91717775, 0.9170291 , 0.91688033,
0.91673146, 0.91658248, 0.91643339, 0.91628419, 0.91613489,
0.91598547, 0.91583595, 0.91568632, 0.91553658, 0.91538674,
0.91523679, 0.91508673, 0.91493656, 0.91478628, 0.9146359 ,
0.91448541, 0.91433481, 0.91418411, 0.9140333 , 0.91388238,
0.91373136, 0.91358023, 0.91342899, 0.91327764, 0.91312619,
0.91297464, 0.91282297, 0.9126712 , 0.91251933, 0.91236735,
0.91221526, 0.91206307, 0.91191077, 0.91175836, 0.91160585,
0.91145324, 0.91130052, 0.91114769, 0.91099476, 0.91084172,
0.91068858, 0.91053534, 0.91038198, 0.91022853, 0.91007497,
0.9099213 , 0.90976753, 0.90961366, 0.90945968, 0.9093056 ,
0.90915141, 0.90899712, 0.90884273, 0.90868823, 0.90853363,
0.90837892, 0.90822411, 0.9080692 , 0.90791418, 0.90775906,
0.90760384, 0.90744851, 0.90729308, 0.90713755, 0.90698192,
0.90682618, 0.90667034, 0.9065144 , 0.90635835, 0.9062022 ,
0.90604595, 0.9058896 , 0.90573315, 0.90557659, 0.90541993,
0.90526317, 0.90510631, 0.90494934, 0.90479228, 0.90463511,
0.90447784, 0.90432047, 0.904163 , 0.90400543, 0.90384776,
0.90368998, 0.90353211, 0.90337413, 0.90321606, 0.90305788,
0.9028996 , 0.90274123, 0.90258275, 0.90242417, 0.90226549,
0.90210671, 0.90194783, 0.90178886, 0.90162978, 0.9014706 ,
0.90131132, 0.90115195, 0.90099247, 0.90083289, 0.90067322,
0.90051344, 0.90035357, 0.9001936 , 0.90003353, 0.89987336,
0.89971309, 0.89955272, 0.89939226, 0.8992317 , 0.89907103,
0.89891027, 0.89874942, 0.89858846, 0.89842741, 0.89826625,
0.898105 , 0.89794366, 0.89778221, 0.89762067, 0.89745903,
0.89729729, 0.89713546, 0.89697353, 0.8968115 , 0.89664937,
0.89648715, 0.89632483, 0.89616242, 0.89599991, 0.8958373 ,
0.89567459, 0.89551179, 0.89534889, 0.8951859 , 0.89502281,
0.89485963, 0.89469635, 0.89453297, 0.8943695 , 0.89420593,
0.89404227, 0.89387851, 0.89371466, 0.89355071, 0.89338666,
0.89322253, 0.89305829, 0.89289396, 0.89272954, 0.89256502,
0.89240041, 0.89223571, 0.89207091, 0.89190601, 0.89174102,
0.89157594, 0.89141076, 0.89124549, 0.89108013, 0.89091467,
0.89074912, 0.89058347, 0.89041774, 0.8902519 , 0.89008598,
0.88991996, 0.88975385, 0.88958765, 0.88942135, 0.88925496,
0.88908848, 0.88892191, 0.88875524, 0.88858849, 0.88842163,
0.88825469, 0.88808766, 0.88792053, 0.88775331, 0.887586 ,
0.8874186 , 0.88725111, 0.88708352, 0.88691585, 0.88674808,
0.88658022, 0.88641227, 0.88624423, 0.8860761 , 0.88590788,
0.88573957, 0.88557116, 0.88540267, 0.88523408, 0.88506541,
0.88489665, 0.88472779, 0.88455885, 0.88438981, 0.88422069,
0.88405147, 0.88388217, 0.88371278, 0.88354329, 0.88337372,
0.88320406, 0.88303431, 0.88286447, 0.88269454, 0.88252453,
0.88235442, 0.88218423, 0.88201394, 0.88184357, 0.88167311,
0.88150257, 0.88133193, 0.8811612 , 0.88099039, 0.88081949,
0.88064851, 0.88047743, 0.88030627, 0.88013502, 0.87996368,
0.87979225, 0.87962074, 0.87944914, 0.87927746, 0.87910568,
0.87893382, 0.87876188, 0.87858984, 0.87841772, 0.87824552,
0.87807322, 0.87790085, 0.87772838, 0.87755583, 0.87738319,
0.87721047, 0.87703766, 0.87686477, 0.87669179, 0.87651872,
0.87634557, 0.87617234, 0.87599902, 0.87582561, 0.87565212,
0.87547855, 0.87530489, 0.87513114, 0.87495731, 0.8747834 ,
0.8746094 , 0.87443532, 0.87426115, 0.8740869 , 0.87391257,
0.87373815, 0.87356365, 0.87338906, 0.87321439, 0.87303964,
0.8728648 , 0.87268988, 0.87251488, 0.8723398 , 0.87216463,
0.87198938, 0.87181404, 0.87163862, 0.87146312, 0.87128754,
0.87111188, 0.87093613, 0.8707603 , 0.87058439, 0.8704084 ,
0.87023232, 0.87005617, 0.86987993, 0.86970361, 0.86952721,
0.86935073, 0.86917416, 0.86899752, 0.86882079, 0.86864398,
0.8684671 , 0.86829013, 0.86811308, 0.86793595, 0.86775874,
0.86758145, 0.86740408, 0.86722662, 0.86704909, 0.86687148,
0.86669379, 0.86651602, 0.86633817, 0.86616024, 0.86598223,
0.86580414, 0.86562597, 0.86544772, 0.8652694 , 0.86509099,
0.86491251, 0.86473394, 0.8645553 , 0.86437658, 0.86419778,
0.8640189 , 0.86383995, 0.86366091, 0.8634818 , 0.86330261,
0.86312334, 0.862944 , 0.86276457, 0.86258507, 0.86240549,
0.86222584, 0.8620461 , 0.86186629, 0.86168641, 0.86150644,
0.8613264 , 0.86114628, 0.86096609, 0.86078581, 0.86060547,
0.86042504, 0.86024454, 0.86006397, 0.85988331, 0.85970258,
0.85952178, 0.8593409 , 0.85915994, 0.85897891, 0.8587978 ,
0.85861662, 0.85843536, 0.85825403, 0.85807262, 0.85789114,
0.85770958, 0.85752795, 0.85734624, 0.85716446, 0.8569826 ,
0.85680067, 0.85661867, 0.85643659, 0.85625444, 0.85607221,
0.85588991, 0.85570753, 0.85552509, 0.85534256, 0.85515997,
0.8549773 , 0.85479456, 0.85461174, 0.85442886, 0.85424589,
0.85406286, 0.85387975, 0.85369658, 0.85351332, 0.85333 ,
0.8531466 , 0.85296313, 0.85277959, 0.85259598, 0.8524123 ,
0.85222854, 0.85204471, 0.85186081, 0.85167684, 0.8514928 ,
0.85130868, 0.8511245 , 0.85094024, 0.85075592, 0.85057152,
0.85038705, 0.85020251, 0.8500179 , 0.84983322, 0.84964847,
0.84946365, 0.84927875, 0.84909379, 0.84890876, 0.84872366,
0.84853849, 0.84835325, 0.84816794, 0.84798256, 0.84779711,
0.84761159, 0.847426 , 0.84724035, 0.84705462, 0.84686883,
0.84668296, 0.84649703, 0.84631103, 0.84612496, 0.84593882,
0.84575262, 0.84556635, 0.84538 , 0.84519359, 0.84500712,
0.84482057, 0.84463396, 0.84444728, 0.84426053, 0.84407372,
0.84388684, 0.84369989, 0.84351287, 0.84332579, 0.84313864,
0.84295142, 0.84276414, 0.84257679, 0.84238937, 0.84220189,
0.84201434, 0.84182673, 0.84163905, 0.8414513 , 0.84126349,
0.84107561, 0.84088767, 0.84069966, 0.84051159, 0.84032345,
0.84013524, 0.83994697, 0.83975864, 0.83957024, 0.83938178,
0.83919325, 0.83900466, 0.838816 , 0.83862728, 0.83843849,
0.83824964, 0.83806073, 0.83787175, 0.83768271, 0.8374936 ,
0.83730444, 0.8371152 , 0.83692591, 0.83673655, 0.83654713,
0.83635764, 0.83616809, 0.83597848, 0.83578881, 0.83559907,
0.83540927, 0.83521941, 0.83502949, 0.8348395 , 0.83464945,
0.83445934, 0.83426917, 0.83407894, 0.83388864, 0.83369829,
0.83350787, 0.83331739, 0.83312685, 0.83293624, 0.83274558,
0.83255486, 0.83236407, 0.83217323, 0.83198232, 0.83179135,
0.83160032, 0.83140924, 0.83121809, 0.83102688, 0.83083561,
0.83064428, 0.83045289, 0.83026144, 0.83006994, 0.82987837,
0.82968674, 0.82949506, 0.82930331, 0.82911151, 0.82891964,
0.82872772, 0.82853574, 0.8283437 , 0.8281516 , 0.82795945,
0.82776723, 0.82757496, 0.82738263, 0.82719024, 0.82699779,
0.82680529, 0.82661272, 0.8264201 , 0.82622742, 0.82603469,
0.82584189, 0.82564904, 0.82545614, 0.82526317, 0.82507015,
0.82487707, 0.82468394, 0.82449075, 0.8242975 , 0.8241042 ,
0.82391084, 0.82371742, 0.82352395, 0.82333042, 0.82313683,
0.82294319, 0.8227495 , 0.82255575, 0.82236194, 0.82216808,
0.82197416, 0.82178019, 0.82158616, 0.82139208, 0.82119794,
0.82100375, 0.8208095 , 0.8206152 , 0.82042084, 0.82022643,
0.82003197, 0.81983745, 0.81964288, 0.81944825, 0.81925357,
0.81905884, 0.81886405, 0.81866921, 0.81847432, 0.81827937,
0.81808437, 0.81788932, 0.81769422, 0.81749906, 0.81730385,
0.81710858, 0.81691326, 0.8167179 , 0.81652247, 0.816327 ,
0.81613148, 0.8159359 , 0.81574027, 0.81554459, 0.81534886,
0.81515307, 0.81495724, 0.81476135, 0.81456541, 0.81436942,
0.81417338, 0.81397729, 0.81378115, 0.81358496, 0.81338871,
0.81319242, 0.81299607, 0.81279968, 0.81260323, 0.81240674,
0.8122102 , 0.8120136 , 0.81181696, 0.81162026, 0.81142352,
0.81122673, 0.81102988, 0.81083299, 0.81063605, 0.81043906,
0.81024202, 0.81004494, 0.8098478 , 0.80965062, 0.80945338,
0.8092561 , 0.80905877, 0.80886139, 0.80866397, 0.80846649,
0.80826897, 0.8080714 , 0.80787378, 0.80767612, 0.80747841,
0.80728065, 0.80708284, 0.80688499, 0.80668709, 0.80648914,
0.80629114, 0.8060931 , 0.80589501, 0.80569688, 0.8054987 ,
0.80530047, 0.8051022 , 0.80490388, 0.80470551, 0.8045071 ,
0.80430865, 0.80411014, 0.8039116 , 0.803713 , 0.80351436,
0.80331568, 0.80311695, 0.80291818, 0.80271936, 0.80252049,
0.80232159, 0.80212263, 0.80192364, 0.80172459, 0.80152551,
0.80132638, 0.8011272 , 0.80092798, 0.80072872, 0.80052942,
0.80033007, 0.80013067, 0.79993124, 0.79973176, 0.79953224,
0.79933267, 0.79913306, 0.79893341, 0.79873371, 0.79853398,
0.7983342 , 0.79813437, 0.79793451, 0.7977346 , 0.79753465,
0.79733466, 0.79713463, 0.79693456, 0.79673444, 0.79653428,
0.79633408, 0.79613384, 0.79593356, 0.79573323, 0.79553287,
0.79533246, 0.79513202, 0.79493153, 0.794731 , 0.79453043,
0.79432982, 0.79412917, 0.79392848, 0.79372776, 0.79352699,
0.79332618, 0.79312533, 0.79292444, 0.79272351, 0.79252254,
0.79232153, 0.79212049, 0.7919194 , 0.79171827, 0.79151711,
0.79131591, 0.79111466, 0.79091338, 0.79071207, 0.79051071,
0.79030931, 0.79010788, 0.78990641, 0.7897049 , 0.78950335,
0.78930176, 0.78910014, 0.78889848, 0.78869678, 0.78849504,
0.78829327, 0.78809146, 0.78788961, 0.78768773, 0.78748581,
0.78728385, 0.78708185, 0.78687982, 0.78667775, 0.78647565,
0.78627351, 0.78607133, 0.78586912, 0.78566687, 0.78546459,
0.78526227, 0.78505991, 0.78485752, 0.7846551 , 0.78445264,
0.78425014, 0.78404761, 0.78384504, 0.78364244, 0.7834398 ,
0.78323713, 0.78303443, 0.78283169, 0.78262891, 0.78242611,
0.78222326, 0.78202039, 0.78181748, 0.78161453, 0.78141156,
0.78120855, 0.7810055 , 0.78080242, 0.78059931, 0.78039617,
0.78019299, 0.77998978, 0.77978654, 0.77958326, 0.77937995,
0.77917661, 0.77897324, 0.77876983, 0.77856639, 0.77836292,
0.77815942, 0.77795589, 0.77775232, 0.77754873, 0.7773451 ,
0.77714144, 0.77693774, 0.77673402, 0.77653027, 0.77632648,
0.77612267, 0.77591882, 0.77571494, 0.77551103, 0.7753071 ,
0.77510313, 0.77489913, 0.7746951 , 0.77449104, 0.77428695,
0.77408283, 0.77387868, 0.7736745 , 0.77347029, 0.77326605,
0.77306179, 0.77285749, 0.77265317, 0.77244881, 0.77224443,
0.77204002, 0.77183557, 0.7716311 , 0.77142661, 0.77122208,
0.77101753, 0.77081294, 0.77060833, 0.77040369, 0.77019903,
0.76999433, 0.76978961, 0.76958486, 0.76938008, 0.76917528,
0.76897045, 0.76876559, 0.7685607 , 0.76835579, 0.76815085,
0.76794588, 0.76774089, 0.76753587, 0.76733082, 0.76712575,
0.76692065, 0.76671553, 0.76651038, 0.7663052 , 0.7661 ,
0.76589477, 0.76568952, 0.76548424, 0.76527894, 0.76507361,
0.76486825, 0.76466287, 0.76445747, 0.76425204, 0.76404659,
0.76384111, 0.76363561, 0.76343008, 0.76322453, 0.76301895,
0.76281335, 0.76260773, 0.76240208, 0.76219641, 0.76199072,
0.761785 , 0.76157926, 0.76137349, 0.7611677 , 0.76096189,
0.76075606, 0.7605502 , 0.76034432, 0.76013842, 0.75993249,
0.75972654, 0.75952057, 0.75931458, 0.75910856, 0.75890253,
0.75869647, 0.75849039, 0.75828428, 0.75807816, 0.75787201,
0.75766585, 0.75745966, 0.75725345, 0.75704722, 0.75684097,
0.75663469, 0.7564284 , 0.75622209, 0.75601575, 0.7558094 ,
0.75560302, 0.75539662, 0.75519021, 0.75498377, 0.75477731,
0.75457084, 0.75436434, 0.75415783, 0.75395129, 0.75374474,
0.75353816, 0.75333157, 0.75312496, 0.75291833, 0.75271168,
0.75250501, 0.75229832, 0.75209161, 0.75188489, 0.75167814,
0.75147138
});
}
}