MathComplexEvaluateLibrary   "MathComplexEvaluate" 
TODO: add library description here
 is_op(char)  Check if char is a operator.
	Parameters:
 	 char : string, 1 character string. 
	Returns: bool.
 operator(op, left, right)  operation between left and right values.
	Parameters:
 	 op : string, operator string character.
	 left : float, left value of operation.
	 right : float, right value of operation. 
 operator_precedence(op)  level of precedence of operator.
	Parameters:
 	 op : string, operator 1 char string. 
	Returns: int.
 eval()  evaluate a string with references to a array of arguments.
| @param tokens string, arithmetic operations with references to indices in arguments, ex:"0+1*0+2*2+3" arguments 
| @param arguments float array, arguments.
| @returns float, solution.
MATH
MathComplexTrignometryLibrary   "MathComplexTrignometry" 
Methods for complex number trignometry operations.
 sinh(complex)  Hyperbolic Sine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 cosh(complex)  Hyperbolic cosine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 tanh(complex)  Hyperbolic tangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 coth(complex)  Hyperbolic cotangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 sech(complex)  Hyperbolic Secant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 csch(complex)  Hyperbolic Cosecant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 sin(complex)  Trigonometric Sine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 cos(complex)  Trigonometric cosine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 tan(complex)  Trigonometric tangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 cot(complex)  Trigonometric cotangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 sec(complex)  Trigonometric Secant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 csc(complex)  Trigonometric Cosecant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 asin(complex)  Trigonometric Arc Sine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 acos(complex)  Trigonometric Arc Cosine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 atan(complex)  Trigonometric Arc Tangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 acot(complex)  Trigonometric Arc Cotangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 asec(complex)  Trigonometric Arc Secant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 acsc(complex)  Trigonometric Arc Cosecant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 asinh(complex)  Hyperbolic Arc Sine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 acosh(complex)  Hyperbolic Arc Cosine of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 atanh(complex)  Hyperbolic Arc Tangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 acoth(complex)  Hyperbolic Arc Cotangent of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 asech(complex)  Hyperbolic Arc Secant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
 acsch(complex)  Hyperbolic Arc Cosecant of complex number.
	Parameters:
 	 complex : float array, complex number. 
	Returns: float array.
MathComplexExtensionLibrary   "MathComplexExtension" 
A set of utility functions to handle complex numbers.
 get_phase(complex_number, in_radians)  The phase value of complex number complex_number.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 in_radians : boolean, value for the type of angle value, default=true, options=(true: radians, false: degrees) 
	Returns: float value with phase.
 natural_logarithm(complex_number)  Natural logarithm of complex number (base E).
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, complex number.
 common_logarithm(complex_number)  Common logarithm of complex number (base 10).
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, complex number.
 logarithm(complex_number, base)  Common logarithm of complex number (custom base).
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 base : float, base value. 
	Returns: float array, complex number.
 power(complex_number, complex_exponent)  Raise complex_number with complex_exponent.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 complex_exponent : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 root(complex_number, complex_exponent)  Raise complex_number with inverse of complex_exponent.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 complex_exponent : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 square(complex_number)  Square of complex_number (power 2).
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 square_root(complex_number)  Square root of complex_number (power 1/2).
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 square_roots(complex_number)  Square root of complex_number (power 1/2).
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: tuple with 2 complex numbers.
 cubic_roots(complex_number)  Square root of complex_number (power 1/2).
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: tuple with 2 complex numbers.
 to_polar_form(complex_number, in_radians)  The polar form value of complex_number.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 in_radians : boolean, value for the type of angle value, default=true, options=(true: radians, false: degrees) 
	Returns: float array, pseudo complex number in the form of a array  
** returns a array 
MathComplexOperatorLibrary   "MathComplexOperator" 
A set of utility functions to handle complex numbers.
 conjugate(complex_number)  Computes the conjugate of complex_number by reversing the sign of the imaginary part.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 add(complex_number_a, complex_number_b)  Adds complex number complex_number_b to complex_number_a, in the form:
 .
	Parameters:
 	 complex_number_a : pseudo complex number in the form of a array  .
	 complex_number_b : pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 subtract(complex_number_a, complex_number_b)  Subtract complex_number_b from complex_number_a, in the form: 
 .
	Parameters:
 	 complex_number_a : float array, pseudo complex number in the form of a array  .
	 complex_number_b : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 multiply(complex_number_a, complex_number_b)  Multiply complex_number_a with complex_number_b, in the form: 
 
	Parameters:
 	 complex_number_a : float array, pseudo complex number in the form of a array  .
	 complex_number_b : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 divide(complex_number_a, complex_number_b)  Divide complex_number _a with _b, in the form: 
 
	Parameters:
 	 complex_number_a : float array, pseudo complex number in the form of a array  .
	 complex_number_b : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 reciprocal(complex_number)  Computes the reciprocal or inverse of complex_number.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 negative(complex_number)  Negative of complex_number, in the form:  
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 inverse(complex_number)  Inverse of complex_number, in the form:  
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 exponential(complex_number)  Exponential of complex_number.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: float array, pseudo complex number in the form of a array  
 ceil(complex_number, digits)  Ceils complex_number.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 digits : int, digits to use as ceiling. 
	Returns: _complex: pseudo complex number in the form of a array  
 radius(complex_number)  Radius(magnitude) of complex_number, in the form:  
This is defined as its distance from the origin (0,0) of the complex plane.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float value with radius.
 magnitude(complex_number)  magnitude(absolute value) of complex_number, should be the same as the radius.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float.
 magnitude_squared(complex_number)  magnitude(absolute value) of complex_number, should be the same as the radius.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float.
 sign(complex_number)  Unity of complex numbers.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  . 
	Returns: float array, complex number.
MathComplexArrayLibrary   "MathComplexArray" 
Array methods to handle complex number arrays.
 new(size, initial_complex)  Prototype to initialize a array of complex numbers.
	Parameters:
 	 size : size of the array.
	 initial_complex : Complex number to be used as default value, in the form of array  . 
	Returns: float array, pseudo complex Array in the form of a array  
 get(id, index)  Get the complex number in a array, in the form of a array  
	Parameters:
 	 id : float array, ID of the array.
	 index : int, Index of the complex number. 
	Returns: float array, pseudo complex number in the form of a array  
 set(id, index, complex_number)  Sets the values complex number in a array.
	Parameters:
 	 id : float array, ID of the array.
	 index : int, Index of the complex number.
	 complex_number : float array, Complex number, in the form:  . 
	Returns: Void, updates array id.
 push(id, complex_number)  Push the values into a complex number array.
	Parameters:
 	 id : float array, ID of the array.
	 complex_number : float array, Complex number, in the form:  . 
	Returns: Void, updates array id.
 pop(id, complex_number)  Pop the values from a complex number array.
	Parameters:
 	 id : float array, ID of the array.
	 complex_number : float array, Complex number, in the form:  . 
	Returns: Void, updates array id.
 to_string(id, format)  Reads a array of complex numbers into a string, of the form: " [  , ... ]""
	Parameters:
 	 id : float array, ID of the array.
	 format : string, format of the number conversion, default='#.##########'. 
	Returns: string, translated complex array into string.
MathComplexCoreLibrary   "MathComplexCore" 
Core functions to handle complex numbers.
 set_real(complex_number, real)  Set the real part of complex_number.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 real : float, value to replace real value of complex_number. 
	Returns: Void, Modifies complex_number.
 set_imaginary(complex_number, imaginary)  Set the imaginary part of complex_number.
	Parameters:
 	 complex_number : float array, pseudo complex number in the form of a array  .
	 imaginary : float, value to replace imaginary value of complex_number. 
	Returns: Void, Modifies complex_number.
 new(real, imaginary)  Creates a prototype array to handle complex numbers.
	Parameters:
 	 real : float, real value of the complex number. default=0.
	 imaginary : float, imaginary number of the complex number. default=0.
@return float array, pseudo complex number in the form of a array  . 
 zero()  complex number "0+0i".
@return float array, pseudo complex number in the form of a array  .
 one()  complex number "1+0i".
@return float array, pseudo complex number in the form of a array  .
 imaginary_one()  complex number "0+1i".
@return float array, pseudo complex number in the form of a array  .
 nan()  complex number "0+1i".
@return float array, pseudo complex number in the form of a array  .
 from_polar_coordinates(magnitude, phase)  Create a complex number from a point's polar coordinates.
	Parameters:
 	 magnitude : float, default=0.0, The magnitude, which is the distance from the origin (the intersection of the x-axis and the y-axis) to the number.
	 phase : float, default=0.0, The phase, which is the angle from the line to the horizontal axis, measured in radians.
@return float array, pseudo complex number in the form of a array  . 
 get_real(complex_number)  Get the real part of complex_number.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: float, Real part of the complex_number.
 get_imaginary(complex_number)  Get the imaginary part of complex_number.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: float, Imaginary part of the complex number.
 is_complex(complex_number)  Checks that its a valid complex_number.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: bool.
 is_nan(complex_number)  Checks that its empty "na" complex_number.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: bool.
 is_real(complex_number)  Checks that the complex_number is real.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: bool.
 is_real_non_negative(complex_number)  Checks that the complex_number is real and not negative.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: bool.
 is_zero(complex_number)  Checks that the complex_number is zero.
	Parameters:
 	 complex_number : pseudo complex number in the form of a array  . 
	Returns: bool.
 equals(complex_number_a, complex_number_b)  Compares two complex numbers:
	Parameters:
 	 complex_number_a : float array, pseudo complex number in the form of a array  .
	 complex_number_b : float array, pseudo complex number in the form of a array  . 
	Returns: boolean value representing the equality.
 to_string(complex, format)  Converts complex_number to a string format, in the form: "a+bi"
	Parameters:
 	 complex : pseudo complex number in the form of a array  .
	 format : string, formating to apply. 
	Returns: a string in "a+bi" format
ArrayStatisticsLibrary   "ArrayStatistics" 
Statistic Functions using arrays.
 rms(sample)  Root Mean Squared
	Parameters:
 	 sample : float array, data sample points. 
	Returns: float
 skewness_pearson1(sample)  Pearson's 1st Coefficient of Skewness.
	Parameters:
 	 sample : float array, data sample. 
	Returns: float
 skewness_pearson2(sample)  Pearson's 2nd Coefficient of Skewness.
	Parameters:
 	 sample : float array, data sample. 
	Returns: float
 pearsonr(sample_a, sample_b)  Pearson correlation coefficient measures the linear relationship between two datasets.
	Parameters:
 	 sample_a : float array, sample with data.
	 sample_b : float array, sample with data. 
	Returns: float p
 kurtosis(sample)  Kurtosis of distribution.
	Parameters:
 	 sample : float array, data sample. 
	Returns: float
 range_int(sample, percent)  Get range around median containing specified percentage of values.
	Parameters:
 	 sample : int array, Histogram array.
	 percent : float, Values percentage around median. 
	Returns: tuple with  , Returns the range which containes specifies percentage of values.
BinaryDecimalConversionLibrary   "BinaryDecimalConversion" 
Converts decimal to and from binary.
 to_binary(number)  convert integer to binary string
	Parameters:
 	 number : int, value to convert. 
	Returns: string
 to_decimal(binary)  Converts a binary in a string to decimal.
	Parameters:
 	 binary : string, binary number in a string. 
	Returns: int
StringEvaluationLibrary   "StringEvaluation" 
Methods to handle evaluation of strings.
 is_comma(char)  Check if char is a comma ".".
	Parameters:
 	 char : string, 1 character string. 
	Returns: bool.
 is_op(char)  Check if char is a operator.
	Parameters:
 	 char : string, 1 character string. 
	Returns: bool.
 number(char)  convert a single char string into valid number.
	Parameters:
 	 char : string, 1 character string. 
	Returns: float.
 operator(op, left, right)  operation between left and right values.
	Parameters:
 	 op : string, operator string character.
	 left : float, left value of operation.
	 right : float, right value of operation. 
 operator_precedence(op)  level of precedence of operator.
	Parameters:
 	 op : string, operator 1 char string. 
	Returns: int.
 cleanup(_str)  Evaluate a string to clean up and retrieve only used chars
	Parameters:
 	 _str : string, arithmetic operations in a string. 
	Returns: string array, evaluated array.
 generate_rpn(tokens)  uses Shunting-Yard algorithm to generate a RPN (Reverse Polish notation)
array of strings from a array of strings containing arithmetic notation.
ex:.. ' '     -->     ' '
	Parameters:
 	 tokens : string array, array with arithmetic notation. 
	Returns: 
 parse_rpn()  evaluate a RPN (Reverse Polish notation) array of strings.
ex:.. 3 4 2 * 1 5 - 2 3 ^ ^ / +
| @param tokens string array, RPN ordered tokens, ex( ).
| @returns float, solution.
 eval()  evaluate a string with references to a array of arguments.
| @param tokens string, arithmetic operations with references to indices in arguments, ex:"0+1*0+2*2+3" arguments 
| @param arguments float array, arguments.
| @returns float, solution.
SignificantFiguresLibrary   "SignificantFigures" 
 sigFig(float _float, int _figures) 
@description Takes a floating-point number - one that can, but doesn't have to, include a decimal point - and converts it to a floating-point number with only a certain number of digits left. For example, say you want to display a variable from your script to the user and it comes out to something like 45.366666666666666666666667 or whatever. That looks awful when you, for example, print it in a label. Now you could round it up to the nearest integer easily using a built-in function, or even to a certain number of decimal places using a reasonably simple custom function. But that's a bit arbitrary. Suppose you don't know what asset the script will be used on, and so you can't predict what the price is, and what the value will turn out to be. It could be 0.00045366666666666666666666667 instead. Now if you round it up to 3 decimal places it comes out as 0.000, which is useless. My function will round that number to 0.0004536 instead, if told to do it to 4 significant digits.
I think this is more friendly.
@function Converts float with arbitrary number of digits to one with a specified number of significant figures. 
@param float _float is the floating-point number to manipulate.
@param int _figures is the number of significant figures you want.
@returns Returns a float with the specified number of significant figures 
MathSpecialFunctionsGammaLibrary   "MathSpecialFunctionsGamma" 
Gamma Functions.
 GammaQ(index)  Enumeration of the polynomial coefficients for the "GammaLn" approximation.
	Parameters:
 	 index : int, 0 => index => 10, index of coeficient. 
	Returns: float
 GammaLn(z)  Computes the logarithm of the Gamma function.
	Parameters:
 	 z : The argument of the gamma function. 
	Returns: The logarithm of the gamma function.
 Gamma(z)  Computes the Gamma function.
	Parameters:
 	 z : The argument of the gamma function. 
	Returns: float, The logarithm of the gamma function.
 GammaLowerRegularized(a, x)  
	Parameters:
 	 a : float, The argument for the gamma function.
	 x : float, The upper integral limit. 
	Returns: float, The lower incomplete gamma function.
 GammaUpperRegularized(a, x)  Returns the upper incomplete regularized gamma function
	Parameters:
 	 a : float, The argument for the gamma function.
	 x : float, The lower integral limit. 
	Returns: float, The upper incomplete regularized gamma function.
 GammaUpperIncomplete(a, x)  Returns the upper incomplete gamma function.
	Parameters:
 	 a : float, The argument for the gamma function.
	 x : float, The lower integral limit. 
	Returns: float, The upper incomplete gamma function.
 GammaLowerIncomplete(a, x)  
	Parameters:
 	 a : float, The argument for the gamma function.
	 x : float, The upper integral limit. 
	Returns: float, The lower incomplete gamma function.
ProbabilityLibrary   "Probability" 
 erf(value)  Complementary error function
	Parameters:
 	 value : float, value to test. 
	Returns: float
 ierf_mcgiles(value)  Computes the inverse error function using the Mc Giles method, sacrifices accuracy for speed.
	Parameters:
 	 value : float, -1.0 >= _value >= 1.0 range, value to test. 
	Returns: float
 ierf_double(value)  computes the inverse error function using the Newton method with double refinement.
	Parameters:
 	 value : float, -1. > _value > 1. range, _value to test. 
	Returns: float
 ierf(value)  computes the inverse error function using the Newton method.
	Parameters:
 	 value : float, -1. > _value > 1. range, _value to test. 
	Returns: float
 complement(probability)  probability that the event will not occur.
	Parameters:
 	 probability : float, 0 >=_p >= 1, probability of event. 
	Returns: float
 entropy_gini_impurity_single(probability)  Gini Inbalance or Gini index for a given probability.
	Parameters:
 	 probability : float, 0>=x>=1, probability of event. 
	Returns: float
 entropy_gini_impurity(events)  Gini Inbalance or Gini index for a series of events.
	Parameters:
 	 events : float , 0>=x>=1, array with event probability's. 
	Returns: float
 entropy_shannon_single(probability)  Entropy information value of the probability of a single event.
	Parameters:
 	 probability : float, 0>=x>=1, probability value. 
	Returns: float, value as bits of information.
 entropy_shannon(events)  Entropy information value of a distribution of events.
	Parameters:
 	 events : float , 0>=x>=1, array with probability's. 
	Returns: float
 inequality_chebyshev(n_stdeviations)  Calculates Chebyshev Inequality.
	Parameters:
 	 n_stdeviations : float, positive over or equal to 1.0 
	Returns: float
 inequality_chebyshev_distribution(mean, std)  Calculates Chebyshev Inequality.
	Parameters:
 	 mean : float, mean of a distribution
	 std : float, standard deviation of a distribution 
	Returns: float
 inequality_chebyshev_sample(data_sample)  Calculates Chebyshev Inequality for a array of values.
	Parameters:
 	 data_sample : float , array of numbers. 
	Returns: float
 intersection_of_independent_events(events)  Probability that all arguments will happen when neither outcome
is affected by the other (accepts 1 or more arguments)
	Parameters:
 	 events : float , 0 >= _p >= 1, list of event probabilities. 
	Returns: float
 union_of_independent_events(events)  Probability that either one of the arguments will happen when neither outcome
is affected by the other (accepts 1 or more arguments)
	Parameters:
 	 events : float , 0 >= _p >= 1, list of event probabilities. 
	Returns: float
 mass_function(sample, n_bins)  Probabilities for each bin in the range of sample.
	Parameters:
 	 sample : float , samples to pool probabilities.
	 n_bins : int, number of bins to split the range
@return float 
 cumulative_distribution_function(mean, stdev, value)  Use the CDF to determine the probability that a random observation 
that is taken from the population will be less than or equal to a certain value.
Or returns the area of probability for a known value in a normal distribution.
	Parameters:
 	 mean : float, samples to pool probabilities.
	 stdev : float, number of bins to split the range
	 value : float, limit at which to stop. 
	Returns: float
 transition_matrix(distribution)  Transition matrix for the suplied distribution.
	Parameters:
 	 distribution : float , array with probability distribution. ex:.  
	Returns: float 
 diffusion_matrix(transition_matrix, dimension, target_step)  Probability of reaching target_state at target_step after starting from start_state
	Parameters:
 	 transition_matrix : float , "pseudo2d" probability transition matrix.
	 dimension : int, size of the matrix dimension.
	 target_step : number of steps to find probability. 
	Returns: float 
 state_at_time(transition_matrix, dimension, start_state, target_state, target_step)  Probability of reaching target_state at target_step after starting from start_state
	Parameters:
 	 transition_matrix : float , "pseudo2d" probability transition matrix.
	 dimension : int, size of the matrix dimension.
	 start_state : state at which to start.
	 target_state : state to find probability.
	 target_step : number of steps to find probability. 
MathStatisticsKernelDensityEstimationLibrary   "MathStatisticsKernelDensityEstimation" 
(KDE) Method for Kernel Density Estimation
 kde(observations, kernel, bandwidth, nsteps)  
	Parameters:
 	 observations : float array, sample data.
	 kernel : string, the kernel to use, default='gaussian', options='uniform', 'triangle', 'epanechnikov', 'quartic', 'triweight', 'gaussian', 'cosine', 'logistic', 'sigmoid'.
	 bandwidth : float, bandwidth to use in kernel, default=0.5, range=(0, +inf), less will smooth the data.
	 nsteps : int, number of steps in range of distribution, default=20, this value is connected to how many line objects you can display per script. 
	Returns: tuple with signature: (float array, float array)
 draw_horizontal(distribution_x, distribution_y, distribution_lines, graph_lines, graph_labels)  Draw a horizontal distribution at current location on chart.
	Parameters:
 	 distribution_x : float array, distribution points x value.
	 distribution_y : float array, distribution points y value.
	 distribution_lines : line array, array to append the distribution curve lines.
	 graph_lines : line array, array to append the graph lines.
	 graph_labels : label array, array to append the graph labels. 
	Returns: void, updates arrays: distribution_lines, graph_lines, graph_labels.
 draw_vertical(distribution_x, distribution_y, distribution_lines, graph_lines, graph_labels)  Draw a vertical distribution at current location on chart.
	Parameters:
 	 distribution_x : float array, distribution points x value.
	 distribution_y : float array, distribution points y value.
	 distribution_lines : line array, array to append the distribution curve lines.
	 graph_lines : line array, array to append the graph lines.
	 graph_labels : label array, array to append the graph labels. 
	Returns: void, updates arrays: distribution_lines, graph_lines, graph_labels.
 style_distribution(lines, horizontal, to_histogram, line_color, line_style, linewidth)  Style the distribution lines.
	Parameters:
 	 lines : line array, distribution lines to style.
	 horizontal : bool, default=true, if the display is horizontal(true) or vertical(false).
	 to_histogram : bool, default=false, if graph style should be switched to histogram.
	 line_color : color, default=na, if defined will change the color of the lines.
	 line_style : string, defaul=na, if defined will change the line style, options=('na', line.style_solid, line.style_dotted, line.style_dashed, line.style_arrow_right, line.style_arrow_left, line.style_arrow_both)
	 linewidth : int, default=na, if defined will change the line width. 
	Returns: void.
 style_graph(lines, lines, horizontal, line_color, line_style, linewidth)  Style the graph lines and labels
	Parameters:
 	 lines : line array, graph lines to style.
	 lines : labels array, graph labels to style.
	 horizontal : bool, default=true, if the display is horizontal(true) or vertical(false).
	 line_color : color, default=na, if defined will change the color of the lines.
	 line_style : string, defaul=na, if defined will change the line style, options=('na', line.style_solid, line.style_dotted, line.style_dashed, line.style_arrow_right, line.style_arrow_left, line.style_arrow_both)
	 linewidth : int, default=na, if defined will change the line width. 
	Returns: void.
MathStatisticsKernelFunctionsLibrary   "MathStatisticsKernelFunctions" 
TODO: add library description here
 uniform(distance, bandwidth)  Uniform kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 triangular(distance, bandwidth)  Triangular kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 epanechnikov(distance, bandwidth)  Epanechnikov kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 quartic(distance, bandwidth)  Quartic kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 triweight(distance, bandwidth)  Triweight kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 tricubic(distance, bandwidth)  Tricubic kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 gaussian(distance, bandwidth)  Gaussian kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 cosine(distance, bandwidth)  Cosine kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 logistic(distance, bandwidth)  logistic kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 sigmoid(distance, bandwidth)  Sigmoid kernel.
	Parameters:
 	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
 select(kernel, distance, bandwidth)  Kernel selection method.
	Parameters:
 	 kernel : string, kernel to select. (options="uniform", "triangle", "epanechnikov", "quartic", "triweight", "tricubic", "gaussian", "cosine", "logistic", "sigmoid")
	 distance : float, distance to kernel origin.
	 bandwidth : float, default=1.0, bandwidth limiter to weight the kernel. 
	Returns: float.
MathTransformsHartleyLibrary   "MathTransformsHartley" 
implementation of the Fast Discrete Hartley Transform(DHT).
 naive(samples)  Generic naive transform for the (DHT).
	Parameters:
 	 samples : float array, 1d data. 
	Returns: float array.
 fdht(samples)  Fast Discrete Hartley Transform (DHT).
	Parameters:
 	 samples : float array, data samples. 
	Returns: float array.
 idht(samples, asymmetric_scaling)  Inverse Discrete Hartley Transform (DHT).
	Parameters:
 	 samples : float array, data samples.
	 asymmetric_scaling : bool, default=true, scaling option. 
	Returns: float array.
MathSpecialFunctionsTestFunctionsLibrary   "MathSpecialFunctionsTestFunctions" 
Methods for test functions.
 rosenbrock(input_x, input_y)  Valley-shaped Rosenbrock function for 2 dimensions: (x,y) -> (1-x)^2 + 100*(y-x^2)^2.
	Parameters:
 	 input_x : float, common range within (-5.0, 10.0) or (-2.048, 2.048).
	 input_y : float, common range within (-5.0, 10.0) or (-2.048, 2.048). 
	Returns: float
 rosenbrock_mdim(samples)  Valley-shaped Rosenbrock function for 2 or more dimensions.
	Parameters:
 	 samples : float array, common range within (-5.0, 10.0) or (-2.048, 2.048). 
	Returns: float
 himmelblau(input_x, input_y)  Himmelblau, a multi-modal function: (x,y) -> (x^2+y-11)^2 + (x+y^2-7)^2
	Parameters:
 	 input_x : float, common range within (-6.0, 6.0 ).
	 input_y : float, common range within (-6.0, 6.0 ). 
	Returns: float
 rastrigin(samples)  Rastrigin, a highly multi-modal function with many local minima.
	Parameters:
 	 samples : float array, common range within (-5.12, 5.12 ). 
	Returns: float
 drop_wave(input_x, input_y)  Drop-Wave, a multi-modal and highly complex function with many local minima.
	Parameters:
 	 input_x : float, common range within (-5.12, 5.12 ).
	 input_y : float, common range within (-5.12, 5.12 ). 
	Returns: float
 ackley(input_x)  Ackley, a function with many local minima. It is nearly flat in outer regions but has a large hole at the center.
	Parameters:
 	 input_x : float array, common range within (-32.768, 32.768 ). 
	Returns: float
 bohachevsky1(input_x, input_y)  Bowl-shaped first Bohachevsky function.
	Parameters:
 	 input_x : float, common range within (-100.0, 100.0 ).
	 input_y : float, common range within (-100.0, 100.0 ). 
	Returns: float
 matyas(input_x, input_y)  Plate-shaped Matyas function.
	Parameters:
 	 input_x : float, common range within (-10.0, 10.0 ).
	 input_y : float, common range within (-10.0, 10.0 ). 
	Returns: float
 six_hump_camel(input_x, input_y)  Valley-shaped six-hump camel back function.
	Parameters:
 	 input_x : float, common range within (-3.0, 3.0 ).
	 input_y : float, common range within (-2.0, 2.0 ). 
	Returns: float
MathGeometryCurvesChaikinLibrary   "MathGeometryCurvesChaikin" 
Implements the chaikin algorithm to create a curved path, from assigned points.
 chaikin(points_x, points_y, closed)  Chaikin algorithm method, uses provided points to generate a smoothed path.
	Parameters:
 	 points_x : float array, the x value of points.
	 points_y : float array, the y value of points.
	 closed : bool, default=false, is the path closed or not. 
	Returns: tuple with 2 float arrays.
 smooth(points_x, points_y, iterations, closed)  Iterate the chaikin algorithm, to smooth a sample of points into a curve path.
	Parameters:
 	 points_x : float array, the x value of points.
	 points_y : float array, the y value of points.
	 iterations : int, number of iterations to apply the smoothing.
	 closed : bool, default=false, is the path closed or not. 
	Returns: array of lines.
 draw(path_x, path_y, closed)  Draw the path.
	Parameters:
 	 path_x : float array, the x value of the path.
	 path_y : float array, the y value of the path.
	 closed : bool, default=false, is the path closed or not. 
	Returns: array of lines.
Library_All_In_OneLibrary   "Library_All_In_One" 
 fnRSI()  
 fnTSI()  
 Discription: 
Contains several functions of Pinescript all in one Library. This reduce your coding.
 How to use: 
import Wilson-IV/Library_All_In_One/1 as _lib
Examples of plotting the RSI and TSI:
plot(_lib.fnRSI(close, 14))
plot(_lib.fnTSI(close, 25, 14))
 Markets: 
It can be used to all markets.
 NOTE: 
It will expands with more function during time.
MathSpecialFunctionsLogisticLibrary   "MathSpecialFunctionsLogistic" 
Methods for logistic equation.
 logistic(probability)  Computes the logistic function.
	Parameters:
 	 probability : float, value to compute the logistic function. 
	Returns: float
 logit(probability)  Computes the logit function, the inverse of the sigmoid logistic function.
	Parameters:
 	 probability : float, value to compute the logit function. 
	Returns: float
MathTrigonometryLibrary   "MathTrigonometry" 
Trigonometric methods.
 sinc(value)  Normalized sinc function.
	Parameters:
 	 value : float, value. 
	Returns: float.
 cot(value)  Cotangent of value.
	Parameters:
 	 value : float, value. 
	Returns: float.
 csc(value)  Cosecant of value.
	Parameters:
 	 value : float, value. 
	Returns: float.
 sec(value)  Secant of value.
	Parameters:
 	 value : float, value. 
	Returns: float.
 acot(value)  Arc cotangent of value.
	Parameters:
 	 value : float, adjacent value. 
	Returns: float.
 asec(value)  Arc secant of value.
	Parameters:
 	 value : float, hypotenuse value. 
	Returns: float.
 acsc(value)  Arc cosecant of value.
	Parameters:
 	 value : float, hipotenuse value. 
	Returns: float.
 sinh(angle)  Hyperbolic sine of angle.
	Parameters:
 	 angle : float, value. 
	Returns: float.
 cosh(angle)  Hyperbolic cosine of angle.
	Parameters:
 	 angle : float, value. 
	Returns: float.
 tanh(angle)  Hyperbolic tangent of angle.
	Parameters:
 	 angle : float, value. 
	Returns: float.
 coth(angle)  Hyperbolic cotangent of angle.
	Parameters:
 	 angle : float, value. 
	Returns: float.
 sech(angle)  Hyperbolic secant of angle.
	Parameters:
 	 angle : float, value. 
	Returns: float.
 csch(angle)  Hyperbolic cosecant of angle.
	Parameters:
 	 angle : float, value. 
	Returns: float.
 asinh(value)  Hyperbolic area sine.
	Parameters:
 	 value : float, value. 
	Returns: float.
 acosh(value)  Hyperbolic area cosine.
	Parameters:
 	 value : float, value. 
	Returns: float.
 atanh(value)  Hyperbolic area tangent.
	Parameters:
 	 value : float, value. 
	Returns: float.
 acoth(value)  Hyperbolic area cotangent.
	Parameters:
 	 value : float, value. 
	Returns: float.
 asech(value)  Hyperbolic area secant.
	Parameters:
 	 value : float, value. 
	Returns: float.
 acsch(value)  Hyperbolic area cosecant.
	Parameters:
 	 value : float, value. 
	Returns: float.
MathSearchDijkstraLibrary   "MathSearchDijkstra" 
Shortest Path Tree Search Methods using Dijkstra Algorithm.
 min_distance(distances, flagged_vertices)  Find the lowest cost/distance.
	Parameters:
 	 distances : float array, data set with distance costs to start index.
	 flagged_vertices : bool array, data set with visited vertices flags. 
	Returns: int, lowest cost/distance index.
 dijkstra(matrix_graph, dim_x, dim_y, start)  Dijkstra Algorithm, perform a greedy tree search to calculate the cost/distance to selected start node at each vertex.
	Parameters:
 	 matrix_graph : int array, matrix holding the graph adjacency list and costs/distances.
	 dim_x : int, x dimension of matrix_graph.
	 dim_y : int, y dimension of matrix_graph.
	 start : int, the vertex index to start search. 
	Returns: int array, set with costs/distances to each vertex from start vertexs.
 shortest_path(start, end, matrix_graph, dim_x, dim_y)  Retrieves the shortest path between 2 vertices in a graph using Dijkstra Algorithm.
	Parameters:
 	 start : int, the vertex index to start search.
	 end : int, the vertex index to end search.
	 matrix_graph : int array, matrix holding the graph adjacency list and costs/distances.
	 dim_x : int, x dimension of matrix_graph.
	 dim_y : int, y dimension of matrix_graph. 
	Returns: int array, set with vertex indices to the shortest path.
MathGaussFunctionLibrary   "MathGaussFunction" 
Implements multiple gauss methods.
 f_1d(point_x, sigma)  1-D Gaussian function.
	Parameters:
 	 point_x : float, x value.
	 sigma : float, sigma value, default=1.0. 
	Returns: float, function's value at point_x.
 f_2d(point_x, point_y, sigma)  2-D Gaussian function.
	Parameters:
 	 point_x : float, x value.
	 point_y : float, y value.
	 sigma : float, sigma value, default=1.0. 
	Returns: float, function's value at (point_x, point_y).
 kernel_1d(size, sigma)  1-D Gaussian kernel.
	Parameters:
 	 size : int, Kernel size (should be odd),  .
	 sigma : float, sigma value, default=1.0. 
	Returns: float array, Returns 1-D Gaussian kernel of the specified size.
 kernel_2d(size, sigma)  2-D Gaussian kernel.
	Parameters:
 	 size : int, Kernel size (should be odd),  .
	 sigma : float, sigma value, default=1.0. 
	Returns: float array, Returns 2-D Gaussian kernel of the specified size.
MathFinancialAbsoluteRiskMeasuresLibrary   "MathFinancialAbsoluteRiskMeasures" 
Financial Absolute Risk Measures.
 gain_stdev(sample)  Standard deviation of gains in a data sample.
	Parameters:
 	 sample : float array, data sample. 
	Returns: float.
 loss_stdev(sample)  Standard deviation of losses in a data sample.
	Parameters:
 	 sample : float array, data sample. 
	Returns: float.
 downside_stdev(sample, minimal_acceptable_return)  Downside standard deviation in a data sample.
	Parameters:
 	 sample : float array, data sample.
	 minimal_acceptable_return : float, minimum gain value. 
	Returns: float.
 semi_stdev(sample)  Standard deviation of less than average returns in a data sample.
	Parameters:
 	 sample : float array, data sample. 
	Returns: float.
 gain_loss_ratio(sample)  ratio of average gains of average losses in a data sample.
	Parameters:
 	 sample : float array, data sample. 
	Returns: float.
 compound_risk_score(source, length)  Compound Risk Score
	Parameters:
 	 source : float, input data, default=close.
	 length : int, period of observation, default=12) 
	Returns: float.






















