diff --git a/ReleaseNotes/07_12_2023.txt b/ReleaseNotes/07_12_2023.txt new file mode 100644 index 000000000000..f464b6125069 --- /dev/null +++ b/ReleaseNotes/07_12_2023.txt @@ -0,0 +1,29 @@ + +Features: + +Bug Fixes/Re-organization: + + - Special Function Generator Spherical Bessel First Kind Expansion - Gamma Estimator (1, 2) + - Special Function Generator Spherical Bessel First Kind Expansion - Estimator (3, 4) + - Special Function Generator Spherical Bessel First Kind Expansion - Constructor (5, 6) + - Special Function Generator Spherical Bessel First Kind Expansion - Evaluate (7, 8, 9) + - Special Function Generator Spherical Bessel First Kind Expansion - Series Term (10, 11, 12) + - Special Function Generator Spherical Bessel First Kind Expansion - Series (13) + - Special Function Generator Spherical Bessel Second Kind Expansion (14, 15, 16) + - Special Function Generator Spherical Bessel Second Kind Expansion - Gamma Estimator (17, 18) + - Special Function Generator Spherical Bessel Second Kind Expansion - Estimator (19, 20) + - Special Function Generator Spherical Bessel Second Kind Expansion - Constructor (21, 22) + - Special Function Generator Spherical Bessel Second Kind Expansion - Evaluate (23, 24) + - Special Function Generator Spherical Bessel Second Kind Expansion - Series Term (25, 26, 27) + - Special Function Group Fuchsian Equation (28, 29, 30) + - Special Function Group Fuchsian Equation - Isomorphy Order (31, 32) + - Special Function Group Fuchsian Equation - Klein Group Function Array (33, 34) + - Special Function Group Fuchsian Equation - Constructor (35, 36, 37) + - Special Function Group Fuchsian Equation - Coxeter Singularity Index (38) + + +Samples: + +IdeaDRIP: + + - Economic Factors as Drivers of the Yield Curve (39-60) diff --git a/ScheduleSheet.xlsx b/ScheduleSheet.xlsx index eb180c728174..457d6486ae0f 100644 Binary files a/ScheduleSheet.xlsx and b/ScheduleSheet.xlsx differ diff --git a/src/main/java/org/drip/specialfunction/generator/SphericalBesselSecondKindExpansion.java b/src/main/java/org/drip/specialfunction/generator/SphericalBesselSecondKindExpansion.java index 4fd2343c7173..574c69e0961a 100644 --- a/src/main/java/org/drip/specialfunction/generator/SphericalBesselSecondKindExpansion.java +++ b/src/main/java/org/drip/specialfunction/generator/SphericalBesselSecondKindExpansion.java @@ -1,11 +1,19 @@ package org.drip.specialfunction.generator; +import org.drip.function.definition.R1ToR1; +import org.drip.numerical.common.NumberUtil; +import org.drip.numerical.estimation.R2ToR1SeriesTerm; +import org.drip.specialfunction.definition.SphericalBesselSecondKindEstimator; + /* * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /*! + * Copyright (C) 2025 Lakshmi Krishnamurthy + * Copyright (C) 2024 Lakshmi Krishnamurthy + * Copyright (C) 2023 Lakshmi Krishnamurthy * Copyright (C) 2022 Lakshmi Krishnamurthy * Copyright (C) 2021 Lakshmi Krishnamurthy * Copyright (C) 2020 Lakshmi Krishnamurthy @@ -78,7 +86,7 @@ /** * SphericalBesselSecondKindExpansion implements the Generating Function and the Expansion Terms for - * the Spherical Bessel Function of the Second Kind. The References are: + * the Spherical Bessel Function of the Second Kind. The References are: * *

* + * + * It provides the following functionality: * - *

* * + *
+ * + * + * + * + * + * + * + *
Module Computational Core Module
Library Function Analysis Library
Project Special Function Implementation and Analysis
Package Special Function Series Term Generators
+ * * @author Lakshmi Krishnamurthy */ -public class SphericalBesselSecondKindExpansion extends org.drip.specialfunction.generator.SeriesExpansion +public class SphericalBesselSecondKindExpansion extends SeriesExpansion { - private org.drip.function.definition.R1ToR1 _gammaEstimator = null; - private org.drip.specialfunction.definition.SphericalBesselSecondKindEstimator - _sphericalBesselSecondKindEstimator = null; + private R1ToR1 _gammaEstimator = null; + private SphericalBesselSecondKindEstimator _sphericalBesselSecondKindEstimator = null; /** - * SphericalBesselSecondKindExpansion Constructor + * SphericalBesselSecondKindExpansion Constructor * * @param sphericalBesselSecondKindEstimator First Second Spherical Bessel Function Estimator * @param gammaEstimator The Gamma Estimator * - * @throws java.lang.Exception Thrown if the Inputs are Invalid + * @throws Exception Thrown if the Inputs are Invalid */ public SphericalBesselSecondKindExpansion ( - final org.drip.specialfunction.definition.SphericalBesselSecondKindEstimator - sphericalBesselSecondKindEstimator, - final org.drip.function.definition.R1ToR1 gammaEstimator) - throws java.lang.Exception + final SphericalBesselSecondKindEstimator sphericalBesselSecondKindEstimator, + final R1ToR1 gammaEstimator) + throws Exception { if (null == (_sphericalBesselSecondKindEstimator = sphericalBesselSecondKindEstimator) || null == (_gammaEstimator = gammaEstimator)) { - throw new java.lang.Exception - ("SphericalBesselSecondKindExpansion Constructor => Invalid Inputs"); + throw new Exception ("SphericalBesselSecondKindExpansion Constructor => Invalid Inputs"); } } @Override public double evaluate ( final double z, final double t) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (z) || - !org.drip.numerical.common.NumberUtil.IsValid (t)) - { - throw new java.lang.Exception - ("SphericalBesselSecondKindExpansion::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (z) || !NumberUtil.IsValid (t)) { + throw new Exception ("SphericalBesselSecondKindExpansion::evaluate => Invalid Inputs"); } - return java.lang.Math.sin (java.lang.Math.sqrt (z * z + 2. * z * t)) / z; + return Math.sin (Math.sqrt (z * z + 2. * z * t)) / z; } /** @@ -164,8 +180,7 @@ public SphericalBesselSecondKindExpansion ( * @return The Second Kind Spherical Bessel Function Estimator */ - public org.drip.specialfunction.definition.SphericalBesselSecondKindEstimator - sphericalBesselFirstKindEstimator() + public SphericalBesselSecondKindEstimator sphericalBesselSecondKindEstimator() { return _sphericalBesselSecondKindEstimator; } @@ -176,36 +191,30 @@ public SphericalBesselSecondKindExpansion ( * @return The Gamma Estimator */ - public org.drip.function.definition.R1ToR1 gammaEstimator() + public R1ToR1 gammaEstimator() { return _gammaEstimator; } - @Override public org.drip.numerical.estimation.R2ToR1SeriesTerm seriesTerm() + @Override public R2ToR1SeriesTerm seriesTerm() { - return new org.drip.numerical.estimation.R2ToR1SeriesTerm() + return new R2ToR1SeriesTerm() { @Override public double value ( final int order, final double z, final double t) - throws java.lang.Exception + throws Exception { - if (0 > order || - !org.drip.numerical.common.NumberUtil.IsValid (z) || - !org.drip.numerical.common.NumberUtil.IsValid (t)) - { - throw new java.lang.Exception - ("SphericalBesselSecondKindExpansion::seriesTerm::value => Invalid Inputs"); + if (0 > order || !NumberUtil.IsValid (z) || !NumberUtil.IsValid (t)) { + throw new Exception ( + "SphericalBesselSecondKindExpansion::seriesTerm::value => Invalid Inputs" + ); } - return (0 == order % 2 ? 1. : -1.) * java.lang.Math.pow ( - t, - order - ) * _sphericalBesselSecondKindEstimator.evaluate ( - order - 1, - z - ) / _gammaEstimator.evaluate (order + 1); + return (0 == order % 2 ? 1. : -1.) * Math.pow (t, order) * + _sphericalBesselSecondKindEstimator.evaluate (order - 1, z) / + _gammaEstimator.evaluate (order + 1); } }; } diff --git a/src/main/java/org/drip/specialfunction/group/FuchsianEquation.java b/src/main/java/org/drip/specialfunction/group/FuchsianEquation.java index ecc90a46aa37..a0ef9953c846 100644 --- a/src/main/java/org/drip/specialfunction/group/FuchsianEquation.java +++ b/src/main/java/org/drip/specialfunction/group/FuchsianEquation.java @@ -1,11 +1,17 @@ package org.drip.specialfunction.group; +import org.drip.function.definition.R1ToR1; +import org.drip.numerical.common.NumberUtil; + /* * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /*! + * Copyright (C) 2025 Lakshmi Krishnamurthy + * Copyright (C) 2024 Lakshmi Krishnamurthy + * Copyright (C) 2023 Lakshmi Krishnamurthy * Copyright (C) 2022 Lakshmi Krishnamurthy * Copyright (C) 2021 Lakshmi Krishnamurthy * Copyright (C) 2020 Lakshmi Krishnamurthy @@ -78,7 +84,7 @@ /** * FuchsianEquation holds the Isomorphic Order, Coexter Singularity Index, and the Klein-4 - * Transformations of the 2F1 Regular Hyper-geometric Function. The References are: + * Transformations of the 2F1 Regular Hyper-geometric Function. The References are: * *

* + * + * It provides the following functionality: * - *

* * + *
+ * + * + * + * + * + * + * + *
Module Computational Core Module
Library Function Analysis Library
Project Special Function Implementation and Analysis
Package Special Function Singularity Solution Group
+ * * @author Lakshmi Krishnamurthy */ public class FuchsianEquation { private int _isomorphyOrder = -1; - private org.drip.function.definition.R1ToR1[] _kleinGroupFunctionArray = null; + private R1ToR1[] _kleinGroupFunctionArray = null; /** - * FuchsianEquation Constructor + * FuchsianEquation Constructor * * @param kleinGroupFunctionArray Array of the Klein Group Isomorphic Functions * - * @throws java.lang.Exception Thrown if the Inputs are Invalid + * @throws Exception Thrown if the Inputs are Invalid */ public FuchsianEquation ( - final org.drip.function.definition.R1ToR1[] kleinGroupFunctionArray) - throws java.lang.Exception + final R1ToR1[] kleinGroupFunctionArray) + throws Exception { - if (null == (_kleinGroupFunctionArray = kleinGroupFunctionArray)) - { - throw new java.lang.Exception ("FuchsianEquation Constructor => Invalid Inputs"); + if (null == (_kleinGroupFunctionArray = kleinGroupFunctionArray)) { + throw new Exception ("FuchsianEquation Constructor => Invalid Inputs"); } int coxeterSingularityIndex = _kleinGroupFunctionArray.length; - if (0 == coxeterSingularityIndex) - { + if (0 == coxeterSingularityIndex) { throw new java.lang.Exception ("FuchsianEquation Constructor => Invalid Inputs"); } - _isomorphyOrder = org.drip.numerical.common.NumberUtil.Factorial (coxeterSingularityIndex); + _isomorphyOrder = NumberUtil.Factorial (coxeterSingularityIndex); - for (int kleinGroupFunctionIndex = 0; - kleinGroupFunctionIndex < coxeterSingularityIndex; + for (int kleinGroupFunctionIndex = 0; kleinGroupFunctionIndex < coxeterSingularityIndex; ++kleinGroupFunctionIndex) { - if (null == _kleinGroupFunctionArray[kleinGroupFunctionIndex]) - { - throw new java.lang.Exception ("FuchsianEquation Constructor => Invalid Inputs"); + if (null == _kleinGroupFunctionArray[kleinGroupFunctionIndex]) { + throw new Exception ("FuchsianEquation Constructor => Invalid Inputs"); } - if (0 != kleinGroupFunctionIndex) - { + if (0 != kleinGroupFunctionIndex) { _isomorphyOrder = _isomorphyOrder * 2; } }