// Copyright (c) 2012-2017 VideoStitch SAS
// Copyright (c) 2018 stitchEm

#pragma once

static const std::array<float, 256> orah4iInverseCurve{{
    0.0000f,   1.0000f,   2.0000f,   3.0000f,   4.0000f,    5.0000f,    7.0000f,   8.0000f,   9.0000f,   10.0000f,
    11.0000f,  12.0000f,  13.0000f,  14.0000f,  16.0000f,   17.0000f,   18.0000f,  19.0000f,  20.0000f,  21.0000f,
    22.0000f,  24.0000f,  25.0000f,  26.0000f,  27.0000f,   28.0000f,   30.0000f,  31.0000f,  32.0000f,  33.0000f,
    34.0000f,  36.0000f,  37.0000f,  38.0000f,  40.0000f,   41.0000f,   42.0000f,  43.0000f,  45.0000f,  46.0000f,
    47.0000f,  48.0000f,  50.0000f,  51.0000f,  52.0000f,   54.0000f,   55.0000f,  56.0000f,  58.0000f,  59.0000f,
    61.0000f,  62.0000f,  63.0000f,  65.0000f,  66.0000f,   68.0000f,   69.0000f,  70.0000f,  72.0000f,  73.0000f,
    75.0000f,  76.0000f,  78.0000f,  79.0000f,  81.0000f,   82.0000f,   84.0000f,  85.0000f,  87.0000f,  88.0000f,
    90.0000f,  91.0000f,  93.0000f,  94.0000f,  96.0000f,   98.0000f,   99.0000f,  101.0000f, 102.0000f, 104.0000f,
    106.0000f, 107.0000f, 109.0000f, 111.0000f, 112.0000f,  114.0000f,  116.0000f, 117.0000f, 119.0000f, 121.0000f,
    123.0000f, 124.0000f, 126.0000f, 128.0000f, 130.0000f,  132.0000f,  133.0000f, 135.0000f, 137.0000f, 139.0000f,
    141.0000f, 143.0000f, 145.0000f, 147.0000f, 148.0000f,  150.0000f,  152.0000f, 154.0000f, 156.0000f, 158.0000f,
    160.0000f, 162.0000f, 165.0000f, 167.0000f, 169.0000f,  171.0000f,  173.0000f, 175.0000f, 177.0000f, 179.0000f,
    181.0000f, 184.0000f, 186.0000f, 188.0000f, 190.0000f,  193.0000f,  195.0000f, 197.0000f, 200.0000f, 202.0000f,
    204.0000f, 207.0000f, 209.0000f, 212.0000f, 214.0000f,  216.0000f,  219.0000f, 221.0000f, 224.0000f, 227.0000f,
    229.0000f, 232.0000f, 234.0000f, 237.0000f, 240.0000f,  242.0000f,  245.0000f, 248.0000f, 251.0000f, 254.0000f,
    256.0000f, 259.0000f, 262.0000f, 265.0000f, 268.0000f,  271.0000f,  274.0000f, 277.0000f, 280.0000f, 283.0000f,
    286.0000f, 290.0000f, 293.0000f, 296.0000f, 299.0000f,  303.0000f,  306.0000f, 309.0000f, 313.0000f, 316.0000f,
    320.0000f, 323.0000f, 327.0000f, 331.0000f, 334.0000f,  338.0000f,  342.0000f, 346.0000f, 350.0000f, 354.0000f,
    357.0000f, 361.0000f, 366.0000f, 370.0000f, 374.0000f,  378.0000f,  382.0000f, 387.0000f, 391.0000f, 396.0000f,
    400.0000f, 405.0000f, 409.0000f, 414.0000f, 419.0000f,  424.0000f,  429.0000f, 434.0000f, 439.0000f, 444.0000f,
    449.0000f, 455.0000f, 460.0000f, 466.0000f, 471.0000f,  477.0000f,  483.0000f, 489.0000f, 495.0000f, 501.0000f,
    507.0000f, 513.0000f, 520.0000f, 526.0000f, 533.0000f,  540.0000f,  547.0000f, 554.0000f, 561.0000f, 569.0000f,
    576.0000f, 584.0000f, 592.0000f, 600.0000f, 608.0000f,  616.0000f,  625.0000f, 634.0000f, 643.0000f, 652.0000f,
    662.0000f, 671.0000f, 681.0000f, 691.0000f, 702.0000f,  713.0000f,  724.0000f, 735.0000f, 747.0000f, 759.0000f,
    771.0000f, 784.0000f, 798.0000f, 811.0000f, 826.0000f,  840.0000f,  855.0000f, 871.0000f, 888.0000f, 905.0000f,
    922.0000f, 941.0000f, 960.0000f, 980.0000f, 1001.0000f, 1023.0000f,
}};

static const std::array<float, 256> orah4iCurve{{
    0.0000f,    14.9409f,   29.6272f,   44.0641f,   58.2569f,   72.2105f,   85.9299f,   99.4200f,   112.6853f,
    125.7305f,  138.5601f,  151.1783f,  163.5896f,  175.7979f,  187.8074f,  199.6220f,  211.2456f,  222.6819f,
    233.9348f,  245.0076f,  255.9041f,  266.6275f,  277.1814f,  287.5689f,  297.7932f,  307.8575f,  317.7649f,
    327.5183f,  337.1207f,  346.5750f,  355.8838f,  365.0501f,  374.0763f,  382.9652f,  391.7193f,  400.3411f,
    408.8331f,  417.1976f,  425.4370f,  433.5535f,  441.5495f,  449.4271f,  457.1884f,  464.8355f,  472.3706f,
    479.7955f,  487.1124f,  494.3230f,  501.4293f,  508.4332f,  515.3364f,  522.1407f,  528.8478f,  535.4595f,
    541.9774f,  548.4031f,  554.7382f,  560.9844f,  567.1430f,  573.2157f,  579.2038f,  585.1089f,  590.9323f,
    596.6754f,  602.3395f,  607.9261f,  613.4364f,  618.8716f,  624.2331f,  629.5220f,  634.7395f,  639.8869f,
    644.9653f,  649.9757f,  654.9194f,  659.7974f,  664.6108f,  669.3606f,  674.0479f,  678.6736f,  683.2388f,
    687.7444f,  692.1914f,  696.5806f,  700.9131f,  705.1897f,  709.4114f,  713.5788f,  717.6930f,  721.7548f,
    725.7649f,  729.7242f,  733.6335f,  737.4935f,  741.3049f,  745.0687f,  748.7854f,  752.4557f,  756.0805f,
    759.6604f,  763.1960f,  766.6881f,  770.1373f,  773.5442f,  776.9095f,  780.2338f,  783.5177f,  786.7618f,
    789.9668f,  793.1331f,  796.2613f,  799.3521f,  802.4059f,  805.4233f,  808.4048f,  811.3510f,  814.2624f,
    817.1394f,  819.9826f,  822.7925f,  825.5694f,  828.3140f,  831.0267f,  833.7078f,  836.3580f,  838.9775f,
    841.5669f,  844.1265f,  846.6568f,  849.1582f,  851.6311f,  854.0759f,  856.4930f,  858.8828f,  861.2456f,
    863.5818f,  865.8918f,  868.1759f,  870.4346f,  872.6681f,  874.8768f,  877.0610f,  879.2211f,  881.3574f,
    883.4701f,  885.5597f,  887.6265f,  889.6707f,  891.6926f,  893.6925f,  895.6708f,  897.6278f,  899.5636f,
    901.4786f,  903.3730f,  905.2472f,  907.1014f,  908.9358f,  910.7508f,  912.5465f,  914.3232f,  916.0811f,
    917.8206f,  919.5418f,  921.2450f,  922.9304f,  924.5982f,  926.2487f,  927.8820f,  929.4985f,  931.0982f,
    932.6815f,  934.2485f,  935.7995f,  937.3345f,  938.8539f,  940.3579f,  941.8465f,  943.3201f,  944.7788f,
    946.2227f,  947.6521f,  949.0672f,  950.4681f,  951.8550f,  953.2280f,  954.5874f,  955.9333f,  957.2658f,
    958.5852f,  959.8916f,  961.1851f,  962.4659f,  963.7341f,  964.9900f,  966.2336f,  967.4651f,  968.6847f,
    969.8924f,  971.0885f,  972.2730f,  973.4461f,  974.6080f,  975.7587f,  976.8984f,  978.0272f,  979.1453f,
    980.2528f,  981.3498f,  982.4364f,  983.5127f,  984.5789f,  985.6351f,  986.6813f,  987.7178f,  988.7446f,
    989.7618f,  990.7696f,  991.7680f,  992.7572f,  993.7372f,  994.7082f,  995.6702f,  996.6235f,  997.5679f,
    998.5038f,  999.4311f,  1000.3499f, 1001.2605f, 1002.1627f, 1003.0568f, 1003.9428f, 1004.8208f, 1005.6909f,
    1006.5532f, 1007.4078f, 1008.2548f, 1009.0941f, 1009.9261f, 1010.7506f, 1011.5678f, 1012.3777f, 1013.1806f,
    1013.9763f, 1014.7650f, 1015.5468f, 1016.3218f, 1017.0900f, 1017.8515f, 1018.6063f, 1019.3546f, 1020.0964f,
    1020.8318f, 1021.5608f, 1022.2835f, 1023.0000f,
}};