Fix CRRA=1.0 division by zero errors across consumption models #1587
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes a critical issue where setting
CRRA = 1.0
(logarithmic utility) in various consumption models would cause aZeroDivisionError
due to division by(1.0 - CRRA)
which equals zero.Problem
Users attempting to use logarithmic utility by setting
CRRA = 1.0
would encounter crashes:The error occurred in expressions like:
Solution
Added special case handling for
CRRA == 1.0
using a small epsilon value (CRRA_safe = 1.0 + 1e-8
) as suggested by the maintainers. This approach:Files Modified
solve_one_period_ConsPF
,solve_one_period_ConsIndShock
, andsolve_one_period_ConsKinkedR
Testing
The fix has been thoroughly tested to ensure:
This is an interim fix until proper limit calculation for the logarithmic case is implemented.
Fixes #75.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.