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:
*
*
*
@@ -102,60 +110,68 @@
* Wikipedia (2019): Bessel Function https://en.wikipedia.org/wiki/Bessel_function
*
*
+ *
+ * It provides the following functionality:
*
- *
*
*
+ *
+ *
+ *
+ *
+ *
* @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:
*
*
*
@@ -103,60 +109,70 @@
* Wikipedia (2019): Hyper-geometric Function https://en.wikipedia.org/wiki/Hypergeometric_function
*
*
+ *
+ * It provides the following functionality:
*
- *
*
*
+ *
+ *
+ *
+ *
+ *
* @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;
}
}