Skip to content

Commit 5e1bc02

Browse files
authored
[decimal] Implement ln for BigDecimal (#76)
This pull request introduces several enhancements and fixes to the `bigdecimal` module, including the addition of a new natural logarithm function, renaming and refactoring of existing methods for clarity, and updates to dependencies and test cases. ### New Features: * Added a natural logarithm function to the `bigdecimal` module (`ln`). [[1]](diffhunk://#diff-be2f9b2702fd15952546e17fe94a64c22902a0e4678bfd9cb925269647923db4R545-R549) [[2]](diffhunk://#diff-8edc842002d08323642db57f775ff7f626be068d55cb55bbe637e215f68ed8bcR349-R580) ### Method Renaming and Refactoring: * Renamed `true_divide_fast` to `true_divide_inexact` and updated its implementation to use `number_of_significant_digits` instead of `minimum_precision`. [[1]](diffhunk://#diff-f79534f4e7fdd891932ce9d015c50bd3c8a72c4a1689f0cb55524490ffc0458dL334-L359) [[2]](diffhunk://#diff-f79534f4e7fdd891932ce9d015c50bd3c8a72c4a1689f0cb55524490ffc0458dL370-R363) [[3]](diffhunk://#diff-f79534f4e7fdd891932ce9d015c50bd3c8a72c4a1689f0cb55524490ffc0458dL379-L384) [[4]](diffhunk://#diff-f79534f4e7fdd891932ce9d015c50bd3c8a72c4a1689f0cb55524490ffc0458dL396-R391) [[5]](diffhunk://#diff-be2f9b2702fd15952546e17fe94a64c22902a0e4678bfd9cb925269647923db4L570-R582) [[6]](diffhunk://#diff-8edc842002d08323642db57f775ff7f626be068d55cb55bbe637e215f68ed8bcL124-R124) [[7]](diffhunk://#diff-8edc842002d08323642db57f775ff7f626be068d55cb55bbe637e215f68ed8bcL233-R233) [[8]](diffhunk://#diff-8edc842002d08323642db57f775ff7f626be068d55cb55bbe637e215f68ed8bcL321-R321) ### Dependency Updates: * Added `mpmath` as a new dependency in `mojoproject.toml`. ### Error Message Improvements: * Enhanced error messages in `BigUInt` struct methods for better clarity. [[1]](diffhunk://#diff-f9432b9b2671643af91201f9e3f011551a3d3b0e6d7b256d0d4569f5ae59848aL230-R230) [[2]](diffhunk://#diff-f9432b9b2671643af91201f9e3f011551a3d3b0e6d7b256d0d4569f5ae59848aL280-R287) ### Test Case Updates: * Updated test cases to include tests for the natural logarithm function.
1 parent 60980a8 commit 5e1bc02

10 files changed

Lines changed: 1200 additions & 45 deletions

File tree

benches/bigdecimal/bench.mojo

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ from bench_bigdecimal_multiply import main as bench_multiply
44
from bench_bigdecimal_divide import main as bench_divide
55
from bench_bigdecimal_sqrt import main as bench_sqrt
66
from bench_bigdecimal_exp import main as bench_exp
7+
from bench_bigdecimal_ln import main as bench_ln
78
from bench_bigdecimal_scale_up_by_power_of_10 import main as bench_scale_up
89

910

@@ -19,6 +20,7 @@ mul: Multiply
1920
div: Divide (true divide)
2021
sqrt: Square root
2122
exp: Exponential
23+
ln: Natural logarithm
2224
all: Run all benchmarks
2325
q: Exit
2426
=========================================
@@ -39,13 +41,16 @@ scaleup: Scale up by power of 10
3941
bench_sqrt()
4042
elif command == "exp":
4143
bench_exp()
44+
elif command == "ln":
45+
bench_ln()
4246
elif command == "all":
4347
bench_add()
4448
bench_sub()
4549
bench_multiply()
4650
bench_divide()
4751
bench_sqrt()
4852
bench_exp()
53+
bench_ln()
4954
elif command == "q":
5055
return
5156
elif command == "scaleup":

0 commit comments

Comments
 (0)