Добавлен , опубликован
Предназначение:
Способ реализации:
Версия Warcraft:
Библиотека, содержащая разные математические функции.

Установка

  1. Скачать .j файл и переместить в Директория-JNGP/jass.
  2. В коде карты прописать импорт библиотеки.
//! import "MathLibrary.j"

Обновления

Обновление 06.12.2024
  • Точность констант Ln2 и Ln10 увеличена до 9 знаков после запятой.
  • К каждой функции добавлена документация.
  • Функция ModuloN теперь возвращает модуль по n, а не остаток от деления на n.
  • Добавлена функция RemainderN, которая возвращает остаток от деления на n.
  • Функция ModuloNPos удалена. Используйте идентичную функцию ModuloInteger из blizzard.j.
  • Функция PowerN больше не возвращает 0 для чисел 1 и -1, если степень отрицательна.
  • Немного увеличена точность результата функции Ln.
Обновление 16.07.2021
Исправлена функция ModuloNPos.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Спасибо за натуральный логарифм в JASS. Бывает полезно написать функцию для нормально распределённой величины из равномерного распределения c заданным матожиданием и сигмой. Обычно для этого используется алгоритм Бокса-Мюллера, и для него как раз нужна функция натурального логарифма.
28
makkad, если очень важна точность, советую заглянуть в сурс, он указан в либе. Там есть несколько более точных имплементаций. В этой либе точность до 3-го знака.
30

В этой либе точность до 3-го знака.
До шестого, и вычисления можно оптимизировать, емнип.

Погоди, да у тебя обрезанная версия в коде, неудивительно что точность невысокая.
Экономишь итерации при схождении ряда и теряешь в точности, а экономии там до 3х проверок и до 3х сложений максимум, смех один, а не экономия.

function IsDivisibleByN takes integer a, integer n returns boolean
    return a / n * n == a
endfunction

function IsNotDivisibleByN takes integer a, integer n returns boolean
    return a / n * n != a
endfunction
if (IsDivisibleByN(15, 5))
if (!IsDivisibleByN(15, 5))
28
Погоди, да у тебя обрезанная версия в коде, неудивительно что точность невысокая.
Дык я с хайва взял, мне очень нужно было. Там написали, что точность для вара норм, мне и хватит.
if (IsDivisibleByN(15, 5))
if (!IsDivisibleByN(15, 5))
Это просто чтобы not не писать, у меня много такого в других функциях.

Либа не претендует на оригинальность, все эти функции может любой и сам написать на самом деле.
28
Вышла новая версия!
Прокрутить к ресурсу
  • Точность констант Ln2 и Ln10 увеличена до 9 знаков после запятой.
  • К каждой функции добавлена документация.
  • Функция ModuloN теперь возвращает модуль по n, а не остаток от деления на n.
  • Добавлена функция RemainderN, которая возвращает остаток от деления на n.
  • Функция ModuloNPos удалена. Используйте идентичную функцию ModuloInteger из blizzard.j.
  • Функция PowerN больше не возвращает 0 для чисел 1 и -1, если степень отрицательна.
  • Немного увеличена точность результата функции Ln.
сравнение функций логарифма
Старая реализация - настоящее значение - новая реализация
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.