Socket
Socket
Sign inDemoInstall

fraction.js

Package Overview
Dependencies
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fraction.js - npm Package Compare versions

Comparing version 1.2.0 to 1.2.1

8

bower.json
{
"name": "fraction.js",
"main": "fraction.js",
"version": "1.2.0",
"version": "1.2.1",
"homepage": "http://www.xarg.org/2014/03/precise-calculations-in-javascript/",

@@ -13,2 +13,6 @@ "description": "A rational number library",

],
"license": [
"MIT",
"GPL"
],
"repository": {

@@ -21,2 +25,2 @@ "type": "git",

]
}
}
/**
* @license Fraction.js v1.2.0 12/03/2014
* @license Fraction.js v1.2.1 20/04/2014
* http://www.xarg.org/2014/03/precise-calculations-in-javascript/

@@ -47,3 +47,3 @@ *

};
var self = this;

@@ -137,4 +137,4 @@

};
/**

@@ -204,3 +204,3 @@ * Calculates the modulo of two rational numbers - a more precise fmod

num = parse(arguments);
if (0 === (num['n'] * self['d'])) {

@@ -222,3 +222,3 @@ return false;

};
/**

@@ -312,3 +312,3 @@ * Returns a string-fraction representation of a Fraction object

case "object":
if (param === null) {

@@ -340,49 +340,53 @@ break;

var A = 0, B = 1;
var C = 1, D = 1;
if (param > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow
var N = 10000000;
var A = 0, B = 1;
var C = 1, D = 1;
var scale = Math.pow(10, Math.floor(1 + Math.log(param) / Math.LN10));
var N = 10000000;
param/= scale;
var scale = Math.pow(10, Math.floor(1 + Math.log(param) / Math.LN10));
// Using Farey Sequences
// http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/
param/= scale;
while (B <= N && D <= N) {
var M = (A + C) / (B + D);
if (param === M) {
if (B + D <= N) {
n = A + C;
d = B + D;
} else if (D > B) {
n = C;
d = D;
// Using Farey Sequences
// http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/
while (B <= N && D <= N) {
var M = (A + C) / (B + D);
if (param === M) {
if (B + D <= N) {
n = A + C;
d = B + D;
} else if (D > B) {
n = C;
d = D;
} else {
n = A;
d = B;
}
break;
} else {
n = A;
d = B;
if (param > M) {
A+= C;
B+= D;
} else {
C+= A;
D+= B;
}
if (B > N) {
n = C;
d = D;
} else {
n = A;
d = B;
}
}
break;
} else if (param > M) {
A+= C;
B+= D;
} else {
C+= A;
D+= B;
}
n*= scale;
}
if (!(B <= N && D <= N)) {
if (B > N) {
n = C;
d = D;
} else {
n = A;
d = B;
}
}
n*= scale;
break;

@@ -389,0 +393,0 @@

/*
Fraction.js v1.2.0 12/03/2014
Fraction.js v1.2.1 20/04/2014
http://www.xarg.org/2014/03/precise-calculations-in-javascript/

@@ -8,7 +8,7 @@

*/
function Fraction(m){function q(b,a){if(0===a%2)return q(b,a/2);if(0===a%5)return q(b,a/5);for(var c=1;c<=a;c++)if(1===r(c,a))return c;return 0}function r(b,a){for(var c=10,e=1;0<b;c=c*c%a,b>>=1)b&1&&(e=e*c%a);return e}function h(b,n){if(!n)throw"DIV/0";a.s=(0<=b)-(0>b);b=Math.abs(b);n=Math.abs(n);for(var c=b,e=n,g;e;)g=e,e=c%e,c=g;a.n=b/c;a.d=n/c;return a}function k(b){var a=0,c=1,e=1;if(1===b.length)b=b[0];else if(2!==b.length)throw"Parameter mismatch";switch(typeof b){case "object":if(null===b)break;
else if(void 0!==b[0]&&void 0!==b[1]){a=b[0];c=b[1];e=a*c;break}else if("d"in b&&"n"in b){a=b.n;c=b.d;e=a*c;void 0!==b.s&&(e*=b.s);break}else throw"Unknown format";case "number":0>b&&(b=-b,e=-1);var g=0,d=1,f=1,l=1,k=Math.pow(10,Math.floor(1+Math.log(b)/Math.LN10));for(b/=k;1E7>=d&&1E7>=l;){var m=(g+f)/(d+l);if(b===m){1E7>=d+l?(a=g+f,c=d+l):l>d?(a=f,c=l):(a=g,c=d);break}else b>m?(g+=f,d+=l):(f+=g,l+=d)}1E7>=d&&1E7>=l||(1E7<d?(a=f,c=l):(a=g,c=d));a*=k;break;case "string":a=b.split("");b=[0,0,0,0,0];
c=[0,0,0,0,0];for(f=d=0;f<a.length;f++)if("."===a[f])if(0===d)d++;else throw"Corrupted number";else if("("===a[f]||"'"===a[f]||")"===a[f])if(0<d&&3>d)d++;else throw"Corrupted number";else if(0===f&&"-"===a[0])e=-1;else if(3>d){g=parseInt(a[f],10);if(isNaN(g))throw"Corrupted number";b[d]=10*b[d]+g;c[d]++}else throw"Corrupted number";if(2===d)throw"Corrupted number";b[3]=Math.pow(10,c[1]);b[4]=0<b[2]?Math.pow(10,c[2])-1:1;a=b[2]+b[4]*(b[0]*b[3]+b[1]);c=b[3]*b[4];break;default:throw"Unknown type";}c||
h(0,0);p.n=Math.abs(a);p.d=Math.abs(c);p.s=(0<=e)-(0>e);return p}var p={n:0,d:0,s:0},a=this;a.abs=function(){a.s=1;return a};a.add=function(b){b=k(arguments);return h(a.s*a.n*b.d+b.s*a.d*b.n,a.d*b.d)};a.sub=function(b){b=k(arguments);return h(a.s*a.n*b.d-b.s*a.d*b.n,a.d*b.d)};a.mul=function(b){b=k(arguments);return h(a.s*b.s*a.n*b.n,a.d*b.d)};a.div=function(b){b=k(arguments);return h(a.s*b.s*a.n*b.d,a.d*b.n)};a.set=function(a){a=k(arguments);return h(a.s*a.n,a.d)};a.mod=function(b){b=k(arguments);
return 0===b.n*a.d?h(0,0):h(a.s*b.d*a.n%(b.n*a.d),b.d*a.d)};a.reciprocal=function(){return h(a.s*a.d,a.n)};a.equals=function(b){b=k(arguments);return b.s*b.n*a.d===a.s*a.n*b.d};a.divisible=function(b){b=k(arguments);return 0===b.n*a.d?!1:0===a.n*b.d%(b.n*a.d)};a.toDouble=function(){return a.s*a.n/a.d};a.toFraction=function(){return a.n>a.d?0===a.n%a.d?""+a.s*a.n/a.d:(a.s*a.n/a.d|0)+" "+a.n%a.d+"/"+a.d:a.s*a.n+" / "+a.d};a.toString=function(){var b=(""+a.n).split(""),k=a.d,c=0,e="",g=q(a.n,a.d),d;
a:{d=a.d;for(var f=0;f<d;f++)if(r(f,d)===r(f+g,d)){d=f;break a}d=0}for(var f=-1,l=10+g+d+b.length,h=0;h<l;h++){c*=10;h<b.length?c+=parseInt(b[h],10):h===b.length?(e+=".",f=0):f++;if(0<g&&f===d)e+="(";else if(0<g&&f-d===g){e+=")";break}c>=k?(e+=c/k|0,c%=k):e+="0"}return(~a.s?"":"-")+e.replace(/^0+([1-9]|0\.)/g,"$1").replace(/(\d)0+$/,"$1")};a.n=0;a.d=a.s=1;m=k(arguments);h(m.s*m.n,m.d)}"undefined"!==typeof module&&module.exports&&(module.exports.Fraction=Fraction);
function Fraction(n){function q(b,a){if(0===a%2)return q(b,a/2);if(0===a%5)return q(b,a/5);for(var c=1;c<=a;c++)if(1===r(c,a))return c;return 0}function r(b,a){for(var c=10,d=1;0<b;c=c*c%a,b>>=1)b&1&&(d=d*c%a);return d}function k(b,m){if(!m)throw"DIV/0";a.s=(0<=b)-(0>b);b=Math.abs(b);m=Math.abs(m);for(var c=b,d=m,h;d;)h=d,d=c%d,c=h;a.n=b/c;a.d=m/c;return a}function l(b){var a=0,c=1,d=1;if(1===b.length)b=b[0];else if(2!==b.length)throw"Parameter mismatch";switch(typeof b){case "object":if(null===b)break;
else if(void 0!==b[0]&&void 0!==b[1]){a=b[0];c=b[1];d=a*c;break}else if("d"in b&&"n"in b){a=b.n;c=b.d;d=a*c;void 0!==b.s&&(d*=b.s);break}else throw"Unknown format";case "number":0>b&&(b=-b,d=-1);if(0<b){var h=0,f=1,e=1,g=1,l=Math.pow(10,Math.floor(1+Math.log(b)/Math.LN10));for(b/=l;1E7>=f&&1E7>=g;)if(a=(h+e)/(f+g),b===a){1E7>=f+g?(a=h+e,c=f+g):g>f?(a=e,c=g):(a=h,c=f);break}else b>a?(h+=e,f+=g):(e+=h,g+=f),1E7<f?(a=e,c=g):(a=h,c=f);a*=l}break;case "string":a=b.split("");b=[0,0,0,0,0];h=[0,0,0,0,0];
for(g=e=0;g<a.length;g++)if("."===a[g])if(0===e)e++;else throw"Corrupted number";else if("("===a[g]||"'"===a[g]||")"===a[g])if(0<e&&3>e)e++;else throw"Corrupted number";else if(0===g&&"-"===a[0])d=-1;else if(3>e){f=parseInt(a[g],10);if(isNaN(f))throw"Corrupted number";b[e]=10*b[e]+f;h[e]++}else throw"Corrupted number";if(2===e)throw"Corrupted number";b[3]=Math.pow(10,h[1]);b[4]=0<b[2]?Math.pow(10,h[2])-1:1;a=b[2]+b[4]*(b[0]*b[3]+b[1]);c=b[3]*b[4];break;default:throw"Unknown type";}c||k(0,0);p.n=Math.abs(a);
p.d=Math.abs(c);p.s=(0<=d)-(0>d);return p}var p={n:0,d:0,s:0},a=this;a.abs=function(){a.s=1;return a};a.add=function(b){b=l(arguments);return k(a.s*a.n*b.d+b.s*a.d*b.n,a.d*b.d)};a.sub=function(b){b=l(arguments);return k(a.s*a.n*b.d-b.s*a.d*b.n,a.d*b.d)};a.mul=function(b){b=l(arguments);return k(a.s*b.s*a.n*b.n,a.d*b.d)};a.div=function(b){b=l(arguments);return k(a.s*b.s*a.n*b.d,a.d*b.n)};a.set=function(a){a=l(arguments);return k(a.s*a.n,a.d)};a.mod=function(b){b=l(arguments);return 0===b.n*a.d?k(0,
0):k(a.s*b.d*a.n%(b.n*a.d),b.d*a.d)};a.reciprocal=function(){return k(a.s*a.d,a.n)};a.equals=function(b){b=l(arguments);return b.s*b.n*a.d===a.s*a.n*b.d};a.divisible=function(b){b=l(arguments);return 0===b.n*a.d?!1:0===a.n*b.d%(b.n*a.d)};a.toDouble=function(){return a.s*a.n/a.d};a.toFraction=function(){return a.n>a.d?0===a.n%a.d?""+a.s*a.n/a.d:(a.s*a.n/a.d|0)+" "+a.n%a.d+"/"+a.d:a.s*a.n+" / "+a.d};a.toString=function(){var b=(""+a.n).split(""),l=a.d,c=0,d="",h=q(a.n,a.d),f;a:{f=a.d;for(var e=0;e<
f;e++)if(r(e,f)===r(e+h,f)){f=e;break a}f=0}for(var e=-1,g=10+h+f+b.length,k=0;k<g;k++){c*=10;k<b.length?c+=parseInt(b[k],10):k===b.length?(d+=".",e=0):e++;if(0<h&&e===f)d+="(";else if(0<h&&e-f===h){d+=")";break}c>=l?(d+=c/l|0,c%=l):d+="0"}return(~a.s?"":"-")+d.replace(/^0+([1-9]|0\.)/g,"$1").replace(/(\d)0+$/,"$1")};a.n=0;a.d=a.s=1;n=l(arguments);k(n.s*n.n,n.d)}"undefined"!==typeof module&&module.exports&&(module.exports.Fraction=Fraction);
{
"name": "fraction.js",
"title": "fraction.js",
"version": "1.2.0",
"version": "1.2.1",
"homepage": "http://www.xarg.org/2014/03/precise-calculations-in-javascript/",

@@ -6,0 +6,0 @@ "description": "A rational number library",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc