# triangulr ## Introduction

The `triangulr` package provides high-performance triangular distribution functions which includes density function, distribution function, quantile function, random variate generator, moment generating function, characteristic function, and expected shortfall function for the triangular distribution.

## Installation

You can install the released version of `triangulr` from CRAN with:

``install.packages("triangulr")``

And the development version from GitHub with:

``````# install.packages("devtools")
devtools::install_github("irkaal/triangulr")``````

## Example

These are basic examples of using the included functions:

``library(triangulr)``

Using the density function, `dtri()`.

``````x <- c(0.1, 0.5, 0.9)

dtri(x,
min = 0,
max = 1,
mode = 0.5)
#>  0.4 2.0 0.4

dtri(x,
min = c(0, 0, 0),
max = 1,
mode = 0.5)
#>  0.4 2.0 0.4``````

Using the distribution function, `ptri()`.

``````q <- c(0.1, 0.5, 0.9)

1 - ptri(q, lower_tail = FALSE)
#>  0.02 0.50 0.98

ptri(q, lower_tail = TRUE)
#>  0.02 0.50 0.98

ptri(q, log_p = TRUE)
#>  -3.91202301 -0.69314718 -0.02020271

log(ptri(q, log_p = FALSE))
#>  -3.91202301 -0.69314718 -0.02020271``````

Using the quantile function, `qtri()`.

``````p <- c(0.1, 0.5, 0.9)

qtri(1 - p, lower_tail = FALSE)
#>  0.2236068 0.5000000 0.7763932

qtri(p, lower_tail = TRUE)
#>  0.2236068 0.5000000 0.7763932

qtri(log(p), log_p = TRUE)
#>  0.2236068 0.5000000 0.7763932

qtri(p, log_p = FALSE)
#>  0.2236068 0.5000000 0.7763932``````

Using the random variate generator, `rtri()`.

``````n <- 3

set.seed(1)
rtri(n,
min = 0,
max = 1,
mode = 0.5)
#>  0.3643547 0.4313490 0.5378601

set.seed(1)
rtri(n,
min = c(0, 0, 0),
max = 1,
mode = 0.5)
#>  0.3643547 0.4313490 0.5378601``````

Using the moment generating function, `mgtri()`.

``````t <- c(1, 2, 3)

mgtri(t,
min = 0,
max = 1,
mode = 0.5)
#>  1.683357 2.952492 5.387626

mgtri(t,
min = c(0, 0, 0),
max = 1,
mode = 0.5)
#>  1.683357 2.952492 5.387626``````

Using the expected shortfall function, `estri()`.

``````p <- c(0.1, 0.5, 0.9)

estri(p,
min = 0,
max = 1,
mode = 0.5)
#>  0.1490712 0.3333333 0.4610079

estri(p,
min = c(0, 0, 0),
max = 1,
mode = 0.5)
#>  0.1490712 0.3333333 0.4610079``````