category-group: math
layer(s): 0, 1, 10 header file(s): z_mathsubs.h, z_hash.h, z_angle.h, z_rng.h, z_hash synopsis.
The mathematics department of the Z Directory consists of a collection of classes for hashing, a few objects, and a set of subroutines for performing mathematical and statistical calculations, and some not-so-math operations such as getting the value of the desired column of a [base 10] number or getting the rightmost digit. The routines are fairly simple, common operations. However, the Z Directory does not provide a complete math package (there are many specialized mathematical packages out there). The class objects include a random number generator (RNG), an "angle" object (computes angles; does radian - degree conversion); and hashing. Hashing in the Z Directory context includes CRC and crypto hashes such as MD5 or SHA-512. Currently the hashes include the following classes:
hash_o .....: mother class - the ADT that provides the API murmerhash_o: by Austin Appleby (2008); 32-bit hash number CRC_o : 2 implementations available, one is from UCB MD5hash_o : MD5, algorithm: Ron Rivest; code: Colin Plumb SHA_o : 3 SHA implementations/varieties: -256, -384, -512Please refer to the "hash object" manual page for all hashes. classes in this group: RNG_o, angle_o, hash_o support/internal classes: tRNG_o function groups: layer 00 functions group
layer 01 functions group description.
here is a "short list" of most of the functions available:
z_lcd() ..............: compute Least Common Denominator z_lcd_2vals() ........: compute the LCD of 2 numbers z_factor() ...........: get the factors of a number is_z_prime() .........: tell if a number is prime is_z_prime() .........: tell if a number is prime z_dmod() .............: '%' (modulus) operation, for real numbers z_ilum() .............: Least Upper Multiple z_lub() ..............: least upper bound z_glb() ..............: greatest lower bound z_lround() ...........: round a number up or down to closest integer statistics: z_is_divisible_by() ..: is the number evenly divisible by z_cumulative_normal() : calculate cumulative normal distribution z_cumulative_normal_v2(): cumulative normal; different algorithm z_normal_distribution(): compute normal distribution (bell curve) z_linear_regression() .: regression line slope & intercept z_std_deviation() .....: compute standard deviation (array of numbers) z_mean_avg() ..........: compute mean average of array of real numbershistory.
algebra: z_power() ............: calculates the value a^b z_intpower() .........: x ^ p (raise integer to a power) z_sum_darray() .......: the sum of an array of values z_sum_sequence() .....: the sum of a range of integers is_z_within() ........: tells if two numbers are close to each other
z_max_random_number_value() ....: max value of a random number via RNG z_min_random_number_value() ....: returns 0 (smallest random number) z_big_random_number() ..........: generate random number [0..{big #}] z_random_number_viatime() ......: generate random #, using time z_init_random() ................: for initializing internal RNG other: z_str_to_int_wbase(): converts string to int type (w. base 2/8/10/16)
??? 12/23/1988: z_lub(), z_glb() created ??? 02/05/1992: "interval_glb ()" deleted ??? 07/05/1996: did name changes, for standardization: Thu 07/11/1996: trying to get "RNG_o" working Mon 12/09/1996: z_lcd() made (while driving to Columbia, SC) Fri 04/25/1997: z_intpower() incorporated into z dir ??? 07/06/1996: "init_mathstuff()" made defunct Thu 05/30/2002: new #define naming conventions ("zos_", "zcc_") Tue 06/18/2002: bug fix, verification code (test driver) Sat 08/23/2003: hash: added explicit downcast, to silence gnu compiler Thu 04/23/2015: CRC function, z_str_to_int_wbase() moved, from strings Sat 04/25/2015: hash family of classes added Sun 04/26/2015: added MD5