Line data Source code
1 : // SPDX-License-Identifier: GPL-2.0-only 2 : #include <linux/compiler.h> 3 : #include <linux/gcd.h> 4 : #include <linux/export.h> 5 : #include <linux/lcm.h> 6 : 7 : /* Lowest common multiple */ 8 1 : unsigned long lcm(unsigned long a, unsigned long b) 9 : { 10 1 : if (a && b) 11 1 : return (a / gcd(a, b)) * b; 12 : else 13 : return 0; 14 : } 15 : EXPORT_SYMBOL_GPL(lcm); 16 : 17 0 : unsigned long lcm_not_zero(unsigned long a, unsigned long b) 18 : { 19 0 : unsigned long l = lcm(a, b); 20 : 21 0 : if (l) 22 : return l; 23 : 24 0 : return (b ? : a); 25 : } 26 : EXPORT_SYMBOL_GPL(lcm_not_zero);