@obliczeniowo/elementary
Version:
Library made in Angular version 20
105 lines (102 loc) • 3.87 kB
TypeScript
interface MinMax {
min: number;
max: number;
}
type Operations = string | number | boolean | Operations[];
declare class ElementaryMath {
/**
* Calc modulo of two decimal places numbers
*/
static fmod(value: number, base: number): number;
static radiansToDegrees(angle: number): number;
static degreesToRadians(angle: number): number;
static minmax(value: number, min: number, max: number): number;
static getMinMax(array: number[]): MinMax;
/**
* Check if string is number
* @param n number/string to check if number
* @param fully if true will tests if string contain only number format like:
*
* -1432
* -123.45
* -123.45e10
* -123.45e-10
* 123.45e-10
* 123.45e10
* 123.45
* 123
*
* format 123.45e is not proper number so it is not consider as number, as well as:
*
* 123 some string
* some string 123
* 123..
* 123.123.
* 123e-10e-10
*
* @returns true if is number (not NaN or infinity)
*/
static isNumeric(n: string | number, fully?: boolean): boolean;
static precision(value: number): number;
static average(values: number[]): number;
static standardDeviation(values: number[]): number;
static averageAndStandardDeviation(values: number[]): {
middle: number;
standardDeviation: number;
};
static normalization(values: number[]): number[];
/**
* Calc how many times each unique value exist in table of numbers
* @param values numeric values to count
* @returns Map object to collect counted times numeric values as key: value, value: count
*
* @example
*
* countUnique([10, 10, 10, 20, 20, 30])
*
* return: Map(3) { 10 → 3, 20 → 2, 30 → 1 }
*/
static countUnique(values: number[]): Map<number, number>;
/**
* Calc weighted average
* @param values values table
* @param weights weights table
* @returns calculated average if values.length === weights.length, else NaN
*/
static averageWeighted(values: number[], weights: number[]): number;
/**
* Pick up n% position of sorted array of numbers
* @param percentages table of percentage as for example [10, 20, 30, 40, 50]
* @param values table of numeric values [5, 10, 15, 20, 20, 20, 20, 20, 50, 60]
* @returns for given above inputs [10, 15, 20, 20, 20]
*/
static percentagesByPosition(percentages: number[], values: number[]): number[];
/**
* Calc sum of values and divide all elements by it and multiply by multiplier
* @param values vector of numbers [100, 200, 300, 400, 1000]
* @param multiply by default 100 to get percentages
* @returns for given input [5, 10, 15, 20, 50] as percentages
*/
static percentagesBySum(values: number[], multiply?: number): number[];
/**
* Find abs max value in values numbers vector and divide each value by it and multiply by 100
* @param values example: [10, 20, 30, 200, 40, 20, -400]
* @param multiply multiplier example: 100
* @returns [2.5, 5, 7.5, 50, 10, 5, -100]
*/
static percentageByAbsMax(values: number[], multiply?: number): number[];
/**
* Find max value in values numbers vector and divide each value by it and multiply by 100
* @param values example: [10, 20, 30, 200, 40, 20, -400]
* @param multiply multiplier example: 100
* @returns [5, 10, 15, 100, 20, 10, -200]
*/
static percentageByMax(values: number[], multiply?: number): number[];
static sum(values: number[]): number;
static absMax(a: number, b: number): number;
static calculate<T = string | number | boolean>(val: Operations, variables: {
[name: string]: number;
}): T;
}
export { ElementaryMath };
export type { MinMax, Operations };