• Как проверить чётность числа с плавающей запятой?

    @Aenigma
    Из контекста следует, что речь идёт о целых числах, представленных в вещественном формате. Если так, тогда переводить в целое число, как выше советовали, - это не универсальный метод, поскольку число может выходить за пределы разрядной сетки целого типа. Проверять нужно следующим образом:
    0.5*x==round(0.5*x)
    Ответ написан
    Комментировать
  • Алгоритм нахождения синуса любого угла?

    @Aenigma
    Самым быстрым и точным, но не экономичным, считается метод интерполяции в таблице. Однако существуют более экономичные и почти столь же быстрые (а, возможно, и более быстрые) методы вычисления трансцендентных функций - это аппроксимации по методу Чебышёва и Паде-Чебышёва. Производительность соответствующих алгоритмов будет зависеть от требуемой точности. Например, для аппроксимации тригонометрических функций с одинарной точностью (7-8 значащих десятичных цифр) по методу Чебышёва, как правило, достаточно использовать многочлен с 5-ю слагаемыми. Его вычисление настолько быстрое, что может превосходить по скорости табличный метод. Для вычисления функций с двойной и более высокой точностью лучшие результаты достигаются по методу Паде-Чебышёва (аппроксимация дробно-рациональной функцией).

    Дополнительным достоинством данных методов в том, что с помощью векторных команд несложно сделать, например, параллельное вычисление синуса и косинуса одного аргумента. В методе Паде-Чебышёва с помощью векторных команд возможно параллельное вычисление числителя и знаменателя функции, что почти вдвое повышает производительность. Я проверял производительность функции вычисления натурального логарифма с двойной точностью, написанной по методу Паде-Чебышёва, она превосходила стандартную библиотечную функцию. С одинарной точностью - ещё быстрее.

    В качестве примера вот ссылка на быструю функцию вычисления тангенса в градусах с одинарной точностью по методу Чебышёва (сообщение от 2021-09-20 13:12:22):
    https://codengineering.ru/q/bystraya-realizaciya-t...
    Ответ написан
    Комментировать