Replace surface fit model w/ functional modeling

Uses a logistic model for distortion/sse and a clamped
linear model for rate, with the argument being sse/q^2.
The parameters of the underlying model are determined
based on blocksize and sse.

This model is substantially better in metrics on a training
set than the previous model as well as the curvfit model.
The model is unused currently but will be introduced in the
encoder in various ways subsequently.

Change-Id: Ife2e193e167de8b80c8486f6157ba22d6f1caccd
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index f71ec80..e1171d3 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -703,6 +703,7 @@
                           x * (3.0 * (p[1] - p[2]) + p[3] - p[0])));
 }
 
+/*
 static double interp_bicubic(const double *p, int p_stride, double x,
                              double y) {
   double q[4];
@@ -712,623 +713,122 @@
   q[3] = interp_cubic(p + 3 * p_stride, x);
   return interp_cubic(q, y);
 }
+*/
 
-static const uint8_t bsize_model_cat_lookup[BLOCK_SIZES_ALL] = {
+static const uint8_t bsize_curvfit_model_cat_lookup[BLOCK_SIZES_ALL] = {
   0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 2, 2
 };
 
-static int sse_norm_model_cat_lookup(double sse_norm) {
+static int sse_norm_curvfit_model_cat_lookup(double sse_norm) {
   return (sse_norm > 16.0);
 }
 
-static const double interp_rgrid_surf[4][33 * 18] = {
+// Models distortion by sse using a logistic function on
+// l = log2(sse / q^2) as:
+// dbysse = 16 / (1 + k exp(l + c))
+static double get_dbysse_logistic(double l, double c, double k) {
+  const double A = 16.0;
+  const double dbysse = A / (1 + k * exp(l + c));
+  return dbysse;
+}
+
+// Models rate using a clamped linear function on
+// l = log2(sse / q^2) as:
+// rate = max(0, a + b * l)
+static double get_rate_clamplinear(double l, double a, double b) {
+  const double rate = a + b * l;
+  return (rate < 0 ? 0 : rate);
+}
+
+static const uint8_t bsize_surffit_model_cat_lookup[BLOCK_SIZES_ALL] = {
+  0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 0, 0, 2, 2, 4, 4
+};
+
+static const double surffit_rate_params[9][4] = {
   {
-      29.726102,   30.738006,   25.294088,   25.736759,   41.255961,
-      41.937828,   41.937901,   42.110487,   46.038554,   46.593284,
-      55.290144,   55.672257,   55.672289,   55.672284,   55.641633,
-      54.251766,   38.404522,   36.186584,   30.977201,   32.031695,
-      26.358675,   26.819956,   42.992269,   43.702888,   43.702966,
-      43.882830,   47.992288,   48.920311,   57.633255,   58.015369,
-      58.015396,   57.984745,   56.594876,   40.717227,   39.327227,
-      37.709563,   30.977308,   32.041872,   26.587891,   26.801416,
-      42.339251,   43.674340,   43.710377,   44.048333,   48.365747,
-      57.251292,   57.999483,   58.015595,   57.984977,   56.595076,
-      40.717426,   39.327559,   39.313319,   38.085580,   30.977328,
-      32.271000,   31.802769,   26.377378,   27.473270,   43.021187,
-      43.875643,   47.811034,   48.547182,   57.617338,   58.015563,
-      58.001989,   56.982277,   40.734438,   39.327560,   39.313487,
-      40.065111,   46.657660,   30.977329,   32.281067,   32.031899,
-      26.358835,   26.820108,   42.992490,   43.882906,   47.992438,
-      48.920477,   57.633450,   58.001989,   57.369478,   49.547092,
-      39.714761,   39.313520,   40.065295,   48.834535,   51.525122,
-      30.977329,   32.281072,   32.077511,   27.396520,   26.865699,
-      42.992474,   43.882906,   48.358483,   57.251290,   57.985906,
-      57.369511,   49.564105,   40.101962,   39.330532,   40.065297,
-      48.835069,   57.817665,   145.394655,  30.977369,   32.281197,
-      33.076074,   50.151877,   28.497451,   42.792931,   43.512994,
-      48.377350,   57.604551,   57.386489,   49.951306,   40.118976,
-      39.330567,   40.065298,   48.835069,   57.818203,   151.867755,
-      153.625733,  31.447893,   32.750906,   32.266221,   32.302627,
-      42.268290,   38.854272,   35.574619,   49.427510,   56.878041,
-      50.330896,   48.931678,   39.717770,   40.065331,   48.835069,
-      57.818191,   151.733328,  156.892368,  150.600520,  42.125514,
-      43.448292,   33.901056,   49.284440,   47.710751,   52.761179,
-      46.446220,   71.330907,   47.520016,   49.126258,   40.678046,
-      40.107037,   48.835077,   57.818191,   151.733068,  153.820869,
-      83.953859,   77.615621,   42.078145,   44.460837,   53.413056,
-      53.860750,   51.935802,   60.688133,   54.022549,   59.058236,
-      61.487243,   49.511225,   53.558701,   50.619860,   57.871196,
-      151.733230,  153.821045,  83.819613,   77.759808,   76.318016,
-      47.334708,   55.115021,   63.088351,   65.025437,   66.447005,
-      66.685816,   72.840860,   70.204772,   75.247159,   75.769300,
-      62.167236,   83.948064,   149.878947,  155.679346,  86.031186,
-      83.012511,   86.265353,   124.454706,  64.496779,   78.702984,
-      76.659370,   83.931191,   87.076287,   91.454837,   94.323380,
-      104.708654,  109.932924,  118.596035,  126.154595,  114.409068,
-      89.213630,   131.569970,  134.824613,  205.866155,  239.628810,
-      233.070258,  72.308997,   94.104934,   101.404120,  121.159064,
-      139.921349,  156.802796,  164.908506,  170.895200,  184.099064,
-      198.250167,  207.100063,  207.922921,  207.455763,  210.915553,
-      241.757520,  246.227265,  247.706317,  237.758893,  138.726610,
-      135.459290,  198.494473,  240.094885,  275.356590,  295.461068,
-      304.435273,  303.110796,  296.273053,  317.439936,  319.323966,
-      331.200883,  330.246858,  256.379818,  247.994095,  247.767952,
-      247.767210,  237.760453,  243.406633,  292.096487,  381.480937,
-      421.494757,  458.357268,  483.808573,  487.800297,  481.212962,
-      472.226349,  472.996935,  480.732289,  475.694812,  418.477476,
-      412.710307,  268.338558,  261.989349,  261.987913,  251.406810,
-      469.068582,  568.835648,  608.315967,  642.717253,  653.879813,
-      681.008793,  688.659203,  677.706251,  668.348079,  652.995530,
-      636.214467,  632.005555,  550.175654,  522.412011,  588.754096,
-      591.721361,  591.719586,  567.821360,  667.228892,  787.133995,
-      830.015474,  848.841400,  863.280871,  882.475988,  896.321308,
-      889.205975,  878.059084,  871.467549,  860.073920,  814.054753,
-      726.521001,  747.583633,  751.922326,  752.065525,  752.062970,
-      721.688835,  795.516527,  916.651129,  1045.662316, 1064.160855,
-      1070.930169, 1060.177543, 1080.056283, 1096.204211, 1095.337870,
-      1098.401980, 1087.336698, 1022.507849, 916.586633,  938.424837,
-      942.750167,  945.352203,  945.457385,  907.272493,  943.653980,
-      1021.248655, 1129.544563, 1267.035138, 1281.163505, 1235.783117,
-      1258.747831, 1285.425350, 1293.324247, 1314.802791, 1320.786990,
-      1253.910457, 1138.645930, 1091.248129, 1161.397763, 1220.617170,
-      1223.081462, 1173.684183, 1077.194216, 1216.741493, 1278.148407,
-      1383.489545, 1497.622061, 1505.771495, 1422.262568, 1462.870558,
-      1491.544736, 1494.922359, 1533.495237, 1509.573542, 1356.235452,
-      1322.878872, 1324.869188, 1327.897500, 1337.708123, 1284.090364,
-      1177.946473, 1335.104679, 1414.612819, 1508.772208, 1656.204257,
-      1636.726625, 1693.515385, 1658.176544, 1626.718453, 1699.881842,
-      1721.127481, 1715.540667, 1610.027798, 1528.475428, 1525.090509,
-      1534.987574, 1760.238672, 1698.643936, 1285.821939, 1417.714456,
-      1527.788112, 1660.663143, 1648.660011, 1838.036905, 1838.669356,
-      1803.685279, 1895.404145, 1878.456820, 1907.761437, 1891.806178,
-      1798.474576, 1772.695413, 1777.922135, 1782.961020, 1891.441373,
-      1819.624352, 1363.652278, 1525.975687, 1664.733346, 1725.645678,
-      1842.181220, 1845.935374, 1847.645643, 2084.649919, 2156.327082,
-      2070.132265, 2093.920913, 2066.856209, 1935.233655, 1757.519179,
-      1894.998543, 1904.433642, 1909.668939, 1832.757449, 1466.924321,
-      1622.799826, 1723.952077, 1846.075992, 1857.802996, 1849.640165,
-      2127.098845, 2370.422248, 2375.277013, 2471.317955, 2282.670767,
-      2242.894713, 2110.737592, 1924.405669, 2022.847422, 2092.614827,
-      2113.100659, 2028.502155, 1561.024406, 1719.325091, 1845.872940,
-      1857.825889, 1850.155079, 2127.184115, 2372.221523, 2397.560183,
-      2793.802030, 2525.955468, 2512.515727, 2465.117634, 2335.991284,
-      2104.381407, 2124.161214, 2128.328755, 2129.221941, 2043.260174,
-      1651.007418, 1782.604815, 1855.046326, 1850.154844, 2127.184127,
-      2372.221529, 2397.560385, 2794.384764, 2544.781302, 2651.443272,
-      2739.000803, 2702.474497, 2522.919941, 2276.563499, 2274.919319,
-      2275.308573, 2275.300889, 2183.406597, 1713.105119, 1852.260885,
-      1850.032717, 2127.168115, 2371.857312, 2397.544382, 2794.384763,
-      2544.781370, 2651.673334, 2746.255820, 2763.494638, 2872.508140,
-      2846.367495, 2305.137739, 2281.712444, 2281.725436, 2281.717621,
-      2189.564169, 1780.286046, 1850.026376, 2127.168073, 2371.493095,
-      2389.254845, 2794.020546, 2544.781339, 2651.673334, 2746.255845,
-      2763.564597, 2874.688737, 2884.399707, 2860.263639, 2306.077266,
-      2281.728045, 2281.725981, 2281.718165, 2189.564691, 1775.067091,
-      2127.161715, 2371.493094, 2389.238842, 2793.656329, 2544.765337,
-      2651.673332, 2746.255845, 2763.564597, 2874.688743, 2884.401957,
-      2884.614099, 2860.264919, 2306.079244, 2281.728130, 2281.725981,
-      2281.718165, 2189.564691, 2052.948444, 2371.486799, 2389.238842,
-      2793.656328, 2544.765306, 2651.673331, 2746.255845, 2763.564597,
-      2874.688743, 2884.401957, 2884.616164, 2884.614218, 2861.248329,
-      2328.461556, 2282.711540, 2281.726065, 2281.718165, 2189.564691,
-      2285.514142, 2389.231550, 2793.656328, 2544.765306, 2651.673331,
-      2746.255845, 2763.564597, 2874.688743, 2884.401957, 2884.616164,
-      2884.616200, 2884.616117, 2883.630641, 2837.880625, 2305.093852,
-      2281.727963, 2281.718165, 2189.564691, 2293.011609, 2793.639080,
-      2544.755886, 2651.663879, 2746.245982, 2763.554715, 2874.678861,
-      2884.392075, 2884.606282, 2884.606318, 2884.606318, 2884.606318,
-      2884.604170, 2860.253139, 2306.069362, 2281.720230, 2281.710349,
-      2189.557190, 2600.476153, 2437.607663, 2540.606072, 2634.813199,
-      2647.265343, 2758.176106, 2767.889302, 2768.103509, 2768.103545,
-      2768.103545, 2768.103545, 2768.103545, 2768.101564, 2744.735758,
-      2212.932478, 2189.566673, 2189.557190, 2101.125891,
+      638.390212,
+      2.253108,
+      166.585650,
+      -3.939401,
   },
   {
-      8.370360,    8.509764,    8.942497,    8.962541,    8.993650,
-      9.401615,    9.414854,    9.308823,    9.304164,    9.304163,
-      9.304164,    9.304609,    9.324803,    9.555049,    9.565277,
-      9.571194,    9.647370,    9.451428,    8.722648,    8.867100,
-      9.300225,    9.352116,    9.672213,    9.809754,    9.794381,
-      9.699874,    9.695753,    9.695753,    9.696199,    9.716392,
-      9.947083,    9.967407,    9.973767,    10.050124,   10.454503,
-      14.384681,   8.722677,    8.848489,    8.875968,    9.334087,
-      9.685450,    9.793645,    9.413799,    9.683184,    9.695785,
-      9.696231,    9.716425,    9.947116,    9.967440,    9.973802,
-      10.050158,   10.454591,   15.023561,   15.153937,   8.723107,
-      8.857467,    8.857756,    9.333268,    9.685451,    9.792911,
-      9.397076,    9.682449,    9.695786,    9.706329,    9.946672,
-      9.967440,    9.973802,    10.050158,   10.454591,   15.023647,
-      16.163497,   23.616388,   8.732904,    9.080445,    8.867552,
-      9.333269,    9.685451,    9.792910,    9.397075,    9.682449,
-      9.696231,    9.716869,    9.957343,    9.973801,    10.050158,
-      10.454591,   15.023647,   16.163589,   24.700350,   25.680478,
-      8.733342,    9.090251,    8.868006,    9.333704,    9.685477,
-      9.792913,    9.397086,    9.682895,    9.716424,    9.947246,
-      9.973357,    10.050158,   10.454591,   15.023647,   16.163589,
-      24.700554,   28.087109,   55.858717,   8.827122,    9.186580,
-      8.932093,    9.387586,    9.780396,    9.827339,    9.522726,
-      9.715771,    9.936594,    9.972878,    10.050158,   10.454591,
-      15.023647,   16.163589,   24.700554,   28.087318,   58.323463,
-      58.504090,   11.020305,   11.418729,   10.432068,   10.462985,
-      11.980204,   10.705178,   12.392570,   10.364495,   9.829351,
-      10.102947,   10.457228,   15.023647,   16.163589,   24.700554,
-      28.087319,   58.323704,   60.984846,   58.926665,   12.554530,
-      12.511580,   11.828923,   12.308025,   13.298760,   13.044522,
-      12.945689,   13.556029,   12.673484,   12.067338,   15.194674,
-      16.168241,   24.700556,   28.087321,   58.339708,   61.349323,
-      61.787659,   67.232638,   15.008518,   15.485683,   15.872869,
-      16.107583,   15.835820,   16.877645,   17.678106,   18.822352,
-      20.208378,   19.665073,   19.090588,   25.203257,   28.104179,
-      58.339741,   61.713565,   70.078019,   70.458033,   67.961299,
-      17.761908,   35.462897,   20.615440,   19.929266,   20.679593,
-      22.692816,   25.941528,   29.215386,   34.956494,   38.908872,
-      35.866805,   37.824252,   59.112479,   61.729892,   70.173287,
-      72.702736,   72.797652,   69.857555,   20.506234,   39.710259,
-      24.054829,   25.703729,   31.621917,   38.509103,   44.229053,
-      56.544042,   67.468427,   79.581678,   80.144809,   78.556111,
-      74.399792,   73.852202,   76.027762,   117.654284,  119.482115,
-      114.656650,  25.548773,   48.434418,   42.617322,   59.026359,
-      82.885084,   103.416136,  110.596012,  118.893312,  139.741780,
-      150.511338,  161.901080,  167.647532,  162.429576,  152.184833,
-      152.445359,  168.398896,  169.099625,  162.269514,  82.673806,
-      70.110218,   132.312464,  183.332020,  215.910819,  237.790158,
-      239.207817,  229.469490,  230.174506,  250.717349,  253.902836,
-      250.549622,  207.721430,  175.337781,  174.022082,  174.844559,
-      179.095719,  164.620978,  109.303621,  158.273825,  282.689646,
-      346.940666,  386.914531,  410.989383,  397.460378,  370.331321,
-      364.107004,  366.410030,  380.333542,  363.501310,  294.254304,
-      262.048447,  260.790777,  265.975674,  362.177173,  183.336338,
-      404.520239,  473.542827,  507.606249,  529.861510,  559.718099,
-      588.632991,  577.691379,  533.799138,  522.780262,  528.340923,
-      525.905829,  507.879853,  415.994095,  425.708669,  426.932731,
-      441.248848,  446.721366,  435.160437,  604.741350,  709.039378,
-      780.416591,  732.829427,  733.032326,  766.737728,  758.413295,
-      720.856125,  705.746779,  717.211527,  703.753940,  661.340782,
-      552.231698,  523.727433,  522.707356,  523.327476,  523.380946,
-      502.845082,  745.431184,  827.490462,  962.723712,  998.756854,
-      911.671845,  907.248783,  925.966430,  901.879365,  900.337680,
-      919.439892,  914.334537,  842.878262,  704.639674,  702.883177,
-      703.067185,  703.067254,  703.064850,  674.669690,  894.169844,
-      1025.903412, 1134.439771, 1219.193918, 1158.526825, 1079.781195,
-      1077.325043, 1076.106019, 1075.934290, 1117.511500, 1135.469693,
-      1063.699731, 901.900714,  920.553711,  921.681648,  921.681860,
-      921.679125,  884.454592,  994.327035,  1175.512444, 1231.834682,
-      1307.830164, 1407.421778, 1326.963114, 1253.371428, 1250.787362,
-      1269.653825, 1282.857814, 1343.429863, 1307.501250, 1114.048857,
-      983.551449,  978.228429,  979.601009,  984.578211,  945.021162,
-      1135.950879, 1278.106415, 1310.418579, 1419.457570, 1488.462247,
-      1521.009066, 1542.754625, 1434.182316, 1454.788272, 1471.133321,
-      1506.092266, 1521.256433, 1327.843116, 1309.574134, 1310.302024,
-      1341.725430, 1459.021892, 1404.992306, 1232.172010, 1349.471091,
-      1428.291402, 1487.206606, 1535.398237, 1746.731849, 1716.656287,
-      1635.940921, 1639.303784, 1673.047286, 1693.682270, 1671.177816,
-      1517.793233, 1479.700025, 1478.369392, 1483.694229, 1578.610159,
-      1518.853600, 1297.751330, 1428.849626, 1485.708645, 1493.412575,
-      1741.940596, 1728.475751, 1735.779511, 1858.578642, 1918.863689,
-      1863.724239, 1891.004802, 1842.815568, 1675.715043, 1588.071911,
-      1589.814363, 1592.306606, 1596.345158, 1532.039001, 1373.297412,
-      1461.343441, 1492.261194, 1736.797392, 1653.192795, 1733.476694,
-      1888.263820, 2082.789610, 1991.468137, 1883.805569, 2116.637406,
-      2071.956368, 1871.698996, 1644.776129, 1756.448731, 1809.269770,
-      1811.354640, 1738.198277, 1403.551810, 1491.185946, 1736.750346,
-      1653.047461, 1730.172539, 1888.230584, 2085.624280, 1993.438043,
-      1786.471183, 2337.838134, 2448.464613, 2336.935884, 2097.581279,
-      1808.183187, 1828.142934, 1821.170551, 1820.795051, 1747.257197,
-      1427.896429, 1736.558511, 1653.047441, 1730.172527, 1888.230448,
-      2087.322730, 2032.094869, 1787.954651, 2341.066895, 2641.531977,
-      2539.340235, 2507.302262, 2309.116599, 2030.685235, 2078.550644,
-      1842.720183, 1832.216691, 1758.216718, 1580.198506, 1648.792285,
-      1730.172167, 1888.230448, 2087.322736, 2032.169494, 1789.653110,
-      2341.141530, 2641.873005, 2555.239313, 2709.221434, 2715.218691,
-      2682.937371, 2124.893499, 2102.967545, 2092.601766, 2092.133383,
-      2007.636776, 1578.033231, 1729.979789, 1888.230432, 2087.322736,
-      2032.169494, 1789.653117, 2341.141675, 2641.873012, 2555.239371,
-      2709.566764, 2723.749115, 2724.064349, 2699.003101, 2128.626010,
-      2103.563660, 2103.560569, 2103.553324, 2018.595528, 1663.710423,
-      1888.224796, 2087.322736, 2032.169494, 1789.653117, 2341.141675,
-      2641.873012, 2555.239371, 2709.566764, 2723.749145, 2724.067198,
-      2724.065212, 2700.016608, 2151.662616, 2104.575854, 2103.561585,
-      2103.554293, 2018.596458, 1818.473656, 2087.316820, 2032.169494,
-      1789.653117, 2341.141675, 2641.873012, 2555.239371, 2709.566764,
-      2723.749145, 2724.067198, 2724.067252, 2724.067166, 2723.052897,
-      2675.966135, 2127.612143, 2103.563538, 2103.554293, 2018.596458,
-      2011.142209, 2032.163033, 1789.653117, 2341.141675, 2641.873012,
-      2555.239371, 2709.566764, 2723.749145, 2724.067198, 2724.067252,
-      2724.067252, 2724.067252, 2724.065041, 2699.002510, 2128.626241,
-      2103.563710, 2103.554293, 2018.596458, 1947.414707, 1789.636821,
-      2341.132961, 2641.863707, 2555.230039, 2709.557432, 2723.739813,
-      2724.057867, 2724.057920, 2724.057920, 2724.057920, 2724.057920,
-      2724.055881, 2700.007276, 2151.653370, 2104.568562, 2103.547173,
-      2018.589543, 1614.950117, 2233.740132, 2539.133260, 2445.528333,
-      2599.538876, 2613.721229, 2614.039283, 2614.039337, 2614.039337,
-      2614.039337, 2614.039337, 2614.039337, 2614.039251, 2613.025067,
-      2566.950536, 2041.634786, 2018.591496, 1937.063243,
+      5.256905,
+      81.997240,
+      -1.321771,
+      17.694216,
   },
   {
-      2.147514,    2.237898,    2.237803,    2.237151,    2.275320,
-      2.279324,    2.332179,    2.334501,    2.322470,    2.048664,
-      2.036634,    2.036633,    2.043731,    2.205267,    2.213955,
-      2.286115,    3.114672,    3.150236,    2.237900,    2.332085,
-      2.329658,    2.278309,    2.368754,    2.375255,    2.430335,
-      2.432248,    2.408693,    2.134381,    2.122351,    2.122650,
-      2.136546,    2.299971,    2.379228,    3.209393,    3.546162,
-      6.294600,    2.271800,    2.333582,    2.329564,    2.275984,
-      2.368873,    2.380129,    2.430556,    2.420732,    2.146419,
-      2.122864,    2.122657,    2.136254,    2.293180,    2.378937,
-      3.209400,    3.546195,    6.591552,    7.028860,    3.043184,
-      2.367477,    2.329567,    2.275984,    2.373739,    2.490860,
-      2.435421,    2.420225,    2.134895,    2.122658,    2.136254,
-      2.293180,    2.378936,    3.209400,    3.546195,    6.591617,
-      7.795421,    17.743823,   3.078566,    2.402859,    2.331056,
-      2.275985,    2.373953,    2.495725,    2.435129,    2.408702,
-      2.134688,    2.136255,    2.293180,    2.378936,    3.209400,
-      3.546195,    6.591617,    7.795492,    18.578087,   19.754344,
-      3.112459,    3.174471,    2.370323,    2.279235,    2.375398,
-      2.494530,    2.423939,    2.146738,    2.136763,    2.293180,
-      2.378939,    3.209400,    3.546195,    6.591617,    7.795492,
-      18.578249,   21.659892,   44.204400,   3.089303,    3.189642,
-      2.509317,    2.372448,    2.432176,    2.489915,    2.461894,
-      2.170933,    2.301935,    2.380378,    3.234280,    3.547288,
-      6.591617,    7.795492,    18.578249,   21.660057,   46.157016,
-      46.346972,   2.545327,    2.662725,    2.893299,    2.840660,
-      3.006570,    3.048065,    3.224317,    2.907751,    2.627415,
-      3.268959,    4.113541,    6.616496,    7.795494,    18.578249,
-      21.660057,   46.157182,   48.299592,   46.394222,   2.942757,
-      3.155386,    3.688593,    3.481851,    3.715109,    4.145502,
-      4.681446,    5.080585,    4.600294,    4.278096,    6.726591,
-      7.800142,    18.578250,   21.660057,   46.157182,   48.299758,
-      48.346843,   46.394230,   3.793838,    5.473983,    4.608110,
-      4.665834,    4.593326,    5.621563,    7.102711,    9.025169,
-      10.122234,   10.159723,   10.023976,   18.857332,   21.668316,
-      46.157261,   48.299839,   48.347091,   48.346956,   46.394491,
-      4.271176,    6.466779,    5.484235,    6.027476,    7.301091,
-      9.352794,    12.715546,   16.192475,   22.560070,   27.958500,
-      27.052873,   26.766614,   46.406220,   49.221059,   49.307058,
-      49.315280,   49.587875,   49.469333,   4.312908,    7.475387,
-      7.833860,    10.223714,   16.775457,   24.234924,   32.175390,
-      45.584094,   54.342692,   64.941124,   66.654416,   62.626466,
-      52.266425,   72.572219,   73.485826,   73.672773,   79.880600,
-      119.538616,  9.063034,    10.103318,   19.539238,   36.472083,
-      62.703355,   82.709235,   91.988082,   100.285999,  115.687111,
-      124.329614,  125.634719,  122.315209,  112.379054,  130.322056,
-      131.130875,  131.139174,  131.411947,  127.988734,  19.796341,
-      25.882925,   93.253237,   153.548489,  189.401787,  213.347763,
-      206.988813,  189.758327,  189.286642,  204.628607,  202.531100,
-      201.472079,  186.352604,  214.273591,  215.531911,  215.769339,
-      221.170008,  212.465343,  169.309448,  175.824536,  224.720662,
-      303.438505,  343.063029,  370.535703,  343.624360,  300.549614,
-      289.296503,  298.082336,  310.854450,  294.466802,  270.163254,
-      249.832086,  248.983097,  254.384429,  377.318513,  367.262701,
-      353.359003,  463.883442,  447.419222,  453.002989,  489.006379,
-      528.921013,  500.655371,  439.860852,  423.703334,  423.144668,
-      431.190760,  422.628418,  346.619232,  383.306337,  385.067653,
-      385.305123,  390.705188,  375.153218,  539.087109,  664.575466,
-      708.656277,  662.482491,  618.723324,  674.195070,  656.531281,
-      596.084694,  576.463478,  584.628279,  577.147684,  562.515800,
-      453.416064,  428.149599,  427.247359,  427.247313,  427.246307,
-      409.990807,  687.292802,  777.058828,  905.030245,  912.381642,
-      788.119446,  769.561998,  795.174180,  761.722895,  738.637994,
-      753.718308,  761.364923,  712.753474,  603.465105,  591.662313,
-      594.079856,  594.200005,  594.197958,  570.199152,  779.060173,
-      951.796204,  1069.175314, 1170.755086, 1067.610429, 949.009502,
-      934.793193,  914.719926,  899.055222,  929.548018,  948.443491,
-      883.741844,  754.604267,  719.256051,  780.076337,  782.811403,
-      782.547500,  745.230787,  922.165691,  1108.252645, 1185.274121,
-      1237.276156, 1266.012843, 1226.812751, 1102.465568, 1085.286013,
-      1075.433883, 1091.747391, 1130.914031, 1079.716598, 927.463157,
-      942.209973,  945.879069,  946.263934,  946.332394,  778.375752,
-      1069.516638, 1181.232895, 1244.763295, 1280.392765, 1419.980489,
-      1443.722749, 1374.005679, 1247.118477, 1252.786860, 1265.078694,
-      1280.267151, 1273.804486, 1085.050290, 1037.883124, 1036.171983,
-      1042.457032, 1185.241611, 1137.692305, 1136.326843, 1246.301355,
-      1321.499026, 1422.581245, 1459.231744, 1574.624247, 1593.556714,
-      1554.290382, 1474.539686, 1480.100956, 1464.679108, 1412.507057,
-      1251.278472, 1197.245685, 1195.175062, 1201.168704, 1337.571298,
-      1289.300549, 1198.629451, 1322.569335, 1424.892277, 1470.063106,
-      1576.317080, 1629.881049, 1759.007438, 1685.455960, 1823.183401,
-      1696.763728, 1720.897219, 1582.701816, 1409.816846, 1352.692221,
-      1350.761108, 1356.950874, 1362.935844, 1308.131482, 1273.245632,
-      1447.544983, 1471.079493, 1576.789596, 1629.891022, 1759.113129,
-      1704.167080, 2077.760859, 1944.393655, 2008.282739, 1951.682502,
-      1905.896173, 1653.621076, 1524.210363, 1526.775296, 1662.009621,
-      1667.942643, 1600.578688, 1394.223453, 1472.070445, 1576.833336,
-      1629.890970, 1757.978972, 1678.353822, 2077.085726, 1963.548056,
-      2214.617152, 2129.636312, 2170.262437, 2204.652056, 1892.295487,
-      1652.520236, 1673.779173, 1681.078895, 1681.334159, 1613.428869,
-      1413.634564, 1576.837954, 1629.890974, 1757.978960, 1678.303800,
-      2075.951574, 1963.498706, 2214.984962, 2140.104142, 2224.748512,
-      2358.489855, 2338.333779, 2147.326062, 1959.161343, 1704.142189,
-      1693.264072, 1693.257371, 1624.870507, 1522.455341, 1630.102341,
-      1757.978970, 1678.205343, 2073.710713, 1963.613482, 2219.840292,
-      2140.317509, 2224.830630, 2367.413225, 2514.706448, 2519.715697,
-      2490.578281, 1997.672226, 1965.092163, 1964.608831, 1964.602061,
-      1885.256194, 1566.312385, 1757.983049, 1678.205154, 2071.469838,
-      1912.611809, 2222.454760, 2250.824415, 2229.685973, 2367.413669,
-      2515.007972, 2527.205354, 2527.466626, 2505.215096, 1998.786468,
-      1976.532889, 1976.530885, 1976.524114, 1896.696743, 1692.302152,
-      1678.199584, 2071.469829, 1912.513351, 2220.213903, 2250.939287,
-      2234.541308, 2367.626998, 2515.007990, 2527.205379, 2527.469148,
-      2527.467382, 2506.115004, 2019.240121, 1977.432526, 1976.531972,
-      1976.525125, 1896.697713, 1606.783592, 2071.463772, 1912.513351,
-      2220.213894, 2250.939097, 2234.541317, 2367.627410, 2515.008008,
-      2527.205379, 2527.469148, 2527.469193, 2527.469116, 2526.568562,
-      2484.760968, 1997.886085, 1976.533707, 1976.525125, 1896.697713,
-      2004.589287, 1912.507679, 2220.213894, 2250.939097, 2234.541317,
-      2367.627410, 2515.008008, 2527.205379, 2527.469148, 2527.469193,
-      2527.469193, 2527.469193, 2527.467229, 2505.214602, 1998.786486,
-      1976.533860, 1976.525125, 1896.697713, 1827.779426, 2220.199076,
-      2250.930988, 2234.532682, 2367.618752, 2514.999350, 2527.196721,
-      2527.460490, 2527.460534, 2527.460534, 2527.460534, 2527.460534,
-      2527.458723, 2506.106346, 2019.231539, 1977.425679, 1976.518431,
-      1896.691216, 2056.541124, 2160.944440, 2138.934044, 2265.803052,
-      2412.920916, 2425.118264, 2425.382033, 2425.382078, 2425.382078,
-      2425.382078, 2425.382078, 2425.382078, 2425.382002, 2424.481524,
-      2383.572672, 1917.153083, 1896.692951, 1820.088116,
+      -74.193045,
+      72.431868,
+      -19.033152,
+      15.407276,
   },
   {
-      0.254129,    0.265575,    0.267769,    0.316933,    0.320396,
-      0.350337,    0.358368,    0.358663,    0.358663,    0.358675,
-      0.359199,    0.365181,    0.366036,    0.392895,    0.701286,
-      0.812014,    1.926722,    2.011743,    0.247749,    0.276002,
-      0.279039,    0.330191,    0.332015,    0.365000,    0.373450,
-      0.373758,    0.373759,    0.374032,    0.380276,    0.381405,
-      0.408276,    0.717257,    0.841415,    1.958868,    2.298681,
-      4.856667,    0.246998,    0.275970,    0.279040,    0.328326,
-      0.289563,    0.363136,    0.373451,    0.373760,    0.373771,
-      0.374308,    0.381144,    0.408277,    0.717258,    0.841416,
-      1.958870,    2.298703,    5.088461,    5.484975,    0.246965,
-      0.275218,    0.279007,    0.328244,    0.287698,    0.363054,
-      0.373451,    0.373771,    0.374296,    0.380881,    0.408266,
-      0.717258,    0.841416,    1.958870,    2.298703,    5.088514,
-      6.102534,    14.287379,   0.246213,    0.258111,    0.278255,
-      0.328244,    0.287698,    0.363054,    0.373452,    0.374034,
-      0.380870,    0.408644,    0.725849,    0.841794,    1.958870,
-      2.298703,    5.088514,    6.102591,    14.959455,   15.913957,
-      0.246180,    0.257402,    0.279186,    0.328526,    0.290138,
-      0.364877,    0.376133,    0.375014,    0.408382,    0.734439,
-      1.037308,    1.967461,    2.298704,    5.088514,    6.102591,
-      14.959584,   17.441072,   35.429097,   0.250019,    0.262303,
-      0.303891,    0.340011,    0.350106,    0.413735,    0.446832,
-      0.410301,    0.734390,    1.038841,    2.002354,    2.300237,
-      5.088514,    6.102591,    14.959584,   17.441204,   36.992539,
-      37.110962,   0.339750,    0.354696,    0.373261,    0.461008,
-      0.462495,    0.598987,    0.695421,    0.760530,    1.068705,
-      2.029958,    2.898902,    5.114817,    6.102593,    14.959584,
-      17.441205,   36.992675,   38.648954,   36.568097,   0.400795,
-      0.421342,    0.508307,    0.588014,    0.677109,    0.972744,
-      1.364551,    2.005727,    2.968255,    3.091537,    5.221096,
-      6.106993,    14.959585,   17.441202,   36.995441,   38.712050,
-      38.170575,   37.947398,   0.489106,    0.499732,    0.682198,
-      0.797985,    0.928841,    1.529889,    3.407135,    6.047262,
-      9.020716,    9.566838,    8.225222,    15.250390,   17.449015,
-      36.967227,   38.773771,   39.603706,   39.612863,   38.072105,
-      0.782539,    0.400752,    1.185871,    1.379942,    2.131362,
-      4.169824,    9.556239,    12.949414,   21.418888,   24.451152,
-      23.409241,   22.939144,   37.166430,   38.131684,   39.591435,
-      39.985395,   39.999803,   38.384307,   1.616514,    0.576268,
-      3.109295,    3.930083,    8.248113,    15.543679,   28.108995,
-      37.139521,   46.111565,   52.306471,   54.245700,   51.814241,
-      40.882242,   41.810659,   42.231519,   48.976557,   49.261637,
-      47.271630,   5.094715,    1.500966,    10.566421,   19.002838,
-      38.783971,   59.976285,   70.642488,   79.940911,   88.863960,
-      91.805239,   95.624856,   92.381504,   94.587340,   93.842585,
-      93.403266,   93.670318,   93.432487,   89.648397,   0.664794,
-      7.849196,    61.154449,   96.443290,   137.609372,  162.556446,
-      148.037064,  138.292519,  136.715840,  145.772994,  149.246615,
-      151.612049,  131.470885,  109.201663,  101.316335,  101.904288,
-      101.932270,  97.814994,   6.925953,    50.062367,   155.094765,
-      216.414869,  252.438993,  271.718839,  232.337598,  204.289605,
-      199.194140,  205.331210,  215.677297,  214.590331,  188.109722,
-      172.081271,  228.048207,  250.892300,  251.787562,  241.618501,
-      134.674271,  296.106246,  298.718911,  312.356451,  323.413855,
-      342.631007,  307.749299,  283.067516,  265.987870,  265.460375,
-      276.156298,  267.602576,  244.127989,  255.341106,  257.373708,
-      258.333723,  258.372207,  247.937137,  342.349647,  510.603738,
-      581.005531,  478.386434,  373.143790,  378.600404,  377.561939,
-      356.141074,  338.631477,  331.842551,  340.566852,  327.567230,
-      297.260507,  287.191935,  263.781497,  262.767950,  262.766967,
-      252.154399,  475.742336,  629.567678,  578.444958,  564.378757,
-      438.113186,  396.420987,  414.959234,  431.302969,  421.606208,
-      403.786618,  405.430259,  389.856615,  363.613524,  366.303795,
-      365.460005,  365.415394,  365.414130,  350.655776,  624.537781,
-      642.232055,  604.750655,  630.663539,  588.111844,  475.625654,
-      468.814426,  477.664040,  494.124835,  483.676981,  477.873259,
-      452.815795,  423.548326,  431.959314,  432.336669,  431.259561,
-      431.158392,  412.599201,  599.136090,  596.383540,  649.766837,
-      714.641904,  647.024168,  546.886099,  544.047374,  542.897551,
-      558.506982,  555.978025,  571.819113,  532.351774,  510.677525,
-      495.125872,  493.402635,  468.981876,  468.871284,  423.950331,
-      572.225475,  705.639818,  1024.735591, 667.143308,  595.280675,
-      762.720257,  552.209148,  613.853858,  630.029121,  653.039002,
-      643.569732,  623.030443,  573.888949,  571.441956,  571.380435,
-      572.467453,  621.621663,  597.446835,  681.815611,  1037.097688,
-      905.438670,  599.972561,  762.219180,  517.929098,  688.053947,
-      744.181205,  679.524546,  682.569374,  713.780286,  707.985178,
-      646.983619,  636.062414,  635.699032,  635.794133,  637.956277,
-      612.281811,  1009.018046, 905.871087,  604.028246,  629.564692,
-      511.991374,  689.885845,  836.027416,  766.534552,  881.860194,
-      735.849782,  783.725360,  809.653496,  750.636979,  811.765460,
-      814.639525,  816.244480,  818.253804,  785.288396,  867.862571,
-      604.231326,  629.308626,  506.143862,  689.628928,  836.193031,
-      774.742632,  1007.244245, 1293.627165, 897.984304,  931.611215,
-      973.236387,  945.068518,  947.276414,  950.892263,  987.500595,
-      1033.288662, 993.423200,  674.214249,  634.009759,  506.144239,
-      689.628432,  836.193010,  774.742663,  1007.434892, 1306.991055,
-      1109.422389, 1067.304686, 1126.861498, 1124.180515, 989.502672,
-      997.732672,  1042.608506, 1046.158446, 1048.166963, 1005.915872,
-      633.151925,  507.355996,  689.628570,  836.193810,  774.742698,
-      1007.434892, 1306.991101, 1109.775470, 1079.300073, 1239.065289,
-      1628.963638, 1322.149598, 1152.072478, 1133.642807, 1135.074392,
-      1135.159950, 1135.156239, 1089.309834, 1002.301724, 712.557708,
-      836.610527,  784.181750,  1007.849615, 1306.991136, 1109.775470,
-      1079.300117, 1239.231971, 1644.540785, 1609.385289, 1575.587962,
-      1175.113940, 1139.762609, 1138.978460, 1138.978401, 1138.974499,
-      1092.973876, 693.249751,  850.650934,  794.193638,  1222.681498,
-      1316.430188, 1109.776271, 1079.300117, 1239.231971, 1644.540839,
-      1609.866572, 1604.515037, 1603.618487, 1568.302641, 1157.017568,
-      1138.980254, 1138.978724, 1138.974823, 1092.974187, 834.755585,
-      1090.883669, 1236.131974, 1325.870346, 1110.190994, 1079.300152,
-      1239.231971, 1644.540839, 1609.866572, 1604.515142, 1604.380213,
-      1604.378532, 1585.580675, 1157.776710, 1138.980319, 1138.978724,
-      1138.974823, 1092.974187, 1056.722338, 1249.164781, 1326.443132,
-      1110.191843, 1079.300187, 1239.231971, 1644.540839, 1609.866572,
-      1604.515142, 1604.380213, 1604.380190, 1604.378596, 1585.582205,
-      1157.778240, 1138.980383, 1138.978724, 1138.974823, 1092.974187,
-      1204.957557, 1326.440488, 1110.191892, 1079.300187, 1239.231971,
-      1644.540839, 1609.866572, 1604.515142, 1604.380213, 1604.380190,
-      1604.380190, 1604.378661, 1586.341349, 1175.056279, 1139.739527,
-      1138.978789, 1138.974823, 1092.974187, 1275.872102, 1110.183396,
-      1079.294485, 1239.226464, 1644.535343, 1609.861076, 1604.509646,
-      1604.374717, 1604.374695, 1604.374695, 1604.374695, 1604.374630,
-      1603.613892, 1568.297204, 1157.013600, 1138.976353, 1138.970921,
-      1092.970443, 1014.576161, 1029.697894, 1172.002606, 1579.603765,
-      1545.063972, 1539.712554, 1539.577625, 1539.577603, 1539.577603,
-      1539.577603, 1539.577603, 1539.577603, 1539.576008, 1521.537360,
-      1111.012900, 1092.975717, 1092.970443, 1048.827820,
+      416.770113,
+      14.794188,
+      167.686830,
+      -6.997756,
+  },
+  {
+      378.511276,
+      9.558376,
+      154.658843,
+      -6.635663,
+  },
+  {
+      277.818787,
+      4.413180,
+      150.317637,
+      -9.893038,
+  },
+  {
+      142.212132,
+      11.542038,
+      94.393964,
+      -5.518517,
+  },
+  {
+      219.100256,
+      4.007421,
+      108.932852,
+      -6.981310,
+  },
+  {
+      222.261971,
+      3.251049,
+      95.972916,
+      -5.609789,
   },
 };
 
-static const double interp_dgrid_surf[33 * 18] = {
-  15.491252, 15.496413, 15.496379, 15.394447, 15.394431, 15.446941, 15.480480,
-  15.480491, 15.480491, 15.480491, 15.480573, 15.603112, 15.603153, 15.602880,
-  15.196621, 15.195983, 14.447585, 14.442076, 15.599420, 15.501644, 15.501575,
-  15.399610, 15.399669, 15.452121, 15.485671, 15.485682, 15.485682, 15.485724,
-  15.608303, 15.608385, 15.608113, 15.201854, 15.201079, 14.452681, 14.451350,
-  13.210484, 15.599455, 15.501644, 15.501575, 15.399686, 15.626744, 15.452197,
-  15.485671, 15.485682, 15.485682, 15.485765, 15.608344, 15.608113, 15.201854,
-  15.201079, 14.452681, 14.451350, 13.214913, 13.208705, 15.599455, 15.501679,
-  15.501575, 15.399686, 15.626820, 15.452197, 15.485671, 15.485682, 15.485765,
-  15.608303, 15.608113, 15.201854, 15.201079, 14.452681, 14.451350, 13.214913,
-  13.212184, 10.377543, 15.599489, 15.604652, 15.501610, 15.399686, 15.626820,
-  15.452197, 15.485671, 15.485724, 15.608303, 15.608113, 15.201794, 15.201079,
-  14.452681, 14.451350, 13.214913, 13.212184, 10.381022, 10.373758, 15.599489,
-  15.604686, 15.501645, 15.399727, 15.626807, 15.452213, 15.485673, 15.485765,
-  15.608072, 15.201734, 15.022022, 14.452621, 14.451350, 13.214913, 13.212184,
-  10.381022, 10.375351, 4.752366,  15.599553, 15.604785, 15.606745, 15.523109,
-  15.588440, 15.498592, 15.490939, 15.608113, 15.201734, 15.022022, 14.452398,
-  14.451350, 13.214913, 13.212184, 10.381022, 10.375351, 4.753958,  4.748594,
-  15.788491, 15.793763, 15.727178, 15.593404, 15.576185, 15.541155, 15.528638,
-  15.443234, 15.022046, 14.452234, 13.963908, 13.214750, 13.212184, 10.381022,
-  10.375351, 4.753958,  4.750187,  4.748513,  15.783667, 15.788604, 15.715040,
-  15.574608, 15.604897, 15.345511, 15.322323, 15.003579, 14.280362, 13.963611,
-  13.214382, 13.212184, 10.381022, 10.375351, 4.753958,  4.750106,  4.750025,
-  4.508804,  15.747709, 14.765834, 15.706678, 15.619092, 15.637946, 15.437393,
-  14.705235, 13.886464, 13.092309, 12.499506, 12.601594, 10.380302, 10.375350,
-  4.753958,  4.750026,  4.510253,  4.510173,  4.508580,  15.641901, 14.968111,
-  15.663074, 15.583828, 15.420627, 14.983936, 13.912901, 13.425841, 11.601603,
-  10.600757, 10.110971, 8.839811,  4.753363,  4.749963,  4.510190,  4.322919,
-  4.322857,  4.321407,  15.545263, 14.859883, 15.429167, 15.185696, 14.527376,
-  13.650042, 12.244185, 10.755706, 9.356137,  8.229212,  8.166627,  7.324414,
-  4.511146,  4.322709,  4.322566,  4.322503,  4.322503,  4.321054,  15.151031,
-  14.579126, 14.592456, 13.733213, 11.980508, 10.685709, 9.143695,  7.466555,
-  6.434770,  5.659204,  5.592407,  5.356211,  4.597869,  3.456439,  3.456056,
-  3.456176,  3.456176,  3.455018,  13.478598, 13.969965, 10.921203, 9.274388,
-  7.530261,  6.614303,  5.617812,  4.558886,  4.008929,  3.739688,  3.597707,
-  3.510418,  3.041638,  3.096611,  3.096750,  3.455008,  3.455038,  3.453880,
-  11.982351, 11.102072, 6.384662,  5.366178,  4.365376,  3.782955,  3.285890,
-  2.758904,  2.439067,  2.338593,  2.257332,  2.190385,  2.088145,  1.867744,
-  1.867445,  1.196878,  0.929332,  0.928931,  6.882587,  5.102224,  3.928701,
-  3.021205,  2.614349,  2.162491,  1.870802,  1.628127,  1.448370,  1.352404,
-  1.349332,  1.277236,  1.128399,  0.928668,  0.928601,  0.928485,  0.928395,
-  0.928084,  4.066496,  3.233175,  2.413117,  1.830193,  1.473572,  1.273461,
-  1.065156,  0.929824,  0.844729,  0.777037,  0.754300,  0.759737,  0.658871,
-  0.603118,  0.603209,  0.928096,  0.928205,  0.927893,  2.747433,  2.039019,
-  1.400016,  1.123698,  0.918772,  0.744824,  0.627536,  0.528263,  0.480634,
-  0.446093,  0.423444,  0.401394,  0.394353,  0.360914,  0.360903,  0.361012,
-  0.361012,  0.360891,  1.709038,  1.258373,  0.985529,  0.673582,  0.559577,
-  0.456411,  0.372560,  0.312622,  0.268425,  0.251698,  0.238132,  0.222477,
-  0.209643,  0.165264,  0.165254,  0.165254,  0.165254,  0.165199,  1.088160,
-  0.806677,  0.673453,  0.490758,  0.350173,  0.277724,  0.229342,  0.190245,
-  0.158717,  0.138414,  0.132405,  0.123800,  0.120550,  0.128355,  0.142808,
-  0.142812,  0.142800,  0.142752,  0.806227,  0.588621,  0.490714,  0.350136,
-  0.236497,  0.188583,  0.143991,  0.115039,  0.097317,  0.081406,  0.071159,
-  0.067980,  0.062769,  0.066575,  0.066581,  0.066569,  0.030318,  0.030291,
-  0.588339,  0.456572,  0.302189,  0.236473,  0.188564,  0.126491,  0.101248,
-  0.075242,  0.059591,  0.051942,  0.042824,  0.037390,  0.034523,  0.030277,
-  0.030275,  0.030275,  0.030258,  0.014677,  0.456374,  0.302172,  0.236448,
-  0.164278,  0.126481,  0.094667,  0.068489,  0.053835,  0.038513,  0.031335,
-  0.028947,  0.022753,  0.019347,  0.014676,  0.014675,  0.014674,  0.014674,
-  0.014664,  0.302014,  0.221625,  0.164273,  0.126473,  0.094667,  0.068483,
-  0.053831,  0.034298,  0.027445,  0.022220,  0.016315,  0.015692,  0.012949,
-  0.009448,  0.009442,  0.007914,  0.007913,  0.007910,  0.221524,  0.164268,
-  0.126473,  0.094667,  0.068480,  0.044800,  0.034295,  0.027442,  0.019666,
-  0.014389,  0.011041,  0.011550,  0.009117,  0.021326,  0.007915,  0.007911,
-  0.007911,  0.007908,  0.164193,  0.126473,  0.094667,  0.068480,  0.044800,
-  0.034291,  0.027442,  0.019665,  0.014388,  0.008515,  0.008320,  0.009117,
-  0.007357,  0.004348,  0.004343,  0.007908,  0.007910,  0.007907,  0.125623,
-  0.094667,  0.068480,  0.044800,  0.034289,  0.023364,  0.019663,  0.011887,
-  0.008514,  0.008318,  0.007208,  0.007208,  0.007206,  0.004342,  0.004341,
-  0.004342,  0.004342,  0.004341,  0.094624,  0.068480,  0.044800,  0.034289,
-  0.023364,  0.019662,  0.011887,  0.008514,  0.008318,  0.007208,  0.007207,
-  0.007207,  0.007206,  0.004342,  0.004341,  0.004341,  0.004341,  0.004340,
-  0.068449,  0.044800,  0.034289,  0.023364,  0.019662,  0.011887,  0.008514,
-  0.008318,  0.007208,  0.007207,  0.007207,  0.007207,  0.007206,  0.004343,
-  0.004341,  0.004341,  0.004341,  0.004340,  0.044777,  0.034289,  0.023364,
-  0.019662,  0.011887,  0.008514,  0.008318,  0.007208,  0.007207,  0.007207,
-  0.007207,  0.007207,  0.007207,  0.007205,  0.004342,  0.004341,  0.004341,
-  0.004340,  0.034274,  0.023364,  0.019662,  0.011887,  0.008514,  0.008318,
-  0.007208,  0.007207,  0.007207,  0.007207,  0.007207,  0.007207,  0.007207,
-  0.007206,  0.004342,  0.004341,  0.004341,  0.004340,  0.023353,  0.019662,
-  0.011887,  0.008514,  0.008318,  0.007208,  0.007207,  0.007207,  0.007207,
-  0.007207,  0.007207,  0.007207,  0.007207,  0.007206,  0.004343,  0.004341,
-  0.004341,  0.004340,  0.019650,  0.011884,  0.008511,  0.008316,  0.007205,
-  0.007205,  0.007205,  0.007205,  0.007205,  0.007205,  0.007205,  0.007205,
-  0.007205,  0.007205,  0.007203,  0.004341,  0.004340,  0.004338,
+static const double surffit_dist_params[7] = {
+  1.475844, 4.328362, -5.680233, -0.500994, 0.554585, 4.839478, -0.695837
 };
 
+static void rate_surffit_model_params_lookup(BLOCK_SIZE bsize, double xm,
+                                             double *rpar) {
+  const int cat = bsize_surffit_model_cat_lookup[bsize];
+  rpar[0] = surffit_rate_params[cat][0] + surffit_rate_params[cat][1] * xm;
+  rpar[1] = surffit_rate_params[cat][2] + surffit_rate_params[cat][3] * xm;
+}
+
+static void dist_surffit_model_params_lookup(BLOCK_SIZE bsize, double xm,
+                                             double *dpar) {
+  (void)bsize;
+  const double *params = surffit_dist_params;
+  dpar[0] = params[0] + params[1] / (1 + exp((xm + params[2]) * params[3]));
+  dpar[1] = params[4] + params[5] * exp(params[6] * xm);
+}
+
 void av1_model_rd_surffit(BLOCK_SIZE bsize, double sse_norm, double xm,
-                          double yl, double *rate_f, double *dist_f) {
+                          double yl, double *rate_f, double *distbysse_f) {
   (void)sse_norm;
-  const double x_start = -0.5;
-  const double x_end = 16.5;
-  const double x_step = 1.0;
-  const double y_start = -15.5;
-  const double y_end = 16.5;
-  const double y_step = 1.0;
-  const double epsilon = 1e-6;
-  const int stride = (int)rint((x_end - x_start) / x_step) + 1;
-  const int rcat = bsize_model_cat_lookup[bsize];
-  (void)y_end;
+  double rpar[2], dpar[2];
+  rate_surffit_model_params_lookup(bsize, xm, rpar);
+  dist_surffit_model_params_lookup(bsize, xm, dpar);
 
-  xm = AOMMAX(xm, x_start + x_step + epsilon);
-  xm = AOMMIN(xm, x_end - x_step - epsilon);
-  yl = AOMMAX(yl, y_start + y_step + epsilon);
-  yl = AOMMIN(yl, y_end - y_step - epsilon);
-
-  const double y = (yl - y_start) / y_step;
-  const double x = (xm - x_start) / x_step;
-
-  const int yi = (int)floor(y);
-  const int xi = (int)floor(x);
-  assert(xi > 0);
-  assert(yi > 0);
-
-  const double yo = y - yi;
-  const double xo = x - xi;
-  const double *prate = &interp_rgrid_surf[rcat][(yi - 1) * stride + (xi - 1)];
-  const double *pdist = &interp_dgrid_surf[(yi - 1) * stride + (xi - 1)];
-  *rate_f = interp_bicubic(prate, stride, xo, yo);
-  *dist_f = interp_bicubic(pdist, stride, xo, yo);
+  *rate_f = get_rate_clamplinear(yl, rpar[0], rpar[1]);
+  *distbysse_f = get_dbysse_logistic(yl, dpar[0], dpar[1]);
 }
 
 static const double interp_rgrid_curv[4][65] = {
@@ -1429,8 +929,8 @@
   const double x_end = 16.5;
   const double x_step = 0.5;
   const double epsilon = 1e-6;
-  const int rcat = bsize_model_cat_lookup[bsize];
-  const int dcat = sse_norm_model_cat_lookup(sse_norm);
+  const int rcat = bsize_curvfit_model_cat_lookup[bsize];
+  const int dcat = sse_norm_curvfit_model_cat_lookup(sse_norm);
   (void)x_end;
 
   xqr = AOMMAX(xqr, x_start + x_step + epsilon);