Merge branch 'master' into jgrpp
# Conflicts: # src/autoreplace_cmd.cpp # src/company_base.h # src/company_gui.cpp # src/cpu.cpp # src/debug.h # src/group.h # src/group_cmd.cpp # src/house.h # src/industry.h # src/newgrf_house.cpp # src/news_type.h # src/openttd.cpp # src/saveload/company_sl.cpp # src/settings_type.h # src/sl/oldloader_sl.cpp # src/story.cpp # src/table/town_land.h # src/viewport.cpp
This commit is contained in:
@@ -13,41 +13,6 @@
|
||||
|
||||
#include "../safeguards.h"
|
||||
|
||||
/**
|
||||
* Compute least common multiple (lcm) of arguments \a a and \a b, the smallest
|
||||
* integer value that is a multiple of both \a a and \a b.
|
||||
* @param a First number.
|
||||
* @param b second number.
|
||||
* @return Least common multiple of values \a a and \a b.
|
||||
*
|
||||
* @note This function only works for non-negative values of \a a and \a b.
|
||||
*/
|
||||
int LeastCommonMultiple(int a, int b)
|
||||
{
|
||||
if (a == 0 || b == 0) return 0; // By definition.
|
||||
if (a == 1 || a == b) return b;
|
||||
if (b == 1) return a;
|
||||
|
||||
return a * b / GreatestCommonDivisor(a, b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute greatest common divisor (gcd) of \a a and \a b.
|
||||
* @param a First number.
|
||||
* @param b second number.
|
||||
* @return Greatest common divisor of \a a and \a b.
|
||||
*/
|
||||
int GreatestCommonDivisor(int a, int b)
|
||||
{
|
||||
while (b != 0) {
|
||||
int t = b;
|
||||
b = a % b;
|
||||
a = t;
|
||||
}
|
||||
return a;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Deterministic approximate division.
|
||||
* Cancels out division errors stemming from the integer nature of the division over multiple runs.
|
||||
|
||||
Reference in New Issue
Block a user