115 lines
2.1 KiB
JavaScript
115 lines
2.1 KiB
JavaScript
//>>built
|
|
define("dojox/calc/toFrac",["dojo/_base/lang","dojox/calc/_Executor"],function(_1,_2){
|
|
var _3;
|
|
function _4(){
|
|
var _5=[5,6,7,10,11,13,14,15,17,19,21,22,23,26,29,30,31,33,34,35,37,38,39,41,42,43,46,47,51,53,55,57,58,59,61,62,65,66,67,69,70,71,73,74,77,78,79,82,83,85,86,87,89,91,93,94,95,97];
|
|
_3={"1":1,"√(2)":Math.sqrt(2),"√(3)":Math.sqrt(3),"pi":Math.PI};
|
|
for(var i in _5){
|
|
var n=_5[i];
|
|
_3["√("+n+")"]=Math.sqrt(n);
|
|
}
|
|
_3["√(pi)"]=Math.sqrt(Math.PI);
|
|
};
|
|
function _6(_7){
|
|
function _8(_9){
|
|
var _a=Math.floor(1/_9);
|
|
var _b=_2.approx(1/_a);
|
|
if(_b==_9){
|
|
return {n:1,d:_a};
|
|
}
|
|
var _c=_a+1;
|
|
_b=_2.approx(1/_c);
|
|
if(_b==_9){
|
|
return {n:1,d:_c};
|
|
}
|
|
if(_a>=50){
|
|
return null;
|
|
}
|
|
var _d=_a+_c;
|
|
_b=_2.approx(2/_d);
|
|
if(_b==_9){
|
|
return {n:2,d:_d};
|
|
}
|
|
if(_a>=34){
|
|
return null;
|
|
}
|
|
var _e=_9<_b;
|
|
var _f=_d*2+(_e?1:-1);
|
|
_b=_2.approx(4/_f);
|
|
if(_b==_9){
|
|
return {n:4,d:_f};
|
|
}
|
|
var _10=_9<_b;
|
|
if((_e&&!_10)||(!_e&&_10)){
|
|
var _11=(_d+_f)>>1;
|
|
_b=_2.approx(3/_11);
|
|
if(_b==_9){
|
|
return {n:3,d:_11};
|
|
}
|
|
}
|
|
if(_a>=20){
|
|
return null;
|
|
}
|
|
var _12=_d+_a*2;
|
|
var _13=_12+2;
|
|
for(var _14=5;_12<=100;_14++){
|
|
_12+=_a;
|
|
_13+=_c;
|
|
var _15=_e?((_13+_12+1)>>1):_12;
|
|
var _16=_e?_13:((_13+_12-1)>>1);
|
|
_15=_10?((_15+_16)>>1):_15;
|
|
_16=_10?_16:((_15+_16)>>1);
|
|
for(var _17=_15;_17<=_16;_17++){
|
|
if(_14&1==0&&_17&1==0){
|
|
continue;
|
|
}
|
|
_b=_2.approx(_14/_17);
|
|
if(_b==_9){
|
|
return {n:_14,d:_17};
|
|
}
|
|
if(_b<_9){
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
_7=Math.abs(_7);
|
|
for(var mt in _3){
|
|
var _18=_3[mt];
|
|
var _19=_7/_18;
|
|
var _1a=Math.floor(_19);
|
|
_19=_2.approx(_19-_1a);
|
|
if(_19==0){
|
|
return {mt:mt,m:_18,n:_1a,d:1};
|
|
}else{
|
|
var a=_8(_19);
|
|
if(!a){
|
|
continue;
|
|
}
|
|
return {mt:mt,m:_18,n:(_1a*a.d+a.n),d:a.d};
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
_4();
|
|
return _1.mixin(_2,{toFrac:function(_1b){
|
|
var f=_6(_1b);
|
|
return f?((_1b<0?"-":"")+(f.m==1?"":(f.n==1?"":(f.n+"*")))+(f.m==1?f.n:f.mt)+((f.d==1?"":"/"+f.d))):_1b;
|
|
},pow:function(_1c,_1d){
|
|
function _1e(n){
|
|
return Math.floor(n)==n;
|
|
};
|
|
if(_1c>0||_1e(_1d)){
|
|
return Math.pow(_1c,_1d);
|
|
}else{
|
|
var f=_6(_1d);
|
|
if(_1c>=0){
|
|
return (f&&f.m==1)?Math.pow(Math.pow(_1c,1/f.d),_1d<0?-f.n:f.n):Math.pow(_1c,_1d);
|
|
}else{
|
|
return (f&&f.d&1)?Math.pow(Math.pow(-Math.pow(-_1c,1/f.d),_1d<0?-f.n:f.n),f.m):NaN;
|
|
}
|
|
}
|
|
}});
|
|
});
|