V4 CPP Export

This commit is contained in:
Kilian Hofmann 2024-09-27 16:14:00 +02:00
parent d4e82ae22e
commit 368ccbb355
34 changed files with 7757 additions and 7046 deletions

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"files.associations": {
"iostream": "cpp",
"ostream": "cpp"
}
}

27
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,27 @@
{
"tasks": [{
"type": "cppbuild",
"label": "C/C++: cl.exe build active file",
"command": "cl.exe",
"args": [
"/std:c++17",
"/Zi",
"/EHsc",
"/nologo",
"/Fe${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}],
"version": "2.0.0"
}

File diff suppressed because one or more lines are too long

187
V4/ci2mach_0.85.h Normal file

File diff suppressed because one or more lines are too long

187
V4/ci2mach_0.87.h Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,10 @@
0.0004274587491983493,0.00028477410197643246,0.552;0.0009909562133049203,0.0002499288141713152,0.569;0.0018103909207133283,0.0002069860303365049,0.586;0.0023483971378644034,0.00016894324588970046,0.607;0.00286078401134159,0.00013271202260703064,0.627;0.0031684723288646533,0.00010095517302578693,0.649;0.0032714620904335683,7.367269714597023e-05,0.673;0.0029651828368125765,5.032991086318634e-05,0.706;0.002530934961540649,3.103587259524944e-05,0.739;0.002070939645876494,1.856245329726664e-05,0.766;0.0016875461677971768,1.0672466118524678e-05,0.786;0.001406373870976539,5.554349894890804e-06,0.8;0.001380882624021063,2.3568532532032015e-06,0.804;0.0012530420990884928,1.396543462229757e-06,0.809;0.001201931508635007,1.0607981423116817e-08,0.812;0.0012275508521330128,-1.8009531794577056e-06,0.813
0.001247021553325155,0.00023682226033580058,0.574;0.0020153456701042178,0.0001924935410234364,0.594;0.0026813205089062098,0.00015040200856178556,0.615;0.003040247513776984,0.00011502203665227518,0.639;0.003399174518647763,7.964206474276454e-05,0.663;0.0032208638866777044,5.225053044513374e-05,0.696;0.0027611247644502863,2.9758995535509676e-05,0.733;0.0021476695801796973,1.813682761068697e-05,0.764;0.0016875461677971768,1.0672466118524678e-05,0.786;0.001304024592999476,7.791536745603994e-06,0.801;0.0014065019676946751,5.452920890783461e-07,0.805;0.001381010720739421,-2.6522045526171594e-06,0.809;0.0013299001301100672,-4.038140030170678e-06,0.812;0.0013299001301100672,-4.038140030170678e-06,0.812;0.0012531701958068758,-3.6125143435913135e-06,0.814;0.0012787895394807322,-5.424075507724675e-06,0.815
0.0022970303537983173,0.00017757542602378802,0.6;0.0029118946019709327,0.0001340979580845845,0.624;0.0033220602941894497,9.509486384680634e-05,0.65;0.003374067561847374,6.141739468361564e-05,0.682;0.0029655671269676913,3.5302737445724056e-05,0.721;0.002428969973718681,1.824588602850097e-05,0.755;0.001764276102100378,1.0246840431945162e-05,0.784;0.0016110724269306513,1.0799761934649412e-06,0.798;0.0014065019676946751,5.452920890783461e-07,0.805;0.0014833599987165006,-4.889391403330882e-06,0.808;0.0013299001301100672,-4.038140030170678e-06,0.812;0.0013299001301100672,-4.038140030170678e-06,0.812;0.0013555194737839393,-5.8497011943044965e-06,0.813;0.0013811388174577999,-7.661262358438014e-06,0.814;0.0013044088831545928,-7.235636671858238e-06,0.816;0.0013300282268284456,-9.047197835991516e-06,0.817
0.0031168493513618225,0.00011960546877151605,0.632;0.0032968252406706854,8.187925159347822e-05,0.664;0.00314426204909287,4.7667098325892766e-05,0.703;0.0025310630582590244,2.602681478942851e-05,0.744;0.001892116627032955,1.1207150222918385e-05,0.779;0.0013551351836288176,9.177472223157894e-06,0.798;0.0013041526897178443,2.7824789397833284e-06,0.806;0.00117631216478527,1.8221691488097626e-06,0.811;0.0012275508521330128,-1.8009531794577056e-06,0.813;0.0011252015741559467,4.362336712548323e-07,0.814;0.0011508209178298324,-1.3753274928791465e-06,0.815;0.001202059605177518,-4.9984498211447745e-06,0.817;0.001227678948851375,-6.810010985278175e-06,0.818;0.0011509490145481614,-6.384385298698173e-06,0.82;0.0011509490145481614,-6.384385298698173e-06,0.82;0.0011765683582220243,-8.195946462831802e-06,0.821
0.003348320121455146,6.823801365356976e-05,0.676;0.0028888371926644742,3.572836313230422e-05,0.723;0.002250018858156777,1.589964075997329e-05,0.763;0.0016620549208416731,7.474969476838006e-06,0.79;0.0014832319019973637,1.1966640252390402e-07,0.803;0.0012786614427618913,-4.150177018891087e-07,0.81;0.0012275508521330128,-1.8009531794577056e-06,0.813;0.0012275508521330128,-1.8009531794577056e-06,0.813;0.0013811388174577999,-7.661262358438014e-06,0.814;0.0013044088831545928,-7.235636671858238e-06,0.816;0.0013300282268284456,-9.047197835991516e-06,0.817;0.0011509490145481614,-6.384385298698173e-06,0.82;0.0011509490145481614,-6.384385298698173e-06,0.82;0.0010742190802449615,-5.958759612118662e-06,0.822;0.0010998384239188246,-7.770320776252284e-06,0.823
0.002761252861168657,2.4749937729688956e-05,0.738;0.0019177359707068138,9.395589058784881e-06,0.78;0.001534342492627498,1.5056018800428345e-06,0.8;0.0014577406550426392,-3.077830239197258e-06,0.807;0.0012275508521330128,-1.8009531794577056e-06,0.813;0.0013299001301100672,-4.038140030170678e-06,0.812;0.0016881866513890054,-1.4372822910578061e-05,0.811;0.001202059605177518,-4.9984498211447745e-06,0.817;0.0015347267827825939,-1.3521571537418551e-05,0.815;0.0010485997365711004,-4.147198447985061e-06,0.821;0.0011765683582220243,-8.195946462831802e-06,0.821;0.000997489145941742,-5.533133925538442e-06,0.824;0.0008951398679646814,-3.2959470748254213e-06,0.825
0.0017387848551448806,7.04934379025821e-06,0.788;0.0014832319019973637,1.1966640252390402e-07,0.803;0.0010995822304820772,2.2477948353893365e-06,0.813;0.0013299001301100672,-4.038140030170678e-06,0.812;0.001048471639852707,8.618593578362763e-07,0.816;0.0010997103272004447,-2.761262970431225e-06,0.818;0.0010229803928972314,-2.335637283851297e-06,0.82;0.0010485997365711004,-4.147198447985061e-06,0.821;0.0009718698022678845,-3.7215727614051014e-06,0.823;0.000997489145941742,-5.533133925538442e-06,0.824;0.00232802975964366,-3.4616562984812674e-05,0.811
0.0014577406550426392,-3.077830239197258e-06,0.807;0.0013299001301100672,-4.038140030170678e-06,0.812;0.0014578687517609965,-8.086888045017496e-06,0.812;0.0013811388174577999,-7.661262358438014e-06,0.814;0.0014323775048055174,-1.1284384686704943e-05,0.816;0.001355647570502314,-1.0858759000125344e-05,0.818;0.0013812669141761652,-1.2670320164258555e-05,0.819;0.0013045369798729608,-1.2244694477678815e-05,0.821
0.001636947964041291,-1.0749700582311178e-05,0.809;0.0011764402615036603,-3.1868886570112365e-06,0.816;0.0014067581611316685,-9.472823522571825e-06,0.815;0.0009462504585940488,-1.9100115972723427e-06,0.822;0.0011765683582220243,-8.195946462831802e-06,0.821;0.0008951398679646814,-3.2959470748254213e-06,0.825;0.0024559983812945914,-3.866531099965959e-05,0.811
0.001483488095434877,-9.898449209151568e-06,0.813;0.0015347267827825939,-1.3521571537418551e-05,0.815;0.0014579968484793795,-1.3095945850838513e-05,0.817;0.0019186326477353963,-2.5667815581959532e-05,0.815;0.0015092355358271013,-1.6719068179105625e-05,0.819
0.0022697457527856334,0.00024450473866359095,0.534;0.002935592494869259,0.00020742226400776077,0.55;0.0034479793683464747,0.00017119104072509008,0.57;0.003985985585497542,0.00013314825627828606,0.591;0.004396023180997657,9.915421984632953e-05,0.612;0.0047037114985207205,6.739737026508588e-05,0.634;0.00470435198211257,4.23520812359824e-05,0.659;0.00409102489456037,2.5720855505338552e-05,0.695;0.0032473799073801488,1.537556464025551e-05,0.732;0.0024803367577847717,9.61370589441316e-06,0.762;0.0019945940017283836,3.9609055663847365e-06,0.783;0.0016110724269306513,1.0799761934649412e-06,0.798;0.0016879304579522736,-4.354707298936965e-06,0.801;0.0015600899330197025,-5.315017089910375e-06,0.806;0.0014066300644132834,-4.4637657167507e-06,0.81;0.0013299001301100672,-4.038140030170678e-06,0.812
0.0031916578348895027,0.00019431571017224582,0.555;0.0037552833957144286,0.00015446136456130838,0.577;0.004421258234516434,0.00011236983209965729,0.598;0.0046778359614101294,7.922704704086047e-05,0.623;0.0050367629662809036,4.384707513135007e-05,0.647;0.004551404500379619,2.3167101385859662e-05,0.683;0.003579918988266862,1.1861500729802108e-05,0.725;0.0026594159700650565,6.95089335711979e-06,0.759;0.0020969432797054537,1.723718715671423e-06,0.782;0.0016110724269306513,1.0799761934649412e-06,0.798;0.0017135498016261326,-6.1662684630704784e-06,0.802;0.001585709276693569,-7.126578254044148e-06,0.807;0.0015345986860642125,-8.512513731597523e-06,0.81;0.0015345986860642125,-8.512513731597523e-06,0.81;0.0016625673077151413,-1.2561261746444449e-05,0.81;0.0013811388174577999,-7.661262358438014e-06,0.814
0.004036968079408532,0.0001395432495616601,0.583;0.0047541816055582335,9.382859477174262e-05,0.606;0.005164347297776733,5.4825500533965e-05,0.632;0.004909306731503454,2.7859591922914216e-05,0.667;0.0039890599067384045,1.2930868938589956e-05,0.711;0.002940716363604047,7.05995177493361e-06,0.75;0.0021736732140086577,1.2980930290916781e-06,0.78;0.0019181202608618995,-5.631584358676413e-06,0.795;0.0017135498016261326,-6.1662684630704784e-06,0.802;0.0019951063886018477,-1.6075325656897547e-05,0.803;0.001636947964041291,-1.0749700582311178e-05,0.809;0.001636947964041291,-1.0749700582311178e-05,0.809;0.001969615141646357,-1.9272822298584704e-05,0.807;0.0016881866513890054,-1.4372822910578061e-05,0.811;0.0018161552730399364,-1.8421570925425038e-05,0.811;0.0014323775048055174,-1.1284384686704943e-05,0.816
0.0049591363549491025,7.933610545867478e-05,0.614;0.0050367629662809036,4.384707513135007e-05,0.647;0.004372453384817716,2.082085611733203e-05,0.691;0.0032475080040985185,1.0366506834434887e-05,0.737;0.0021991644609641566,4.495589670778574e-06,0.776;0.001662183017560043,2.465911671017306e-06,0.795;0.0017135498016261326,-6.1662684630704784e-06,0.802;0.001381010720739421,-2.6522045526171594e-06,0.809;0.0014322494080871403,-6.275326880884155e-06,0.811;0.0014322494080871403,-6.275326880884155e-06,0.811;0.0013555194737839393,-5.8497011943044965e-06,0.813;0.0017138059950628673,-1.6184384074711623e-05,0.812;0.001227678948851375,-6.810010985278175e-06,0.818;0.0018673939603876745,-2.2044693253692463e-05,0.813;0.0010485997365711004,-4.147198447985061e-06,0.821;0.0011765683582220243,-8.195946462831802e-06,0.821
0.004985908569088292,3.2443024042155e-05,0.66;0.0040146792504122675,1.111930777445644e-05,0.712;0.0027617652480421352,4.713706506406176e-06,0.758;0.002071452032749907,-1.473777926013604e-06,0.786;0.00199497829188348,-1.1066267851076905e-05,0.798;0.0017904078326477105,-1.1600951955470904e-05,0.805;0.0017392972420183614,-1.2986887433024585e-05,0.808;0.0018416465199954336,-1.522407428373805e-05,0.807;0.0023022823192514284,-2.779594401485836e-05,0.805;0.0019185045510170145,-2.065875777613859e-05,0.81;0.0024558702845762217,-3.3656253193838845e-05,0.806;0.0023791403502730125,-3.3230627507259105e-05,0.808;0.0020720925163418003,-2.6519066955118856e-05,0.811;0.0026094582499010207,-3.9516562372819624e-05,0.807;0.0018162833697583163,-2.343062873124592e-05,0.816
0.0036823963629622875,4.615256073268567e-06,0.729;0.0023271330826151702,4.4684165592864607e-07,0.776;0.001943739604535754,-7.443145522809667e-06,0.796;0.002071836322905062,-1.650095134347754e-05,0.801;0.0020463450759495715,-1.969844798516467e-05,0.805;0.001943995797972505,-1.7461261134451486e-05,0.806;0.0026093301531826536,-3.4507504566999015e-05,0.802;0.0022255523849482243,-2.7370318328278688e-05,0.807;0.0028652673964845122,-4.260500059669266e-05,0.802;0.002686188184204224,-3.9942188059399235e-05,0.805;0.002200061137992735,-3.056781496996593e-05,0.811;0.003453871817391448,-5.922561834266033e-05,0.8;0.003453871817391448,-5.922561834266033e-05,0.8
0.0020458326890764543,3.3778323810759986e-07,0.785;0.00199497829188348,-1.1066267851076905e-05,0.798;0.0016113286203674232,-8.93813941817747e-06,0.808;0.001943995797972505,-1.7461261134451486e-05,0.806;0.0016625673077151413,-1.2561261746444449e-05,0.81;0.0020208538289940747,-2.289594462685167e-05,0.809;0.0017394253387367315,-1.7995945238845176e-05,0.813;0.0011509490145481614,-6.384385298698173e-06,0.82;0.00230241041596981,-3.28050018206795e-05,0.81;0.0019186326477353963,-2.5667815581959532e-05,0.815;0.00232802975964366,-3.4616562984812674e-05,0.811
0.0017647884889738445,-9.789390791337222e-06,0.804;0.001636947964041291,-1.0749700582311178e-05,0.809;0.0022766629755775767,-2.5984382850725166e-05,0.804;0.0017905359293660808,-1.6610009761291607e-05,0.81;0.002353521006599155,-3.141906634312564e-05,0.807;0.002276791072295947,-3.099344065654586e-05,0.809;0.0014836161921532459,-1.490750701497223e-05,0.818;0.003044474705483169,-5.027687093980688e-05,0.804
0.002455742187857865,-2.8647195388018643e-05,0.801;0.002097583763297289,-2.3321570313431652e-05,0.807;0.0025326002188794383,-3.4081878880419e-05,0.804;0.0021744417943188703,-2.8756253805832305e-05,0.81;0.0033259031957405152,-5.517687032781334e-05,0.8;0.002942125427506095,-4.8039684089093314e-05,0.805;0.003581840439042383,-6.327436635750739e-05,0.8
0.002404631597228508,-3.003313086557211e-05,0.804;0.0032746645083928053,-5.155374799954661e-05,0.798;0.0029932360181354435,-4.665374861153963e-05,0.802;0.004375015319185086,-7.93602999990808e-05,0.791;0.004682063153116312,-8.60718605512215e-05,0.788

View File

@ -1,10 +1,10 @@
-8.492812427885466e-05,0.0003210053252591028,0.552;0.0004785693398277093,0.0002861600374539858,0.569;0.0012980040472361342,0.00024321725361917498,0.586;0.0018360102643871963,0.000205174469172371,0.607;0.002348397137864388,0.00016894324588970097,0.627;0.002656085455387441,0.00013718639630845767,0.649;0.002759075216956361,0.00010990392042864072,0.673;0.0024527959633353787,8.656113414585663e-05,0.706;0.002018548088063452,6.72670958779196e-05,0.739;0.0015585527723992931,5.4793676579936914e-05,0.766;0.0011751592943199704,4.6903689401195244e-05,0.786;0.0008939869974993353,4.1785573177561295e-05,0.8;0.0008684957505438551,3.858807653587376e-05,0.804;0.0007406552256112827,3.762776674490031e-05,0.809;0.0006895446349819394,3.624183126734647e-05,0.812;0.0007151639786558133,3.443027010321259e-05,0.813
0.0007346346798479392,0.0002730534836184714,0.574;0.0015029587966270135,0.0002287247643061068,0.594;0.0021689336354290085,0.00018663323184445597,0.615;0.0025278606402997705,0.00015125325993494597,0.639;0.002886787645170563,0.00011587328802543486,0.663;0.0027084770132005057,8.848175372780395e-05,0.696;0.002248737890973078,6.599021881818018e-05,0.733;0.0016352827067024958,5.436805089335732e-05,0.764;0.0011751592943199704,4.6903689401195244e-05,0.786;0.0007916377195222733,4.402276002827434e-05,0.801;0.0008941150942177074,3.677651537174048e-05,0.805;0.0008686238472622149,3.3579018730053436e-05,0.809;0.0008175132566328667,3.2193083252499704e-05,0.812;0.0008175132566328667,3.2193083252499704e-05,0.812;0.0007407833223296688,3.261870893907929e-05,0.814;0.0007664026660035243,3.080714777494591e-05,0.815
0.0017846434803211102,0.00021380664930645868,0.6;0.0023995077284937345,0.00017032918136725475,0.624;0.002809673420712246,0.00013132608712947678,0.65;0.0028616806883701804,9.764861796628574e-05,0.682;0.002453180253490485,7.153396072839469e-05,0.721;0.0019165831002414806,5.447710931117124e-05,0.755;0.0012518892286231867,4.6478063714615145e-05,0.784;0.001098685553453477,3.7311199476134425e-05,0.798;0.0008941150942177074,3.677651537174048e-05,0.805;0.0009709731252392902,3.1341831879339824e-05,0.808;0.0008175132566328667,3.2193083252499704e-05,0.812;0.0008175132566328667,3.2193083252499704e-05,0.812;0.0008431326003067354,3.038152208836594e-05,0.813;0.000868751943980594,2.856996092423256e-05,0.814;0.0007920220096773856,2.8995586610812283e-05,0.816;0.0008176413533512478,2.718402544667868e-05,0.817
0.0026044624778846105,0.00015583669205418676,0.632;0.0027844383671934807,0.00011811047487614865,0.664;0.0026318751756156593,8.389832160856342e-05,0.703;0.002018676184781813,6.225803807209925e-05,0.744;0.0013797297535557392,4.7438373505589266e-05,0.779;0.0008427483101516265,4.5408695505827914e-05,0.798;0.0007917658162406346,3.901370222245393e-05,0.806;0.0006639252913080777,3.805339243148001e-05,0.811;0.0007151639786558133,3.443027010321259e-05,0.813;0.0006128147006787383,3.6667456953926195e-05,0.814;0.0006384340443525942,3.4855895789792737e-05,0.815;0.0006896727317003216,3.1232773461525474e-05,0.817;0.0007152920753741745,2.9421212297392212e-05,0.818;0.0006385621410709679,2.984683798397191e-05,0.82;0.0006385621410709679,2.984683798397191e-05,0.82;0.0006641814847448274,2.8035276819838494e-05,0.821
0.0028359332479779417,0.0001044692369362402,0.676;0.002376450319187274,7.195958641497456e-05,0.723;0.0017376319846795732,5.213086404264373e-05,0.763;0.001149668047364469,4.370619275950846e-05,0.79;0.0009708450285209213,3.635088968516055e-05,0.803;0.0007662745692851539,3.581620558076647e-05,0.81;0.0007151639786558133,3.443027010321259e-05,0.813;0.0007151639786558133,3.443027010321259e-05,0.813;0.000868751943980594,2.856996092423256e-05,0.814;0.0007920220096773856,2.8995586610812283e-05,0.816;0.0008176413533512478,2.718402544667868e-05,0.817;0.0006385621410709679,2.984683798397191e-05,0.82;0.0006385621410709679,2.984683798397191e-05,0.82;0.0005618322067677509,3.0272463670551983e-05,0.822;0.0005874515504416117,2.8460902506418488e-05,0.823
0.0022488659876914543,6.098116101235933e-05,0.738;0.0014053490972296076,4.5626812341455496e-05,0.78;0.0010219556191502707,3.7736825162714165e-05,0.8;0.0009453537815654229,3.315339304347362e-05,0.807;0.0007151639786558133,3.443027010321259e-05,0.813;0.0008175132566328667,3.2193083252499704e-05,0.812;0.0011757997779117972,2.185840037209249e-05,0.811;0.0006896727317003216,3.1232773461525474e-05,0.817;0.001022339909305385,2.2709651745252123e-05,0.815;0.000536212863093898,3.2084024834685286e-05,0.821;0.0006641814847448274,2.8035276819838494e-05,0.821;0.0004851022724645486,3.069808935713161e-05,0.824;0.0003827529944874674,3.2935276207845294e-05,0.825
0.0012263979816676746,4.328056707292869e-05,0.788;0.0009708450285209213,3.635088968516055e-05,0.803;0.0005871953570048725,3.8479018118059796e-05,0.813;0.0008175132566328667,3.2193083252499704e-05,0.812;0.0005360847663755312,3.7093082640505894e-05,0.816;0.0005873234537232453,3.346996031223911e-05,0.818;0.0005105935194200255,3.389558599881928e-05,0.82;0.000536212863093898,3.2084024834685286e-05,0.821;0.00045948292879067663,3.250965052126554e-05,0.823;0.0004851022724645486,3.069808935713161e-05,0.824;0.0018156428861664565,1.6146602978577143e-06,0.811
0.0009453537815654229,3.315339304347362e-05,0.807;0.0008175132566328667,3.2193083252499704e-05,0.812;0.0009454818782837953,2.814433523765278e-05,0.812;0.000868751943980594,2.856996092423256e-05,0.814;0.0009199906313283172,2.4946838595965375e-05,0.816;0.0008432606970251085,2.5372464282545142e-05,0.818;0.0008688800406989652,2.356090311841175e-05,0.819;0.0007921501063957542,2.3986528804991614e-05,0.821
0.0011245610905640804,2.5481522700359486e-05,0.809;0.000664053388026453,3.304433462565924e-05,0.816;0.0008943712876544536,2.6758399760099037e-05,0.815;0.00043386358511682407,3.43212116853988e-05,0.822;0.0006641814847448274,2.8035276819838494e-05,0.821;0.0003827529944874674,3.2935276207845294e-05,0.825;0.0019436115078173926,-2.4340877169892867e-06,0.811
0.0009711012219576688,2.633277407351905e-05,0.813;0.001022339909305385,2.2709651745252123e-05,0.815;0.0009456099750021835,2.313527743183167e-05,0.817;0.0014062457742581855,1.0563407700711094e-05,0.815;0.0009968486623499054,1.9512155103564573e-05,0.819
0.0017573588793084354,0.00028073596194626125,0.534;0.0024232056213920545,0.0002436534872904313,0.55;0.002935592494869269,0.00020742226400776053,0.57;0.0034735987120203364,0.0001693794795609565,0.591;0.0038836363075204555,0.0001353854431289999,0.612;0.004191324625043522,0.00010362859354775614,0.634;0.004191965108635364,7.858330451865281e-05,0.659;0.003578638021083163,6.19520787880091e-05,0.695;0.002734993033902946,5.160678792292595e-05,0.732;0.0019679498843075674,4.584492917708369e-05,0.762;0.0014822071282511921,4.019212884905474e-05,0.783;0.001098685553453477,3.7311199476134425e-05,0.798;0.001175543584475063,3.187651598373367e-05,0.801;0.0010477030595424997,3.091620619276e-05,0.806;0.0008942431909360781,3.176745756591979e-05,0.81;0.0008175132566328667,3.2193083252499704e-05,0.812
0.0026792709614122854,0.00023054693345491675,0.555;0.003242896522237225,0.0001906925878439788,0.577;0.003908871361039228,0.0001486010553823278,0.598;0.004165449087932919,0.00011545827032353114,0.623;0.0045243760928037075,8.00782984140202e-05,0.647;0.0040390176269024134,5.93983246685302e-05,0.683;0.0030675321147896496,4.8092724012472825e-05,0.725;0.002147029096587851,4.3182116639790356e-05,0.759;0.0015845564062282528,3.7954941998341685e-05,0.782;0.001098685553453477,3.7311199476134425e-05,0.798;0.0012011629281489225,3.0064954819600188e-05,0.802;0.0010733224032163562,2.9104645028626548e-05,0.807;0.001022211812587013,2.771870955107274e-05,0.81;0.001022211812587013,2.771870955107274e-05,0.81;0.001150180434237935,2.366996153622612e-05,0.81;0.000868751943980594,2.856996092423256e-05,0.814
0.0035245812059313225,0.0001757744728443307,0.583;0.004241794732081024,0.00013005981805441313,0.606;0.00465196042429952,9.105672381663569e-05,0.632;0.004396919858026252,6.409081520558452e-05,0.667;0.0034766730332612037,4.916209222126033e-05,0.711;0.0024283294901268457,4.329117505760398e-05,0.75;0.0016612863405314723,3.752931631176157e-05,0.78;0.0014057333873846894,3.059963892399432e-05,0.795;0.0012011629281489225,3.0064954819600188e-05,0.802;0.0014827195151246443,2.015589762577284e-05,0.803;0.0011245610905640804,2.5481522700359486e-05,0.809;0.0011245610905640804,2.5481522700359486e-05,0.809;0.0014572282681691617,1.695840098408545e-05,0.807;0.0011757997779117972,2.185840037209249e-05,0.811;0.001303768399562737,1.7809652357245306e-05,0.811;0.0009199906313283172,2.4946838595965375e-05,0.816
0.004446749481471902,0.00011556732874134511,0.614;0.0045243760928037075,8.00782984140202e-05,0.647;0.0038600665113405156,5.705207940000247e-05,0.691;0.00273512113062132,4.65977301171051e-05,0.737;0.0016867775874869638,4.07268129534487e-05,0.776;0.001149796144082838,3.869713495368779e-05,0.795;0.0012011629281489225,3.0064954819600188e-05,0.802;0.0008686238472622149,3.3579018730053436e-05,0.809;0.000919862534609942,2.995589640178614e-05,0.811;0.000919862534609942,2.995589640178614e-05,0.811;0.0008431326003067354,3.038152208836594e-05,0.813;0.0012014191215856582,2.004683920795892e-05,0.812;0.0007152920753741745,2.9421212297392212e-05,0.818;0.0013550070869104626,1.4186530028978241e-05,0.813;0.000536212863093898,3.2084024834685286e-05,0.821;0.0006641814847448274,2.8035276819838494e-05,0.821
0.00447352169561109,6.867424732482539e-05,0.66;0.0035022923769350636,4.7350531057126834e-05,0.712;0.002249378374564928,4.094492978907674e-05,0.758;0.001559065159272748,3.475744535665496e-05,0.786;0.0014825914184062716,2.5164955431593618e-05,0.798;0.0012780209591704967,2.4630271327199904e-05,0.805;0.0012269103685411597,2.3244335849645755e-05,0.808;0.0013292596465182276,2.100714899893245e-05,0.807;0.0017898954457742323,8.435279267811819e-06,0.805;0.001406117677539805,1.557246550653198e-05,0.81;0.0019434834110990202,2.574970088831512e-06,0.806;0.0018667534767958039,3.0005957754114947e-06,0.808;0.0015597056428645923,9.71215632755174e-06,0.811;0.0020970713764238216,-3.2853390901493156e-06,0.807;0.0013038964962811162,1.2800594551424482e-05,0.816
0.0031700094894850906,4.084647935593877e-05,0.729;0.0018147462091378933,3.6678064938601775e-05,0.776;0.0014313527310585545,2.878807775986061e-05,0.796;0.0015594494494278527,1.9730271939193067e-05,0.801;0.001533958202472361,1.6532775297505944e-05,0.805;0.0014316089244952926,1.8769962148219233e-05,0.806;0.00209694327970543,1.7237187156720706e-06,0.802;0.001713165511471017,8.860904954391862e-06,0.807;0.0023528805230073045,-6.373777314022186e-06,0.802;0.002173801310727022,-3.71096477672888e-06,0.805;0.001687674264515526,5.663408312704698e-06,0.811;0.0029414849439142517,-2.299439505999014e-05,0.8;0.0029414849439142517,-2.299439505999014e-05,0.8
0.0015334458155988875,3.656900652078852e-05,0.785;0.0014825914184062716,2.5164955431593618e-05,0.798;0.0010989417468902291,2.729308386449263e-05,0.808;0.0014316089244952926,1.8769962148219233e-05,0.806;0.001150180434237935,2.366996153622612e-05,0.81;0.0015084669555168744,1.3335278655818599e-05,0.809;0.001227038465259537,1.8235278043824927e-05,0.813;0.0006385621410709679,2.984683798397191e-05,0.82;0.0017900235424926053,3.426221461991047e-06,0.81;0.0014062457742581855,1.0563407700711094e-05,0.815;0.0018156428861664565,1.6146602978577143e-06,0.811
0.0012524016154966393,2.6441832491333264e-05,0.804;0.0011245610905640804,2.5481522700359486e-05,0.809;0.0017642761021003641,1.024684043194558e-05,0.804;0.001278149055888873,1.962121352137899e-05,0.81;0.0018411341331219576,4.812156939544642e-06,0.807;0.0017644041988187367,5.237782626124829e-06,0.809;0.0009712293186760369,2.132371626769834e-05,0.818;0.0025320878320059647,-1.4045647657136312e-05,0.804
0.0019433553143806488,7.584027894652228e-06,0.801;0.0015851968898200825,1.290965296923889e-05,0.807;0.0020202133454022306,2.149344402251688e-06,0.804;0.0016620549208416723,7.474969476838016e-06,0.81;0.002813516322263316,-1.8945647045143033e-05,0.8;0.0024297385540288895,-1.1808460806422797e-05,0.805;0.0030694535655651817,-2.7043143074836956e-05,0.8
0.0018922447237512997,6.198092417098515e-06,0.804;0.0027622776349155898,-1.5322524716875825e-05,0.798;0.002480849144658245,-1.0422525328869318e-05,0.802;0.0038626284457078846,-4.312907671641051e-05,0.791;0.0041696762796391085,-4.9840637268551016e-05,0.788

132
V4/demo/demo.cpp Normal file
View File

@ -0,0 +1,132 @@
#include <iostream>
#include "../econSpd.h"
int main() {
float altitude;
float weight;
int tipTankPercent;
int ci;
// Get data
std::cout << "Altitude (ft, no FL)?: ";
std::cin >> altitude;
std::cout << "Weight (kg, no t)?: ";
std::cin >> weight;
std::cout << "Tip tank quantity (percent): ";
std::cin >> tipTankPercent;
std::cout << "CI (0 to 999)?: ";
std::cin >> ci;
std::cout << std::endl << std::endl << "BEGIN Step-By-Step" << std::endl << std::endl;
// Bound data
auto [lowerFl, upperFl, ratioFl] = boundAltitude(altitude);
std::cout << "Lower Altitude Bound: " << lowerFl << std::endl;
std::cout << "Upper Altitude Bound: " << upperFl << std::endl;
std::cout << "Ratio: " << ratioFl << std::endl << std::endl;
auto [lowerWgt, upperWgt, ratioWgt] = boundWeight(weight);
std::cout << "Lower Weight Bound: " << lowerWgt << std::endl;
std::cout << "Upper Weight Bound: " << upperWgt << std::endl;
std::cout << "Ratio: " << ratioWgt << std::endl << std::endl;
float ratioMMO = boundMMO(tipTankPercent);
// Check validity
if (altitude < MIN_FL * 100) {
std::cerr << "Too low, min Altitude: " << MIN_FL * 100 << std::endl;
exit(1);
}
if (altitude > MAX_FL * 100) {
std::cerr << "Too high, max Altitude: " << MAX_FL * 100 << std::endl;
exit(1);
}
if (weight < MIN_WGT * 1000) {
std::cerr << "Too light, min weight: " << MIN_WGT * 1000 << std::endl;
exit(1);
}
if (weight > MAX_WGT * 1000) {
std::cerr << "Too heavy, max weight: " << MAX_WGT * 1000 << std::endl;
exit(1);
}
if (tipTankPercent < 0 || tipTankPercent > 100) {
std::cerr << "Invalid quantity" << std::endl;
exit(1);
}
if (ci < 0) {
std::cerr << "CI must be greater or equal to 0" << std::endl;
exit(1);
}
if (ci > 999) {
std::cerr << "CI must be lesser or equal to 999" << std::endl;
exit(1);
}
// Grab table, convert altitude and weight to index
int lowerFlIndex = flightLevel2Index(lowerFl);
int upperFlIndex = flightLevel2Index(upperFl);
int lowerWgtIndex = weight2Index(lowerWgt);
int upperWgtIndex = weight2Index(upperWgt);
// Get boundary values
const float* lowerFlLowerWgtCis85 = ci2Mach_85[lowerFlIndex][lowerWgtIndex];
const float* lowerFlUpperWgtCis85 = ci2Mach_85[lowerFlIndex][upperWgtIndex];
const float* upperFlLowerWgtCis85 = ci2Mach_85[upperFlIndex][lowerWgtIndex];
const float* upperFlUpperWgtCis85 = ci2Mach_85[upperFlIndex][upperWgtIndex];
const float* lowerFlLowerWgtCis87 = ci2Mach_87[lowerFlIndex][lowerWgtIndex];
const float* lowerFlUpperWgtCis87 = ci2Mach_87[lowerFlIndex][upperWgtIndex];
const float* upperFlLowerWgtCis87 = ci2Mach_87[upperFlIndex][lowerWgtIndex];
const float* upperFlUpperWgtCis87 = ci2Mach_87[upperFlIndex][upperWgtIndex];
// Check if we can even fly here (higher FL and weights are NULL due to perf limits)
if (lowerFlLowerWgtCis85 == NULL || lowerFlUpperWgtCis85 == NULL || upperFlLowerWgtCis85 == NULL || upperFlUpperWgtCis85 == NULL ||
lowerFlLowerWgtCis87 == NULL || lowerFlUpperWgtCis87 == NULL || upperFlLowerWgtCis87 == NULL || upperFlUpperWgtCis87 == NULL) {
std::cerr << "Outside operational regime. Check weight/altitude" << std::endl;
exit(1);
}
// Get machs
float lowerFlLowerWgtMach85 = lowerFlLowerWgtCis85[ci];
float lowerFlUpperWgtMach85 = lowerFlUpperWgtCis85[ci];
float upperFlLowerWgtMach85 = upperFlLowerWgtCis85[ci];
float upperFlUpperWgtMach85 = upperFlUpperWgtCis85[ci];
float lowerFlLowerWgtMach87 = lowerFlLowerWgtCis87[ci];
float lowerFlUpperWgtMach87 = lowerFlUpperWgtCis87[ci];
float upperFlLowerWgtMach87 = upperFlLowerWgtCis87[ci];
float upperFlUpperWgtMach87 = upperFlUpperWgtCis87[ci];
// Lin interp
float ratioedLowerFlMach85 = interp(lowerFlLowerWgtMach85, lowerFlUpperWgtMach85, ratioWgt);
float ratioedUpperFlMach85 = interp(upperFlLowerWgtMach85, upperFlUpperWgtMach85, ratioWgt);
float ratioedMach85 = interp(ratioedLowerFlMach85, ratioedUpperFlMach85, ratioFl);
float ratioedLowerFlMach87 = interp(lowerFlLowerWgtMach87, lowerFlUpperWgtMach87, ratioWgt);
float ratioedUpperFlMach87 = interp(upperFlLowerWgtMach87, upperFlUpperWgtMach87, ratioWgt);
float ratioedMach87 = interp(ratioedLowerFlMach87, ratioedUpperFlMach87, ratioFl);
float ratioedMach = roundTo(interp(ratioedMach85, ratioedMach87, ratioMMO), 3);
std::cout << "Mach for CI " << ci << ": " << ratioedMach << std::endl << std::endl;
std::cout << "END Step-By-Step" << std::endl << std::endl << std::endl;
std::cout << "BEGIN All-In-One" << std::endl << std::endl;
float aioMach = ci2mach(altitude, weight, tipTankPercent, ci);
std::cout << "Mach for CI " << ci << ": " << aioMach << std::endl << std::endl;
std::cout << "END All-In-One" << std::endl ;
}

BIN
V4/demo/demo.exe Normal file

Binary file not shown.

BIN
V4/demo/demo.ilk Normal file

Binary file not shown.

BIN
V4/demo/demo.obj Normal file

Binary file not shown.

BIN
V4/demo/demo.pdb Normal file

Binary file not shown.

BIN
V4/demo/vc140.pdb Normal file

Binary file not shown.

141
V4/econSpd.h Normal file
View File

@ -0,0 +1,141 @@
#ifndef ECON_SPD
#define ECON_SPD
// Feet
#define MIN_FL 250
#define MAX_FL 430
// Tonnes
#define MIN_WGT 140
#define MAX_WGT 290
// Percent
#define MIN_TIP 60
#define MAX_TIP 90
// Mach
#define MIN_MMO 0.85
#define MAX_MMO 0.87
// 10x Feet
#define FL_STP 20
// 10x Kilogrammes
#define WGT_STP 10
// Percent
#define TIP_STP 30.0
#include "ci2mach_0.85.h"
#include "ci2mach_0.87.h"
#include <cmath>
#include <tuple>
/// @brief Round to n decimal places
/// @param value Value to round
/// @param decimals Number of decimal places
/// @return Rounded value
float roundTo(float value, char decimals) {
return std::roundf(value * std::pow(10, decimals)) / std::pow(10, decimals);
}
/// @brief Bounding function for altitudes in accordance with data granularity
/// @param altitude Altitude in FL
/// @return Lower bound in FL, upper bound in FL, ratio between bounds that equates to flightLevel
std::tuple<int, int, float> boundAltitude(float altitude) {
int flightLevel = (int)(altitude / 1000) * 10;
float lower = flightLevel - ((flightLevel - MIN_FL) % FL_STP);
float upper = (flightLevel - MIN_FL) % FL_STP != 0 ? lower + FL_STP : lower;
float ratio = (flightLevel - lower) / FL_STP;
return {(int)lower, (int)upper, ratio};
}
/// @brief Bounding function for weight in accordance with data granularity
/// @param weight Weight in kilogrammes
/// @return Lower bound in t, upper bound in t, ratio between bounds that equates to weight
std::tuple<int, int, float> boundWeight(int weight) {
int wgt = (int)(weight / 1000);
float lower = wgt - ((wgt - MIN_WGT) % WGT_STP);
float upper = (wgt - MIN_WGT) % WGT_STP != 0 ? lower + WGT_STP : lower;
float ratio = (wgt - lower) / WGT_STP;
return {(int)lower, (int)upper, ratio};
}
float boundMMO(int tipTankPercent) {
return tipTankPercent <= MIN_TIP ? 0 :
tipTankPercent >= MAX_TIP ? 1 :
(tipTankPercent - MIN_TIP) / TIP_STP;
}
/// @brief Conversion from FL to index of file
/// @param flightLevel FL to convert
/// @return Index in file
int flightLevel2Index(int flightLevel) {
return (flightLevel - MIN_FL) / FL_STP;
}
/// @brief Conversion from tonnes to index of file
/// @param weight Weight in tonnes to convert
/// @return Index in file
int weight2Index(int weight) {
return (weight - MIN_WGT) / WGT_STP;
}
/// @brief Linear interpolate between lower and upper
/// @param lower Lower interpolation bound
/// @param upper Upper interpolation bound
/// @param ratio Ratio of interpolation between lower and upper
/// @return Value at ratio between lower and upper
float interp(float lower, float upper, float ratio) {
return lower + (upper - lower) * ratio;
}
/// @brief Calculate mach for a given CI and aircraft state
/// @param altitude Altitude in feet
/// @param weight Weight in kilogrammes
/// @param tipTankPercent Lowest tip tank quantity (left/right) in percent
/// @param ci CI
/// @return Mach corresponding to CI
float ci2mach(float altitude, float weight, float tipTankPercent, int ci) {
auto [lowerFl, upperFl, ratioFl] = boundAltitude(altitude);
auto [lowerWgt, upperWgt, ratioWgt] = boundWeight(weight);
float ratioMMO = boundMMO(tipTankPercent);
int lowerFlIndex = flightLevel2Index(lowerFl);
int upperFlIndex = flightLevel2Index(upperFl);
int lowerWgtIndex = weight2Index(lowerWgt);
int upperWgtIndex = weight2Index(upperWgt);
const float* lowerFlLowerWgtCis85 = ci2Mach_85[lowerFlIndex][lowerWgtIndex];
const float* lowerFlUpperWgtCis85 = ci2Mach_85[lowerFlIndex][upperWgtIndex];
const float* upperFlLowerWgtCis85 = ci2Mach_85[upperFlIndex][lowerWgtIndex];
const float* upperFlUpperWgtCis85 = ci2Mach_85[upperFlIndex][upperWgtIndex];
const float* lowerFlLowerWgtCis87 = ci2Mach_87[lowerFlIndex][lowerWgtIndex];
const float* lowerFlUpperWgtCis87 = ci2Mach_87[lowerFlIndex][upperWgtIndex];
const float* upperFlLowerWgtCis87 = ci2Mach_87[upperFlIndex][lowerWgtIndex];
const float* upperFlUpperWgtCis87 = ci2Mach_87[upperFlIndex][upperWgtIndex];
if (lowerFlLowerWgtCis85 == NULL || lowerFlUpperWgtCis85 == NULL || upperFlLowerWgtCis85 == NULL || upperFlUpperWgtCis85 == NULL ||
lowerFlLowerWgtCis87 == NULL || lowerFlUpperWgtCis87 == NULL || upperFlLowerWgtCis87 == NULL || upperFlUpperWgtCis87 == NULL) {
return -1;
}
float lowerFlLowerWgtMach85 = lowerFlLowerWgtCis85[ci];
float lowerFlUpperWgtMach85 = lowerFlUpperWgtCis85[ci];
float upperFlLowerWgtMach85 = upperFlLowerWgtCis85[ci];
float upperFlUpperWgtMach85 = upperFlUpperWgtCis85[ci];
float lowerFlLowerWgtMach87 = lowerFlLowerWgtCis87[ci];
float lowerFlUpperWgtMach87 = lowerFlUpperWgtCis87[ci];
float upperFlLowerWgtMach87 = upperFlLowerWgtCis87[ci];
float upperFlUpperWgtMach87 = upperFlUpperWgtCis87[ci];
float ratioedLowerFlMach85 = interp(lowerFlLowerWgtMach85, lowerFlUpperWgtMach85, ratioWgt);
float ratioedUpperFlMach85 = interp(upperFlLowerWgtMach85, upperFlUpperWgtMach85, ratioWgt);
float ratioedMach85 = interp(ratioedLowerFlMach85, ratioedUpperFlMach85, ratioFl);
float ratioedLowerFlMach87 = interp(lowerFlLowerWgtMach87, lowerFlUpperWgtMach87, ratioWgt);
float ratioedUpperFlMach87 = interp(upperFlLowerWgtMach87, upperFlUpperWgtMach87, ratioWgt);
float ratioedMach87 = interp(ratioedLowerFlMach87, ratioedUpperFlMach87, ratioFl);
return roundTo(interp(ratioedMach85, ratioedMach87, ratioMMO), 3);
}
#endif