Я работаю над математической библиотекой для моего DirectX 3D-движка в C #. Я использую SlimDX, который представляет собой удивительно собранную и мощную библиотеку. SlimDX предоставляет довольно много математических классов, но они на самом деле являются обертками вокруг нативных объектов D3DX, поэтому, хотя сами объекты очень и очень быстрые, взаимодействие, я полагаю, не происходит, потому что мой управляемый код C # превосходит их.
Мой конкретный вопрос касается сравнения с плавающей точкой. Каноническим способом сортировки является определение значения эпсилона и сравнение его с разницей между значениями с плавающей запятой для определения близости, например:
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
return Math.Abs(a - b) < Epsilon
}
Затраты на вызов функции затопят фактическое сравнение, поэтому эта тривиальная функция будет встроена в C ++, будет ли компилятор C # делать это? Есть ли способ сообщить компилятору C #, что я хочу встроенный метод?