Книга: Программирование на языке Ruby
5.12. Библиотека mathn
5.12. Библиотека mathn
В программах, выполняющих большой объем математических вычислений, очень пригодится замечательная библиотека mathn
, которую написал Кейдзу Исидзука (Keiju Ishitsuka). В ней есть целый ряд удобных методов и классов; кроме того, она унифицирует все классы Ruby для работы с числами так, что они начинают хорошо работать совместно.
Простейший способ воспользоваться этой библиотекой — включить ее с помощью директивы require
и забыть. Поскольку она сама включает библиотеки complex
, rational
и matrix
(в таком порядке), то вы можете этого не делать.
В общем случае библиотека mathn
пытается вернуть «разумные» результаты вычислений. Например, при извлечении квадратного корня из Rational
будет возвращен новый объект Rational
, если это возможно; в противном случае Float
. В таблице 5.1 приведены некоторые последствия загрузки этой библиотеки.
Таблица 5.1. Результаты вычислений в случае отсутствия и наличия библиотеки mathn
Выражение | Без mathn | С mathn |
---|---|---|
Math.sqrt(Rational(9,16)) | 0.75 | Rational(3,4) |
1/2 | 0 | Rational(1,2) |
Matrix.identity(3)/3 | Matrix[[0,0,0], [0,0,0],[0,0,0]] | Matrix[[1/3,0,0], [0,1/3,0],[0,0,1/3]] |
Math.sqrt(64/25) | 1.4142… | Rational(8,5) |
Rational(1,10).inspect | Rational(1,10) | 1/10 |
Библиотека mathn
добавляет методы **
и power2
в класс Rational
. Она изменяет поведение метода Math.sqrt
и добавляет метод Math.rsqrt
, умеющий работать с рациональными числами.
Дополнительная информация приводится в разделах 5.13 и 5.14.
- 5.1. Представление чисел в языке Ruby
- 5.2. Основные операции над числами
- 5.3. Округление чисел с плавающей точкой
- 5.4. Сравнение чисел с плавающей точкой
- 5.5. Форматирование чисел для вывода
- 5.6. Вставка разделителей при форматировании чисел
- 5.7. Работа с очень большими числами
- 5.8. Использование класса BigDecimal
- 5.9. Работа с рациональными числами
- 5.10. Перемножение матриц
- 5.11. Комплексные числа
- 5.12. Библиотека mathn
- 5.13. Разложение на простые множители, вычисление НОД и НОК
- 5.14. Простые числа
- 5.15. Явные и неявные преобразования чисел
- 5.16. Приведение числовых значений
- 5.17. Поразрядные операции над числами
- 5.18. Преобразование системы счисления
- 5.19. Извлечение кубических корней, корней четвертой степени и т.д.
- 5.20. Определение порядка байтов
- 5.21. Численное вычисление определенного интеграла
- 5.22. Тригонометрия в градусах, радианах и градах
- 5.23. Неэлементарная тригонометрия
- 5.24. Вычисление логарифмов по произвольному основанию
- 5.25. Вычисление среднего, медианы и моды набора данных
- 5.26. Дисперсия и стандартное отклонение
- 5.27. Вычисление коэффициента корреляции
- 5.28. Генерирование случайных чисел
- 5.29. Кэширование функций с помощью метода memoize
- 5.30. Заключение
- 17.2.1. Библиотека setup.rb
- 15.2.1. Стандартная библиотека rss
- Библиотека Ext Core
- А.2.4. Библиотека ccmalloc
- 13.2. Локали и библиотека С
- 15.5.1. Библиотека dbug — усовершенствованный printf()
- Клиентская библиотека Firebird
- Стандартная библиотека ввода
- API, POSIX и библиотека С
- Библиотека Oracle XDK
- Управление библиотеками общего доступа
- 15. Библиотека языка Си и файлы ввода-вывода