Skip to content

Commit

Permalink
Features:
Browse files Browse the repository at this point in the history
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)
  • Loading branch information
lakshmiDRIP committed Feb 23, 2024
1 parent 18606dd commit 282257c
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 68 deletions.
29 changes: 29 additions & 0 deletions ReleaseNotes/07_12_2023.txt
Original file line number Diff line number Diff line change
@@ -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)
Binary file modified ScheduleSheet.xlsx
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -78,7 +86,7 @@

/**
* <i>SphericalBesselSecondKindExpansion</i> 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:
*
* <br><br>
* <ul>
Expand All @@ -102,60 +110,68 @@
* Wikipedia (2019): Bessel Function https://en.wikipedia.org/wiki/Bessel_function
* </li>
* </ul>
*
* It provides the following functionality:
*
* <br><br>
* <ul>
* <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ComputationalCore.md">Computational Core Module</a></li>
* <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/FunctionAnalysisLibrary.md">Function Analysis Library</a></li>
* <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/README.md">Special Function Implementation Analysis</a></li>
* <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/generator/README.md">Special Function Series Term Generators</a></li>
* <li><i>SphericalBesselSecondKindExpansion</i> Constructor</li>
* <li>Retrieve the Second Kind Spherical Bessel Function Estimator</li>
* <li>Retrieve the Gamma Estimator</li>
* </ul>
*
* <br>
* <style>table, td, th {
* padding: 1px; border: 2px solid #008000; border-radius: 8px; background-color: #dfff00;
* text-align: center; color: #0000ff;
* }
* </style>
*
* <table style="border:1px solid black;margin-left:auto;margin-right:auto;">
* <tr><td><b>Module </b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ComputationalCore.md">Computational Core Module</a></td></tr>
* <tr><td><b>Library</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/FunctionAnalysisLibrary.md">Function Analysis Library</a></td></tr>
* <tr><td><b>Project</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/README.md">Special Function Implementation and Analysis</a></td></tr>
* <tr><td><b>Package</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/generator/README.md">Special Function Series Term Generators</a></td></tr>
* </table>
*
* @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
* <i>SphericalBesselSecondKindExpansion</i> 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;
}

/**
Expand All @@ -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;
}
Expand All @@ -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);
}
};
}
Expand Down
64 changes: 40 additions & 24 deletions src/main/java/org/drip/specialfunction/group/FuchsianEquation.java
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -78,7 +84,7 @@

/**
* <i>FuchsianEquation</i> 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:
*
* <br><br>
* <ul>
Expand All @@ -103,60 +109,70 @@
* Wikipedia (2019): Hyper-geometric Function https://en.wikipedia.org/wiki/Hypergeometric_function
* </li>
* </ul>
*
* It provides the following functionality:
*
* <br><br>
* <ul>
* <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ComputationalCore.md">Computational Core Module</a></li>
* <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/FunctionAnalysisLibrary.md">Function Analysis Library</a></li>
* <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/README.md">Special Function Implementation Analysis</a></li>
* <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/group/README.md">Special Function Singularity Solution Group</a></li>
* <li><i>FuchsianEquation</i> Constructor</li>
* <li>Retrieve the Coxeter Singularity Index</li>
* <li>Retrieve the Isomorphy Order</li>
* <li>Retrieve the Klein Group of Isomorphic Functions</li>
* </ul>
*
* <br>
* <style>table, td, th {
* padding: 1px; border: 2px solid #008000; border-radius: 8px; background-color: #dfff00;
* text-align: center; color: #0000ff;
* }
* </style>
*
* <table style="border:1px solid black;margin-left:auto;margin-right:auto;">
* <tr><td><b>Module </b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ComputationalCore.md">Computational Core Module</a></td></tr>
* <tr><td><b>Library</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/FunctionAnalysisLibrary.md">Function Analysis Library</a></td></tr>
* <tr><td><b>Project</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/README.md">Special Function Implementation and Analysis</a></td></tr>
* <tr><td><b>Package</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/specialfunction/group/README.md">Special Function Singularity Solution Group</a></td></tr>
* </table>
*
* @author Lakshmi Krishnamurthy
*/

public class FuchsianEquation
{
private int _isomorphyOrder = -1;
private org.drip.function.definition.R1ToR1[] _kleinGroupFunctionArray = null;
private R1ToR1[] _kleinGroupFunctionArray = null;

/**
* FuchsianEquation Constructor
* <i>FuchsianEquation</i> 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;
}
}
Expand Down

0 comments on commit 282257c

Please sign in to comment.