aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/emgd/emgd/utils/math_fix.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/emgd/emgd/utils/math_fix.c')
-rw-r--r--drivers/gpu/drm/emgd/emgd/utils/math_fix.c133
1 files changed, 0 insertions, 133 deletions
diff --git a/drivers/gpu/drm/emgd/emgd/utils/math_fix.c b/drivers/gpu/drm/emgd/emgd/utils/math_fix.c
deleted file mode 100644
index ca2a39a59689..000000000000
--- a/drivers/gpu/drm/emgd/emgd/utils/math_fix.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- pse-c -*-
- *-----------------------------------------------------------------------------
- * Filename: math_fix.c
- * $Revision: 1.3 $
- *-----------------------------------------------------------------------------
- * Copyright © 2002-2010, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
- *-----------------------------------------------------------------------------
- * Description:
- * This file contains fixed point implementations of math functions
- *-----------------------------------------------------------------------------
- */
-
-
-/******************************************************************************
- * This is a look-up table for natural log for integer values 1 - 255 in
- * 24i.8f fixed point format.
- *
- * This table returns 0 or ln(0), but it is technically undefined.
- *****************************************************************************/
-static const int ln_table[] =
- {
- 0, 0, 177, 281, 355, 412, 459, 498, 532, 562, 589, 614,
- 636, 657, 676, 693, 710, 725, 740, 754, 767, 779, 791, 803,
- 814, 824, 834, 844, 853, 862, 871, 879, 887, 895, 903, 910,
- 917, 924, 931, 938, 944, 951, 957, 963, 969, 975, 980, 986,
- 991, 996, 1001, 1007, 1012, 1016, 1021, 1026, 1030, 1035, 1039, 1044,
- 1048, 1052, 1057, 1061, 1065, 1069, 1073, 1076, 1080, 1084, 1088, 1091,
- 1095, 1098, 1102, 1105, 1109, 1112, 1115, 1119, 1122, 1125, 1128, 1131,
- 1134, 1137, 1140, 1143, 1146, 1149, 1152, 1155, 1158, 1160, 1163, 1166,
- 1168, 1171, 1174, 1176, 1179, 1181, 1184, 1186, 1189, 1191, 1194, 1196,
- 1199, 1201, 1203, 1206, 1208, 1210, 1212, 1215, 1217, 1219, 1221, 1223,
- 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240, 1242, 1244, 1246, 1248,
- 1250, 1252, 1254, 1256, 1258, 1260, 1261, 1263, 1265, 1267, 1269, 1270,
- 1272, 1274, 1276, 1278, 1279, 1281, 1283, 1284, 1286, 1288, 1289, 1291,
- 1293, 1294, 1296, 1298, 1299, 1301, 1302, 1304, 1306, 1307, 1309, 1310,
- 1312, 1313, 1315, 1316, 1318, 1319, 1321, 1322, 1324, 1325, 1327, 1328,
- 1329, 1331, 1332, 1334, 1335, 1336, 1338, 1339, 1341, 1342, 1343, 1345,
- 1346, 1347, 1349, 1350, 1351, 1353, 1354, 1355, 1356, 1358, 1359, 1360,
- 1361, 1363, 1364, 1365, 1366, 1368, 1369, 1370, 1371, 1372, 1374, 1375,
- 1376, 1377, 1378, 1380, 1381, 1382, 1383, 1384, 1385, 1387, 1388, 1389,
- 1390, 1391, 1392, 1393, 1394, 1395, 1397, 1398, 1399, 1400, 1401, 1402,
- 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1415,
- 1416, 1417, 1418, 1419
- };
-
-
-
-/*----------------------------------------------------------------------------
- *
- * Function: os_pow_fix()
- *
- * Parameters:
- * [IN] base: the base, should be between 0 and 255.
- * [IN] power: this must be in 24i.8f format.
- *
- * Description:
- * This function uses the Taylor Series to approximate the power function
- * using fixed-point math. See this website for the math background
- * http://www.efunda.com/math/taylor_series/exponential.cfm
- *
- * This function was originally designed for gamma correction. When the
- * base value is between 1 - 255 and the power is between 0.1 and 2, this
- * function will produce an approximation that is within 2% of the "real"
- * function.
- *
- * Returns:
- * The result in 24i.8f format
- *
- *----------------------------------------------------------------------------
- */
-
-unsigned int os_pow_fix( const int base, const int power )
-{
- /* For some reason using "const unsigned int" causes a compiler error
- * when I use it below when I declare "result[APPROXIMATE_TERMS]". So
- * switched these from "const unsigned .." to #define
- */
- #define APPROXIMATE_TERMS 40
-#define FRACTION_BITS 8 /* num of bits for fraction */
-
- unsigned int result[APPROXIMATE_TERMS];
- unsigned int i, power_loop;
- unsigned int total = 0;
- int ln_x = ln_table[base]; /* ln_x is in 24i.8f format */
-
-
- /* nothing to do if we get 0 */
- if (0 == base) {
- return 0;
- } else {
- ln_x = ln_table[base];
- }
-
- /* We approximate the result using APPROXIMATE_TERMS terms */
- for (i = 0; i < APPROXIMATE_TERMS; i++) {
-
- result[i] = 1 << FRACTION_BITS;
-
- /* Need to be very careful about the order in which we are multiplying
- * multiplying and dividing because we don't want any overflow. In
- * addition, every time we multiply 2 fixed point numbers, we need to
- * shift the result by FRACTION_BITS to maintain the radix point.
- */
- for( power_loop = 0; power_loop < i; power_loop++ ) {
- result[i] *= ln_x;
- result[i] /= (power_loop + 1);
- result[i] >>=FRACTION_BITS;
- result[i] *= power;
- result[i] >>=FRACTION_BITS;
-
- }
-
- total += result[i];
-
- }
-
- return total;
-}
-