math: remove logb

As discussed in #12112, this is a false friend (the libc logb()
does something else), and without keyword arguments or at least
function overloading, this is hard to read.
Better use "/ log(base)" trick.
This commit is contained in:
Johannes Altmanninger
2025-12-05 14:45:52 +01:00
parent 47c773300a
commit fceb600be5
4 changed files with 4 additions and 21 deletions

View File

@@ -7,10 +7,6 @@ Notable improvements and fixes
Deprecations and removed features
---------------------------------
Scripting improvements
----------------------
- ``math`` gained a new ``logb`` function.
Interactive improvements
------------------------
- When typing immediately after starting fish, the first prompt is now rendered correctly.

View File

@@ -153,11 +153,9 @@ Functions
``ln``
the base-e logarithm
``log`` or ``log10``
the base-10 logarithm
the base-10 logarithm. To compute the logarithm for an arbitrary base ``b``, use ``log(x) / log(b)``.
``log2``
the base-2 logarithm
``logb(b,x)``
returns the logarithm with base b of x
``max``
returns the largest of the given numbers - this takes an arbitrary number of arguments (but at least one)
``min``

View File

@@ -291,7 +291,6 @@ fn npr(n: f64, r: f64) -> f64 {
(L!("log"), Function::Fn1(f64::log10)),
(L!("log10"), Function::Fn1(f64::log10)),
(L!("log2"), Function::Fn1(f64::log2)),
(L!("logb"), Function::Fn2(|base, x| x.log(base))),
(L!("max"), Function::FnN(maximum)),
(L!("min"), Function::FnN(minimum)),
(L!("ncr"), Function::Fn2(ncr)),

View File

@@ -276,20 +276,10 @@ echo $status
math 'log2(8)'
# CHECK: 3
math 'logb(2, 8)'
# CHECK: 3
math 'logb(67, 406067677556641)'
# CHECK: 8
math 'logb(42, 230539333248)'
# CHECK: 7
math 'logb(12, 8916100448256)'
# CHECK: 12
math 'logb(3, 5559060566555523)'
# CHECK: 33
math 'logb(5, 2384185791015625)'
# CHECK: 22
math 'logb(7, 343)'
math 'log(8) / log(2)'
# CHECK: 3
math 'log(625) / log(5)'
# CHECK: 4
# same as sin(cos(2 x pi))
math sin cos 2 x pi