public static BigDecimal lcm(BigDecimal a, BigDecimal b) {
        if (a.compareTo(BigDecimal.ZERO) == 0 || b.compareTo(BigDecimal.ZERO) == 0) {
            return BigDecimal.ZERO;
        }
        int maxScale = Math.max(a.scale(), b.scale());

        BigDecimal factorA = a.movePointRight(maxScale);
        BigDecimal factorB = b.movePointRight(maxScale);

        BigInteger gcdValue = gcd(factorA, factorB);
        BigDecimal product = factorA.multiply(factorB);

        // LCM = (|a * b| / GCD(a, b))
        BigDecimal lcmValue = product.divide(new BigDecimal(gcdValue), RoundingMode.HALF_UP);

        return lcmValue.movePointLeft(maxScale).stripTrailingZeros();
    }
LcmFunction  ->  lcm(numeric1,numeric2)
description:
- Return NULL if any parameter is NULL
- Return 0 if either input is zero
- Return least common multiple (the smallest strictly positive number that is an integral multiple of both inputs)
inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/arithmetic/LcmFunction.java