Честно говоря, не видел подобного в инете, ну и решил сюда закинуть, думаю суть данной библиотеки ясна, если у кого есть желание продолжить, то дерзайте (как раз я хотел добавить логарифмы, но перехотел )
math.inc
- Код: Выделить всё
/* * * * * * * * * * * * * * * * * * * * *
* - - - - - - - - - - - - - - - - - - - -
* Название: Math.inc
* Версия: 0.1
* Автор: Hozon
* - - - - - - - - - - - - - - - - - - - -
* * * * * * * * * * * * * * * * * * * * */
#if defined _math_included
#endinput
#endif
#define _math_included
/* * -> * -> * -> * -> * Математические константы * -> * -> * -> * -> * */
#define PI 3.14159
#define SQRT2 1.4142135623730951
#define E 2.718281828459045
#define LN2 0.6931471805599453
#define LN10 2.302585092994046
#define LOG2E 1.4426950408889634
#define LOG10E 0.4342944819032518
/* * <- * <- * <- * <- * Математические константы * <- * <- * <- * <- * */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Возведение в степень (Целое число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - число (целое)
* b - степень
*
* Возводит число в степень: exponentiation(2, 3)
* Возвращает ответ: 8
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock exponentiation(a, b)
{
new ConstNum = a
for(new i=0;i<b;i++)
{
a = a * ConstNum
if(!i)
a = ConstNum
}
if(b == 0)
a = 1
return a
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Возведение в степень (Дробное число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - число (дробное)
* b - степень
*
* Возводит число в степень: exponentiation_f(0.5, 3)
* Возвращает ответ: 0.125
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock Float:exponentiation_f(Float:a, b)
{
new Float:ConstFloat = a
for(new i=0;i<b;i++)
{
a = a * ConstFloat
if(!i)
a = ConstFloat
}
if(b == 0)
a = 1.0
return a
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Вычисление квадратного корня из числа
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - число под корнем
*
* Вычисляет квадратный корень из числа: root(9)
* Возвращает ответ: 3
*
* Вернёт -1, если число не целое, отрицательное или > 100.000.000
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock root(a)
{
new i
for(i=0;i<10000;i++)
if(i * i == a)
break
if(i == 10000)
i = -1
return i
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Нахождение процента от числа
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - число
* b - процент
*
* Находит процент от числа: percent(120, 50)
* Возвращает ответ: 60
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock percent(a, b)
{
new Float:_b
_b = float(b)
return floatround((a * (_b / 100)))
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Вероятность события
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - благоприятные события
* b - все равновозможные события
*
* Вычисляет вероятность события: probability(1, 2)
* Возвращает процент вероятности события: 50%
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock probability(a, b)
{
new Float:_a, Float:_b
_a = float(a), _b = float(b)
return floatround((100 * (_a / _b)))
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Теорема Пифагора (нахождение гипотенузы)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - первый катет
* b - второй катет
*
* Находит чему равна гипотенуза: Hypotenuse_PythagoreanTheorem(3, 4)
* По формуле: √a² + b²
* Возвращает ответ: 5
*
* Вернёт -1, если один из катетов <= 0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock Hypotenuse_PythagoreanTheorem(a, b)
{
return (a <= 0 || b <= 0) ? -1 : root(exponentiation(a, 2) + exponentiation(b, 2))
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Теорема Пифагора (нахождение катета)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - гипотенуза
* b - известный катет
*
* Находит чему равен неизвестный катет: Cathetus_PythagoreanTheorem(5, 4)
* По формуле: √a² - b²
* Возвращает ответ: 3
*
* Вернёт -1, если катет или гипотенуза <= 0, если гипотенуза < известного катета
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock Cathetus_PythagoreanTheorem(a, b)
{
return (a <= 0 || b <= 0 || a < b) ? -1 : root(exponentiation(a, 2) - exponentiation(b, 2))
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Модуль (Целое число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - число под модулем
*
* Преобразует число в положительное, если оно отрицательное: module(-1)
* Возвращает ответ: 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock module(a)
{
if(a < 0)
a *= -1
return a
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Модуль (Дробное число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - число под модулем
*
* Преобразует число в положительное, если оно отрицательное: module_f(-1.0)
* Возвращает ответ: 1.0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock Float:module_f(Float:a)
{
if(a < 0.0)
a *= -1.0
return a
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Арифметическая прогрессия (Целое число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - первый член прогрессии
* b - второй член прогрессии
*
* type: true - возвращает третий член прогрессии, false - возвращает разность прогрессии
*
* arithmetic_progression(2, 4, true)
* Возвращает ответ: 6
*
* arithmetic_progression(2, 4, false)
* Возвращает ответ: 2
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock arithmetic_progression(a, b, bool:type)
{
return type ? (b - a) + b : b - a
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Арифметическая прогрессия (Дробное число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - первый член прогрессии
* b - второй член прогрессии
*
* type: true - возвращает третий член прогрессии, false - возвращает разность прогрессии
*
* arithmetic_progression_f(0.5, 1.5, true)
* Возвращает ответ: 2.5
*
* arithmetic_progression_f(0.5, 1.5, false)
* Возвращает ответ: 1.0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock Float:arithmetic_progression_f(Float:a, Float:b, bool:type)
{
return type ? (b - a) + b : b - a
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Геометрическая прогрессия (Целое число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - первый член прогрессии
* b - второй член прогрессии
*
* type: true - возвращает третий член прогрессии, false - возвращает разность прогрессии
*
* geometric_progression(2, 4, true)
* Возвращает ответ: 8
*
* geometric_progression(2, 4, false)
* Возвращает ответ: 2
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock geometric_progression(a, b, bool:type)
{
return type ? (b / a) * b : b / a
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Геометрическая прогрессия (Дробное число)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* a - первый член прогрессии
* b - второй член прогрессии
*
* type: true - возвращает третий член прогрессии, false - возвращает разность прогрессии
*
* geometric_progression_f(0.5, 1.5, true)
* Возвращает ответ: 4.5
*
* geometric_progression_f(0.5, 1.5, false)
* Возвращает ответ: 3.0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
stock Float:geometric_progression_f(Float:a, Float:b, bool:type)
{
return type ? (b / a) * b : b / a
}
Вы должны зарегистрироваться, чтобы видеть ссылки.