VMOD math - VMOD wrapping math.h¶
SYNOPSIS¶
import math [as name] [from "path"] BOOL approx(REAL a, REAL b, REAL maxDiff, REAL maxRelDiff) STRING strfromd(STRING format, REAL fp) REAL constant(ENUM name) INT fpclass(ENUM name) INT fpclassify(REAL x) INT isfinite(REAL x) INT isgreater(REAL x, REAL y) INT isgreaterequal(REAL x, REAL y) INT isinf(REAL x) INT isless(REAL x, REAL y) INT islessequal(REAL x, REAL y) INT islessgreater(REAL x, REAL y) INT isnan(REAL x) INT isnormal(REAL x) INT isunordered(REAL x, REAL y) INT signbit(REAL x) REAL acos(REAL x) REAL acosh(REAL x) REAL asin(REAL x) REAL asinh(REAL x) REAL atan(REAL x) REAL atan2(REAL y, REAL x) REAL atanh(REAL x) REAL cbrt(REAL x) REAL ceil(REAL x) REAL copysign(REAL x, REAL y) REAL cos(REAL x) REAL cosh(REAL x) REAL erf(REAL x) REAL erfc(REAL x) REAL exp(REAL x) REAL exp2(REAL x) REAL expm1(REAL x) REAL fabs(REAL x) REAL fdim(REAL x, REAL y) REAL floor(REAL x) REAL fma(REAL x, REAL y, REAL z) REAL fmax(REAL x, REAL y) REAL fmin(REAL x, REAL y) REAL fmod(REAL x, REAL y) REAL hypot(REAL x, REAL y) INT ilogb(REAL x) REAL j0(REAL x) REAL j1(REAL x) REAL jn(INT x, REAL y) REAL ldexp(REAL x, INT e) REAL lgamma(REAL x) REAL log(REAL x) REAL log10(REAL x) REAL log1p(REAL x) REAL log2(REAL x) REAL logb(REAL x) INT lrint(REAL x) INT lround(REAL x) REAL nan(STRING tag) REAL nearbyint(REAL x) REAL nextafter(REAL x, REAL y) REAL pow(REAL x, REAL y) REAL remainder(REAL x, REAL y) REAL rint(REAL x) REAL round(REAL x) REAL scalbln(REAL x, INT e) REAL scalbn(REAL x, INT y) REAL sin(REAL x) REAL sinh(REAL x) REAL sqrt(REAL x) REAL tan(REAL x) REAL tanh(REAL x) REAL tgamma(REAL x) REAL trunc(REAL x) REAL y0(REAL x) REAL y1(REAL x) REAL yn(INT n, REAL x)
DESCRIPTION¶
This VMOD wraps the functions in math.h(7), provides additional utilities and includes functions to access macros and constants from math.h(7) and float.h(7).
Utility functions¶
BOOL approx(REAL a, REAL b, REAL maxDiff, REAL maxRelDiff)¶
BOOL approx(REAL a, REAL b, REAL maxDiff=0.0, REAL maxRelDiff=0.0)
Return true if the two numbers a and b are approximately equal per the
AlmostEqualRelativeAndAbs function from Comparing Floating Point Numbers,
2012 Edition given the additional parameters maxDiff and maxRelDiff. Read
the blog post for details on why the seemingly simple question of two floating
point numbers being equal has no simple answers.
For their default values of 0, the two additional parameters are initialized to:
maxDiff:
4 * DBL_EPSILONmaxRelDiff:
DBL_EPSILON
STRING strfromd(STRING format, REAL fp)¶
Convert the value fp into a string using format, see strfromd(3).
An invalid format string results in a VCL error and the NULL invalid string
returned.
Access to macros and constants¶
REAL constant(ENUM name)¶
REAL constant(
ENUM {DBL_MANT_DIG, DBL_DIG, DBL_MIN_EXP, DBL_MIN_10_EXP, DBL_MAX_EXP, DBL_MAX_10_EXP, DBL_MAX, DBL_EPSILON, DBL_MIN, HUGE_VAL, M_E, M_LOG2E, M_LOG10E, M_LN2, M_LN10, M_PI, M_PI_2, M_PI_4, M_1_PI, M_2_PI, M_2_SQRTPI, M_SQRT2, M_SQRT1_2} name
)
Return the value of the named constant. For DBL_* see float.h(7),
otherwise math.h(7) for details.
INT fpclass(ENUM name)¶
INT fpclass(
ENUM {FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO} name
)
Return the value of the named constant for comparisons of math.fpclassify() return values.
math.h functions¶
The semantics of functions mapping directly to math.h(7) are not documented
herein, see the system documentation instead (for example using man
<function>).
INT fpclassify(REAL x)¶
INT isfinite(REAL x)¶
INT isgreater(REAL x, REAL y)¶
INT isgreaterequal(REAL x, REAL y)¶
INT isinf(REAL x)¶
INT isless(REAL x, REAL y)¶
INT islessequal(REAL x, REAL y)¶
INT islessgreater(REAL x, REAL y)¶
INT isnan(REAL x)¶
INT isnormal(REAL x)¶
INT isunordered(REAL x, REAL y)¶
INT signbit(REAL x)¶
REAL acos(REAL x)¶
REAL acosh(REAL x)¶
REAL asin(REAL x)¶
REAL asinh(REAL x)¶
REAL atan(REAL x)¶
REAL atan2(REAL y, REAL x)¶
REAL atanh(REAL x)¶
REAL cbrt(REAL x)¶
REAL ceil(REAL x)¶
REAL copysign(REAL x, REAL y)¶
REAL cos(REAL x)¶
REAL cosh(REAL x)¶
REAL erf(REAL x)¶
REAL erfc(REAL x)¶
REAL exp(REAL x)¶
REAL exp2(REAL x)¶
REAL expm1(REAL x)¶
REAL fabs(REAL x)¶
REAL fdim(REAL x, REAL y)¶
REAL floor(REAL x)¶
REAL fma(REAL x, REAL y, REAL z)¶
REAL fmax(REAL x, REAL y)¶
REAL fmin(REAL x, REAL y)¶
REAL fmod(REAL x, REAL y)¶
REAL hypot(REAL x, REAL y)¶
INT ilogb(REAL x)¶
REAL j0(REAL x)¶
REAL j1(REAL x)¶
REAL jn(INT x, REAL y)¶
REAL ldexp(REAL x, INT e)¶
REAL lgamma(REAL x)¶
REAL log(REAL x)¶
REAL log10(REAL x)¶
REAL log1p(REAL x)¶
REAL log2(REAL x)¶
REAL logb(REAL x)¶
INT lrint(REAL x)¶
INT lround(REAL x)¶
REAL nan(STRING tag)¶
REAL nearbyint(REAL x)¶
REAL nextafter(REAL x, REAL y)¶
REAL pow(REAL x, REAL y)¶
REAL remainder(REAL x, REAL y)¶
REAL rint(REAL x)¶
REAL round(REAL x)¶
REAL scalbln(REAL x, INT e)¶
REAL scalbn(REAL x, INT y)¶
REAL sin(REAL x)¶
REAL sinh(REAL x)¶
REAL sqrt(REAL x)¶
REAL tan(REAL x)¶
REAL tanh(REAL x)¶
REAL tgamma(REAL x)¶
REAL trunc(REAL x)¶
REAL y0(REAL x)¶
REAL y1(REAL x)¶
REAL yn(INT n, REAL x)¶
COPYRIGHT¶
This document is licensed under the same conditions as Varnish-Cache itself.
See LICENSE for details.
SPDX-License-Identifier: BSD-2-Clause
Author: Nils Goroll <nils.goroll@uplex.de>