package com.gunshi.project.xyt.util; import org.apache.commons.math3.distribution.GammaDistribution; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; /** * @author cxw * @description * @classname BigdecimalUtil.java * @create 2024-11-06, 星期三, 10:33:41 */ public class BigdecimalUtil { /** * @description: 小数指数计算 * @param base 底数 * @param exponent 指数 * @return: java.math.BigDecimal * @auther: cxw * @date: 2024-11-06, 周三, 10:34:47 */ public static BigDecimal bigDecimalExponentiation(BigDecimal base, double exponent) { BigDecimal result = BigDecimal.valueOf(Math.pow(base.doubleValue(), exponent)).round(new MathContext(10, RoundingMode.HALF_UP)); return result; } /** * @description: 计算x的伽马函数 * @param x * @return: java.math.BigDecimal * @auther: cxw * @date: 2024-11-06, 周三, 11:31:24 */ public static double gammaDist(double x, double alpha, double beta, boolean cumulative) { GammaDistribution gammaDist = new GammaDistribution(alpha, 1/beta); if (cumulative) { return gammaDist.cumulativeProbability(x); } else { return gammaDist.density(x); } } }