2021-02-05

part of sph-lib

(sph number)

procedure: bit->byte-length a ->

integer -> integer

calculate the bytes required to store the number of bits

procedure: bound n min max ->

number number -> number

if n is smaller than min, return min.

if n is greater than max, return max

if n is greater than max, return max

syntax: bound-max a max

syntax: bound-min a min

procedure: call-with-product-then-divide f a factor ->

procedure:{number -> number} number number -> number

call f with \"a\" multiplied by factor and afterwards divide by factor

procedure: container-length->number-max digit-count base ->

integer integer -> integer

calculate the maximum value that can represented with the given number of digits in the given base

procedure: decrement-one a ->

procedure: float-sum a ... ->

return the sum of the given numbers calculated with rounding error compensation.

uses kahan summation with neumaier modification

uses kahan summation with neumaier modification

procedure: fraction a ->

procedure: in-between? n start end ->

number number number -> boolean

true if n is between and not equal to num-start or num-end

procedure: in-range? n start end ->

number number number -> boolean

true if n is between or equal to start or end

procedure: increment-one a ->

procedure: integer-and-fraction a c ->

procedure: log-base a base ->

number number -> number

result in the logarithm with \"base\" of \"a\"

procedure: number-container-length a base ->

integer:positive-integer integer -> integer

results in the number of vector elements of size base required to store the individual digits of the given positive number in the given base.

example use case is calculating the size of a bytevector for storing an integer

example use case is calculating the size of a bytevector for storing an integer

procedure: number-format-float a #:decimal-min #:decimal-max #:truncate* #:base ->

number

procedure: round-to-decimal-places a decimal-places ->

number number -> number

procedure: round-to-increment a increment ->

number number -> number

round a number to the the nearest multiple of \"increment\" (using \"round\").

if the number is exactly half-way in between increments, take the lower increment multiple.

example: (1.1 3) -> 0, (1.6 3) -> 3, (1.5 3) -> 0

if the number is exactly half-way in between increments, take the lower increment multiple.

example: (1.1 3) -> 0, (1.6 3) -> 3, (1.5 3) -> 0

procedure: truncate-to-decimal-places a decimal-places ->

number number -> number