PINE LIBRARY

calc

Updated
Library "calc"
Library for math functions. will expand over time.

split(_sumTotal, _divideBy, _forceMinimum, _haltOnError)
  Split a large number into integer sized chunks
  Parameters:
    _sumTotal: (int) Total numbert of items
    _divideBy: (int) Groups to make
    _forceMinimum: (bool) force minimum number 1/group
    _haltOnError: (bool) force error if too few groups
  Returns: int[] array of items per group
Release Notes
v2

Added:
gapSize(_value1, _value2)
  Absolute distance between any two float values, agnostic to +/-
  Parameters:
    _value1: First value
    _value2: Second value
  Returns: Absolute Positive Distance

simplifyFraction(_num, _den)
  Parameters:
    _num: (int) Input fraction numerator
    _den: (int) Input fraction dennominator
  Returns: Simplified Fraction

toFraction(_input, _round)
  Convert Decimal to tuple fraction Output, Rounded to tick, Round Shorter if heavy use.
  Parameters:
    _input: Decimal Input
    _round: (OPTIONAL) round shorter to speed up.
  Returns: Simplified Fraction (if negative, Numerator gets the sign)
Release Notes
v3
Release Notes
v4

Added:
percentile(signal, _startVal, _endVal)
  Measure percent (0.##) of Distance between two points
  Parameters:
    signal: value to check
    _startVal: first value limit
    _endVal: second value limit

pow10up(_src, _pow)
  Power of 10 scale up
  Parameters:
    _src: Input value
    _pow: Number of * 10 to perform

pow10dn(_src, _pow)
  Power of 10 scale down
  Parameters:
    _src: Input value
    _pow: Number of / 10 to perform

pow10chk(_src)
  Power of 10 to req to integer
  Parameters:
    _src: Input value) =>
Release Notes
v5

Major speed improvement on fractions (Thank you Stack overflow)
Fix on Output for start/end == same values on percent, and rename
now gets 0 if starrt == end.

Added:
percentOfDistance(signal, _startVal, _endVal)
  Measure percent (0.##) of Distance between two points
  Parameters:
    signal: value to check
    _startVal: first value limit
    _endVal: second value limit

fractionOfDistance(signal, _startVal, _endVal)
  Measure percent (0.##) of Distance between two points
  Parameters:
    signal: value to check
    _startVal: first value limit
    _endVal: second value limit
  Returns: [Num,Denom] fraction

pow10(_src, _pow)
  Power of 10 scale up
  Parameters:
    _src: Input value
    _pow: Number of * 10 to perform
  Returns: Value with decimal moved + right, - left

Updated:
toFraction(_input, _epsilon, _iterations)
  Convert Decimal to tuple fraction Output, 1/0 resolves to [1,1]
note : it is suboptimal, will be updating with a much faster algorithm
  Parameters:
    _input: Decimal Input
    _epsilon: (OPTIONAL) to precision (10e-N)
    _iterations: Maximum iterations (OPTIONAL)
  Returns: [num,den] Simplified Fraction (if negative, Numerator gets the sign)

Removed:
percentile(signal, _startVal, _endVal)
  Measure percent (0.##) of Distance between two points

pow10up(_src, _pow)
  Power of 10 scale up

pow10dn(_src, _pow)
  Power of 10 scale down
Release Notes
v6

Added:
from_center(_src, _mid)
  Parameters:
    _src (float)
    _mid (float)
Release Notes
v7

Added:
count_digits(num)
  Measure the integer digit count of a float
  Parameters:
    num (float): (float) Input value
  Returns: Number of digits

auto_inv_pow(source, power)
  Inverse power of a floatbased on digit count
  Parameters:
    source (float): (float) Input value
    power (float): (float) (OPTIONAL) Power to raise to (default 1))

Updated:
from_center(_src, _mid)
  Measure a source distance from a mid point as +/- 1.0 being he furhest distance the have been
  Parameters:
    _src (float): (float) Input value
    _mid (float): (float) The mid point to Measure fron
Release Notes
v8

Added:
sqr(x)
  Parameters:
    x (float): (float) - The number to square
  Returns: (float) - The square of the input value

atan2(dy, dx)
  atan2 function
  Parameters:
    dy (float): (float) - The y-coordinate
    dx (float): (float) - The x-coordinate
  Returns: (float) - The angle in radians

scale(_src, _oldMin, _oldMax, _newMin, _newMax)
  Scale to new values from old
  Parameters:
    _src (float): src Value
    _oldMin (float): old Min Value
    _oldMax (float): old Max Value
    _newMin (float): new Min Value
    _newMax (float): new Max Value
  Returns: rescaled value

scale_stddev(_src, _length, scale)
  Rescale values to fit within the std deviation range
  Parameters:
    _src (float): Value to convert
    _length (int): Length of the std deviation
    scale (float): (float) Scale factor
  Returns: rescaled value

abs1(_src)
  Modify incoming data to abs + 1
  Parameters:
    _src (float): Value to convert
  Returns: rescaled value

Fraction
  Fraction
  Fields:
    num (series int): (int) The numerator
    den (series int): (int) The denominator

Updated:
toFraction(_source, _epsilon, _iterations)
  Convert Decimal to tuple fraction Output, 1/0 resolves to [1,1]
note : it is suboptimal, will be updating with a much faster algorithm
  Parameters:
    _source (float)
    _epsilon (int): (OPTIONAL) to precision (10e-N)
    _iterations (int): Maximum iterations (OPTIONAL)
  Returns: [num,den] Simplified Fraction (if negative, Numerator gets the sign)

auto_inv_pow(source, power)
  Inverse power of a float based on digit count
  Parameters:
    source (float): (float) Input value
    power (float): (float) (OPTIONAL) Power to raise to (default 1))
calculationMATHutilitiesutility

Pine library

In true TradingView spirit, the author has published this Pine code as an open-source library so that other Pine programmers from our community can reuse it. Cheers to the author! You may use this library privately or in other open-source publications, but reuse of this code in a publication is governed by House rules.

Disclaimer