zeek.bif: Add log2() and ceil()

Closes #2930, #2931.
This commit is contained in:
Arne Welzel 2023-05-08 12:44:31 +02:00
parent c0d15d6d0e
commit 6cb391f9a2
4 changed files with 46 additions and 6 deletions

2
NEWS
View file

@ -234,6 +234,8 @@ New Functionality
can happen in packet loss or packet re-ordering scenarios. Such connections will can happen in packet loss or packet re-ordering scenarios. Such connections will
have a ``^`` added to their history. have a ``^`` added to their history.
- New bifs for ``ceil()`` and ``log2()`` have been added.
Changed Functionality Changed Functionality
--------------------- ---------------------

View file

@ -1680,19 +1680,33 @@ function print_raw%(...%): bool
## ##
## Returns: The next lowest integer of *d* as :zeek:type:`double`. ## Returns: The next lowest integer of *d* as :zeek:type:`double`.
## ##
## .. zeek:see:: sqrt exp ln log10 pow ## .. zeek:see:: ceil sqrt exp ln log2 log10 pow
function floor%(d: double%): double function floor%(d: double%): double
%{ %{
return zeek::make_intrusive<zeek::DoubleVal>(floor(d)); return zeek::make_intrusive<zeek::DoubleVal>(floor(d));
%} %}
## Computes the smallest integer greater or equal than the given :zeek:type:`double` value.
## For example, ``ceil(3.14)`` returns ``4.0``, and ``ceil(-3.14)``
## returns ``-3.0``.
##
## d: The :zeek:type:`double` to manipulate.
##
## Returns: The next lowest integer of *d* as :zeek:type:`double`.
##
## .. zeek:see:: floor sqrt exp ln log2 log10 pow
function ceil%(d: double%): double
%{
return zeek::make_intrusive<zeek::DoubleVal>(ceil(d));
%}
## Computes the square root of a :zeek:type:`double`. ## Computes the square root of a :zeek:type:`double`.
## ##
## x: The number to compute the square root of. ## x: The number to compute the square root of.
## ##
## Returns: The square root of *x*. ## Returns: The square root of *x*.
## ##
## .. zeek:see:: floor exp ln log10 pow ## .. zeek:see:: floor ceil exp ln log2 log10 pow
function sqrt%(x: double%): double function sqrt%(x: double%): double
%{ %{
if ( x < 0 ) if ( x < 0 )
@ -1710,7 +1724,7 @@ function sqrt%(x: double%): double
## ##
## Returns: *e* to the power of *d*. ## Returns: *e* to the power of *d*.
## ##
## .. zeek:see:: floor sqrt ln log10 pow ## .. zeek:see:: floor ceil sqrt ln log2 log10 pow
function exp%(d: double%): double function exp%(d: double%): double
%{ %{
return zeek::make_intrusive<zeek::DoubleVal>(exp(d)); return zeek::make_intrusive<zeek::DoubleVal>(exp(d));
@ -1722,19 +1736,31 @@ function exp%(d: double%): double
## ##
## Returns: The natural logarithm of *d*. ## Returns: The natural logarithm of *d*.
## ##
## .. zeek:see:: exp floor sqrt log10 pow ## .. zeek:see:: floor ceil sqrt exp log2 log10 pow
function ln%(d: double%): double function ln%(d: double%): double
%{ %{
return zeek::make_intrusive<zeek::DoubleVal>(log(d)); return zeek::make_intrusive<zeek::DoubleVal>(log(d));
%} %}
## Computes the base 2 logarithm of a number.
##
## d: The argument to the logarithm.
##
## Returns: The base 2 logarithm of *d*.
##
## .. zeek:see:: floor ceil sqrt exp ln log10 pow
function log2%(d: double%): double
%{
return zeek::make_intrusive<zeek::DoubleVal>(log2(d));
%}
## Computes the common logarithm of a number. ## Computes the common logarithm of a number.
## ##
## d: The argument to the logarithm. ## d: The argument to the logarithm.
## ##
## Returns: The common logarithm of *d*. ## Returns: The common logarithm of *d*.
## ##
## .. zeek:see:: exp floor sqrt ln pow ## .. zeek:see:: floor ceil sqrt exp ln log2 pow
function log10%(d: double%): double function log10%(d: double%): double
%{ %{
return zeek::make_intrusive<zeek::DoubleVal>(log10(d)); return zeek::make_intrusive<zeek::DoubleVal>(log10(d));
@ -1748,7 +1774,7 @@ function log10%(d: double%): double
## ##
## Returns: The number *x* raised to the power *y*. ## Returns: The number *x* raised to the power *y*.
## ##
## .. zeek:see:: exp floor sqrt ln log10 ## .. zeek:see:: floor ceil sqrt exp ln log2 log10
function pow%(x: double, y: double%): double function pow%(x: double, y: double%): double
%{ %{
return zeek::make_intrusive<zeek::DoubleVal>(pow(x, y)); return zeek::make_intrusive<zeek::DoubleVal>(pow(x, y));

View file

@ -3,8 +3,13 @@
2.0 2.0
-4.0 -4.0
-3.0 -3.0
4.0
3.0
-3.0
-2.0
1.772005 1.772005
23.103867 23.103867
1.144223 1.144223
0.49693 0.49693
1.650765
22.21669 22.21669

View file

@ -14,6 +14,11 @@ event zeek_init()
print floor(c); print floor(c);
print floor(d); print floor(d);
print ceil(a);
print ceil(b);
print ceil(c);
print ceil(d);
print sqrt(a); print sqrt(a);
print exp(a); print exp(a);
@ -22,5 +27,7 @@ event zeek_init()
print log10(a); print log10(a);
print log2(a);
print pow(a, b); print pow(a, b);
} }