Математика

Nov 09, 2011 12:53

Вчера обнаружил, что совершенно не дружу с математикой. :) Лет пять назад мне понадобилась формула линейной интерполяции по двум точкам; лезть в математический справочник и вспоминать, как это делается с помощью линейной функции было лень - вывел быстренько на коленке через подобие треугольников. Немного смущало то, что в формуле было два умножения, но она давала верные результаты, поэтому я на нее забил. Работает она в целочисленной арифметике, и недавно обнаружилось, что при финальном делении промежуточного 64-разрядного числа на 32-разрядный делитель изредка возникает переполнение, чего быть не должно. Перепроверил дважды - вроде все правильно, а переполнение возникает. Тогда вывел снова через подобные треугольники, но чуть по-другому - получилось с одним умножением и гарантией отсутствия переполнения. :) То есть, как и должно было быть с самого начала, но я уже настолько забыл аналитический аппарат, что разбираться в формулах реально некомфортно, проще интуитивно... :)

наука, программирование

Previous post Next post
Up