# Source: common.js

    /**
     * Common utilities
     * @module glMatrix
     */

    // Configuration Constants
    export const EPSILON = 0.000001;
    export let ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array;
    export const RANDOM = Math.random;

    /**
     * Sets the type of array used when creating new vectors and matrices
     *
     * @param {Type} type Array type, such as Float32Array or Array
     */
    export function setMatrixArrayType(type) {
      ARRAY_TYPE = type;
    }

    const degree = Math.PI / 180;

    /**
     * Convert Degree To Radian
     *
     * @param {Number} a Angle in Degrees
     */
    export function toRadian(a) {
      return a * degree;
    }

    /**
     * Tests whether or not the arguments have approximately the same value, within an absolute
     * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less
     * than or equal to 1.0, and a relative tolerance is used for larger values)
     *
     * @param {Number} a The first number to test.
     * @param {Number} b The second number to test.
     * @returns {Boolean} True if the numbers are approximately equal, false otherwise.
     */
    export function equals(a, b) {
      return Math.abs(a - b) <= EPSILON*Math.max(1.0, Math.abs(a), Math.abs(b));
    }