Skip to content


Subversion checkout URL

You can clone with
Download ZIP
JavaScript Statistical Library
JavaScript Other

Update tests for triangular.pdf

Updating and adding tests for triangular.pdf(). One of the previous
tests was:
assert.epsilon(tol, jStat.triangular.pdf(1.0, 1.0, 2.0, 1.0), 1.0);
This test was failing, however the test is incorrect. A comment in the
test code claimed that this test was based on R's dtriangle(x, a, b, c)
from package 'triangle', however this is not consistent with the current
return value for the R code:
> dtriangle(1, 1, 2, 1)
[1] NaN
Warning message:
In dTest(c(x, a, b, c)) :
values required to be  a <= c <= b (at least one strict inequality)

To further confuse matters, dtriangle() clearly has a bug in it, given
that NaN is not the correct value for this case, and the provided
warning is not even consistent with the passed parameters!

So I am now using R's dtriang() from package mc2d as my reference, as it
appears to be a better implementation of the triangular distribution.

I have added the reference R code into the comment in the test file,
since if we are going to refer to R functions for tests, we might as
well make it easy for someone to confirm.

Furthermore, I have added more tests, in an attempt to get basic
coverage of the various segments of the triangular distribution for each
of the basic forms it can take.

PR-URL: #148
Reviewed-by: Trevor Norris <>
latest commit ea924b0b59
@akrawitz akrawitz authored trevnorris committed

jStat - JavaScript Statistical Library

Build Prerequisites

In order to build jStat, you need to have GNU make 3.8 or later, Node.js 0.2 or later, and git 1.7 or later. (Earlier versions might work OK, but are not tested.)

Windows users have two options:

  1. Install msysgit (Full installer for official Git), GNU make for Windows, and a binary version of Node.js. Make sure all three packages are installed to the same location (by default, this is C:\Program Files\Git).
  2. Install Cygwin (make sure you install the git, make, and which packages), then either follow the Node.js build instructions or install the binary version of Node.js.

Mac OS users should install Xcode (comes on your Mac OS install DVD, or downloadable from Apple's Xcode site) and Once Homebrew is installed, run brew install git to install git, and brew install node to install Node.js.

Linux/BSD users should use their appropriate package managers to install make, git, and node, or build from source if you swing that way.

Building jStat

First, clone a copy of the jStat git repo by running git clone git://

To download all necessary libraries run npm install.

Then, to get a complete, minified version of jStat and all documentation, simply cd to the jstat directory and type make. If you don't have Node installed and/or want to make a basic, uncompressed, unlinted version of jstat, use make jstat instead of make.

The built version of jStat will be put in the dist/ subdirectory.

Generate just the documentation by running make doc. Documentation will be placed in dist/docs by default.

To remove all built files, run make clean.

Running Tests

Execute all tests by running make test.

Or if you wish to run a specific test, cd to test/<subdir> and run node <some_test>-test.js.

Get the Code

Both the minified and unminified source are located in the dist/ directory. For those who don't want to build it themselves.


jStat is now going to follow most of the v8 JavaScript guidelines. There will be plenty of source that uses the old style, but we're going to work away from that.

Also, we'll be going through and reimplementing a good portion of the code to run faster. Hopefully it won't take too long to get the project on one basic standard.

When submitting pull requests, no need to check in dist/*.js. They'll be recompiled for distribution anyway.

Join the Community

We always like discussion of how to improve jStat. Join us at our mailing list and let us know what you'd like to see. Also come ask questions in the #jstat channel on


The library is hosted on jsDelivr using the follwing url:


Module Loaders

Currently jStat is exposed as j$ and jStat inside an object, rather than exported directly. This may confuse some module loaders, however should be easily remedied with the correct configuration.


When loading under Node be sure to reference the child object.

var jStat = require('jStat').jStat;

RequireJS Shim

For RequireJS not only exports but also init function must be specified.

  paths: {
    'jstat': 'path/to/jstat/dist/jstat.min'
  shim: {
    jstat: {
      exports: ['j$', 'jStat'],
      init: function () {
        return {
          j$: j$,
          jStat: jStat
Something went wrong with that request. Please try again.