diff --git a/src/numeric.js b/src/numeric.js
index 537b68f..c37fd6f 100644
--- a/src/numeric.js
+++ b/src/numeric.js
@@ -1,3 +1,27 @@
+/**
+ * @license
+ * Numeric Javascript
+ * Copyright (C) 2011 by Sébastien Loisel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
"use strict";
var numeric = (typeof exports === "undefined")?(function numeric() {}):(exports);
diff --git a/src/quadprog.js b/src/quadprog.js
index 2a9258d..996b1de 100644
--- a/src/quadprog.js
+++ b/src/quadprog.js
@@ -1,3 +1,27 @@
+/**
+ * @license
+ * Numeric Javascript
+ * Copyright (C) 2011 by Sébastien Loisel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
/* This file is a slightly modified version of quadprog.js from Alberto Santini.
* It has been slightly modified by Sébastien Loisel to make sure that it handles
* 0-based Arrays instead of 1-based Arrays.
diff --git a/src/seedrandom.js b/src/seedrandom.js
index dbffc75..91d0cd0 100644
--- a/src/seedrandom.js
+++ b/src/seedrandom.js
@@ -1,97 +1,100 @@
-// seedrandom.js version 2.0.
-// Author: David Bau 4/2/2011
-//
-// Defines a method Math.seedrandom() that, when called, substitutes
-// an explicitly seeded RC4-based algorithm for Math.random(). Also
-// supports automatic seeding from local or network sources of entropy.
-//
-// Usage:
-//
-//
-//
-// Math.seedrandom('yipee'); Sets Math.random to a function that is
-// initialized using the given explicit seed.
-//
-// Math.seedrandom(); Sets Math.random to a function that is
-// seeded using the current time, dom state,
-// and other accumulated local entropy.
-// The generated seed string is returned.
-//
-// Math.seedrandom('yowza', true);
-// Seeds using the given explicit seed mixed
-// together with accumulated entropy.
-//
-//
-// Seeds using physical random bits downloaded
-// from random.org.
-//
-// Seeds using urandom bits from call.jsonlib.com,
-// which is faster than random.org.
-//
-// Examples:
-//
-// Math.seedrandom("hello"); // Use "hello" as the seed.
-// document.write(Math.random()); // Always 0.5463663768140734
-// document.write(Math.random()); // Always 0.43973793770592234
-// var rng1 = Math.random; // Remember the current prng.
-//
-// var autoseed = Math.seedrandom(); // New prng with an automatic seed.
-// document.write(Math.random()); // Pretty much unpredictable.
-//
-// Math.random = rng1; // Continue "hello" prng sequence.
-// document.write(Math.random()); // Always 0.554769432473455
-//
-// Math.seedrandom(autoseed); // Restart at the previous seed.
-// document.write(Math.random()); // Repeat the 'unpredictable' value.
-//
-// Notes:
-//
-// Each time seedrandom('arg') is called, entropy from the passed seed
-// is accumulated in a pool to help generate future seeds for the
-// zero-argument form of Math.seedrandom, so entropy can be injected over
-// time by calling seedrandom with explicit data repeatedly.
-//
-// On speed - This javascript implementation of Math.random() is about
-// 3-10x slower than the built-in Math.random() because it is not native
-// code, but this is typically fast enough anyway. Seeding is more expensive,
-// especially if you use auto-seeding. Some details (timings on Chrome 4):
-//
-// Our Math.random() - avg less than 0.002 milliseconds per call
-// seedrandom('explicit') - avg less than 0.5 milliseconds per call
-// seedrandom('explicit', true) - avg less than 2 milliseconds per call
-// seedrandom() - avg about 38 milliseconds per call
-//
-// LICENSE (BSD):
-//
-// Copyright 2010 David Bau, all rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// 3. Neither the name of this module nor the names of its contributors may
-// be used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+/**
+ * @fileoverview
+ * seedrandom.js version 2.0.
+ * Author: David Bau 4/2/2011
+ *
+ * Defines a method Math.seedrandom() that, when called, substitutes
+ * an explicitly seeded RC4-based algorithm for Math.random(). Also
+ * supports automatic seeding from local or network sources of entropy.
+ *
+ * Usage:
+ *
+ *
+ *
+ * Math.seedrandom('yipee'); Sets Math.random to a function that is
+ * initialized using the given explicit seed.
+ *
+ * Math.seedrandom(); Sets Math.random to a function that is
+ * seeded using the current time, dom state,
+ * and other accumulated local entropy.
+ * The generated seed string is returned.
+ *
+ * Math.seedrandom('yowza', true);
+ * Seeds using the given explicit seed mixed
+ * together with accumulated entropy.
+ *
+ *
+ * Seeds using physical random bits downloaded
+ * from random.org.
+ *
+ * Seeds using urandom bits from call.jsonlib.com,
+ * which is faster than random.org.
+ *
+ * Examples:
+ *
+ * Math.seedrandom("hello"); // Use "hello" as the seed.
+ * document.write(Math.random()); // Always 0.5463663768140734
+ * document.write(Math.random()); // Always 0.43973793770592234
+ * var rng1 = Math.random; // Remember the current prng.
+ *
+ * var autoseed = Math.seedrandom(); // New prng with an automatic seed.
+ * document.write(Math.random()); // Pretty much unpredictable.
+ *
+ * Math.random = rng1; // Continue "hello" prng sequence.
+ * document.write(Math.random()); // Always 0.554769432473455
+ *
+ * Math.seedrandom(autoseed); // Restart at the previous seed.
+ * document.write(Math.random()); // Repeat the 'unpredictable' value.
+ *
+ * Notes:
+ *
+ * Each time seedrandom('arg') is called, entropy from the passed seed
+ * is accumulated in a pool to help generate future seeds for the
+ * zero-argument form of Math.seedrandom, so entropy can be injected over
+ * time by calling seedrandom with explicit data repeatedly.
+ *
+ * On speed - This javascript implementation of Math.random() is about
+ * 3-10x slower than the built-in Math.random() because it is not native
+ * code, but this is typically fast enough anyway. Seeding is more expensive,
+ * especially if you use auto-seeding. Some details (timings on Chrome 4):
+ *
+ * Our Math.random() - avg less than 0.002 milliseconds per call
+ * seedrandom('explicit') - avg less than 0.5 milliseconds per call
+ * seedrandom('explicit', true) - avg less than 2 milliseconds per call
+ * seedrandom() - avg about 38 milliseconds per call
+ *
+ * @license
+ * seedrandom.js
+ * Copyright 2010 David Bau, all rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of this module nor the names of its contributors may
+ * be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
/**
* All code is in an anonymous closure to keep the global namespace clean.
*
diff --git a/src/sparse2.js b/src/sparse2.js
index 89d93c8..971787d 100644
--- a/src/sparse2.js
+++ b/src/sparse2.js
@@ -1,3 +1,27 @@
+/**
+ * @license
+ * Numeric Javascript
+ * Copyright (C) 2011 by Sébastien Loisel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
numeric.Sparse = function Sparse(p,v) { this.p = p; this.v = v; }
numeric.Sparse.scatter = function scatter(i,j,z) {
var n = numeric.sup(j)+1,m=i.length,jk;
diff --git a/src/svd.js b/src/svd.js
index 24a07d3..9f8a3ae 100644
--- a/src/svd.js
+++ b/src/svd.js
@@ -1,3 +1,27 @@
+/**
+ * @license
+ * Numeric Javascript
+ * Copyright (C) 2011 by Sébastien Loisel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
/*
Shanti Rao sent me this routine by private email. I had to modify it
slightly to work on Arrays instead of using a Matrix object.
@@ -293,4 +317,3 @@ numeric.svd= function svd(A) {
return {U:u,S:q,V:v}
};
-